From: Tahsin Erdogan <tahsin@google.com>
To: Andreas Dilger <adilger@dilger.ca>,
"Darrick J . Wong" <darrick.wong@oracle.com>,
Jan Kara <jack@suse.cz>, Theodore Ts'o <tytso@mit.edu>,
linux-ext4@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, Tahsin Erdogan <tahsin@google.com>
Subject: [PATCH 10/32] ext4: change ext4_xattr_inode_iget() signature
Date: Wed, 21 Jun 2017 14:21:20 -0700 [thread overview]
Message-ID: <20170621212142.16581-10-tahsin@google.com> (raw)
In-Reply-To: <20170621212142.16581-1-tahsin@google.com>
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>
---
fs/ext4/xattr.c | 73 +++++++++++++++++++++++++++++++--------------------------
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 13daf634244b..d9477d01be9b 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)
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
@@ -868,7 +875,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;
@@ -1948,7 +1955,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)
@@ -1967,8 +1974,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);
@@ -2085,7 +2092,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;
@@ -2093,8 +2100,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 */
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);
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);
--
2.13.1.611.g7e3b11ae1-goog
next prev parent reply other threads:[~2017-06-21 21:22 UTC|newest]
Thread overview: 59+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-06-21 21:21 [PATCH 01/32] ext4: xattr-in-inode support Tahsin Erdogan
2017-06-21 21:21 ` [PATCH 02/32] ext4: fix lockdep warning about recursive inode locking Tahsin Erdogan
2017-06-22 1:18 ` Theodore Ts'o
2017-06-21 21:21 ` [PATCH 03/32] ext4: lock inode before calling ext4_orphan_add() Tahsin Erdogan
2017-06-22 1:20 ` Theodore Ts'o
2017-06-21 21:21 ` [PATCH 04/32] ext4: do not set posix acls on xattr inodes Tahsin Erdogan
2017-06-22 1:23 ` Theodore Ts'o
2017-06-21 21:21 ` [PATCH 05/32] ext4: attach jinode after creation of xattr inode Tahsin Erdogan
2017-06-22 1:26 ` Theodore Ts'o
2017-06-21 21:21 ` [PATCH 06/32] ext4: ea_inode owner should be the same as the inode owner Tahsin Erdogan
2017-06-22 1:28 ` Theodore Ts'o
2017-06-21 21:21 ` [PATCH 07/32] ext4: call journal revoke when freeing ea_inode blocks Tahsin Erdogan
2017-06-22 1:38 ` Theodore Ts'o
2017-06-21 21:21 ` [PATCH 08/32] ext4: fix ref counting for ea_inode Tahsin Erdogan
2017-06-22 1:40 ` Theodore Ts'o
2017-06-21 21:21 ` [PATCH 09/32] ext4: extended attribute value size limit is enforced by vfs Tahsin Erdogan
2017-06-22 1:42 ` Theodore Ts'o
2017-06-22 18:02 ` Darrick J. Wong
2017-06-22 19:40 ` Andreas Dilger
2017-06-22 22:27 ` Theodore Ts'o
2017-06-22 23:21 ` Darrick J. Wong
2017-06-21 21:21 ` Tahsin Erdogan [this message]
2017-06-22 1:55 ` [PATCH 10/32] ext4: change ext4_xattr_inode_iget() signature Theodore Ts'o
2017-06-21 21:21 ` [PATCH 11/32] ext4: clean up ext4_xattr_inode_get() Tahsin Erdogan
2017-06-22 1:58 ` Theodore Ts'o
2017-06-21 21:21 ` [PATCH 12/32] ext4: add missing le32_to_cpu(e_value_inum) conversions Tahsin Erdogan
2017-06-22 2:00 ` Theodore Ts'o
2017-06-21 21:21 ` [PATCH 13/32] ext4: ext4_xattr_value_same() should return false for external data Tahsin Erdogan
2017-06-22 2:04 ` Theodore Ts'o
2017-06-21 21:21 ` [PATCH 14/32] ext4: fix ext4_xattr_make_inode_space() value size calculation Tahsin Erdogan
2017-06-22 2:09 ` Theodore Ts'o
2017-06-21 21:21 ` [PATCH 15/32] ext4: fix ext4_xattr_move_to_block() Tahsin Erdogan
2017-06-22 2:13 ` Theodore Ts'o
2017-06-21 21:21 ` [PATCH 16/32] ext4: fix ext4_xattr_cmp() Tahsin Erdogan
2017-06-22 2:15 ` Theodore Ts'o
2017-06-21 21:21 ` [PATCH 17/32] ext4: fix credits calculation for xattr inode Tahsin Erdogan
2017-06-22 2:19 ` Theodore Ts'o
2017-06-21 21:21 ` [PATCH 18/32] ext4: retry storing value in external inode with xattr block too Tahsin Erdogan
2017-06-22 2:22 ` Theodore Ts'o
2017-06-21 21:21 ` [PATCH 19/32] ext4: ext4_xattr_delete_inode() should return accurate errors Tahsin Erdogan
2017-06-22 2:27 ` Theodore Ts'o
2017-06-21 21:21 ` [PATCH 20/32] ext4: improve journal credit handling in set xattr paths Tahsin Erdogan
2017-06-22 2:30 ` Theodore Ts'o
2017-06-21 21:21 ` [PATCH 21/32] ext4: modify ext4_xattr_ino_array to hold struct inode * Tahsin Erdogan
2017-06-22 14:28 ` Theodore Ts'o
2017-06-21 21:21 ` [PATCH 22/32] ext4: move struct ext4_xattr_inode_array to xattr.h Tahsin Erdogan
2017-06-22 14:29 ` Theodore Ts'o
2017-06-21 21:21 ` [PATCH 23/32] mbcache: make mbcache naming more generic Tahsin Erdogan
2017-06-22 14:37 ` Theodore Ts'o
2017-06-21 21:21 ` [PATCH 24/32] ext2, ext4: make mb block cache names more explicit Tahsin Erdogan
2017-06-21 21:21 ` [PATCH 25/32] ext4: add ext4_is_quota_file() Tahsin Erdogan
2017-06-21 21:21 ` [PATCH 26/32] ext4: cleanup transaction restarts during inode deletion Tahsin Erdogan
2017-06-21 21:21 ` [PATCH 27/32] ext4: xattr inode deduplication Tahsin Erdogan
2017-06-21 21:21 ` [PATCH 28/32] quota: add get_inode_usage callback to transfer multi-inode charges Tahsin Erdogan
2017-06-21 21:21 ` [PATCH 29/32] ext4: reserve space for xattr entries/names Tahsin Erdogan
2017-06-21 21:21 ` [PATCH 30/32] ext4: eliminate xattr entry e_hash recalculation for removes Tahsin Erdogan
2017-06-21 21:21 ` [PATCH 31/32] ext4: strong binding of xattr inode references Tahsin Erdogan
2017-06-21 21:21 ` [PATCH 32/32] ext4: add nombcache mount option Tahsin Erdogan
2017-06-22 1:16 ` [PATCH 01/32] ext4: xattr-in-inode support Theodore Ts'o
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170621212142.16581-10-tahsin@google.com \
--to=tahsin@google.com \
--cc=adilger@dilger.ca \
--cc=darrick.wong@oracle.com \
--cc=jack@suse.cz \
--cc=linux-ext4@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=tytso@mit.edu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).