diff options
Diffstat (limited to 'fs/ext4/namei.c')
-rw-r--r-- | fs/ext4/namei.c | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/fs/ext4/namei.c b/fs/ext4/namei.c index e7e1d79a7d75..4ec57be5baf5 100644 --- a/fs/ext4/namei.c +++ b/fs/ext4/namei.c | |||
@@ -36,7 +36,6 @@ | |||
36 | #include <linux/quotaops.h> | 36 | #include <linux/quotaops.h> |
37 | #include <linux/buffer_head.h> | 37 | #include <linux/buffer_head.h> |
38 | #include <linux/bio.h> | 38 | #include <linux/bio.h> |
39 | #include <linux/smp_lock.h> | ||
40 | 39 | ||
41 | #include "namei.h" | 40 | #include "namei.h" |
42 | #include "xattr.h" | 41 | #include "xattr.h" |
@@ -967,6 +966,7 @@ static struct buffer_head * ext4_dx_find_entry(struct dentry *dentry, | |||
967 | (block<<EXT4_BLOCK_SIZE_BITS(sb)) | 966 | (block<<EXT4_BLOCK_SIZE_BITS(sb)) |
968 | +((char *)de - bh->b_data))) { | 967 | +((char *)de - bh->b_data))) { |
969 | brelse (bh); | 968 | brelse (bh); |
969 | *err = ERR_BAD_DX_DIR; | ||
970 | goto errout; | 970 | goto errout; |
971 | } | 971 | } |
972 | *res_dir = de; | 972 | *res_dir = de; |
@@ -1132,9 +1132,9 @@ static struct ext4_dir_entry_2 *do_split(handle_t *handle, struct inode *dir, | |||
1132 | char *data1 = (*bh)->b_data, *data2; | 1132 | char *data1 = (*bh)->b_data, *data2; |
1133 | unsigned split; | 1133 | unsigned split; |
1134 | struct ext4_dir_entry_2 *de = NULL, *de2; | 1134 | struct ext4_dir_entry_2 *de = NULL, *de2; |
1135 | int err; | 1135 | int err = 0; |
1136 | 1136 | ||
1137 | bh2 = ext4_append (handle, dir, &newblock, error); | 1137 | bh2 = ext4_append (handle, dir, &newblock, &err); |
1138 | if (!(bh2)) { | 1138 | if (!(bh2)) { |
1139 | brelse(*bh); | 1139 | brelse(*bh); |
1140 | *bh = NULL; | 1140 | *bh = NULL; |
@@ -1143,14 +1143,9 @@ static struct ext4_dir_entry_2 *do_split(handle_t *handle, struct inode *dir, | |||
1143 | 1143 | ||
1144 | BUFFER_TRACE(*bh, "get_write_access"); | 1144 | BUFFER_TRACE(*bh, "get_write_access"); |
1145 | err = ext4_journal_get_write_access(handle, *bh); | 1145 | err = ext4_journal_get_write_access(handle, *bh); |
1146 | if (err) { | 1146 | if (err) |
1147 | journal_error: | 1147 | goto journal_error; |
1148 | brelse(*bh); | 1148 | |
1149 | brelse(bh2); | ||
1150 | *bh = NULL; | ||
1151 | ext4_std_error(dir->i_sb, err); | ||
1152 | goto errout; | ||
1153 | } | ||
1154 | BUFFER_TRACE(frame->bh, "get_write_access"); | 1149 | BUFFER_TRACE(frame->bh, "get_write_access"); |
1155 | err = ext4_journal_get_write_access(handle, frame->bh); | 1150 | err = ext4_journal_get_write_access(handle, frame->bh); |
1156 | if (err) | 1151 | if (err) |
@@ -1193,8 +1188,16 @@ static struct ext4_dir_entry_2 *do_split(handle_t *handle, struct inode *dir, | |||
1193 | goto journal_error; | 1188 | goto journal_error; |
1194 | brelse (bh2); | 1189 | brelse (bh2); |
1195 | dxtrace(dx_show_index ("frame", frame->entries)); | 1190 | dxtrace(dx_show_index ("frame", frame->entries)); |
1196 | errout: | ||
1197 | return de; | 1191 | return de; |
1192 | |||
1193 | journal_error: | ||
1194 | brelse(*bh); | ||
1195 | brelse(bh2); | ||
1196 | *bh = NULL; | ||
1197 | ext4_std_error(dir->i_sb, err); | ||
1198 | errout: | ||
1199 | *error = err; | ||
1200 | return NULL; | ||
1198 | } | 1201 | } |
1199 | #endif | 1202 | #endif |
1200 | 1203 | ||