diff options
Diffstat (limited to 'fs/gfs2/ops_address.c')
-rw-r--r-- | fs/gfs2/ops_address.c | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/fs/gfs2/ops_address.c b/fs/gfs2/ops_address.c index 4c4ef7f59909..ed154af86171 100644 --- a/fs/gfs2/ops_address.c +++ b/fs/gfs2/ops_address.c | |||
@@ -138,12 +138,11 @@ static int gfs2_writepage(struct page *page, struct writeback_control *wbc) | |||
138 | return 0; /* don't care */ | 138 | return 0; /* don't care */ |
139 | } | 139 | } |
140 | 140 | ||
141 | if ((sdp->sd_args.ar_data == GFS2_DATA_ORDERED || gfs2_is_jdata(ip)) && | 141 | if (PageChecked(page)) { |
142 | PageChecked(page)) { | ||
143 | ClearPageChecked(page); | ||
144 | error = gfs2_trans_begin(sdp, RES_DINODE + 1, 0); | 142 | error = gfs2_trans_begin(sdp, RES_DINODE + 1, 0); |
145 | if (error) | 143 | if (error) |
146 | goto out_ignore; | 144 | goto out_ignore; |
145 | ClearPageChecked(page); | ||
147 | if (!page_has_buffers(page)) { | 146 | if (!page_has_buffers(page)) { |
148 | create_empty_buffers(page, inode->i_sb->s_blocksize, | 147 | create_empty_buffers(page, inode->i_sb->s_blocksize, |
149 | (1 << BH_Dirty)|(1 << BH_Uptodate)); | 148 | (1 << BH_Dirty)|(1 << BH_Uptodate)); |
@@ -180,9 +179,8 @@ static int gfs2_writepages(struct address_space *mapping, | |||
180 | { | 179 | { |
181 | struct inode *inode = mapping->host; | 180 | struct inode *inode = mapping->host; |
182 | struct gfs2_inode *ip = GFS2_I(inode); | 181 | struct gfs2_inode *ip = GFS2_I(inode); |
183 | struct gfs2_sbd *sdp = GFS2_SB(inode); | ||
184 | 182 | ||
185 | if (sdp->sd_args.ar_data == GFS2_DATA_WRITEBACK && !gfs2_is_jdata(ip)) | 183 | if (gfs2_is_writeback(ip)) |
186 | return mpage_writepages(mapping, wbc, gfs2_get_block_noalloc); | 184 | return mpage_writepages(mapping, wbc, gfs2_get_block_noalloc); |
187 | 185 | ||
188 | return generic_writepages(mapping, wbc); | 186 | return generic_writepages(mapping, wbc); |
@@ -606,7 +604,7 @@ static int gfs2_write_end(struct file *file, struct address_space *mapping, | |||
606 | if (gfs2_is_stuffed(ip)) | 604 | if (gfs2_is_stuffed(ip)) |
607 | return gfs2_stuffed_write_end(inode, dibh, pos, len, copied, page); | 605 | return gfs2_stuffed_write_end(inode, dibh, pos, len, copied, page); |
608 | 606 | ||
609 | if (sdp->sd_args.ar_data == GFS2_DATA_ORDERED || gfs2_is_jdata(ip)) | 607 | if (!gfs2_is_writeback(ip)) |
610 | gfs2_page_add_databufs(ip, page, from, to); | 608 | gfs2_page_add_databufs(ip, page, from, to); |
611 | 609 | ||
612 | ret = generic_write_end(file, mapping, pos, len, copied, page, fsdata); | 610 | ret = generic_write_end(file, mapping, pos, len, copied, page, fsdata); |