ext4: change ext4_xattr_inode_iget() signature
authorTahsin Erdogan <tahsin@google.com>
Thu, 22 Jun 2017 01:49:53 +0000 (21:49 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Thu, 22 Jun 2017 01:49:53 +0000 (21:49 -0400)
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>
fs/ext4/xattr.c
fs/ext4/xattr.h

index 53698f8a6e54fcb452d57bd497e3f636a97dc05c..f16a90824d4489c7251b7f21a7e3dfacf964ac7a 100644 (file)
@@ -312,40 +312,47 @@ ext4_xattr_inode_read(struct inode *ea_inode, void *buf, size_t *size)
        return 0;
 }
 
-struct inode *ext4_xattr_inode_iget(struct inode *parent, unsigned long ea_ino, int *err)
+static int ext4_xattr_inode_iget(struct inode *parent, unsigned long ea_ino,
+                                struct inode **ea_inode)
 {
-       struct inode *ea_inode = NULL;
+       struct inode *inode;
+       int err;
+
+       inode = ext4_iget(parent->i_sb, ea_ino);
+       if (IS_ERR(inode)) {
+               err = PTR_ERR(inode);
+               ext4_error(parent->i_sb, "error while reading EA inode %lu "
+                          "err=%d", ea_ino, err);
+               return err;
+       }
 
-       ea_inode = ext4_iget(parent->i_sb, ea_ino);
-       if (IS_ERR(ea_inode) || is_bad_inode(ea_inode)) {
-               int rc = IS_ERR(ea_inode) ? PTR_ERR(ea_inode) : 0;
+       if (is_bad_inode(inode)) {
                ext4_error(parent->i_sb, "error while reading EA inode %lu "
-                          "/ %d %d", ea_ino, rc, is_bad_inode(ea_inode));
-               *err = rc != 0 ? rc : -EIO;
-               return NULL;
+                          "is_bad_inode", ea_ino);
+               err = -EIO;
+               goto error;
        }
 
-       if (EXT4_XATTR_INODE_GET_PARENT(ea_inode) != parent->i_ino ||
-           ea_inode->i_generation != parent->i_generation) {
+       if (EXT4_XATTR_INODE_GET_PARENT(inode) != parent->i_ino ||
+           inode->i_generation != parent->i_generation) {
                ext4_error(parent->i_sb, "Backpointer from EA inode %lu "
-                          "to parent invalid.", ea_ino);
-               *err = -EINVAL;
+                          "to parent is invalid.", ea_ino);
+               err = -EINVAL;
                goto error;
        }
 
-       if (!(EXT4_I(ea_inode)->i_flags & EXT4_EA_INODE_FL)) {
+       if (!(EXT4_I(inode)->i_flags & EXT4_EA_INODE_FL)) {
                ext4_error(parent->i_sb, "EA inode %lu does not have "
                           "EXT4_EA_INODE_FL flag set.\n", ea_ino);
-               *err = -EINVAL;
+               err = -EINVAL;
                goto error;
        }
 
-       *err = 0;
-       return ea_inode;
-
+       *ea_inode = inode;
+       return 0;
 error:
-       iput(ea_inode);
-       return NULL;
+       iput(inode);
+       return err;
 }
 
 /*
@@ -355,17 +362,17 @@ static int
 ext4_xattr_inode_get(struct inode *inode, unsigned long ea_ino, void *buffer,
                     size_t *size)
 {
-       struct inode *ea_inode = NULL;
-       int err;
+       struct inode *ea_inode;
+       int ret;
 
-       ea_inode = ext4_xattr_inode_iget(inode, ea_ino, &err);
-       if (err)
-               return err;
+       ret = ext4_xattr_inode_iget(inode, ea_ino, &ea_inode);
+       if (ret)
+               return ret;
 
-       err = ext4_xattr_inode_read(ea_inode, buffer, size);
+       ret = ext4_xattr_inode_read(ea_inode, buffer, size);
        iput(ea_inode);
 
-       return err;
+       return ret;
 }
 
 static int
@@ -866,7 +873,7 @@ int ext4_xattr_inode_unlink(struct inode *inode, unsigned long ea_ino)
        struct inode *ea_inode = NULL;
        int err;
 
-       ea_inode = ext4_xattr_inode_iget(inode, ea_ino, &err);
+       err = ext4_xattr_inode_iget(inode, ea_ino, &ea_inode);
        if (err)
                return err;
 
@@ -1946,7 +1953,7 @@ static int
 ext4_xattr_inode_orphan_add(handle_t *handle, struct inode *inode,
                        int credits, struct ext4_xattr_ino_array *lea_ino_array)
 {
-       struct inode *ea_inode = NULL;
+       struct inode *ea_inode;
        int idx = 0, error = 0;
 
        if (lea_ino_array == NULL)
@@ -1965,8 +1972,8 @@ ext4_xattr_inode_orphan_add(handle_t *handle, struct inode *inode,
                                return error;
                        }
                }
-               ea_inode = ext4_xattr_inode_iget(inode,
-                               lea_ino_array->xia_inodes[idx], &error);
+               error = ext4_xattr_inode_iget(inode,
+                               lea_ino_array->xia_inodes[idx], &ea_inode);
                if (error)
                        continue;
                inode_lock(ea_inode);
@@ -2083,7 +2090,7 @@ void
 ext4_xattr_inode_array_free(struct inode *inode,
                            struct ext4_xattr_ino_array *lea_ino_array)
 {
-       struct inode    *ea_inode = NULL;
+       struct inode    *ea_inode;
        int             idx = 0;
        int             err;
 
@@ -2091,8 +2098,8 @@ ext4_xattr_inode_array_free(struct inode *inode,
                return;
 
        for (; idx < lea_ino_array->xia_count; ++idx) {
-               ea_inode = ext4_xattr_inode_iget(inode,
-                               lea_ino_array->xia_inodes[idx], &err);
+               err = ext4_xattr_inode_iget(inode,
+                               lea_ino_array->xia_inodes[idx], &ea_inode);
                if (err)
                        continue;
                /* for inode's i_count get from ext4_xattr_delete_inode */
index e8bef79bdc385e89e42c8dcbb7db8ca3955663e0..b6ef99d1a061fe020ca0c7a59b6475667b05c84b 100644 (file)
@@ -161,8 +161,6 @@ extern int ext4_xattr_get(struct inode *, int, const char *, void *, size_t);
 extern int ext4_xattr_set(struct inode *, int, const char *, const void *, size_t, int);
 extern int ext4_xattr_set_handle(handle_t *, struct inode *, int, const char *, const void *, size_t, int);
 
-extern struct inode *ext4_xattr_inode_iget(struct inode *parent, unsigned long ea_ino,
-                                          int *err);
 extern int ext4_xattr_inode_unlink(struct inode *inode, unsigned long ea_ino);
 extern int ext4_xattr_delete_inode(handle_t *handle, struct inode *inode,
                                   struct ext4_xattr_ino_array **array);