summaryrefslogtreecommitdiffstats
path: root/fs/gfs2/super.c
diff options
context:
space:
mode:
authorBenjamin Marzinski <bmarzins@redhat.com>2009-07-23 18:52:34 -0500
committerSteven Whitehouse <swhiteho@redhat.com>2009-07-30 11:01:03 +0100
commitb94a170e96dc416828af9d350ae2e34b70ae7347 (patch)
tree6000929d554359c7b520a49a63415b9fc18b48b9 /fs/gfs2/super.c
parent6b94617024bd6810cde1d0d491202c30d5a38d91 (diff)
downloadlinux-b94a170e96dc416828af9d350ae2e34b70ae7347.tar.gz
linux-b94a170e96dc416828af9d350ae2e34b70ae7347.tar.bz2
linux-b94a170e96dc416828af9d350ae2e34b70ae7347.zip
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.c1
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)
struct gfs2_holder t_gh;
int error;
+ flush_workqueue(gfs2_delete_workqueue);
gfs2_quota_sync(sdp);
gfs2_statfs_sync(sdp);