diff options
author | Theodore Ts'o <tytso@mit.edu> | 2013-02-15 03:35:57 -0500 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2013-02-15 03:35:57 -0500 |
commit | 0f70b40613ee14b0cadafeb461034cff81b4419a (patch) | |
tree | 10ba1447b672e41bbacdaaf9131844f64c85be4b /fs/ext4 | |
parent | dc6982ff4db1f47da73b1967ef5302d6721e5b95 (diff) |
ext4: use ERR_PTR() abstraction for ext4_append()
Use ERR_PTR()/IS_ERR() abstraction instead of passing in a separate
pointer to an integer for the error code, as a code cleanup.
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Diffstat (limited to 'fs/ext4')
-rw-r--r-- | fs/ext4/inode.c | 2 | ||||
-rw-r--r-- | fs/ext4/namei.c | 65 |
2 files changed, 33 insertions, 34 deletions
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index c4e9177f60c6..f4466c3650dc 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c | |||
@@ -707,6 +707,8 @@ struct buffer_head *ext4_getblk(handle_t *handle, struct inode *inode, | |||
707 | /* ensure we send some value back into *errp */ | 707 | /* ensure we send some value back into *errp */ |
708 | *errp = 0; | 708 | *errp = 0; |
709 | 709 | ||
710 | if (create && err == 0) | ||
711 | err = -ENOSPC; /* should never happen */ | ||
710 | if (err < 0) | 712 | if (err < 0) |
711 | *errp = err; | 713 | *errp = err; |
712 | if (err <= 0) | 714 | if (err <= 0) |
diff --git a/fs/ext4/namei.c b/fs/ext4/namei.c index 0e28c749e273..f58c053d13e0 100644 --- a/fs/ext4/namei.c +++ b/fs/ext4/namei.c | |||
@@ -51,34 +51,28 @@ | |||
51 | 51 | ||
52 | static struct buffer_head *ext4_append(handle_t *handle, | 52 | static struct buffer_head *ext4_append(handle_t *handle, |
53 | struct inode *inode, | 53 | struct inode *inode, |
54 | ext4_lblk_t *block, int *err) | 54 | ext4_lblk_t *block) |
55 | { | 55 | { |
56 | struct buffer_head *bh; | 56 | struct buffer_head *bh; |
57 | int err = 0; | ||
57 | 58 | ||
58 | if (unlikely(EXT4_SB(inode->i_sb)->s_max_dir_size_kb && | 59 | if (unlikely(EXT4_SB(inode->i_sb)->s_max_dir_size_kb && |
59 | ((inode->i_size >> 10) >= | 60 | ((inode->i_size >> 10) >= |
60 | EXT4_SB(inode->i_sb)->s_max_dir_size_kb))) { | 61 | EXT4_SB(inode->i_sb)->s_max_dir_size_kb))) |
61 | *err = -ENOSPC; | 62 | return ERR_PTR(-ENOSPC); |
62 | return NULL; | ||
63 | } | ||
64 | 63 | ||
65 | *block = inode->i_size >> inode->i_sb->s_blocksize_bits; | 64 | *block = inode->i_size >> inode->i_sb->s_blocksize_bits; |
66 | 65 | ||
67 | bh = ext4_bread(handle, inode, *block, 1, err); | 66 | bh = ext4_bread(handle, inode, *block, 1, &err); |
68 | if (bh) { | 67 | if (!bh) |
69 | inode->i_size += inode->i_sb->s_blocksize; | 68 | return ERR_PTR(err); |
70 | EXT4_I(inode)->i_disksize = inode->i_size; | 69 | inode->i_size += inode->i_sb->s_blocksize; |
71 | *err = ext4_journal_get_write_access(handle, bh); | 70 | EXT4_I(inode)->i_disksize = inode->i_size; |
72 | if (*err) { | 71 | err = ext4_journal_get_write_access(handle, bh); |
73 | brelse(bh); | 72 | if (err) { |
74 | bh = NULL; | 73 | brelse(bh); |
75 | } | 74 | ext4_std_error(inode->i_sb, err); |
76 | } | 75 | return ERR_PTR(err); |
77 | if (!bh && !(*err)) { | ||
78 | *err = -EIO; | ||
79 | ext4_error(inode->i_sb, | ||
80 | "Directory hole detected on inode %lu\n", | ||
81 | inode->i_ino); | ||
82 | } | 76 | } |
83 | return bh; | 77 | return bh; |
84 | } | 78 | } |
@@ -1555,11 +1549,12 @@ static struct ext4_dir_entry_2 *do_split(handle_t *handle, struct inode *dir, | |||
1555 | EXT4_FEATURE_RO_COMPAT_METADATA_CSUM)) | 1549 | EXT4_FEATURE_RO_COMPAT_METADATA_CSUM)) |
1556 | csum_size = sizeof(struct ext4_dir_entry_tail); | 1550 | csum_size = sizeof(struct ext4_dir_entry_tail); |
1557 | 1551 | ||
1558 | bh2 = ext4_append (handle, dir, &newblock, &err); | 1552 | bh2 = ext4_append(handle, dir, &newblock); |
1559 | if (!(bh2)) { | 1553 | if (IS_ERR(bh2)) { |
1560 | brelse(*bh); | 1554 | brelse(*bh); |
1561 | *bh = NULL; | 1555 | *bh = NULL; |
1562 | goto errout; | 1556 | *error = PTR_ERR(bh2); |
1557 | return NULL; | ||
1563 | } | 1558 | } |
1564 | 1559 | ||
1565 | BUFFER_TRACE(*bh, "get_write_access"); | 1560 | BUFFER_TRACE(*bh, "get_write_access"); |
@@ -1640,7 +1635,6 @@ journal_error: | |||
1640 | brelse(bh2); | 1635 | brelse(bh2); |
1641 | *bh = NULL; | 1636 | *bh = NULL; |
1642 | ext4_std_error(dir->i_sb, err); | 1637 | ext4_std_error(dir->i_sb, err); |
1643 | errout: | ||
1644 | *error = err; | 1638 | *error = err; |
1645 | return NULL; | 1639 | return NULL; |
1646 | } | 1640 | } |
@@ -1815,10 +1809,10 @@ static int make_indexed_dir(handle_t *handle, struct dentry *dentry, | |||
1815 | len = ((char *) root) + (blocksize - csum_size) - (char *) de; | 1809 | len = ((char *) root) + (blocksize - csum_size) - (char *) de; |
1816 | 1810 | ||
1817 | /* Allocate new block for the 0th block's dirents */ | 1811 | /* Allocate new block for the 0th block's dirents */ |
1818 | bh2 = ext4_append(handle, dir, &block, &retval); | 1812 | bh2 = ext4_append(handle, dir, &block); |
1819 | if (!(bh2)) { | 1813 | if (IS_ERR(bh2)) { |
1820 | brelse(bh); | 1814 | brelse(bh); |
1821 | return retval; | 1815 | return PTR_ERR(bh2); |
1822 | } | 1816 | } |
1823 | ext4_set_inode_flag(dir, EXT4_INODE_INDEX); | 1817 | ext4_set_inode_flag(dir, EXT4_INODE_INDEX); |
1824 | data1 = bh2->b_data; | 1818 | data1 = bh2->b_data; |
@@ -1950,9 +1944,9 @@ static int ext4_add_entry(handle_t *handle, struct dentry *dentry, | |||
1950 | return make_indexed_dir(handle, dentry, inode, bh); | 1944 | return make_indexed_dir(handle, dentry, inode, bh); |
1951 | brelse(bh); | 1945 | brelse(bh); |
1952 | } | 1946 | } |
1953 | bh = ext4_append(handle, dir, &block, &retval); | 1947 | bh = ext4_append(handle, dir, &block); |
1954 | if (!bh) | 1948 | if (IS_ERR(bh)) |
1955 | return retval; | 1949 | return PTR_ERR(bh); |
1956 | de = (struct ext4_dir_entry_2 *) bh->b_data; | 1950 | de = (struct ext4_dir_entry_2 *) bh->b_data; |
1957 | de->inode = 0; | 1951 | de->inode = 0; |
1958 | de->rec_len = ext4_rec_len_to_disk(blocksize - csum_size, blocksize); | 1952 | de->rec_len = ext4_rec_len_to_disk(blocksize - csum_size, blocksize); |
@@ -2023,9 +2017,11 @@ static int ext4_dx_add_entry(handle_t *handle, struct dentry *dentry, | |||
2023 | err = -ENOSPC; | 2017 | err = -ENOSPC; |
2024 | goto cleanup; | 2018 | goto cleanup; |
2025 | } | 2019 | } |
2026 | bh2 = ext4_append (handle, dir, &newblock, &err); | 2020 | bh2 = ext4_append(handle, dir, &newblock); |
2027 | if (!(bh2)) | 2021 | if (IS_ERR(bh2)) { |
2022 | err = PTR_ERR(bh2); | ||
2028 | goto cleanup; | 2023 | goto cleanup; |
2024 | } | ||
2029 | node2 = (struct dx_node *)(bh2->b_data); | 2025 | node2 = (struct dx_node *)(bh2->b_data); |
2030 | entries2 = node2->entries; | 2026 | entries2 = node2->entries; |
2031 | memset(&node2->fake, 0, sizeof(struct fake_dirent)); | 2027 | memset(&node2->fake, 0, sizeof(struct fake_dirent)); |
@@ -2364,8 +2360,9 @@ static int ext4_init_new_dir(handle_t *handle, struct inode *dir, | |||
2364 | } | 2360 | } |
2365 | 2361 | ||
2366 | inode->i_size = 0; | 2362 | inode->i_size = 0; |
2367 | if (!(dir_block = ext4_append(handle, inode, &block, &err))) | 2363 | dir_block = ext4_append(handle, inode, &block); |
2368 | goto out; | 2364 | if (IS_ERR(dir_block)) |
2365 | return PTR_ERR(dir_block); | ||
2369 | BUFFER_TRACE(dir_block, "get_write_access"); | 2366 | BUFFER_TRACE(dir_block, "get_write_access"); |
2370 | err = ext4_journal_get_write_access(handle, dir_block); | 2367 | err = ext4_journal_get_write_access(handle, dir_block); |
2371 | if (err) | 2368 | if (err) |