Skip to content
  • Vyacheslav Dubeyko's avatar
    hfsplus: fix issue with unzeroed unused b-tree nodes · 899bed05
    Vyacheslav Dubeyko authored
    
    
    The fsck_hfs (under MacOS X) complains about unzeroed unused b-tree nodes
    after deletion of folders' tree under Linux.
    
    SYMPTOMS:
    
      Running Disk Utiltiy's "Verify Disk" on "test" gives the following:
      Verifying volume “Test”
      Checking file systemChecking Journaled HFS Plus volume.
      Checking extents overflow file.
      Checking catalog file.
      Unused node is not erased (node = 3111)
      Checking multi-linked files.
      Checking catalog hierarchy.
      Checking extended attributes file.
      Checking volume bitmap.
      Checking volume information.
      The volume Test was found corrupt and needs to be repaired.
      Error: This disk needs to be repaired. Click Repair Disk.
    
    REPRODUCING PATH:
    
    1. Prepare HFS+ (non-case sensitive) partition (for example, 5GB)
       under MacOS X.
    2. Copy linux kernel source tree (for example, 3.7-rc6 version) on
       this partition under MacOS X.
    3. Then switch to Linux and mount this prepared partition.
    4. Execute `sudo rm -r` under prepared directory with linux kernel
       source tree.
    5. Unmount and boot back into OS X.
    6. Open up Disk Utility and verify partition.
    
    REPRODUCIBILITY: 100%
    
    FIX:
    
    It is added code of node clearing in hfs_bnode_put() method for the case
    when node has flag HFS_BNODE_DELETED.
    
    Signed-off-by: default avatarVyacheslav Dubeyko <slava@dubeyko.com>
    Reported-by: default avatarKyle Laracey <kalaracey@gmail.com>
    Acked-by: default avatarHin-Tak Leung <htl10@users.sourceforge.net>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Jan Kara <jack@suse.cz>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    899bed05