Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 320990
b: refs/heads/master
c: 39263d5
h: refs/heads/master
v: v3
  • Loading branch information
Jan Kara authored and Al Viro committed Jul 31, 2012
1 parent 71f7324 commit bada3f5
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 13 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: fef6925cd4c6b564ecff477e07a0fca987542223
refs/heads/master: 39263d5e71d0fad09eab0d855a9407ad2af8378c
15 changes: 3 additions & 12 deletions trunk/fs/gfs2/file.c
Original file line number Diff line number Diff line change
Expand Up @@ -370,11 +370,7 @@ static int gfs2_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf)
loff_t size;
int ret;

/* Wait if fs is frozen. This is racy so we check again later on
* and retry if the fs has been frozen after the page lock has
* been acquired
*/
vfs_check_frozen(inode->i_sb, SB_FREEZE_WRITE);
sb_start_pagefault(inode->i_sb);

/* Update file times before taking page lock */
file_update_time(vma->vm_file);
Expand Down Expand Up @@ -458,14 +454,9 @@ static int gfs2_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf)
gfs2_holder_uninit(&gh);
if (ret == 0) {
set_page_dirty(page);
/* This check must be post dropping of transaction lock */
if (inode->i_sb->s_frozen == SB_UNFROZEN) {
wait_on_page_writeback(page);
} else {
ret = -EAGAIN;
unlock_page(page);
}
wait_on_page_writeback(page);
}
sb_end_pagefault(inode->i_sb);
return block_page_mkwrite_return(ret);
}

Expand Down
4 changes: 4 additions & 0 deletions trunk/fs/gfs2/trans.c
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ int gfs2_trans_begin(struct gfs2_sbd *sdp, unsigned int blocks,
if (revokes)
tr->tr_reserved += gfs2_struct2blk(sdp, revokes,
sizeof(u64));
sb_start_intwrite(sdp->sd_vfs);
gfs2_holder_init(sdp->sd_trans_gl, LM_ST_SHARED, 0, &tr->tr_t_gh);

error = gfs2_glock_nq(&tr->tr_t_gh);
Expand All @@ -68,6 +69,7 @@ int gfs2_trans_begin(struct gfs2_sbd *sdp, unsigned int blocks,
gfs2_glock_dq(&tr->tr_t_gh);

fail_holder_uninit:
sb_end_intwrite(sdp->sd_vfs);
gfs2_holder_uninit(&tr->tr_t_gh);
kfree(tr);

Expand Down Expand Up @@ -116,6 +118,7 @@ void gfs2_trans_end(struct gfs2_sbd *sdp)
gfs2_holder_uninit(&tr->tr_t_gh);
kfree(tr);
}
sb_end_intwrite(sdp->sd_vfs);
return;
}

Expand All @@ -136,6 +139,7 @@ void gfs2_trans_end(struct gfs2_sbd *sdp)

if (sdp->sd_vfs->s_flags & MS_SYNCHRONOUS)
gfs2_log_flush(sdp, NULL);
sb_end_intwrite(sdp->sd_vfs);
}

/**
Expand Down

0 comments on commit bada3f5

Please sign in to comment.