• C
    xfs: simplify inode teardown · 848ce8f7
    Christoph Hellwig 提交于
    Currently the reclaim code for the case where we don't reclaim the
    final reclaim is overly complicated.  We know that the inode is clean
    but instead of just directly reclaiming the clean inode we go through
    the whole process of marking the inode reclaimable just to directly
    reclaim it from the calling context.  Besides being overly complicated
    this introduces a race where iget could recycle an inode between
    marked reclaimable and actually being reclaimed leading to panics.
    
    This patch gets rid of the existing reclaim path, and replaces it with
    a simple call to xfs_ireclaim if the inode was clean.  While we're at
    it we also use the slightly more lax xfs_inode_clean check we'd use
    later to determine if we need to flush the inode here.
    
    Finally get rid of xfs_reclaim function and place the remaining small
    bits of reclaim code directly into xfs_fs_destroy_inode.
    Signed-off-by: NChristoph Hellwig <hch@lst.de>
    Reported-by: NPatrick Schreurs <patrick@news-service.com>
    Reported-by: NTommy van Leeuwen <tommy@news-service.com>
    Tested-by: NPatrick Schreurs <patrick@news-service.com>
    Reviewed-by: NAlex Elder <aelder@sgi.com>
    Signed-off-by: NAlex Elder <aelder@sgi.com>
    848ce8f7
xfs_super.c 49.0 KB