• Steven Whitehouse's avatar
    GFS2: Wipe directory hash table metadata when deallocating a directory · 6d3117b4
    Steven Whitehouse authored
    The deallocation code for directories in GFS2 is largely divided into
    two parts. The first part deallocates any directory leaf blocks and
    marks the directory as being a regular file when that is complete. The
    second stage was identical to deallocating regular files.
    
    Regular files have their data blocks in a different
    address space to directories, and thus what would have been normal data
    blocks in a regular file (the hash table in a GFS2 directory) were
    deallocated correctly. However, a reference to these blocks was left in the
    journal (assuming of course that some previous activity had resulted in
    those blocks being in the journal or ail list).
    
    This patch uses the i_depth as a test of whether the inode is an
    exhash directory (we cannot test the inode type as that has already
    been changed to a regular file at this stage in deallocation)
    
    The original issue was reported by Chris Hertel as an issue he encountered
    running bonnie++
    Reported-by: default avatarChristopher R. Hertel <crh@samba.org>
    Cc: Abhijith Das <adas@redhat.com>
    Signed-off-by: default avatarSteven Whitehouse <swhiteho@redhat.com>
    6d3117b4
rgrp.c 47.1 KB