diff options
author | Bob Peterson <rpeterso@redhat.com> | 2012-02-16 11:31:04 -0500 |
---|---|---|
committer | Steven Whitehouse <swhiteho@redhat.com> | 2012-02-28 04:48:02 -0500 |
commit | 718b97bd6b03445be53098e3c8f896aeebc304aa (patch) | |
tree | 17161766fe3ce26cb54e265324efec74fae946f3 /fs/gfs2 | |
parent | 4043b886b0740ded65f633fc4b7225d624c7e658 (diff) |
GFS2: Read in rindex if necessary during unlink
This patch fixes a problem whereby you were unable to delete
files until other file system operations were done (such as
statfs, touch, writes, etc.) that caused the rindex to be
read in.
Signed-off-by: Bob Peterson <rpeterso@redhat.com>
Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
Diffstat (limited to 'fs/gfs2')
-rw-r--r-- | fs/gfs2/inode.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/fs/gfs2/inode.c b/fs/gfs2/inode.c index a7d611b93f0f..c87faf48f0a1 100644 --- a/fs/gfs2/inode.c +++ b/fs/gfs2/inode.c | |||
@@ -1035,14 +1035,19 @@ static int gfs2_unlink(struct inode *dir, struct dentry *dentry) | |||
1035 | struct buffer_head *bh; | 1035 | struct buffer_head *bh; |
1036 | struct gfs2_holder ghs[3]; | 1036 | struct gfs2_holder ghs[3]; |
1037 | struct gfs2_rgrpd *rgd; | 1037 | struct gfs2_rgrpd *rgd; |
1038 | int error = -EROFS; | 1038 | int error; |
1039 | 1039 | ||
1040 | error = gfs2_rindex_update(sdp); | ||
1041 | if (error) | ||
1042 | return error; | ||
1040 | gfs2_holder_init(dip->i_gl, LM_ST_EXCLUSIVE, 0, ghs); | 1043 | gfs2_holder_init(dip->i_gl, LM_ST_EXCLUSIVE, 0, ghs); |
1041 | gfs2_holder_init(ip->i_gl, LM_ST_EXCLUSIVE, 0, ghs + 1); | 1044 | gfs2_holder_init(ip->i_gl, LM_ST_EXCLUSIVE, 0, ghs + 1); |
1042 | 1045 | ||
1043 | rgd = gfs2_blk2rgrpd(sdp, ip->i_no_addr); | 1046 | rgd = gfs2_blk2rgrpd(sdp, ip->i_no_addr); |
1044 | if (!rgd) | 1047 | if (!rgd) { |
1048 | error = -EROFS; | ||
1045 | goto out_inodes; | 1049 | goto out_inodes; |
1050 | } | ||
1046 | gfs2_holder_init(rgd->rd_gl, LM_ST_EXCLUSIVE, 0, ghs + 2); | 1051 | gfs2_holder_init(rgd->rd_gl, LM_ST_EXCLUSIVE, 0, ghs + 2); |
1047 | 1052 | ||
1048 | 1053 | ||