aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTheodore Ts'o <tytso@mit.edu>2013-02-15 03:35:57 -0500
committerTheodore Ts'o <tytso@mit.edu>2013-02-15 03:35:57 -0500
commit0f70b40613ee14b0cadafeb461034cff81b4419a (patch)
tree10ba1447b672e41bbacdaaf9131844f64c85be4b
parentdc6982ff4db1f47da73b1967ef5302d6721e5b95 (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>
-rw-r--r--fs/ext4/inode.c2
-rw-r--r--fs/ext4/namei.c65
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
52static struct buffer_head *ext4_append(handle_t *handle, 52static 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);
1643errout:
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)