cvs commit: src/sys/ufs/ffs ffs_balloc.c

Konstantin Belousov kib at FreeBSD.org
Sat Jan 19 10:12:26 PST 2008


kib         2008-01-19 18:12:25 UTC

  FreeBSD src repository

  Modified files:        (Branch: RELENG_7_0)
    sys/ufs/ffs          ffs_balloc.c 
  Log:
  MFC rev. 1.52:
  The ffs_balloc() routines, whan allocating the indirect blocks for
  the inode, do the rollback in case the allocation failed (due to
  insufficient free space or quota limits). But, the code does leaves the
  buffers corresponding to the inoirect blocks on the vnode bufobj list.
  This causes several assertion failures (for instance, "ffs_truncate3"
  in ffs_truncate()) to fail, and could result in the indirect block
  aliasing problem, like writing the context of such blocks to random
  disk location.
  
  Remove the buffers from the bufobj properly.
  
  MFC rev. 1.53:
  ffs_balloc_ufsX() routines, in the case of recovering from the failed
  allocation, free the indirect blocks before clearing the disk pointers,
  that could lead to the softupdate inconsistencies in the case of the
  machine or disk crash at the wrong time.
  
  Rearrange the recover code to do the ffs_blkfree() after the second
  ffs_syncvnode(), that clears the pointers chain.
  
  Approved by:    re (kensmith)
  
  Revision   Changes    Path
  1.50.14.1  +50 -6     src/sys/ufs/ffs/ffs_balloc.c


More information about the cvs-src mailing list