Also filed as GNU Savannah bug #29292.

#hurd, 2010, end of May / beginning of June

[runnign sync, but sill unclean filesystem at next boot]
<slpz> guillem: when libpager syncs an object, it sends an m_o_lock_request
  and waits (if the synchronous argument was specified) for a
  m_o_lock_completed. But m_o_lock_completed only means that dirty pages
  have been sent to the translator, and this one still needs to write them
  to the backing storage
<slpz> guillem: there's no problem if sync() returns before actually
  writting the changes to disk, but this also happens when shutting down
  the translator
<slpz> guillem: in theory, locking mechanisms in libpager should prevent
  this from happening by keeping track of write operations, but this seems
  to fail in some situations

It helps a lot to run syncfs --synchronous / before issuing the halt or reboot command. This will prevent most of the uncleanliness. Of course, ext2fs is meant to be doing this to-disk synchronization internally upon translator shutdown, but evidently it doesn't in all cases.

Apparently diskfs simply does not set filesystems as read-only: http://lists.gnu.org/archive/html/bug-hurd/2011-08/msg00024.html.

A patch was applied, and the sync issue does not seem to happen any more.