The file, /etc/udev/rules.d/90-hal.rules contains the line: SUBSYSTEM=="block",ACTION="remove", RUN+="/usr/libexec/hal-unmount.sh" when it should be: SUBSYSTEM=="block",ACTION=="remove", RUN+="/usr/libexec/hal-unmount.sh" If you want, I can modify this (it's in the hal-0.5.7-unclean-unmount.patch file) and bump the ebuild. This is needed, as the next version of udev is going to warn about syntax errors like this, and I don't think you want a bunch of bugs about this :)
Also, if you want, dump udev script programs in /lib/udev/ and then you don't need to specify the full path name to them.
Being as no one knows udev as well as you, I don't have a problem with this at all, just please CC gentopia@ as well on bugs with hal :)
Also, with hal-0.5.7-r1 the /usr/libexec/hal-unmount.sh script doesn't exist, even though /etc/udev/rules.d/90-hal.rules still refers to it. There is a hal-unmount.dev script in the same location, which might be what was intended.
Fixed the udev syntax issue with -r2. Fixed the issue with the script not being found (renamed to hal_unmount and the patch also refers to this).
*** Bug 143556 has been marked as a duplicate of this bug. ***