[GFS2] Recovery for lost unlinked inodes
authorSteven Whitehouse <swhiteho@redhat.com>
Fri, 8 Jun 2007 09:05:33 +0000 (10:05 +0100)
committerSteven Whitehouse <swhiteho@redhat.com>
Mon, 9 Jul 2007 07:23:26 +0000 (08:23 +0100)
commitc8cdf479377462315d6b4f56379f8ac989b0ef29
tree3eee98ca4af8bba92a6df096f6fd2de615a71fa5
parentb35997d4482ed24b43a5951c5b021d224b24293c
[GFS2] Recovery for lost unlinked inodes

Under certain circumstances its possible (though rather unlikely) that
inodes which were unlinked by one node while still open on another might
get "lost" in the sense that they don't get deallocated if the node
which held the inode open crashed before it was unlinked.

This patch adds the recovery code which allows automatic deallocation of
the inode if its found during block allocation (the sensible time to
look for such inodes since we are scanning the rgrp's bitmaps anyway at
this time, so it adds no overhead to do this).

Since the inode will have had its i_nlink set to zero, all we need to
trigger recovery is a lookup and an iput(), and the normal deallocation
code takes care of the rest.

Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
fs/gfs2/incore.h
fs/gfs2/inode.c
fs/gfs2/rgrp.c