• Steven Whitehouse's avatar
    GFS2: Resolve inode eviction and ail list interaction bug · 380f7c65
    Steven Whitehouse authored
    This patch contains a few misc fixes which resolve a recently
    reported issue. This patch has been a real team effort and has
    received a lot of testing.
    
    The first issue is that the ail lock needs to be held over a few
    more operations. The lock thats added into gfs2_releasepage() may
    possibly be a candidate for replacing with RCU at some future
    point, but at this stage we've gone for the obvious fix.
    
    The second issue is that gfs2_write_inode() can end up calling
    a glock recursively when called from gfs2_evict_inode() via the
    syncing code, so it needs a guard added.
    
    The third issue is that we either need to not truncate the metadata
    pages of inodes which have zero link count, but which we cannot
    deallocate due to them still being in use by other nodes, or we need
    to ensure that those pages have all made it through the journal and
    ail lists first. This patch takes the former approach, but the
    latter has also been tested and there is nothing to choose between
    them performance-wise. So again, we could revise that decision
    in the future.
    
    Also, the inode eviction process is now better documented.
    Signed-off-by: default avatarSteven Whitehouse <swhiteho@redhat.com>
    Tested-by: default avatarBob Peterson <rpeterso@redhat.com>
    Tested-by: default avatarAbhijith Das <adas@redhat.com>
    Reported-by: default avatarBarry J. Marson <bmarson@redhat.com>
    Reported-by: default avatarDavid Teigland <teigland@redhat.com>
    380f7c65
super.c 37.3 KB