mirror of
https://git.FreeBSD.org/src.git
synced 2025-01-30 16:51:41 +00:00
ext2fs: Cleanup variable assignments for extents.
Delay the initialization of variables until the are needed. In the case of ext4_ext_rm_leaf(), make sure 'error' value is not undefined. Reported by: Clang's static analyzer Differential Revision: https://reviews.freebsd.org/D14193
This commit is contained in:
parent
be4be0e5ca
commit
f86f5cd406
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=328882
@ -1159,14 +1159,13 @@ ext4_new_blocks(struct inode *ip, daddr_t lbn, e4fs_daddr_t pref,
|
||||
struct m_ext2fs *fs;
|
||||
e4fs_daddr_t newblk;
|
||||
|
||||
fs = ip->i_e2fs;
|
||||
|
||||
/*
|
||||
* We will allocate only single block for now.
|
||||
*/
|
||||
if (*count > 1)
|
||||
return (0);
|
||||
|
||||
fs = ip->i_e2fs;
|
||||
EXT2_LOCK(ip->i_ump);
|
||||
*perror = ext2_alloc(ip, lbn, pref, (int)fs->e2fs_bsize, cred, &newblk);
|
||||
if (*perror)
|
||||
@ -1193,13 +1192,12 @@ ext4_ext_get_blocks(struct inode *ip, e4fs_daddr_t iblk,
|
||||
unsigned long allocated = 0;
|
||||
int error = 0, depth;
|
||||
|
||||
fs = ip->i_e2fs;
|
||||
*pallocated = 0;
|
||||
path = NULL;
|
||||
if(bpp)
|
||||
*bpp = NULL;
|
||||
*pallocated = 0;
|
||||
|
||||
/* Check cache. */
|
||||
path = NULL;
|
||||
if ((bpref = ext4_ext_in_cache(ip, iblk, &newex))) {
|
||||
if (bpref == EXT4_EXT_CACHE_IN) {
|
||||
/* Block is already allocated. */
|
||||
@ -1271,6 +1269,7 @@ ext4_ext_get_blocks(struct inode *ip, e4fs_daddr_t iblk,
|
||||
|
||||
if (bpp)
|
||||
{
|
||||
fs = ip->i_e2fs;
|
||||
error = bread(ip->i_devvp, fsbtodb(fs, newblk),
|
||||
fs->e2fs_bsize, cred, &bp);
|
||||
if (error) {
|
||||
@ -1304,7 +1303,7 @@ static inline struct ext4_extent_header *
|
||||
ext4_ext_header(struct inode *ip)
|
||||
{
|
||||
|
||||
return (struct ext4_extent_header *)ip->i_db;
|
||||
return ((struct ext4_extent_header *)ip->i_db);
|
||||
}
|
||||
|
||||
static int
|
||||
@ -1345,19 +1344,15 @@ static int
|
||||
ext4_ext_rm_leaf(struct inode *ip, struct ext4_extent_path *path,
|
||||
uint64_t start)
|
||||
{
|
||||
struct m_ext2fs *fs;
|
||||
int depth;
|
||||
struct ext4_extent_header *eh;
|
||||
struct ext4_extent *ex;
|
||||
unsigned int a, b, block, num;
|
||||
unsigned long ex_blk;
|
||||
unsigned short ex_len;
|
||||
struct ext4_extent *ex;
|
||||
int depth;
|
||||
int error, correct_index;
|
||||
|
||||
fs = ip->i_e2fs;
|
||||
depth = ext4_ext_inode_depth(ip);
|
||||
correct_index = 0;
|
||||
|
||||
if (!path[depth].ep_header) {
|
||||
if (path[depth].ep_data == NULL)
|
||||
return (EINVAL);
|
||||
@ -1367,7 +1362,8 @@ ext4_ext_rm_leaf(struct inode *ip, struct ext4_extent_path *path,
|
||||
|
||||
eh = path[depth].ep_header;
|
||||
if (!eh) {
|
||||
ext2_fserr(fs, ip->i_uid, "bad header => extent corrupted");
|
||||
ext2_fserr(ip->i_e2fs, ip->i_uid,
|
||||
"bad header => extent corrupted");
|
||||
return (EIO);
|
||||
}
|
||||
|
||||
@ -1375,6 +1371,8 @@ ext4_ext_rm_leaf(struct inode *ip, struct ext4_extent_path *path,
|
||||
ex_blk = ex->e_blk;
|
||||
ex_len = ext4_ext_get_actual_len(ex);
|
||||
|
||||
error = 0;
|
||||
correct_index = 0;
|
||||
while (ex >= EXT_FIRST_EXTENT(eh) && ex_blk + ex_len > start) {
|
||||
path[depth].ep_ext = ex;
|
||||
a = ex_blk > start ? ex_blk : start;
|
||||
@ -1442,7 +1440,6 @@ ext4_read_extent_tree_block(struct inode *ip, e4fs_daddr_t pblk,
|
||||
int error;
|
||||
|
||||
fs = ip->i_e2fs;
|
||||
|
||||
error = bread(ip->i_devvp, fsbtodb(fs, pblk),
|
||||
fs->e2fs_bsize, NOCRED, &bp);
|
||||
if (error) {
|
||||
@ -1506,10 +1503,10 @@ ext4_ext_remove_space(struct inode *ip, off_t length, int flags,
|
||||
if (!path)
|
||||
return (ENOMEM);
|
||||
|
||||
i = 0;
|
||||
path[0].ep_header = ehp;
|
||||
path[0].ep_depth = depth;
|
||||
while (i >= 0 && error == 0) {
|
||||
i = 0;
|
||||
while (error == 0 && i >= 0) {
|
||||
if (i == depth) {
|
||||
/* This is leaf. */
|
||||
error = ext4_ext_rm_leaf(ip, path, length);
|
||||
@ -1568,7 +1565,6 @@ ext4_ext_remove_space(struct inode *ip, off_t length, int flags,
|
||||
ext4_ext_header(ip)->eh_depth = 0;
|
||||
ext4_ext_header(ip)->eh_max = ext4_ext_space_root(ip);
|
||||
ext4_ext_dirty(ip, path);
|
||||
|
||||
}
|
||||
|
||||
ext4_ext_drop_refs(path);
|
||||
|
Loading…
Reference in New Issue
Block a user