From 3e9f45bd18191bbd05468b19b7064b8da8262aba Mon Sep 17 00:00:00 2001 From: Guillaume Chazarain Date: Tue, 8 May 2007 00:23:25 -0700 Subject: Factor outstanding I/O error handling Cleanup: setting an outstanding error on a mapping was open coded too many times. Factor it out in mapping_set_error(). Signed-off-by: Guillaume Chazarain Cc: Steven Whitehouse Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- fs/gfs2/glops.c | 5 +---- fs/mpage.c | 16 ++-------------- 2 files changed, 3 insertions(+), 18 deletions(-) (limited to 'fs') diff --git a/fs/gfs2/glops.c b/fs/gfs2/glops.c index 39c8ae23bd9..7b82657a991 100644 --- a/fs/gfs2/glops.c +++ b/fs/gfs2/glops.c @@ -163,10 +163,7 @@ static void inode_go_sync(struct gfs2_glock *gl) if (ip) { struct address_space *mapping = ip->i_inode.i_mapping; int error = filemap_fdatawait(mapping); - if (error == -ENOSPC) - set_bit(AS_ENOSPC, &mapping->flags); - else if (error) - set_bit(AS_EIO, &mapping->flags); + mapping_set_error(mapping, error); } clear_bit(GLF_DIRTY, &gl->gl_flags); gfs2_ail_empty_gl(gl); diff --git a/fs/mpage.c b/fs/mpage.c index 692a3e578fc..fa2441f57b4 100644 --- a/fs/mpage.c +++ b/fs/mpage.c @@ -663,12 +663,7 @@ confused: /* * The caller has a ref on the inode, so *mapping is stable */ - if (*ret) { - if (*ret == -ENOSPC) - set_bit(AS_ENOSPC, &mapping->flags); - else - set_bit(AS_EIO, &mapping->flags); - } + mapping_set_error(mapping, *ret); out: return bio; } @@ -776,14 +771,7 @@ retry: if (writepage) { ret = (*writepage)(page, wbc); - if (ret) { - if (ret == -ENOSPC) - set_bit(AS_ENOSPC, - &mapping->flags); - else - set_bit(AS_EIO, - &mapping->flags); - } + mapping_set_error(mapping, ret); } else { bio = __mpage_writepage(bio, page, get_block, &last_block_in_bio, &ret, wbc, -- cgit v1.2.3