diff options
author | Benjamin Marzinski <bmarzins@redhat.com> | 2009-07-23 19:52:34 -0400 |
---|---|---|
committer | Steven Whitehouse <swhiteho@redhat.com> | 2009-07-30 06:01:03 -0400 |
commit | b94a170e96dc416828af9d350ae2e34b70ae7347 (patch) | |
tree | 6000929d554359c7b520a49a63415b9fc18b48b9 /fs/gfs2/super.c | |
parent | 6b94617024bd6810cde1d0d491202c30d5a38d91 (diff) |
GFS2: remove dcache entries for remote deleted inodes
When a file is deleted from a gfs2 filesystem on one node, a dcache
entry for it may still exist on other nodes in the cluster. If this
happens, gfs2 will be unable to free this file on disk. Because of this,
it's possible to have a gfs2 filesystem with no files on it and no free
space. With this patch, when a node receives a callback notifying it
that the file is being deleted on another node, it schedules a new
workqueue thread to remove the file's dcache entry.
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
Diffstat (limited to 'fs/gfs2/super.c')
-rw-r--r-- | fs/gfs2/super.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/gfs2/super.c b/fs/gfs2/super.c index 552e321cee5e..f522bb017973 100644 --- a/fs/gfs2/super.c +++ b/fs/gfs2/super.c | |||
@@ -691,6 +691,7 @@ static int gfs2_make_fs_ro(struct gfs2_sbd *sdp) | |||
691 | struct gfs2_holder t_gh; | 691 | struct gfs2_holder t_gh; |
692 | int error; | 692 | int error; |
693 | 693 | ||
694 | flush_workqueue(gfs2_delete_workqueue); | ||
694 | gfs2_quota_sync(sdp); | 695 | gfs2_quota_sync(sdp); |
695 | gfs2_statfs_sync(sdp); | 696 | gfs2_statfs_sync(sdp); |
696 | 697 | ||