mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-04 02:06:43 +07:00
ext4: convert ext4_getblk() to use the ERR_PTR convention
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
This commit is contained in:
parent
537d8f9380
commit
1056008226
@ -2086,8 +2086,7 @@ extern int ext4_group_add_blocks(handle_t *handle, struct super_block *sb,
|
||||
extern int ext4_trim_fs(struct super_block *, struct fstrim_range *);
|
||||
|
||||
/* inode.c */
|
||||
struct buffer_head *ext4_getblk(handle_t *, struct inode *,
|
||||
ext4_lblk_t, int, int *);
|
||||
struct buffer_head *ext4_getblk(handle_t *, struct inode *, ext4_lblk_t, int);
|
||||
struct buffer_head *ext4_bread(handle_t *, struct inode *,
|
||||
ext4_lblk_t, int, int *);
|
||||
int ext4_get_block_write(struct inode *inode, sector_t iblock,
|
||||
|
@ -734,11 +734,11 @@ int ext4_get_block(struct inode *inode, sector_t iblock,
|
||||
* `handle' can be NULL if create is zero
|
||||
*/
|
||||
struct buffer_head *ext4_getblk(handle_t *handle, struct inode *inode,
|
||||
ext4_lblk_t block, int create, int *errp)
|
||||
ext4_lblk_t block, int create)
|
||||
{
|
||||
struct ext4_map_blocks map;
|
||||
struct buffer_head *bh;
|
||||
int fatal = 0, err;
|
||||
int err;
|
||||
|
||||
J_ASSERT(handle != NULL || create == 0);
|
||||
|
||||
@ -747,21 +747,14 @@ struct buffer_head *ext4_getblk(handle_t *handle, struct inode *inode,
|
||||
err = ext4_map_blocks(handle, inode, &map,
|
||||
create ? EXT4_GET_BLOCKS_CREATE : 0);
|
||||
|
||||
/* ensure we send some value back into *errp */
|
||||
*errp = 0;
|
||||
|
||||
if (create && err == 0)
|
||||
err = -ENOSPC; /* should never happen */
|
||||
if (err == 0)
|
||||
return create ? ERR_PTR(-ENOSPC) : NULL;
|
||||
if (err < 0)
|
||||
*errp = err;
|
||||
if (err <= 0)
|
||||
return NULL;
|
||||
return ERR_PTR(err);
|
||||
|
||||
bh = sb_getblk(inode->i_sb, map.m_pblk);
|
||||
if (unlikely(!bh)) {
|
||||
*errp = -ENOMEM;
|
||||
return NULL;
|
||||
}
|
||||
if (unlikely(!bh))
|
||||
return ERR_PTR(-ENOMEM);
|
||||
if (map.m_flags & EXT4_MAP_NEW) {
|
||||
J_ASSERT(create != 0);
|
||||
J_ASSERT(handle != NULL);
|
||||
@ -775,25 +768,26 @@ struct buffer_head *ext4_getblk(handle_t *handle, struct inode *inode,
|
||||
*/
|
||||
lock_buffer(bh);
|
||||
BUFFER_TRACE(bh, "call get_create_access");
|
||||
fatal = ext4_journal_get_create_access(handle, bh);
|
||||
if (!fatal && !buffer_uptodate(bh)) {
|
||||
err = ext4_journal_get_create_access(handle, bh);
|
||||
if (unlikely(err)) {
|
||||
unlock_buffer(bh);
|
||||
goto errout;
|
||||
}
|
||||
if (!buffer_uptodate(bh)) {
|
||||
memset(bh->b_data, 0, inode->i_sb->s_blocksize);
|
||||
set_buffer_uptodate(bh);
|
||||
}
|
||||
unlock_buffer(bh);
|
||||
BUFFER_TRACE(bh, "call ext4_handle_dirty_metadata");
|
||||
err = ext4_handle_dirty_metadata(handle, inode, bh);
|
||||
if (!fatal)
|
||||
fatal = err;
|
||||
} else {
|
||||
if (unlikely(err))
|
||||
goto errout;
|
||||
} else
|
||||
BUFFER_TRACE(bh, "not a new buffer");
|
||||
}
|
||||
if (fatal) {
|
||||
*errp = fatal;
|
||||
brelse(bh);
|
||||
bh = NULL;
|
||||
}
|
||||
return bh;
|
||||
errout:
|
||||
brelse(bh);
|
||||
return ERR_PTR(err);
|
||||
}
|
||||
|
||||
struct buffer_head *ext4_bread(handle_t *handle, struct inode *inode,
|
||||
@ -801,7 +795,12 @@ struct buffer_head *ext4_bread(handle_t *handle, struct inode *inode,
|
||||
{
|
||||
struct buffer_head *bh;
|
||||
|
||||
bh = ext4_getblk(handle, inode, block, create, err);
|
||||
*err = 0;
|
||||
bh = ext4_getblk(handle, inode, block, create);
|
||||
if (IS_ERR(bh)) {
|
||||
*err = PTR_ERR(bh);
|
||||
return NULL;
|
||||
}
|
||||
if (!bh)
|
||||
return bh;
|
||||
if (buffer_uptodate(bh))
|
||||
|
@ -1226,8 +1226,7 @@ static struct buffer_head * ext4_find_entry (struct inode *dir,
|
||||
buffer */
|
||||
int num = 0;
|
||||
ext4_lblk_t nblocks;
|
||||
int i, err = 0;
|
||||
int namelen;
|
||||
int i, namelen;
|
||||
|
||||
*res_dir = NULL;
|
||||
sb = dir->i_sb;
|
||||
@ -1293,10 +1292,10 @@ static struct buffer_head * ext4_find_entry (struct inode *dir,
|
||||
break;
|
||||
}
|
||||
num++;
|
||||
bh = ext4_getblk(NULL, dir, b++, 0, &err);
|
||||
if (unlikely(err)) {
|
||||
bh = ext4_getblk(NULL, dir, b++, 0);
|
||||
if (unlikely(IS_ERR(bh))) {
|
||||
if (ra_max == 0)
|
||||
return ERR_PTR(err);
|
||||
return bh;
|
||||
break;
|
||||
}
|
||||
bh_use[ra_max] = bh;
|
||||
|
Loading…
Reference in New Issue
Block a user