aboutsummaryrefslogtreecommitdiffstats
path: root/fs/gfs2/ops_address.c
diff options
context:
space:
mode:
authorSteven Whitehouse <swhiteho@redhat.com>2007-10-17 03:35:19 -0400
committerSteven Whitehouse <swhiteho@redhat.com>2008-01-25 03:07:21 -0500
commitbf36a713169432643d4fc7eeb4e0ace96d791d26 (patch)
tree2cb69c9716b9ee8c687ef807bb88d5e635db3462 /fs/gfs2/ops_address.c
parente7e36f143565d14950055c893cfaf4400ad64d34 (diff)
[GFS2] Add gfs2_is_writeback()
This adds a function "gfs2_is_writeback()" along the lines of the existing "gfs2_is_jdata()" in order to clean up the code and make the various tests for the inode mode more obvious. It also fixes the PageChecked() logic where we were resetting the flag too early in the case of an error path. Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
Diffstat (limited to 'fs/gfs2/ops_address.c')
-rw-r--r--fs/gfs2/ops_address.c10
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);