Hi. "Reexec init" is normal solution. It is used in sysvinit-based distros: every time init is updated, init reexecs itself.
Also, probably the most beautiful solution is systemd's one: :) write special program, which unmounts file systems and then reboots/poweroffs the computer. Links: http://www.opennet.ru/opennews/art.shtml?num=38943 (Russian), https://plus.google.com/+LennartPoetteringTheOneAndOnly/posts/LjkLwkeDiLc (from Lennart Poettering) == Askar Safin http://vk.com/safinaskar Faculty of Computational Mathematics and Cybernetics, Moscow State Univercity, Russia