diff options
author | Tahsin Erdogan <tahsin@google.com> | 2017-06-21 21:49:53 -0400 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2017-06-21 21:49:53 -0400 |
commit | bab79b04999ccbbf59f1693d0783cd6ae27e4278 (patch) | |
tree | 139a79802358a08a5bf3887bf91e1094b31a3cb9 | |
parent | 0eefb10758e696616f19a84d8c5f15b9ffc0dccd (diff) |
ext4: change ext4_xattr_inode_iget() signature
In general, kernel functions indicate success/failure through their return
values. This function returns the status as an output parameter and reserves
the return value for the inode. Make it follow the general convention.
Signed-off-by: Tahsin Erdogan <tahsin@google.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
-rw-r--r-- | fs/ext4/xattr.c | 73 | ||||
-rw-r--r-- | fs/ext4/xattr.h | 2 |
2 files changed, 40 insertions, 35 deletions
diff --git a/fs/ext4/xattr.c b/fs/ext4/xattr.c index 53698f8a6e54..f16a90824d44 100644 --- a/fs/ext4/xattr.c +++ b/fs/ext4/xattr.c | |||
@@ -312,40 +312,47 @@ ext4_xattr_inode_read(struct inode *ea_inode, void *buf, size_t *size) | |||
312 | return 0; | 312 | return 0; |
313 | } | 313 | } |
314 | 314 | ||
315 | struct inode *ext4_xattr_inode_iget(struct inode *parent, unsigned long ea_ino, int *err) | 315 | static int ext4_xattr_inode_iget(struct inode *parent, unsigned long ea_ino, |
316 | struct inode **ea_inode) | ||
316 | { | 317 | { |
317 | struct inode *ea_inode = NULL; | 318 | struct inode *inode; |
319 | int err; | ||
320 | |||
321 | inode = ext4_iget(parent->i_sb, ea_ino); | ||
322 | if (IS_ERR(inode)) { | ||
323 | err = PTR_ERR(inode); | ||
324 | ext4_error(parent->i_sb, "error while reading EA inode %lu " | ||
325 | "err=%d", ea_ino, err); | ||
326 | return err; | ||
327 | } | ||
318 | 328 | ||
319 | ea_inode = ext4_iget(parent->i_sb, ea_ino); | 329 | if (is_bad_inode(inode)) { |
320 | if (IS_ERR(ea_inode) || is_bad_inode(ea_inode)) { | ||
321 | int rc = IS_ERR(ea_inode) ? PTR_ERR(ea_inode) : 0; | ||
322 | ext4_error(parent->i_sb, "error while reading EA inode %lu " | 330 | ext4_error(parent->i_sb, "error while reading EA inode %lu " |
323 | "/ %d %d", ea_ino, rc, is_bad_inode(ea_inode)); | 331 | "is_bad_inode", ea_ino); |
324 | *err = rc != 0 ? rc : -EIO; | 332 | err = -EIO; |
325 | return NULL; | 333 | goto error; |
326 | } | 334 | } |
327 | 335 | ||
328 | if (EXT4_XATTR_INODE_GET_PARENT(ea_inode) != parent->i_ino || | 336 | if (EXT4_XATTR_INODE_GET_PARENT(inode) != parent->i_ino || |
329 | ea_inode->i_generation != parent->i_generation) { | 337 | inode->i_generation != parent->i_generation) { |
330 | ext4_error(parent->i_sb, "Backpointer from EA inode %lu " | 338 | ext4_error(parent->i_sb, "Backpointer from EA inode %lu " |
331 | "to parent invalid.", ea_ino); | 339 | "to parent is invalid.", ea_ino); |
332 | *err = -EINVAL; | 340 | err = -EINVAL; |
333 | goto error; | 341 | goto error; |
334 | } | 342 | } |
335 | 343 | ||
336 | if (!(EXT4_I(ea_inode)->i_flags & EXT4_EA_INODE_FL)) { | 344 | if (!(EXT4_I(inode)->i_flags & EXT4_EA_INODE_FL)) { |
337 | ext4_error(parent->i_sb, "EA inode %lu does not have " | 345 | ext4_error(parent->i_sb, "EA inode %lu does not have " |
338 | "EXT4_EA_INODE_FL flag set.\n", ea_ino); | 346 | "EXT4_EA_INODE_FL flag set.\n", ea_ino); |
339 | *err = -EINVAL; | 347 | err = -EINVAL; |
340 | goto error; | 348 | goto error; |
341 | } | 349 | } |
342 | 350 | ||
343 | *err = 0; | 351 | *ea_inode = inode; |
344 | return ea_inode; | 352 | return 0; |
345 | |||
346 | error: | 353 | error: |
347 | iput(ea_inode); | 354 | iput(inode); |
348 | return NULL; | 355 | return err; |
349 | } | 356 | } |
350 | 357 | ||
351 | /* | 358 | /* |
@@ -355,17 +362,17 @@ static int | |||
355 | ext4_xattr_inode_get(struct inode *inode, unsigned long ea_ino, void *buffer, | 362 | ext4_xattr_inode_get(struct inode *inode, unsigned long ea_ino, void *buffer, |
356 | size_t *size) | 363 | size_t *size) |
357 | { | 364 | { |
358 | struct inode *ea_inode = NULL; | 365 | struct inode *ea_inode; |
359 | int err; | 366 | int ret; |
360 | 367 | ||
361 | ea_inode = ext4_xattr_inode_iget(inode, ea_ino, &err); | 368 | ret = ext4_xattr_inode_iget(inode, ea_ino, &ea_inode); |
362 | if (err) | 369 | if (ret) |
363 | return err; | 370 | return ret; |
364 | 371 | ||
365 | err = ext4_xattr_inode_read(ea_inode, buffer, size); | 372 | ret = ext4_xattr_inode_read(ea_inode, buffer, size); |
366 | iput(ea_inode); | 373 | iput(ea_inode); |
367 | 374 | ||
368 | return err; | 375 | return ret; |
369 | } | 376 | } |
370 | 377 | ||
371 | static int | 378 | static int |
@@ -866,7 +873,7 @@ int ext4_xattr_inode_unlink(struct inode *inode, unsigned long ea_ino) | |||
866 | struct inode *ea_inode = NULL; | 873 | struct inode *ea_inode = NULL; |
867 | int err; | 874 | int err; |
868 | 875 | ||
869 | ea_inode = ext4_xattr_inode_iget(inode, ea_ino, &err); | 876 | err = ext4_xattr_inode_iget(inode, ea_ino, &ea_inode); |
870 | if (err) | 877 | if (err) |
871 | return err; | 878 | return err; |
872 | 879 | ||
@@ -1946,7 +1953,7 @@ static int | |||
1946 | ext4_xattr_inode_orphan_add(handle_t *handle, struct inode *inode, | 1953 | ext4_xattr_inode_orphan_add(handle_t *handle, struct inode *inode, |
1947 | int credits, struct ext4_xattr_ino_array *lea_ino_array) | 1954 | int credits, struct ext4_xattr_ino_array *lea_ino_array) |
1948 | { | 1955 | { |
1949 | struct inode *ea_inode = NULL; | 1956 | struct inode *ea_inode; |
1950 | int idx = 0, error = 0; | 1957 | int idx = 0, error = 0; |
1951 | 1958 | ||
1952 | if (lea_ino_array == NULL) | 1959 | if (lea_ino_array == NULL) |
@@ -1965,8 +1972,8 @@ ext4_xattr_inode_orphan_add(handle_t *handle, struct inode *inode, | |||
1965 | return error; | 1972 | return error; |
1966 | } | 1973 | } |
1967 | } | 1974 | } |
1968 | ea_inode = ext4_xattr_inode_iget(inode, | 1975 | error = ext4_xattr_inode_iget(inode, |
1969 | lea_ino_array->xia_inodes[idx], &error); | 1976 | lea_ino_array->xia_inodes[idx], &ea_inode); |
1970 | if (error) | 1977 | if (error) |
1971 | continue; | 1978 | continue; |
1972 | inode_lock(ea_inode); | 1979 | inode_lock(ea_inode); |
@@ -2083,7 +2090,7 @@ void | |||
2083 | ext4_xattr_inode_array_free(struct inode *inode, | 2090 | ext4_xattr_inode_array_free(struct inode *inode, |
2084 | struct ext4_xattr_ino_array *lea_ino_array) | 2091 | struct ext4_xattr_ino_array *lea_ino_array) |
2085 | { | 2092 | { |
2086 | struct inode *ea_inode = NULL; | 2093 | struct inode *ea_inode; |
2087 | int idx = 0; | 2094 | int idx = 0; |
2088 | int err; | 2095 | int err; |
2089 | 2096 | ||
@@ -2091,8 +2098,8 @@ ext4_xattr_inode_array_free(struct inode *inode, | |||
2091 | return; | 2098 | return; |
2092 | 2099 | ||
2093 | for (; idx < lea_ino_array->xia_count; ++idx) { | 2100 | for (; idx < lea_ino_array->xia_count; ++idx) { |
2094 | ea_inode = ext4_xattr_inode_iget(inode, | 2101 | err = ext4_xattr_inode_iget(inode, |
2095 | lea_ino_array->xia_inodes[idx], &err); | 2102 | lea_ino_array->xia_inodes[idx], &ea_inode); |
2096 | if (err) | 2103 | if (err) |
2097 | continue; | 2104 | continue; |
2098 | /* for inode's i_count get from ext4_xattr_delete_inode */ | 2105 | /* for inode's i_count get from ext4_xattr_delete_inode */ |
diff --git a/fs/ext4/xattr.h b/fs/ext4/xattr.h index e8bef79bdc38..b6ef99d1a061 100644 --- a/fs/ext4/xattr.h +++ b/fs/ext4/xattr.h | |||
@@ -161,8 +161,6 @@ extern int ext4_xattr_get(struct inode *, int, const char *, void *, size_t); | |||
161 | extern int ext4_xattr_set(struct inode *, int, const char *, const void *, size_t, int); | 161 | extern int ext4_xattr_set(struct inode *, int, const char *, const void *, size_t, int); |
162 | extern int ext4_xattr_set_handle(handle_t *, struct inode *, int, const char *, const void *, size_t, int); | 162 | extern int ext4_xattr_set_handle(handle_t *, struct inode *, int, const char *, const void *, size_t, int); |
163 | 163 | ||
164 | extern struct inode *ext4_xattr_inode_iget(struct inode *parent, unsigned long ea_ino, | ||
165 | int *err); | ||
166 | extern int ext4_xattr_inode_unlink(struct inode *inode, unsigned long ea_ino); | 164 | extern int ext4_xattr_inode_unlink(struct inode *inode, unsigned long ea_ino); |
167 | extern int ext4_xattr_delete_inode(handle_t *handle, struct inode *inode, | 165 | extern int ext4_xattr_delete_inode(handle_t *handle, struct inode *inode, |
168 | struct ext4_xattr_ino_array **array); | 166 | struct ext4_xattr_ino_array **array); |