Message ID | 1358073895-1734-1-git-send-email-wangshilong1991@gmail.com |
---|---|
State | Superseded, archived |
Headers | show |
On Sun 13-01-13 18:44:55, Wang shilong wrote: > From: Wang Shilong <wangsl-fnst@cn.fujitsu.com> > > It will be better to have ENOMEM return rather than EIO,because > the only reason that sb_getblk fails is allocation fails. Again one case is wrong. See below. > > Signed-off-by: Wang Shilong <wangsl-fnst@cn.fujitsu.com> > --- > fs/ext3/inode.c | 6 +++--- > fs/ext3/resize.c | 6 +++--- > fs/ext3/xattr.c | 2 +- > 3 files changed, 7 insertions(+), 7 deletions(-) > > diff --git a/fs/ext3/inode.c b/fs/ext3/inode.c > index c91f8bf..d5315d5 100644 > --- a/fs/ext3/inode.c > +++ b/fs/ext3/inode.c > @@ -1084,7 +1084,7 @@ struct buffer_head *ext3_getblk(handle_t *handle, struct inode *inode, > struct buffer_head *bh; > bh = sb_getblk(inode->i_sb, dummy.b_blocknr); > if (unlikely(!bh)) { > - *errp = -EIO; > + *errp = -ENOMEM; > goto err; > } > if (buffer_new(&dummy)) { > @@ -2739,7 +2739,7 @@ static int __ext3_get_inode_loc(struct inode *inode, > "unable to read inode block - " > "inode=%lu, block="E3FSBLK, > inode->i_ino, block); > - return -EIO; > + return -ENOMEM; > } > if (!buffer_uptodate(bh)) { > lock_buffer(bh); > @@ -2833,7 +2833,7 @@ make_io: > "inode=%lu, block="E3FSBLK, > inode->i_ino, block); > brelse(bh); > - return -EIO; > + return -ENOMEM; This is wrong. Here we really failed because of IO error (buffer was not uptodate). Honza
diff --git a/fs/ext3/inode.c b/fs/ext3/inode.c index c91f8bf..d5315d5 100644 --- a/fs/ext3/inode.c +++ b/fs/ext3/inode.c @@ -1084,7 +1084,7 @@ struct buffer_head *ext3_getblk(handle_t *handle, struct inode *inode, struct buffer_head *bh; bh = sb_getblk(inode->i_sb, dummy.b_blocknr); if (unlikely(!bh)) { - *errp = -EIO; + *errp = -ENOMEM; goto err; } if (buffer_new(&dummy)) { @@ -2739,7 +2739,7 @@ static int __ext3_get_inode_loc(struct inode *inode, "unable to read inode block - " "inode=%lu, block="E3FSBLK, inode->i_ino, block); - return -EIO; + return -ENOMEM; } if (!buffer_uptodate(bh)) { lock_buffer(bh); @@ -2833,7 +2833,7 @@ make_io: "inode=%lu, block="E3FSBLK, inode->i_ino, block); brelse(bh); - return -EIO; + return -ENOMEM; } } has_buffer: diff --git a/fs/ext3/resize.c b/fs/ext3/resize.c index 704e8ce..2710565 100644 --- a/fs/ext3/resize.c +++ b/fs/ext3/resize.c @@ -117,7 +117,7 @@ static struct buffer_head *bclean(handle_t *handle, struct super_block *sb, bh = sb_getblk(sb, blk); if (unlikely(!bh)) - return ERR_PTR(-EIO); + return ERR_PTR(-ENOMEM); if ((err = ext3_journal_get_write_access(handle, bh))) { brelse(bh); bh = ERR_PTR(err); @@ -235,7 +235,7 @@ static int setup_new_group_blocks(struct super_block *sb, gdb = sb_getblk(sb, block); if (unlikely(!gdb)) { - err = -EIO; + err = -ENOMEM; goto exit_bh; } if ((err = ext3_journal_get_write_access(handle, gdb))) { @@ -723,7 +723,7 @@ static void update_backups(struct super_block *sb, bh = sb_getblk(sb, group * bpg + blk_off); if (unlikely(!bh)) { - err = -EIO; + err = -ENOMEM; break; } ext3_debug("update metadata backup %#04lx\n", diff --git a/fs/ext3/xattr.c b/fs/ext3/xattr.c index 9f57470..b1fc963 100644 --- a/fs/ext3/xattr.c +++ b/fs/ext3/xattr.c @@ -816,7 +816,7 @@ inserted: if (unlikely(!new_bh)) { getblk_failed: ext3_free_blocks(handle, inode, block, 1); - error = -EIO; + error = -ENOMEM; goto cleanup; } lock_buffer(new_bh);