add patch make-sure-all-temp-bh-fields-are-initialized
[ext4-patch-queue.git] / change-ext4_xattr_inode_iget_signature
blob740490664c04fa92ce42bbdfd62f59edb2deae4f
1 ext4: change ext4_xattr_inode_iget() signature
3 From: Tahsin Erdogan <tahsin@google.com>
5 In general, kernel functions indicate success/failure through their return
6 values. This function returns the status as an output parameter and reserves
7 the return value for the inode. Make it follow the general convention.
9 Signed-off-by: Tahsin Erdogan <tahsin@google.com>
10 Signed-off-by: Theodore Ts'o <tytso@mit.edu>
11 ---
12  fs/ext4/xattr.c | 73 +++++++++++++++++++++++++++++++--------------------------
13  fs/ext4/xattr.h |  2 --
14  2 files changed, 40 insertions(+), 35 deletions(-)
16 diff --git a/fs/ext4/xattr.c b/fs/ext4/xattr.c
17 index 13daf634244b..d9477d01be9b 100644
18 --- a/fs/ext4/xattr.c
19 +++ b/fs/ext4/xattr.c
20 @@ -312,40 +312,47 @@ ext4_xattr_inode_read(struct inode *ea_inode, void *buf, size_t *size)
21         return 0;
22  }
24 -struct inode *ext4_xattr_inode_iget(struct inode *parent, unsigned long ea_ino, int *err)
25 +static int ext4_xattr_inode_iget(struct inode *parent, unsigned long ea_ino,
26 +                                struct inode **ea_inode)
27  {
28 -       struct inode *ea_inode = NULL;
29 +       struct inode *inode;
30 +       int err;
32 +       inode = ext4_iget(parent->i_sb, ea_ino);
33 +       if (IS_ERR(inode)) {
34 +               err = PTR_ERR(inode);
35 +               ext4_error(parent->i_sb, "error while reading EA inode %lu "
36 +                          "err=%d", ea_ino, err);
37 +               return err;
38 +       }
40 -       ea_inode = ext4_iget(parent->i_sb, ea_ino);
41 -       if (IS_ERR(ea_inode) || is_bad_inode(ea_inode)) {
42 -               int rc = IS_ERR(ea_inode) ? PTR_ERR(ea_inode) : 0;
43 +       if (is_bad_inode(inode)) {
44                 ext4_error(parent->i_sb, "error while reading EA inode %lu "
45 -                          "/ %d %d", ea_ino, rc, is_bad_inode(ea_inode));
46 -               *err = rc != 0 ? rc : -EIO;
47 -               return NULL;
48 +                          "is_bad_inode", ea_ino);
49 +               err = -EIO;
50 +               goto error;
51         }
53 -       if (EXT4_XATTR_INODE_GET_PARENT(ea_inode) != parent->i_ino ||
54 -           ea_inode->i_generation != parent->i_generation) {
55 +       if (EXT4_XATTR_INODE_GET_PARENT(inode) != parent->i_ino ||
56 +           inode->i_generation != parent->i_generation) {
57                 ext4_error(parent->i_sb, "Backpointer from EA inode %lu "
58 -                          "to parent invalid.", ea_ino);
59 -               *err = -EINVAL;
60 +                          "to parent is invalid.", ea_ino);
61 +               err = -EINVAL;
62                 goto error;
63         }
65 -       if (!(EXT4_I(ea_inode)->i_flags & EXT4_EA_INODE_FL)) {
66 +       if (!(EXT4_I(inode)->i_flags & EXT4_EA_INODE_FL)) {
67                 ext4_error(parent->i_sb, "EA inode %lu does not have "
68                            "EXT4_EA_INODE_FL flag set.\n", ea_ino);
69 -               *err = -EINVAL;
70 +               err = -EINVAL;
71                 goto error;
72         }
74 -       *err = 0;
75 -       return ea_inode;
77 +       *ea_inode = inode;
78 +       return 0;
79  error:
80 -       iput(ea_inode);
81 -       return NULL;
82 +       iput(inode);
83 +       return err;
84  }
86  /*
87 @@ -355,17 +362,17 @@ static int
88  ext4_xattr_inode_get(struct inode *inode, unsigned long ea_ino, void *buffer,
89                      size_t *size)
90  {
91 -       struct inode *ea_inode = NULL;
92 -       int err;
93 +       struct inode *ea_inode;
94 +       int ret;
96 -       ea_inode = ext4_xattr_inode_iget(inode, ea_ino, &err);
97 -       if (err)
98 -               return err;
99 +       ret = ext4_xattr_inode_iget(inode, ea_ino, &ea_inode);
100 +       if (ret)
101 +               return ret;
103 -       err = ext4_xattr_inode_read(ea_inode, buffer, size);
104 +       ret = ext4_xattr_inode_read(ea_inode, buffer, size);
105         iput(ea_inode);
107 -       return err;
108 +       return ret;
111  static int
112 @@ -868,7 +875,7 @@ int ext4_xattr_inode_unlink(struct inode *inode, unsigned long ea_ino)
113         struct inode *ea_inode = NULL;
114         int err;
116 -       ea_inode = ext4_xattr_inode_iget(inode, ea_ino, &err);
117 +       err = ext4_xattr_inode_iget(inode, ea_ino, &ea_inode);
118         if (err)
119                 return err;
121 @@ -1948,7 +1955,7 @@ static int
122  ext4_xattr_inode_orphan_add(handle_t *handle, struct inode *inode,
123                         int credits, struct ext4_xattr_ino_array *lea_ino_array)
125 -       struct inode *ea_inode = NULL;
126 +       struct inode *ea_inode;
127         int idx = 0, error = 0;
129         if (lea_ino_array == NULL)
130 @@ -1967,8 +1974,8 @@ ext4_xattr_inode_orphan_add(handle_t *handle, struct inode *inode,
131                                 return error;
132                         }
133                 }
134 -               ea_inode = ext4_xattr_inode_iget(inode,
135 -                               lea_ino_array->xia_inodes[idx], &error);
136 +               error = ext4_xattr_inode_iget(inode,
137 +                               lea_ino_array->xia_inodes[idx], &ea_inode);
138                 if (error)
139                         continue;
140                 inode_lock(ea_inode);
141 @@ -2085,7 +2092,7 @@ void
142  ext4_xattr_inode_array_free(struct inode *inode,
143                             struct ext4_xattr_ino_array *lea_ino_array)
145 -       struct inode    *ea_inode = NULL;
146 +       struct inode    *ea_inode;
147         int             idx = 0;
148         int             err;
150 @@ -2093,8 +2100,8 @@ ext4_xattr_inode_array_free(struct inode *inode,
151                 return;
153         for (; idx < lea_ino_array->xia_count; ++idx) {
154 -               ea_inode = ext4_xattr_inode_iget(inode,
155 -                               lea_ino_array->xia_inodes[idx], &err);
156 +               err = ext4_xattr_inode_iget(inode,
157 +                               lea_ino_array->xia_inodes[idx], &ea_inode);
158                 if (err)
159                         continue;
160                 /* for inode's i_count get from ext4_xattr_delete_inode */
161 diff --git a/fs/ext4/xattr.h b/fs/ext4/xattr.h
162 index e8bef79bdc38..b6ef99d1a061 100644
163 --- a/fs/ext4/xattr.h
164 +++ b/fs/ext4/xattr.h
165 @@ -161,8 +161,6 @@ extern int ext4_xattr_get(struct inode *, int, const char *, void *, size_t);
166  extern int ext4_xattr_set(struct inode *, int, const char *, const void *, size_t, int);
167  extern int ext4_xattr_set_handle(handle_t *, struct inode *, int, const char *, const void *, size_t, int);
169 -extern struct inode *ext4_xattr_inode_iget(struct inode *parent, unsigned long ea_ino,
170 -                                          int *err);
171  extern int ext4_xattr_inode_unlink(struct inode *inode, unsigned long ea_ino);
172  extern int ext4_xattr_delete_inode(handle_t *handle, struct inode *inode,
173                                    struct ext4_xattr_ino_array **array);
174 -- 
175 2.13.1.611.g7e3b11ae1-goog