diff options
Diffstat (limited to 'fs/gfs2/glops.c')
-rw-r--r-- | fs/gfs2/glops.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/fs/gfs2/glops.c b/fs/gfs2/glops.c index aad45b7a927d..9c2033714b08 100644 --- a/fs/gfs2/glops.c +++ b/fs/gfs2/glops.c | |||
@@ -305,8 +305,9 @@ static void inode_go_inval(struct gfs2_glock *gl, int flags) | |||
305 | int data = (flags & DIO_DATA); | 305 | int data = (flags & DIO_DATA); |
306 | 306 | ||
307 | if (meta) { | 307 | if (meta) { |
308 | struct gfs2_inode *ip = gl->gl_object; | ||
308 | gfs2_meta_inval(gl); | 309 | gfs2_meta_inval(gl); |
309 | gl->gl_vn++; | 310 | set_bit(GIF_INVALID, &ip->i_flags); |
310 | } | 311 | } |
311 | if (data) | 312 | if (data) |
312 | gfs2_page_inval(gl); | 313 | gfs2_page_inval(gl); |
@@ -351,7 +352,7 @@ static int inode_go_lock(struct gfs2_holder *gh) | |||
351 | if (!ip) | 352 | if (!ip) |
352 | return 0; | 353 | return 0; |
353 | 354 | ||
354 | if (ip->i_vn != gl->gl_vn) { | 355 | if (test_bit(GIF_INVALID, &ip->i_flags)) { |
355 | error = gfs2_inode_refresh(ip); | 356 | error = gfs2_inode_refresh(ip); |
356 | if (error) | 357 | if (error) |
357 | return error; | 358 | return error; |