cvs commit: src/sys/vfs/hammer hammer.h hammer_blockmap.c hammer_flusher.c hammer_inode.c hammer_io.c hammer_object.c hammer_ondisk.c hammer_undo.c hammer_vfsops.c

Michael Neumann mneumann at ntecs.de
Fri Jul 18 00:35:58 PDT 2008


Matthew Dillon wrote:
dillon      2008/07/17 17:19:53 PDT

DragonFly src repository

  Modified files:
    sys/vfs/hammer       hammer.h hammer_blockmap.c 
                         hammer_flusher.c hammer_inode.c 
                         hammer_io.c hammer_object.c 
                         hammer_ondisk.c hammer_undo.c 
                         hammer_vfsops.c 
  Log:
  HAMMER 63/Many: IO Error handling features
  
  This commit removes all the remaining Debugger() calls and KKASSERTs in the
  I/O error path.  Errors are now propagated up the call tree and properly
  reported.
  
  * Report I/O errors instead of asserting.
  
  * Read or Write errors in the flush path disable flushing and force the mount
    into read-only mode.  Modified buffers are left locked in memory until
    umount to provide a consistent snapshot of the state of the filesystem.
What would happen if the system runs out of memory? Will it die due to
memory allocation issues, or will it detect that it is low on memory and
return filesystem related errors.
    You must umount and remount to recover the filesystem.  The filesystem
    will automatically rollback to the last valid flush upon remounting.
That means, if I umount, I loose all the changes made on the locked
in-memory buffers, right?
  * umount and umount -f are now able to unmount a HAMMER filesystem that has
    catastrophic write errors (e.g. pulling the USB cable on an external
    drive).
Cool, even though I am hoping not to come in a situation where this will
be neccessary ;-)
Regards,

  Michael





More information about the Commits mailing list