Loading fs/ext4/ext4.h +1 −2 Original line number Diff line number Diff line Loading @@ -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, Loading fs/ext4/inode.c +25 −26 Original line number Diff line number Diff line Loading @@ -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); Loading @@ -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); Loading @@ -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, Loading @@ -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)) Loading fs/ext4/namei.c +4 −5 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 Loading
fs/ext4/ext4.h +1 −2 Original line number Diff line number Diff line Loading @@ -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, Loading
fs/ext4/inode.c +25 −26 Original line number Diff line number Diff line Loading @@ -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); Loading @@ -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); Loading @@ -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, Loading @@ -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)) Loading
fs/ext4/namei.c +4 −5 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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