diff options
author | Bob Peterson <rpeterso@redhat.com> | 2008-04-29 21:35:48 +0400 |
---|---|---|
committer | Steven Whitehouse <swhiteho@redhat.com> | 2008-05-12 11:54:53 +0400 |
commit | 091806edd458486af13ad83c9802f5b8b54d6d19 (patch) | |
tree | cf10d6aaf2e6bf0ed5b0ad94306623a2fc3fdb56 /fs/gfs2/glops.c | |
parent | 492c2e476eac010962850006c49df326919b284c (diff) | |
download | linux-091806edd458486af13ad83c9802f5b8b54d6d19.tar.xz |
[GFS2] filesystem consistency error from do_strip
This patch fixes a GFS2 filesystem consistency error reported from
function do_strip. The problem was caused by a timing window
that allowed two vfs inodes to be created in memory that point
to the same file. The problem is fixed by making the vfs's
iget_test, iget_set mechanism check and set a new bit in the
in-core gfs2_inode structure while the vfs inode spin_lock is held.
Signed-off-by: Bob Peterson <rpeterso@redhat.com>
Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
Diffstat (limited to 'fs/gfs2/glops.c')
-rw-r--r-- | fs/gfs2/glops.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/gfs2/glops.c b/fs/gfs2/glops.c index d31badadef8f..07d84d16cda4 100644 --- a/fs/gfs2/glops.c +++ b/fs/gfs2/glops.c @@ -249,7 +249,7 @@ static int inode_go_lock(struct gfs2_holder *gh) struct gfs2_inode *ip = gl->gl_object; int error = 0; - if (!ip) + if (!ip || (gh->gh_flags & GL_SKIP)) return 0; if (test_bit(GIF_INVALID, &ip->i_flags)) { |