aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Marzinski <bmarzins@redhat.com>2009-11-10 13:54:56 -0500
committerSteven Whitehouse <swhiteho@redhat.com>2009-12-03 06:59:03 -0500
commit9ae3c6de6981a1e8765b5d029f94555fc0f0fea0 (patch)
treede903f8b904281ff44cc5ca0ec62b4f8e0010af2
parent0ab7d13fcbd7ce1658c563e345990ba453719deb (diff)
GFS2: drop rindex glock to refresh rindex list
When a gfs2 filesystem is grown, it needs to rebuild the rindex list to be able to use the new space. gfs2 does this when the rindex is marked not uptodate, which happens when the rindex glock is dropped. However, on a single node setup, there is never any reason to drop the rindex glock, so gfs2 never invalidates the the rindex. This patch makes gfs2 automatically drop the rindex glock after filesystem grows, so it can refresh the rindex list. Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com> Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
-rw-r--r--fs/gfs2/aops.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/fs/gfs2/aops.c b/fs/gfs2/aops.c
index 694b5d48f03..dce062a0b02 100644
--- a/fs/gfs2/aops.c
+++ b/fs/gfs2/aops.c
@@ -819,8 +819,10 @@ static int gfs2_stuffed_write_end(struct inode *inode, struct buffer_head *dibh,
819 mark_inode_dirty(inode); 819 mark_inode_dirty(inode);
820 } 820 }
821 821
822 if (inode == sdp->sd_rindex) 822 if (inode == sdp->sd_rindex) {
823 adjust_fs_space(inode); 823 adjust_fs_space(inode);
824 ip->i_gh.gh_flags |= GL_NOCACHE;
825 }
824 826
825 brelse(dibh); 827 brelse(dibh);
826 gfs2_trans_end(sdp); 828 gfs2_trans_end(sdp);
@@ -889,8 +891,10 @@ static int gfs2_write_end(struct file *file, struct address_space *mapping,
889 mark_inode_dirty(inode); 891 mark_inode_dirty(inode);
890 } 892 }
891 893
892 if (inode == sdp->sd_rindex) 894 if (inode == sdp->sd_rindex) {
893 adjust_fs_space(inode); 895 adjust_fs_space(inode);
896 ip->i_gh.gh_flags |= GL_NOCACHE;
897 }
894 898
895 brelse(dibh); 899 brelse(dibh);
896 gfs2_trans_end(sdp); 900 gfs2_trans_end(sdp);