If halt or reboot is called when the system is not in runlevel 0 or 6, in other words when its running normally, shutdown will be invoked instead (with the -h or -r flag). For more info see the shutdown(8) manpage.
The rest of this manpage describes the behaviour in runlevels 0 and 6, that is when the systems shutdown scripts are being run.
|-n||Dont sync before reboot or halt. Note that the kernel and storage drivers may still sync.|
|-w||Dont actually reboot or halt but only write the wtmp record (in the /var/log/wtmp file).|
|-d||Dont write the wtmp record. The -n flag implies -d.|
|-f||Force halt or reboot, dont call shutdown(8).|
|-i||Shut down all network interfaces just before halt or reboot.|
|-h||Put all harddrives on the system in standby mode just before halt or poweroff.|
|-p||When halting the system, do a poweroff. This is the default when halt is called as poweroff.|
The -h flag puts all harddisks in standby mode just before halt or poweroff. Right now this is only implemented for IDE drives. A side effect of putting the drive in standby mode is that the write cache on the disk is flushed. This is important for IDE drives, since the kernel doesnt flush the write-cache itself before poweroff.
The halt program uses /proc/ide/hd* to find all IDE disk devices, which means that /proc needs to be mounted when halt or poweroff is called or the -h switch will do nothing.