1 ext4: convert ext4_getblk() to use the ERR_PTR convention
3 From: Theodore Ts'o <tytso@mit.edu>
5 Signed-off-by: Theodore Ts'o <tytso@mit.edu>
8 fs/ext4/inode.c | 51 +++++++++++++++++++++++++--------------------------
9 fs/ext4/namei.c | 9 ++++-----
10 3 files changed, 30 insertions(+), 33 deletions(-)
12 diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h
13 index b0c225c..8009077 100644
16 @@ -2086,8 +2086,7 @@ extern int ext4_group_add_blocks(handle_t *handle, struct super_block *sb,
17 extern int ext4_trim_fs(struct super_block *, struct fstrim_range *);
20 -struct buffer_head *ext4_getblk(handle_t *, struct inode *,
21 - ext4_lblk_t, int, int *);
22 +struct buffer_head *ext4_getblk(handle_t *, struct inode *, ext4_lblk_t, int);
23 struct buffer_head *ext4_bread(handle_t *, struct inode *,
24 ext4_lblk_t, int, int *);
25 int ext4_get_block_write(struct inode *inode, sector_t iblock,
26 diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
27 index 3aa26e9..0dfc1cd 100644
30 @@ -734,11 +734,11 @@ int ext4_get_block(struct inode *inode, sector_t iblock,
31 * `handle' can be NULL if create is zero
33 struct buffer_head *ext4_getblk(handle_t *handle, struct inode *inode,
34 - ext4_lblk_t block, int create, int *errp)
35 + ext4_lblk_t block, int create)
37 struct ext4_map_blocks map;
38 struct buffer_head *bh;
42 J_ASSERT(handle != NULL || create == 0);
44 @@ -747,21 +747,14 @@ struct buffer_head *ext4_getblk(handle_t *handle, struct inode *inode,
45 err = ext4_map_blocks(handle, inode, &map,
46 create ? EXT4_GET_BLOCKS_CREATE : 0);
48 - /* ensure we send some value back into *errp */
51 - if (create && err == 0)
52 - err = -ENOSPC; /* should never happen */
54 + return create ? ERR_PTR(-ENOSPC) : NULL;
59 + return ERR_PTR(err);
61 bh = sb_getblk(inode->i_sb, map.m_pblk);
62 - if (unlikely(!bh)) {
67 + return ERR_PTR(-ENOMEM);
68 if (map.m_flags & EXT4_MAP_NEW) {
69 J_ASSERT(create != 0);
70 J_ASSERT(handle != NULL);
71 @@ -775,25 +768,26 @@ struct buffer_head *ext4_getblk(handle_t *handle, struct inode *inode,
74 BUFFER_TRACE(bh, "call get_create_access");
75 - fatal = ext4_journal_get_create_access(handle, bh);
76 - if (!fatal && !buffer_uptodate(bh)) {
77 + err = ext4_journal_get_create_access(handle, bh);
78 + if (unlikely(err)) {
82 + if (!buffer_uptodate(bh)) {
83 memset(bh->b_data, 0, inode->i_sb->s_blocksize);
84 set_buffer_uptodate(bh);
87 BUFFER_TRACE(bh, "call ext4_handle_dirty_metadata");
88 err = ext4_handle_dirty_metadata(handle, inode, bh);
95 BUFFER_TRACE(bh, "not a new buffer");
105 + return ERR_PTR(err);
108 struct buffer_head *ext4_bread(handle_t *handle, struct inode *inode,
109 @@ -801,7 +795,12 @@ struct buffer_head *ext4_bread(handle_t *handle, struct inode *inode,
111 struct buffer_head *bh;
113 - bh = ext4_getblk(handle, inode, block, create, err);
115 + bh = ext4_getblk(handle, inode, block, create);
117 + *err = PTR_ERR(bh);
122 if (buffer_uptodate(bh))
123 diff --git a/fs/ext4/namei.c b/fs/ext4/namei.c
124 index 1421ec1..26f114b 100644
125 --- a/fs/ext4/namei.c
126 +++ b/fs/ext4/namei.c
127 @@ -1226,8 +1226,7 @@ static struct buffer_head * ext4_find_entry (struct inode *dir,
137 @@ -1293,10 +1292,10 @@ restart:
141 - bh = ext4_getblk(NULL, dir, b++, 0, &err);
142 - if (unlikely(err)) {
143 + bh = ext4_getblk(NULL, dir, b++, 0);
144 + if (unlikely(IS_ERR(bh))) {
146 - return ERR_PTR(err);