* [PATCH 1/8] btrfs: return a btrfs_inode from btrfs_iget_logging()
2025-03-07 13:44 [PATCH 0/8] btrfs: some trivial cleanups fdmanana
@ 2025-03-07 13:44 ` fdmanana
2025-03-07 13:44 ` [PATCH 2/8] btrfs: return a btrfs_inode from read_one_inode() fdmanana
` (7 subsequent siblings)
8 siblings, 0 replies; 15+ messages in thread
From: fdmanana @ 2025-03-07 13:44 UTC (permalink / raw)
To: linux-btrfs
From: Filipe Manana <fdmanana@suse.com>
All callers of btrfs_iget_logging() are interested in the btrfs_inode
structure rather than the VFS inode, so make btrfs_iget_logging() return
the btrfs_inode instead, avoiding lots of BTRFS_I() calls.
Signed-off-by: Filipe Manana <fdmanana@suse.com>
---
fs/btrfs/tree-log.c | 94 ++++++++++++++++++++++-----------------------
1 file changed, 45 insertions(+), 49 deletions(-)
diff --git a/fs/btrfs/tree-log.c b/fs/btrfs/tree-log.c
index fc5c761181eb..fc13dbfb96f8 100644
--- a/fs/btrfs/tree-log.c
+++ b/fs/btrfs/tree-log.c
@@ -138,7 +138,7 @@ static void wait_log_commit(struct btrfs_root *root, int transid);
* and once to do all the other items.
*/
-static struct inode *btrfs_iget_logging(u64 objectid, struct btrfs_root *root)
+static struct btrfs_inode *btrfs_iget_logging(u64 objectid, struct btrfs_root *root)
{
unsigned int nofs_flag;
struct inode *inode;
@@ -154,7 +154,10 @@ static struct inode *btrfs_iget_logging(u64 objectid, struct btrfs_root *root)
inode = btrfs_iget(objectid, root);
memalloc_nofs_restore(nofs_flag);
- return inode;
+ if (IS_ERR(inode))
+ return ERR_CAST(inode);
+
+ return BTRFS_I(inode);
}
/*
@@ -616,12 +619,12 @@ static int read_alloc_one_name(struct extent_buffer *eb, void *start, int len,
static noinline struct inode *read_one_inode(struct btrfs_root *root,
u64 objectid)
{
- struct inode *inode;
+ struct btrfs_inode *inode;
inode = btrfs_iget_logging(objectid, root);
if (IS_ERR(inode))
- inode = NULL;
- return inode;
+ return NULL;
+ return &inode->vfs_inode;
}
/* replays a single extent in 'eb' at 'slot' with 'key' into the
@@ -5481,7 +5484,6 @@ static int log_new_dir_dentries(struct btrfs_trans_handle *trans,
ihold(&curr_inode->vfs_inode);
while (true) {
- struct inode *vfs_inode;
struct btrfs_key key;
struct btrfs_key found_key;
u64 next_index;
@@ -5497,7 +5499,7 @@ static int log_new_dir_dentries(struct btrfs_trans_handle *trans,
struct extent_buffer *leaf = path->nodes[0];
struct btrfs_dir_item *di;
struct btrfs_key di_key;
- struct inode *di_inode;
+ struct btrfs_inode *di_inode;
int log_mode = LOG_INODE_EXISTS;
int type;
@@ -5524,17 +5526,16 @@ static int log_new_dir_dentries(struct btrfs_trans_handle *trans,
goto out;
}
- if (!need_log_inode(trans, BTRFS_I(di_inode))) {
- btrfs_add_delayed_iput(BTRFS_I(di_inode));
+ if (!need_log_inode(trans, di_inode)) {
+ btrfs_add_delayed_iput(di_inode);
break;
}
ctx->log_new_dentries = false;
if (type == BTRFS_FT_DIR)
log_mode = LOG_INODE_ALL;
- ret = btrfs_log_inode(trans, BTRFS_I(di_inode),
- log_mode, ctx);
- btrfs_add_delayed_iput(BTRFS_I(di_inode));
+ ret = btrfs_log_inode(trans, di_inode, log_mode, ctx);
+ btrfs_add_delayed_iput(di_inode);
if (ret)
goto out;
if (ctx->log_new_dentries) {
@@ -5576,14 +5577,13 @@ static int log_new_dir_dentries(struct btrfs_trans_handle *trans,
kfree(dir_elem);
btrfs_add_delayed_iput(curr_inode);
- curr_inode = NULL;
- vfs_inode = btrfs_iget_logging(ino, root);
- if (IS_ERR(vfs_inode)) {
- ret = PTR_ERR(vfs_inode);
+ curr_inode = btrfs_iget_logging(ino, root);
+ if (IS_ERR(curr_inode)) {
+ ret = PTR_ERR(curr_inode);
+ curr_inode = NULL;
break;
}
- curr_inode = BTRFS_I(vfs_inode);
}
out:
btrfs_free_path(path);
@@ -5661,7 +5661,7 @@ static int add_conflicting_inode(struct btrfs_trans_handle *trans,
struct btrfs_log_ctx *ctx)
{
struct btrfs_ino_list *ino_elem;
- struct inode *inode;
+ struct btrfs_inode *inode;
/*
* It's rare to have a lot of conflicting inodes, in practice it is not
@@ -5752,12 +5752,12 @@ static int add_conflicting_inode(struct btrfs_trans_handle *trans,
* inode in LOG_INODE_EXISTS mode and rename operations update the log,
* so that the log ends up with the new name and without the old name.
*/
- if (!need_log_inode(trans, BTRFS_I(inode))) {
- btrfs_add_delayed_iput(BTRFS_I(inode));
+ if (!need_log_inode(trans, inode)) {
+ btrfs_add_delayed_iput(inode);
return 0;
}
- btrfs_add_delayed_iput(BTRFS_I(inode));
+ btrfs_add_delayed_iput(inode);
ino_elem = kmalloc(sizeof(*ino_elem), GFP_NOFS);
if (!ino_elem)
@@ -5793,7 +5793,7 @@ static int log_conflicting_inodes(struct btrfs_trans_handle *trans,
*/
while (!list_empty(&ctx->conflict_inodes)) {
struct btrfs_ino_list *curr;
- struct inode *inode;
+ struct btrfs_inode *inode;
u64 ino;
u64 parent;
@@ -5829,9 +5829,8 @@ static int log_conflicting_inodes(struct btrfs_trans_handle *trans,
* dir index key range logged for the directory. So we
* must make sure the deletion is recorded.
*/
- ret = btrfs_log_inode(trans, BTRFS_I(inode),
- LOG_INODE_ALL, ctx);
- btrfs_add_delayed_iput(BTRFS_I(inode));
+ ret = btrfs_log_inode(trans, inode, LOG_INODE_ALL, ctx);
+ btrfs_add_delayed_iput(inode);
if (ret)
break;
continue;
@@ -5847,8 +5846,8 @@ static int log_conflicting_inodes(struct btrfs_trans_handle *trans,
* it again because if some other task logged the inode after
* that, we can avoid doing it again.
*/
- if (!need_log_inode(trans, BTRFS_I(inode))) {
- btrfs_add_delayed_iput(BTRFS_I(inode));
+ if (!need_log_inode(trans, inode)) {
+ btrfs_add_delayed_iput(inode);
continue;
}
@@ -5859,8 +5858,8 @@ static int log_conflicting_inodes(struct btrfs_trans_handle *trans,
* well because during a rename we pin the log and update the
* log with the new name before we unpin it.
*/
- ret = btrfs_log_inode(trans, BTRFS_I(inode), LOG_INODE_EXISTS, ctx);
- btrfs_add_delayed_iput(BTRFS_I(inode));
+ ret = btrfs_log_inode(trans, inode, LOG_INODE_EXISTS, ctx);
+ btrfs_add_delayed_iput(inode);
if (ret)
break;
}
@@ -6351,7 +6350,7 @@ static int log_new_delayed_dentries(struct btrfs_trans_handle *trans,
list_for_each_entry(item, delayed_ins_list, log_list) {
struct btrfs_dir_item *dir_item;
- struct inode *di_inode;
+ struct btrfs_inode *di_inode;
struct btrfs_key key;
int log_mode = LOG_INODE_EXISTS;
@@ -6367,8 +6366,8 @@ static int log_new_delayed_dentries(struct btrfs_trans_handle *trans,
break;
}
- if (!need_log_inode(trans, BTRFS_I(di_inode))) {
- btrfs_add_delayed_iput(BTRFS_I(di_inode));
+ if (!need_log_inode(trans, di_inode)) {
+ btrfs_add_delayed_iput(di_inode);
continue;
}
@@ -6376,12 +6375,12 @@ static int log_new_delayed_dentries(struct btrfs_trans_handle *trans,
log_mode = LOG_INODE_ALL;
ctx->log_new_dentries = false;
- ret = btrfs_log_inode(trans, BTRFS_I(di_inode), log_mode, ctx);
+ ret = btrfs_log_inode(trans, di_inode, log_mode, ctx);
if (!ret && ctx->log_new_dentries)
- ret = log_new_dir_dentries(trans, BTRFS_I(di_inode), ctx);
+ ret = log_new_dir_dentries(trans, di_inode, ctx);
- btrfs_add_delayed_iput(BTRFS_I(di_inode));
+ btrfs_add_delayed_iput(di_inode);
if (ret)
break;
@@ -6789,7 +6788,7 @@ static int btrfs_log_all_parents(struct btrfs_trans_handle *trans,
ptr = btrfs_item_ptr_offset(leaf, slot);
while (cur_offset < item_size) {
struct btrfs_key inode_key;
- struct inode *dir_inode;
+ struct btrfs_inode *dir_inode;
inode_key.type = BTRFS_INODE_ITEM_KEY;
inode_key.offset = 0;
@@ -6838,18 +6837,16 @@ static int btrfs_log_all_parents(struct btrfs_trans_handle *trans,
goto out;
}
- if (!need_log_inode(trans, BTRFS_I(dir_inode))) {
- btrfs_add_delayed_iput(BTRFS_I(dir_inode));
+ if (!need_log_inode(trans, dir_inode)) {
+ btrfs_add_delayed_iput(dir_inode);
continue;
}
ctx->log_new_dentries = false;
- ret = btrfs_log_inode(trans, BTRFS_I(dir_inode),
- LOG_INODE_ALL, ctx);
+ ret = btrfs_log_inode(trans, dir_inode, LOG_INODE_ALL, ctx);
if (!ret && ctx->log_new_dentries)
- ret = log_new_dir_dentries(trans,
- BTRFS_I(dir_inode), ctx);
- btrfs_add_delayed_iput(BTRFS_I(dir_inode));
+ ret = log_new_dir_dentries(trans, dir_inode, ctx);
+ btrfs_add_delayed_iput(dir_inode);
if (ret)
goto out;
}
@@ -6874,7 +6871,7 @@ static int log_new_ancestors(struct btrfs_trans_handle *trans,
struct extent_buffer *leaf;
int slot;
struct btrfs_key search_key;
- struct inode *inode;
+ struct btrfs_inode *inode;
u64 ino;
int ret = 0;
@@ -6889,11 +6886,10 @@ static int log_new_ancestors(struct btrfs_trans_handle *trans,
if (IS_ERR(inode))
return PTR_ERR(inode);
- if (BTRFS_I(inode)->generation >= trans->transid &&
- need_log_inode(trans, BTRFS_I(inode)))
- ret = btrfs_log_inode(trans, BTRFS_I(inode),
- LOG_INODE_EXISTS, ctx);
- btrfs_add_delayed_iput(BTRFS_I(inode));
+ if (inode->generation >= trans->transid &&
+ need_log_inode(trans, inode))
+ ret = btrfs_log_inode(trans, inode, LOG_INODE_EXISTS, ctx);
+ btrfs_add_delayed_iput(inode);
if (ret)
return ret;
--
2.45.2
^ permalink raw reply related [flat|nested] 15+ messages in thread* [PATCH 2/8] btrfs: return a btrfs_inode from read_one_inode()
2025-03-07 13:44 [PATCH 0/8] btrfs: some trivial cleanups fdmanana
2025-03-07 13:44 ` [PATCH 1/8] btrfs: return a btrfs_inode from btrfs_iget_logging() fdmanana
@ 2025-03-07 13:44 ` fdmanana
2025-03-07 13:44 ` [PATCH 3/8] btrfs: pass a btrfs_inode to fixup_inode_link_count() fdmanana
` (6 subsequent siblings)
8 siblings, 0 replies; 15+ messages in thread
From: fdmanana @ 2025-03-07 13:44 UTC (permalink / raw)
To: linux-btrfs
From: Filipe Manana <fdmanana@suse.com>
All callers of read_one_inode() are mostly interested in the btrfs_inode
structure rather than the VFS inode, so make read_one_inode() return
the btrfs_inode instead, avoiding lots of BTRFS_I() calls.
Signed-off-by: Filipe Manana <fdmanana@suse.com>
---
fs/btrfs/tree-log.c | 152 +++++++++++++++++++++-----------------------
1 file changed, 73 insertions(+), 79 deletions(-)
diff --git a/fs/btrfs/tree-log.c b/fs/btrfs/tree-log.c
index fc13dbfb96f8..0df356e23762 100644
--- a/fs/btrfs/tree-log.c
+++ b/fs/btrfs/tree-log.c
@@ -616,15 +616,15 @@ static int read_alloc_one_name(struct extent_buffer *eb, void *start, int len,
* simple helper to read an inode off the disk from a given root
* This can only be called for subvolume roots and not for the log
*/
-static noinline struct inode *read_one_inode(struct btrfs_root *root,
- u64 objectid)
+static noinline struct btrfs_inode *read_one_inode(struct btrfs_root *root,
+ u64 objectid)
{
struct btrfs_inode *inode;
inode = btrfs_iget_logging(objectid, root);
if (IS_ERR(inode))
return NULL;
- return &inode->vfs_inode;
+ return inode;
}
/* replays a single extent in 'eb' at 'slot' with 'key' into the
@@ -652,7 +652,7 @@ static noinline int replay_one_extent(struct btrfs_trans_handle *trans,
u64 start = key->offset;
u64 nbytes = 0;
struct btrfs_file_extent_item *item;
- struct inode *inode = NULL;
+ struct btrfs_inode *inode = NULL;
unsigned long size;
int ret = 0;
@@ -691,8 +691,7 @@ static noinline int replay_one_extent(struct btrfs_trans_handle *trans,
* file. This must be done before the btrfs_drop_extents run
* so we don't try to drop this extent.
*/
- ret = btrfs_lookup_file_extent(trans, root, path,
- btrfs_ino(BTRFS_I(inode)), start, 0);
+ ret = btrfs_lookup_file_extent(trans, root, path, btrfs_ino(inode), start, 0);
if (ret == 0 &&
(found_type == BTRFS_FILE_EXTENT_REG ||
@@ -726,7 +725,7 @@ static noinline int replay_one_extent(struct btrfs_trans_handle *trans,
drop_args.start = start;
drop_args.end = extent_end;
drop_args.drop_cache = true;
- ret = btrfs_drop_extents(trans, root, BTRFS_I(inode), &drop_args);
+ ret = btrfs_drop_extents(trans, root, inode, &drop_args);
if (ret)
goto out;
@@ -904,16 +903,15 @@ static noinline int replay_one_extent(struct btrfs_trans_handle *trans,
goto out;
}
- ret = btrfs_inode_set_file_extent_range(BTRFS_I(inode), start,
- extent_end - start);
+ ret = btrfs_inode_set_file_extent_range(inode, start, extent_end - start);
if (ret)
goto out;
update_inode:
- btrfs_update_inode_bytes(BTRFS_I(inode), nbytes, drop_args.bytes_found);
- ret = btrfs_update_inode(trans, BTRFS_I(inode));
+ btrfs_update_inode_bytes(inode, nbytes, drop_args.bytes_found);
+ ret = btrfs_update_inode(trans, inode);
out:
- iput(inode);
+ iput(&inode->vfs_inode);
return ret;
}
@@ -950,7 +948,7 @@ static noinline int drop_one_dir_item(struct btrfs_trans_handle *trans,
struct btrfs_dir_item *di)
{
struct btrfs_root *root = dir->root;
- struct inode *inode;
+ struct btrfs_inode *inode;
struct fscrypt_str name;
struct extent_buffer *leaf;
struct btrfs_key location;
@@ -975,10 +973,10 @@ static noinline int drop_one_dir_item(struct btrfs_trans_handle *trans,
if (ret)
goto out;
- ret = unlink_inode_for_log_replay(trans, dir, BTRFS_I(inode), &name);
+ ret = unlink_inode_for_log_replay(trans, dir, inode, &name);
out:
kfree(name.name);
- iput(inode);
+ iput(&inode->vfs_inode);
return ret;
}
@@ -1151,7 +1149,7 @@ static inline int __add_inode_ref(struct btrfs_trans_handle *trans,
u32 item_size;
u32 cur_offset = 0;
unsigned long base;
- struct inode *victim_parent;
+ struct btrfs_inode *victim_parent;
leaf = path->nodes[0];
@@ -1191,10 +1189,10 @@ static inline int __add_inode_ref(struct btrfs_trans_handle *trans,
btrfs_release_path(path);
ret = unlink_inode_for_log_replay(trans,
- BTRFS_I(victim_parent),
+ victim_parent,
inode, &victim_name);
}
- iput(victim_parent);
+ iput(&victim_parent->vfs_inode);
kfree(victim_name.name);
if (ret)
return ret;
@@ -1328,7 +1326,7 @@ static int unlink_old_inode_refs(struct btrfs_trans_handle *trans,
ret = !!btrfs_find_name_in_backref(log_eb, log_slot, &name);
if (!ret) {
- struct inode *dir;
+ struct btrfs_inode *dir;
btrfs_release_path(path);
dir = read_one_inode(root, parent_id);
@@ -1337,10 +1335,9 @@ static int unlink_old_inode_refs(struct btrfs_trans_handle *trans,
kfree(name.name);
goto out;
}
- ret = unlink_inode_for_log_replay(trans, BTRFS_I(dir),
- inode, &name);
+ ret = unlink_inode_for_log_replay(trans, dir, inode, &name);
kfree(name.name);
- iput(dir);
+ iput(&dir->vfs_inode);
if (ret)
goto out;
goto again;
@@ -1372,8 +1369,8 @@ static noinline int add_inode_ref(struct btrfs_trans_handle *trans,
struct extent_buffer *eb, int slot,
struct btrfs_key *key)
{
- struct inode *dir = NULL;
- struct inode *inode = NULL;
+ struct btrfs_inode *dir = NULL;
+ struct btrfs_inode *inode = NULL;
unsigned long ref_ptr;
unsigned long ref_end;
struct fscrypt_str name = { 0 };
@@ -1438,8 +1435,8 @@ static noinline int add_inode_ref(struct btrfs_trans_handle *trans,
if (ret)
goto out;
- ret = inode_in_dir(root, path, btrfs_ino(BTRFS_I(dir)),
- btrfs_ino(BTRFS_I(inode)), ref_index, &name);
+ ret = inode_in_dir(root, path, btrfs_ino(dir), btrfs_ino(inode),
+ ref_index, &name);
if (ret < 0) {
goto out;
} else if (ret == 0) {
@@ -1450,8 +1447,7 @@ static noinline int add_inode_ref(struct btrfs_trans_handle *trans,
* overwrite any existing back reference, and we don't
* want to create dangling pointers in the directory.
*/
- ret = __add_inode_ref(trans, root, path, log,
- BTRFS_I(dir), BTRFS_I(inode),
+ ret = __add_inode_ref(trans, root, path, log, dir, inode,
inode_objectid, parent_objectid,
ref_index, &name);
if (ret) {
@@ -1461,12 +1457,11 @@ static noinline int add_inode_ref(struct btrfs_trans_handle *trans,
}
/* insert our name */
- ret = btrfs_add_link(trans, BTRFS_I(dir), BTRFS_I(inode),
- &name, 0, ref_index);
+ ret = btrfs_add_link(trans, dir, inode, &name, 0, ref_index);
if (ret)
goto out;
- ret = btrfs_update_inode(trans, BTRFS_I(inode));
+ ret = btrfs_update_inode(trans, inode);
if (ret)
goto out;
}
@@ -1476,7 +1471,7 @@ static noinline int add_inode_ref(struct btrfs_trans_handle *trans,
kfree(name.name);
name.name = NULL;
if (log_ref_ver) {
- iput(dir);
+ iput(&dir->vfs_inode);
dir = NULL;
}
}
@@ -1489,8 +1484,7 @@ static noinline int add_inode_ref(struct btrfs_trans_handle *trans,
* dir index entries exist for a name but there is no inode reference
* item with the same name.
*/
- ret = unlink_old_inode_refs(trans, root, path, BTRFS_I(inode), eb, slot,
- key);
+ ret = unlink_old_inode_refs(trans, root, path, inode, eb, slot, key);
if (ret)
goto out;
@@ -1499,8 +1493,10 @@ static noinline int add_inode_ref(struct btrfs_trans_handle *trans,
out:
btrfs_release_path(path);
kfree(name.name);
- iput(dir);
- iput(inode);
+ if (dir)
+ iput(&dir->vfs_inode);
+ if (inode)
+ iput(&inode->vfs_inode);
return ret;
}
@@ -1672,12 +1668,13 @@ static noinline int fixup_inode_link_counts(struct btrfs_trans_handle *trans,
{
int ret;
struct btrfs_key key;
- struct inode *inode;
key.objectid = BTRFS_TREE_LOG_FIXUP_OBJECTID;
key.type = BTRFS_ORPHAN_ITEM_KEY;
key.offset = (u64)-1;
while (1) {
+ struct btrfs_inode *inode;
+
ret = btrfs_search_slot(trans, root, &key, path, -1, 1);
if (ret < 0)
break;
@@ -1705,8 +1702,8 @@ static noinline int fixup_inode_link_counts(struct btrfs_trans_handle *trans,
break;
}
- ret = fixup_inode_link_count(trans, inode);
- iput(inode);
+ ret = fixup_inode_link_count(trans, &inode->vfs_inode);
+ iput(&inode->vfs_inode);
if (ret)
break;
@@ -1734,12 +1731,14 @@ static noinline int link_to_fixup_dir(struct btrfs_trans_handle *trans,
{
struct btrfs_key key;
int ret = 0;
- struct inode *inode;
+ struct btrfs_inode *inode;
+ struct inode *vfs_inode;
inode = read_one_inode(root, objectid);
if (!inode)
return -EIO;
+ vfs_inode = &inode->vfs_inode;
key.objectid = BTRFS_TREE_LOG_FIXUP_OBJECTID;
key.type = BTRFS_ORPHAN_ITEM_KEY;
key.offset = objectid;
@@ -1748,15 +1747,15 @@ static noinline int link_to_fixup_dir(struct btrfs_trans_handle *trans,
btrfs_release_path(path);
if (ret == 0) {
- if (!inode->i_nlink)
- set_nlink(inode, 1);
+ if (!vfs_inode->i_nlink)
+ set_nlink(vfs_inode, 1);
else
- inc_nlink(inode);
- ret = btrfs_update_inode(trans, BTRFS_I(inode));
+ inc_nlink(vfs_inode);
+ ret = btrfs_update_inode(trans, inode);
} else if (ret == -EEXIST) {
ret = 0;
}
- iput(inode);
+ iput(vfs_inode);
return ret;
}
@@ -1772,8 +1771,8 @@ static noinline int insert_one_name(struct btrfs_trans_handle *trans,
const struct fscrypt_str *name,
struct btrfs_key *location)
{
- struct inode *inode;
- struct inode *dir;
+ struct btrfs_inode *inode;
+ struct btrfs_inode *dir;
int ret;
inode = read_one_inode(root, location->objectid);
@@ -1782,17 +1781,16 @@ static noinline int insert_one_name(struct btrfs_trans_handle *trans,
dir = read_one_inode(root, dirid);
if (!dir) {
- iput(inode);
+ iput(&inode->vfs_inode);
return -EIO;
}
- ret = btrfs_add_link(trans, BTRFS_I(dir), BTRFS_I(inode), name,
- 1, index);
+ ret = btrfs_add_link(trans, dir, inode, name, 1, index);
/* FIXME, put inode into FIXUP list */
- iput(inode);
- iput(dir);
+ iput(&inode->vfs_inode);
+ iput(&dir->vfs_inode);
return ret;
}
@@ -1854,7 +1852,7 @@ static noinline int replay_one_name(struct btrfs_trans_handle *trans,
bool index_dst_matches = false;
struct btrfs_key log_key;
struct btrfs_key search_key;
- struct inode *dir;
+ struct btrfs_inode *dir;
u8 log_flags;
bool exists;
int ret;
@@ -1884,9 +1882,8 @@ static noinline int replay_one_name(struct btrfs_trans_handle *trans,
ret = PTR_ERR(dir_dst_di);
goto out;
} else if (dir_dst_di) {
- ret = delete_conflicting_dir_entry(trans, BTRFS_I(dir), path,
- dir_dst_di, &log_key,
- log_flags, exists);
+ ret = delete_conflicting_dir_entry(trans, dir, path, dir_dst_di,
+ &log_key, log_flags, exists);
if (ret < 0)
goto out;
dir_dst_matches = (ret == 1);
@@ -1901,9 +1898,8 @@ static noinline int replay_one_name(struct btrfs_trans_handle *trans,
ret = PTR_ERR(index_dst_di);
goto out;
} else if (index_dst_di) {
- ret = delete_conflicting_dir_entry(trans, BTRFS_I(dir), path,
- index_dst_di, &log_key,
- log_flags, exists);
+ ret = delete_conflicting_dir_entry(trans, dir, path, index_dst_di,
+ &log_key, log_flags, exists);
if (ret < 0)
goto out;
index_dst_matches = (ret == 1);
@@ -1958,11 +1954,11 @@ static noinline int replay_one_name(struct btrfs_trans_handle *trans,
out:
if (!ret && update_size) {
- btrfs_i_size_write(BTRFS_I(dir), dir->i_size + name.len * 2);
- ret = btrfs_update_inode(trans, BTRFS_I(dir));
+ btrfs_i_size_write(dir, dir->vfs_inode.i_size + name.len * 2);
+ ret = btrfs_update_inode(trans, dir);
}
kfree(name.name);
- iput(dir);
+ iput(&dir->vfs_inode);
if (!ret && name_added)
ret = 1;
return ret;
@@ -2119,16 +2115,16 @@ static noinline int check_item_in_log(struct btrfs_trans_handle *trans,
struct btrfs_root *log,
struct btrfs_path *path,
struct btrfs_path *log_path,
- struct inode *dir,
+ struct btrfs_inode *dir,
struct btrfs_key *dir_key)
{
- struct btrfs_root *root = BTRFS_I(dir)->root;
+ struct btrfs_root *root = dir->root;
int ret;
struct extent_buffer *eb;
int slot;
struct btrfs_dir_item *di;
struct fscrypt_str name = { 0 };
- struct inode *inode = NULL;
+ struct btrfs_inode *inode = NULL;
struct btrfs_key location;
/*
@@ -2175,9 +2171,8 @@ static noinline int check_item_in_log(struct btrfs_trans_handle *trans,
if (ret)
goto out;
- inc_nlink(inode);
- ret = unlink_inode_for_log_replay(trans, BTRFS_I(dir), BTRFS_I(inode),
- &name);
+ inc_nlink(&inode->vfs_inode);
+ ret = unlink_inode_for_log_replay(trans, dir, inode, &name);
/*
* Unlike dir item keys, dir index keys can only have one name (entry) in
* them, as there are no key collisions since each key has a unique offset
@@ -2187,7 +2182,8 @@ static noinline int check_item_in_log(struct btrfs_trans_handle *trans,
btrfs_release_path(path);
btrfs_release_path(log_path);
kfree(name.name);
- iput(inode);
+ if (inode)
+ iput(&inode->vfs_inode);
return ret;
}
@@ -2311,7 +2307,7 @@ static noinline int replay_dir_deletes(struct btrfs_trans_handle *trans,
struct btrfs_key dir_key;
struct btrfs_key found_key;
struct btrfs_path *log_path;
- struct inode *dir;
+ struct btrfs_inode *dir;
dir_key.objectid = dirid;
dir_key.type = BTRFS_DIR_INDEX_KEY;
@@ -2388,7 +2384,7 @@ static noinline int replay_dir_deletes(struct btrfs_trans_handle *trans,
out:
btrfs_release_path(path);
btrfs_free_path(log_path);
- iput(dir);
+ iput(&dir->vfs_inode);
return ret;
}
@@ -2482,7 +2478,7 @@ static int replay_one_buffer(struct btrfs_root *log, struct extent_buffer *eb,
*/
if (S_ISREG(mode)) {
struct btrfs_drop_extents_args drop_args = { 0 };
- struct inode *inode;
+ struct btrfs_inode *inode;
u64 from;
inode = read_one_inode(root, key.objectid);
@@ -2490,22 +2486,20 @@ static int replay_one_buffer(struct btrfs_root *log, struct extent_buffer *eb,
ret = -EIO;
break;
}
- from = ALIGN(i_size_read(inode),
+ from = ALIGN(i_size_read(&inode->vfs_inode),
root->fs_info->sectorsize);
drop_args.start = from;
drop_args.end = (u64)-1;
drop_args.drop_cache = true;
- ret = btrfs_drop_extents(wc->trans, root,
- BTRFS_I(inode),
+ ret = btrfs_drop_extents(wc->trans, root, inode,
&drop_args);
if (!ret) {
- inode_sub_bytes(inode,
+ inode_sub_bytes(&inode->vfs_inode,
drop_args.bytes_found);
/* Update the inode's nbytes. */
- ret = btrfs_update_inode(wc->trans,
- BTRFS_I(inode));
+ ret = btrfs_update_inode(wc->trans, inode);
}
- iput(inode);
+ iput(&inode->vfs_inode);
if (ret)
break;
}
--
2.45.2
^ permalink raw reply related [flat|nested] 15+ messages in thread* [PATCH 3/8] btrfs: pass a btrfs_inode to fixup_inode_link_count()
2025-03-07 13:44 [PATCH 0/8] btrfs: some trivial cleanups fdmanana
2025-03-07 13:44 ` [PATCH 1/8] btrfs: return a btrfs_inode from btrfs_iget_logging() fdmanana
2025-03-07 13:44 ` [PATCH 2/8] btrfs: return a btrfs_inode from read_one_inode() fdmanana
@ 2025-03-07 13:44 ` fdmanana
2025-03-07 13:44 ` [PATCH 4/8] btrfs: make btrfs_iget() return a btrfs inode instead fdmanana
` (5 subsequent siblings)
8 siblings, 0 replies; 15+ messages in thread
From: fdmanana @ 2025-03-07 13:44 UTC (permalink / raw)
To: linux-btrfs
From: Filipe Manana <fdmanana@suse.com>
fixup_inode_link_count() mostly wants to use a btrfs_inode, plus it's an
internal function so it should take btrfs_inode instead of a VFS inode.
Change the argument type to btrfs_inode, avoiding several BTRFS_I() calls
too.
Signed-off-by: Filipe Manana <fdmanana@suse.com>
---
fs/btrfs/tree-log.c | 26 +++++++++++++-------------
1 file changed, 13 insertions(+), 13 deletions(-)
diff --git a/fs/btrfs/tree-log.c b/fs/btrfs/tree-log.c
index 0df356e23762..349c9482e9b9 100644
--- a/fs/btrfs/tree-log.c
+++ b/fs/btrfs/tree-log.c
@@ -1610,25 +1610,25 @@ static int count_inode_refs(struct btrfs_inode *inode, struct btrfs_path *path)
* will free the inode.
*/
static noinline int fixup_inode_link_count(struct btrfs_trans_handle *trans,
- struct inode *inode)
+ struct btrfs_inode *inode)
{
- struct btrfs_root *root = BTRFS_I(inode)->root;
+ struct btrfs_root *root = inode->root;
struct btrfs_path *path;
int ret;
u64 nlink = 0;
- u64 ino = btrfs_ino(BTRFS_I(inode));
+ const u64 ino = btrfs_ino(inode);
path = btrfs_alloc_path();
if (!path)
return -ENOMEM;
- ret = count_inode_refs(BTRFS_I(inode), path);
+ ret = count_inode_refs(inode, path);
if (ret < 0)
goto out;
nlink = ret;
- ret = count_inode_extrefs(BTRFS_I(inode), path);
+ ret = count_inode_extrefs(inode, path);
if (ret < 0)
goto out;
@@ -1636,17 +1636,17 @@ static noinline int fixup_inode_link_count(struct btrfs_trans_handle *trans,
ret = 0;
- if (nlink != inode->i_nlink) {
- set_nlink(inode, nlink);
- ret = btrfs_update_inode(trans, BTRFS_I(inode));
+ if (nlink != inode->vfs_inode.i_nlink) {
+ set_nlink(&inode->vfs_inode, nlink);
+ ret = btrfs_update_inode(trans, inode);
if (ret)
goto out;
}
- if (S_ISDIR(inode->i_mode))
- BTRFS_I(inode)->index_cnt = (u64)-1;
+ if (S_ISDIR(inode->vfs_inode.i_mode))
+ inode->index_cnt = (u64)-1;
- if (inode->i_nlink == 0) {
- if (S_ISDIR(inode->i_mode)) {
+ if (inode->vfs_inode.i_nlink == 0) {
+ if (S_ISDIR(inode->vfs_inode.i_mode)) {
ret = replay_dir_deletes(trans, root, NULL, path,
ino, 1);
if (ret)
@@ -1702,7 +1702,7 @@ static noinline int fixup_inode_link_counts(struct btrfs_trans_handle *trans,
break;
}
- ret = fixup_inode_link_count(trans, &inode->vfs_inode);
+ ret = fixup_inode_link_count(trans, inode);
iput(&inode->vfs_inode);
if (ret)
break;
--
2.45.2
^ permalink raw reply related [flat|nested] 15+ messages in thread* [PATCH 4/8] btrfs: make btrfs_iget() return a btrfs inode instead
2025-03-07 13:44 [PATCH 0/8] btrfs: some trivial cleanups fdmanana
` (2 preceding siblings ...)
2025-03-07 13:44 ` [PATCH 3/8] btrfs: pass a btrfs_inode to fixup_inode_link_count() fdmanana
@ 2025-03-07 13:44 ` fdmanana
2025-03-08 15:31 ` kernel test robot
2025-03-08 17:48 ` kernel test robot
2025-03-07 13:44 ` [PATCH 5/8] btrfs: make btrfs_iget_path() " fdmanana
` (4 subsequent siblings)
8 siblings, 2 replies; 15+ messages in thread
From: fdmanana @ 2025-03-07 13:44 UTC (permalink / raw)
To: linux-btrfs
From: Filipe Manana <fdmanana@suse.com>
It's an internal function and most of the time the callers are doing a lot
of BTRFS_I() calls on the returned VFS inode to get the btrfs inode, so
change the return type to struct btrfs_inode instead.
Signed-off-by: Filipe Manana <fdmanana@suse.com>
---
fs/btrfs/btrfs_inode.h | 2 +-
fs/btrfs/defrag.c | 14 +++++------
fs/btrfs/export.c | 17 +++++++++----
fs/btrfs/inode.c | 56 +++++++++++++++++++++---------------------
fs/btrfs/ioctl.c | 7 +++---
fs/btrfs/relocation.c | 17 +++++++------
fs/btrfs/send.c | 25 +++++++++----------
fs/btrfs/super.c | 4 +--
fs/btrfs/tree-log.c | 7 ++----
9 files changed, 78 insertions(+), 71 deletions(-)
diff --git a/fs/btrfs/btrfs_inode.h b/fs/btrfs/btrfs_inode.h
index ca1cd600f5d2..d81bfc760f9b 100644
--- a/fs/btrfs/btrfs_inode.h
+++ b/fs/btrfs/btrfs_inode.h
@@ -594,7 +594,7 @@ int __init btrfs_init_cachep(void);
void __cold btrfs_destroy_cachep(void);
struct inode *btrfs_iget_path(u64 ino, struct btrfs_root *root,
struct btrfs_path *path);
-struct inode *btrfs_iget(u64 ino, struct btrfs_root *root);
+struct btrfs_inode *btrfs_iget(u64 ino, struct btrfs_root *root);
struct extent_map *btrfs_get_extent(struct btrfs_inode *inode,
struct folio *folio, u64 start, u64 len);
int btrfs_update_inode(struct btrfs_trans_handle *trans,
diff --git a/fs/btrfs/defrag.c b/fs/btrfs/defrag.c
index 18f0704263f3..6097c2e12b41 100644
--- a/fs/btrfs/defrag.c
+++ b/fs/btrfs/defrag.c
@@ -225,7 +225,7 @@ static int btrfs_run_defrag_inode(struct btrfs_fs_info *fs_info,
struct file_ra_state *ra)
{
struct btrfs_root *inode_root;
- struct inode *inode;
+ struct btrfs_inode *inode;
struct btrfs_ioctl_defrag_range_args range;
int ret = 0;
u64 cur = 0;
@@ -250,24 +250,24 @@ static int btrfs_run_defrag_inode(struct btrfs_fs_info *fs_info,
goto cleanup;
}
- if (cur >= i_size_read(inode)) {
- iput(inode);
+ if (cur >= i_size_read(&inode->vfs_inode)) {
+ iput(&inode->vfs_inode);
goto cleanup;
}
/* Do a chunk of defrag */
- clear_bit(BTRFS_INODE_IN_DEFRAG, &BTRFS_I(inode)->runtime_flags);
+ clear_bit(BTRFS_INODE_IN_DEFRAG, &inode->runtime_flags);
memset(&range, 0, sizeof(range));
range.len = (u64)-1;
range.start = cur;
range.extent_thresh = defrag->extent_thresh;
- file_ra_state_init(ra, inode->i_mapping);
+ file_ra_state_init(ra, inode->vfs_inode.i_mapping);
sb_start_write(fs_info->sb);
- ret = btrfs_defrag_file(BTRFS_I(inode), ra, &range, defrag->transid,
+ ret = btrfs_defrag_file(inode, ra, &range, defrag->transid,
BTRFS_DEFRAG_BATCH);
sb_end_write(fs_info->sb);
- iput(inode);
+ iput(&inode->vfs_inode);
if (ret < 0)
goto cleanup;
diff --git a/fs/btrfs/export.c b/fs/btrfs/export.c
index a91eaf0ca34e..9fddbb4bb66c 100644
--- a/fs/btrfs/export.c
+++ b/fs/btrfs/export.c
@@ -75,7 +75,7 @@ struct dentry *btrfs_get_dentry(struct super_block *sb, u64 objectid,
{
struct btrfs_fs_info *fs_info = btrfs_sb(sb);
struct btrfs_root *root;
- struct inode *inode;
+ struct btrfs_inode *inode;
if (objectid < BTRFS_FIRST_FREE_OBJECTID)
return ERR_PTR(-ESTALE);
@@ -89,12 +89,12 @@ struct dentry *btrfs_get_dentry(struct super_block *sb, u64 objectid,
if (IS_ERR(inode))
return ERR_CAST(inode);
- if (generation != 0 && generation != inode->i_generation) {
- iput(inode);
+ if (generation != 0 && generation != inode->vfs_inode.i_generation) {
+ iput(&inode->vfs_inode);
return ERR_PTR(-ESTALE);
}
- return d_obtain_alias(inode);
+ return d_obtain_alias(&inode->vfs_inode);
}
static struct dentry *btrfs_fh_to_parent(struct super_block *sb, struct fid *fh,
@@ -146,6 +146,7 @@ static struct dentry *btrfs_fh_to_dentry(struct super_block *sb, struct fid *fh,
struct dentry *btrfs_get_parent(struct dentry *child)
{
struct btrfs_inode *dir = BTRFS_I(d_inode(child));
+ struct btrfs_inode *inode;
struct btrfs_root *root = dir->root;
struct btrfs_fs_info *fs_info = root->fs_info;
struct btrfs_path *path;
@@ -210,7 +211,13 @@ struct dentry *btrfs_get_parent(struct dentry *child)
found_key.offset, 0);
}
- return d_obtain_alias(btrfs_iget(key.objectid, root));
+ inode = btrfs_iget(key.objectid, root);
+ if (IS_ERR(inode)) {
+ ret = PTR_ERR(inode);
+ goto fail;
+ }
+
+ return d_obtain_alias(&inode->vfs_inode);
fail:
btrfs_free_path(path);
return ERR_PTR(ret);
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 8ac4858b70e7..072e7a47f162 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -3555,7 +3555,6 @@ int btrfs_orphan_cleanup(struct btrfs_root *root)
struct extent_buffer *leaf;
struct btrfs_key key, found_key;
struct btrfs_trans_handle *trans;
- struct inode *inode;
u64 last_objectid = 0;
int ret = 0, nr_unlink = 0;
@@ -3574,6 +3573,8 @@ int btrfs_orphan_cleanup(struct btrfs_root *root)
key.offset = (u64)-1;
while (1) {
+ struct btrfs_inode *inode;
+
ret = btrfs_search_slot(NULL, root, &key, path, 0, 0);
if (ret < 0)
goto out;
@@ -3697,10 +3698,10 @@ int btrfs_orphan_cleanup(struct btrfs_root *root)
* deleted but wasn't. The inode number may have been reused,
* but either way, we can delete the orphan item.
*/
- if (!inode || inode->i_nlink) {
+ if (!inode || inode->vfs_inode.i_nlink) {
if (inode) {
- ret = btrfs_drop_verity_items(BTRFS_I(inode));
- iput(inode);
+ ret = btrfs_drop_verity_items(inode);
+ iput(&inode->vfs_inode);
inode = NULL;
if (ret)
goto out;
@@ -3723,7 +3724,7 @@ int btrfs_orphan_cleanup(struct btrfs_root *root)
nr_unlink++;
/* this will do delete_inode and everything for us */
- iput(inode);
+ iput(&inode->vfs_inode);
}
/* release the path since we're done with it */
btrfs_release_path(path);
@@ -5673,7 +5674,7 @@ struct inode *btrfs_iget_path(u64 ino, struct btrfs_root *root,
/*
* Get an inode object given its inode number and corresponding root.
*/
-struct inode *btrfs_iget(u64 ino, struct btrfs_root *root)
+struct btrfs_inode *btrfs_iget(u64 ino, struct btrfs_root *root)
{
struct btrfs_inode *inode;
struct btrfs_path *path;
@@ -5684,7 +5685,7 @@ struct inode *btrfs_iget(u64 ino, struct btrfs_root *root)
return ERR_PTR(-ENOMEM);
if (!(inode->vfs_inode.i_state & I_NEW))
- return &inode->vfs_inode;
+ return inode;
path = btrfs_alloc_path();
if (!path)
@@ -5696,7 +5697,7 @@ struct inode *btrfs_iget(u64 ino, struct btrfs_root *root)
return ERR_PTR(ret);
unlock_new_inode(&inode->vfs_inode);
- return &inode->vfs_inode;
+ return inode;
}
static struct btrfs_inode *new_simple_dir(struct inode *dir,
@@ -5756,7 +5757,7 @@ static inline u8 btrfs_inode_type(const struct btrfs_inode *inode)
struct inode *btrfs_lookup_dentry(struct inode *dir, struct dentry *dentry)
{
struct btrfs_fs_info *fs_info = inode_to_fs_info(dir);
- struct inode *inode;
+ struct btrfs_inode *inode;
struct btrfs_root *root = BTRFS_I(dir)->root;
struct btrfs_root *sub_root = root;
struct btrfs_key location = { 0 };
@@ -5773,49 +5774,48 @@ struct inode *btrfs_lookup_dentry(struct inode *dir, struct dentry *dentry)
if (location.type == BTRFS_INODE_ITEM_KEY) {
inode = btrfs_iget(location.objectid, root);
if (IS_ERR(inode))
- return inode;
+ return ERR_CAST(inode);
/* Do extra check against inode mode with di_type */
- if (btrfs_inode_type(BTRFS_I(inode)) != di_type) {
+ if (btrfs_inode_type(inode) != di_type) {
btrfs_crit(fs_info,
"inode mode mismatch with dir: inode mode=0%o btrfs type=%u dir type=%u",
- inode->i_mode, btrfs_inode_type(BTRFS_I(inode)),
+ inode->vfs_inode.i_mode, btrfs_inode_type(inode),
di_type);
- iput(inode);
+ iput(&inode->vfs_inode);
return ERR_PTR(-EUCLEAN);
}
- return inode;
+ return &inode->vfs_inode;
}
ret = fixup_tree_root_location(fs_info, BTRFS_I(dir), dentry,
&location, &sub_root);
if (ret < 0) {
- if (ret != -ENOENT) {
+ if (ret != -ENOENT)
inode = ERR_PTR(ret);
- } else {
- struct btrfs_inode *b_inode;
-
- b_inode = new_simple_dir(dir, &location, root);
- inode = &b_inode->vfs_inode;
- }
+ else
+ inode = new_simple_dir(dir, &location, root);
} else {
inode = btrfs_iget(location.objectid, sub_root);
btrfs_put_root(sub_root);
if (IS_ERR(inode))
- return inode;
+ return ERR_CAST(inode);
down_read(&fs_info->cleanup_work_sem);
- if (!sb_rdonly(inode->i_sb))
+ if (!sb_rdonly(inode->vfs_inode.i_sb))
ret = btrfs_orphan_cleanup(sub_root);
up_read(&fs_info->cleanup_work_sem);
if (ret) {
- iput(inode);
+ iput(&inode->vfs_inode);
inode = ERR_PTR(ret);
}
}
- return inode;
+ if (IS_ERR(inode))
+ return ERR_CAST(inode);
+
+ return &inode->vfs_inode;
}
static int btrfs_dentry_delete(const struct dentry *dentry)
@@ -6468,7 +6468,7 @@ int btrfs_create_new_inode(struct btrfs_trans_handle *trans,
path = NULL;
if (args->subvol) {
- struct inode *parent;
+ struct btrfs_inode *parent;
/*
* Subvolumes inherit properties from their parent subvolume,
@@ -6479,8 +6479,8 @@ int btrfs_create_new_inode(struct btrfs_trans_handle *trans,
ret = PTR_ERR(parent);
} else {
ret = btrfs_inode_inherit_props(trans, BTRFS_I(inode),
- BTRFS_I(parent));
- iput(parent);
+ parent);
+ iput(&parent->vfs_inode);
}
} else {
ret = btrfs_inode_inherit_props(trans, BTRFS_I(inode),
diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c
index fffa2868f329..c68e505710af 100644
--- a/fs/btrfs/ioctl.c
+++ b/fs/btrfs/ioctl.c
@@ -1832,7 +1832,6 @@ static int btrfs_search_path_in_tree_user(struct mnt_idmap *idmap,
struct btrfs_path *path;
struct btrfs_key key, key2;
struct extent_buffer *leaf;
- struct inode *temp_inode;
char *ptr;
int slot;
int len;
@@ -1860,6 +1859,8 @@ static int btrfs_search_path_in_tree_user(struct mnt_idmap *idmap,
key.type = BTRFS_INODE_REF_KEY;
key.offset = (u64)-1;
while (1) {
+ struct btrfs_inode *temp_inode;
+
ret = btrfs_search_backwards(root, &key, path);
if (ret < 0)
goto out_put;
@@ -1914,9 +1915,9 @@ static int btrfs_search_path_in_tree_user(struct mnt_idmap *idmap,
ret = PTR_ERR(temp_inode);
goto out_put;
}
- ret = inode_permission(idmap, temp_inode,
+ ret = inode_permission(idmap, &temp_inode->vfs_inode,
MAY_READ | MAY_EXEC);
- iput(temp_inode);
+ iput(&temp_inode->vfs_inode);
if (ret) {
ret = -EACCES;
goto out_put;
diff --git a/fs/btrfs/relocation.c b/fs/btrfs/relocation.c
index af0969b70b53..5359cf2b79b5 100644
--- a/fs/btrfs/relocation.c
+++ b/fs/btrfs/relocation.c
@@ -3246,14 +3246,16 @@ static int delete_block_group_cache(struct btrfs_fs_info *fs_info,
{
struct btrfs_root *root = fs_info->tree_root;
struct btrfs_trans_handle *trans;
+ struct btrfs_inode *btrfs_inode;
int ret = 0;
if (inode)
goto truncate;
- inode = btrfs_iget(ino, root);
- if (IS_ERR(inode))
+ btrfs_inode = btrfs_iget(ino, root);
+ if (IS_ERR(btrfs_inode))
return -ENOENT;
+ inode = &btrfs_inode->vfs_inode;
truncate:
ret = btrfs_check_trunc_cache_free_space(fs_info,
@@ -3764,7 +3766,7 @@ static noinline_for_stack struct inode *create_reloc_inode(
struct btrfs_fs_info *fs_info,
const struct btrfs_block_group *group)
{
- struct inode *inode = NULL;
+ struct btrfs_inode *inode = NULL;
struct btrfs_trans_handle *trans;
struct btrfs_root *root;
u64 objectid;
@@ -3792,18 +3794,19 @@ static noinline_for_stack struct inode *create_reloc_inode(
inode = NULL;
goto out;
}
- BTRFS_I(inode)->reloc_block_group_start = group->start;
+ inode->reloc_block_group_start = group->start;
- ret = btrfs_orphan_add(trans, BTRFS_I(inode));
+ ret = btrfs_orphan_add(trans, inode);
out:
btrfs_put_root(root);
btrfs_end_transaction(trans);
btrfs_btree_balance_dirty(fs_info);
if (ret) {
- iput(inode);
+ if (inode)
+ iput(&inode->vfs_inode);
inode = ERR_PTR(ret);
}
- return inode;
+ return &inode->vfs_inode;
}
/*
diff --git a/fs/btrfs/send.c b/fs/btrfs/send.c
index 17a6ed3691e7..0c8c58c4f29b 100644
--- a/fs/btrfs/send.c
+++ b/fs/btrfs/send.c
@@ -5187,14 +5187,14 @@ static int send_verity(struct send_ctx *sctx, struct fs_path *path,
static int process_verity(struct send_ctx *sctx)
{
int ret = 0;
- struct inode *inode;
+ struct btrfs_inode *inode;
struct fs_path *p;
inode = btrfs_iget(sctx->cur_ino, sctx->send_root);
if (IS_ERR(inode))
return PTR_ERR(inode);
- ret = btrfs_get_verity_descriptor(inode, NULL, 0);
+ ret = btrfs_get_verity_descriptor(&inode->vfs_inode, NULL, 0);
if (ret < 0)
goto iput;
@@ -5211,7 +5211,7 @@ static int process_verity(struct send_ctx *sctx)
}
}
- ret = btrfs_get_verity_descriptor(inode, sctx->verity_descriptor, ret);
+ ret = btrfs_get_verity_descriptor(&inode->vfs_inode, sctx->verity_descriptor, ret);
if (ret < 0)
goto iput;
@@ -5223,7 +5223,7 @@ static int process_verity(struct send_ctx *sctx)
ret = send_verity(sctx, p, sctx->verity_descriptor);
iput:
- iput(inode);
+ iput(&inode->vfs_inode);
return ret;
}
@@ -5573,7 +5573,7 @@ static int send_encoded_extent(struct send_ctx *sctx, struct btrfs_path *path,
{
struct btrfs_root *root = sctx->send_root;
struct btrfs_fs_info *fs_info = root->fs_info;
- struct inode *inode;
+ struct btrfs_inode *inode;
struct fs_path *fspath;
struct extent_buffer *leaf = path->nodes[0];
struct btrfs_key key;
@@ -5639,7 +5639,7 @@ static int send_encoded_extent(struct send_ctx *sctx, struct btrfs_path *path,
* Note that send_buf is a mapping of send_buf_pages, so this is really
* reading into send_buf.
*/
- ret = btrfs_encoded_read_regular_fill_pages(BTRFS_I(inode),
+ ret = btrfs_encoded_read_regular_fill_pages(inode,
disk_bytenr, disk_num_bytes,
sctx->send_buf_pages +
(data_offset >> PAGE_SHIFT),
@@ -5665,7 +5665,7 @@ static int send_encoded_extent(struct send_ctx *sctx, struct btrfs_path *path,
tlv_put_failure:
out:
- iput(inode);
+ iput(&inode->vfs_inode);
return ret;
}
@@ -5707,15 +5707,14 @@ static int send_extent_data(struct send_ctx *sctx, struct btrfs_path *path,
}
if (sctx->cur_inode == NULL) {
+ struct btrfs_inode *btrfs_inode;
struct btrfs_root *root = sctx->send_root;
- sctx->cur_inode = btrfs_iget(sctx->cur_ino, root);
- if (IS_ERR(sctx->cur_inode)) {
- int err = PTR_ERR(sctx->cur_inode);
+ btrfs_inode = btrfs_iget(sctx->cur_ino, root);
+ if (IS_ERR(btrfs_inode))
+ return PTR_ERR(btrfs_inode);
- sctx->cur_inode = NULL;
- return err;
- }
+ sctx->cur_inode = &btrfs_inode->vfs_inode;
memset(&sctx->ra, 0, sizeof(struct file_ra_state));
file_ra_state_init(&sctx->ra, sctx->cur_inode->i_mapping);
diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c
index fdec546a87f3..40709e2a44fc 100644
--- a/fs/btrfs/super.c
+++ b/fs/btrfs/super.c
@@ -947,7 +947,7 @@ static int get_default_subvol_objectid(struct btrfs_fs_info *fs_info, u64 *objec
static int btrfs_fill_super(struct super_block *sb,
struct btrfs_fs_devices *fs_devices)
{
- struct inode *inode;
+ struct btrfs_inode *inode;
struct btrfs_fs_info *fs_info = btrfs_sb(sb);
int err;
@@ -982,7 +982,7 @@ static int btrfs_fill_super(struct super_block *sb,
goto fail_close;
}
- sb->s_root = d_make_root(inode);
+ sb->s_root = d_make_root(&inode->vfs_inode);
if (!sb->s_root) {
err = -ENOMEM;
goto fail_close;
diff --git a/fs/btrfs/tree-log.c b/fs/btrfs/tree-log.c
index 349c9482e9b9..2d23223f476b 100644
--- a/fs/btrfs/tree-log.c
+++ b/fs/btrfs/tree-log.c
@@ -141,7 +141,7 @@ static void wait_log_commit(struct btrfs_root *root, int transid);
static struct btrfs_inode *btrfs_iget_logging(u64 objectid, struct btrfs_root *root)
{
unsigned int nofs_flag;
- struct inode *inode;
+ struct btrfs_inode *inode;
/*
* We're holding a transaction handle whether we are logging or
@@ -154,10 +154,7 @@ static struct btrfs_inode *btrfs_iget_logging(u64 objectid, struct btrfs_root *r
inode = btrfs_iget(objectid, root);
memalloc_nofs_restore(nofs_flag);
- if (IS_ERR(inode))
- return ERR_CAST(inode);
-
- return BTRFS_I(inode);
+ return inode;
}
/*
--
2.45.2
^ permalink raw reply related [flat|nested] 15+ messages in thread* Re: [PATCH 4/8] btrfs: make btrfs_iget() return a btrfs inode instead
2025-03-07 13:44 ` [PATCH 4/8] btrfs: make btrfs_iget() return a btrfs inode instead fdmanana
@ 2025-03-08 15:31 ` kernel test robot
2025-03-10 10:45 ` Filipe Manana
2025-03-08 17:48 ` kernel test robot
1 sibling, 1 reply; 15+ messages in thread
From: kernel test robot @ 2025-03-08 15:31 UTC (permalink / raw)
To: fdmanana, linux-btrfs; +Cc: oe-kbuild-all
Hi,
kernel test robot noticed the following build errors:
[auto build test ERROR on kdave/for-next]
[also build test ERROR on next-20250307]
[cannot apply to linus/master v6.14-rc5]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/fdmanana-kernel-org/btrfs-return-a-btrfs_inode-from-btrfs_iget_logging/20250307-214724
base: https://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux.git for-next
patch link: https://lore.kernel.org/r/f6d2a09fb43742fb5be38f820908510e298f8d40.1741354479.git.fdmanana%40suse.com
patch subject: [PATCH 4/8] btrfs: make btrfs_iget() return a btrfs inode instead
config: sh-allmodconfig (https://download.01.org/0day-ci/archive/20250308/202503082341.T7dnq95G-lkp@intel.com/config)
compiler: sh4-linux-gcc (GCC) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250308/202503082341.T7dnq95G-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202503082341.T7dnq95G-lkp@intel.com/
All errors (new ones prefixed by >>):
fs/btrfs/send.c: In function 'send_encoded_inline_extent':
>> fs/btrfs/send.c:5535:15: error: assignment to 'struct inode *' from incompatible pointer type 'struct btrfs_inode *' [-Wincompatible-pointer-types]
5535 | inode = btrfs_iget(sctx->cur_ino, root);
| ^
vim +5535 fs/btrfs/send.c
16e7549f045d33b Josef Bacik 2013-10-22 5519
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5520 static int send_encoded_inline_extent(struct send_ctx *sctx,
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5521 struct btrfs_path *path, u64 offset,
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5522 u64 len)
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5523 {
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5524 struct btrfs_root *root = sctx->send_root;
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5525 struct btrfs_fs_info *fs_info = root->fs_info;
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5526 struct inode *inode;
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5527 struct fs_path *fspath;
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5528 struct extent_buffer *leaf = path->nodes[0];
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5529 struct btrfs_key key;
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5530 struct btrfs_file_extent_item *ei;
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5531 u64 ram_bytes;
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5532 size_t inline_size;
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5533 int ret;
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5534
d13240dd0a2d13b Filipe Manana 2024-06-13 @5535 inode = btrfs_iget(sctx->cur_ino, root);
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5536 if (IS_ERR(inode))
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5537 return PTR_ERR(inode);
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5538
6054b503e2eafac Filipe Manana 2025-02-18 5539 fspath = get_cur_inode_path(sctx);
6054b503e2eafac Filipe Manana 2025-02-18 5540 if (IS_ERR(fspath)) {
6054b503e2eafac Filipe Manana 2025-02-18 5541 ret = PTR_ERR(fspath);
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5542 goto out;
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5543 }
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5544
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5545 ret = begin_cmd(sctx, BTRFS_SEND_C_ENCODED_WRITE);
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5546 if (ret < 0)
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5547 goto out;
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5548
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5549 btrfs_item_key_to_cpu(leaf, &key, path->slots[0]);
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5550 ei = btrfs_item_ptr(leaf, path->slots[0], struct btrfs_file_extent_item);
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5551 ram_bytes = btrfs_file_extent_ram_bytes(leaf, ei);
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5552 inline_size = btrfs_file_extent_inline_item_len(leaf, path->slots[0]);
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5553
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5554 TLV_PUT_PATH(sctx, BTRFS_SEND_A_PATH, fspath);
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5555 TLV_PUT_U64(sctx, BTRFS_SEND_A_FILE_OFFSET, offset);
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5556 TLV_PUT_U64(sctx, BTRFS_SEND_A_UNENCODED_FILE_LEN,
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5557 min(key.offset + ram_bytes - offset, len));
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5558 TLV_PUT_U64(sctx, BTRFS_SEND_A_UNENCODED_LEN, ram_bytes);
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5559 TLV_PUT_U64(sctx, BTRFS_SEND_A_UNENCODED_OFFSET, offset - key.offset);
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5560 ret = btrfs_encoded_io_compression_from_extent(fs_info,
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5561 btrfs_file_extent_compression(leaf, ei));
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5562 if (ret < 0)
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5563 goto out;
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5564 TLV_PUT_U32(sctx, BTRFS_SEND_A_COMPRESSION, ret);
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5565
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5566 ret = put_data_header(sctx, inline_size);
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5567 if (ret < 0)
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5568 goto out;
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5569 read_extent_buffer(leaf, sctx->send_buf + sctx->send_size,
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5570 btrfs_file_extent_inline_start(ei), inline_size);
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5571 sctx->send_size += inline_size;
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5572
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5573 ret = send_cmd(sctx);
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5574
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5575 tlv_put_failure:
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5576 out:
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5577 iput(inode);
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5578 return ret;
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5579 }
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5580
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 15+ messages in thread* Re: [PATCH 4/8] btrfs: make btrfs_iget() return a btrfs inode instead
2025-03-08 15:31 ` kernel test robot
@ 2025-03-10 10:45 ` Filipe Manana
2025-03-11 9:40 ` Philip Li
0 siblings, 1 reply; 15+ messages in thread
From: Filipe Manana @ 2025-03-10 10:45 UTC (permalink / raw)
To: kernel test robot; +Cc: linux-btrfs, oe-kbuild-all
On Sat, Mar 8, 2025 at 3:32 PM kernel test robot <lkp@intel.com> wrote:
>
> Hi,
>
> kernel test robot noticed the following build errors:
>
> [auto build test ERROR on kdave/for-next]
> [also build test ERROR on next-20250307]
> [cannot apply to linus/master v6.14-rc5]
> [If your patch is applied to the wrong git tree, kindly drop us a note.
> And when submitting patch, we suggest to use '--base' as documented in
> https://git-scm.com/docs/git-format-patch#_base_tree_information]
>
> url: https://github.com/intel-lab-lkp/linux/commits/fdmanana-kernel-org/btrfs-return-a-btrfs_inode-from-btrfs_iget_logging/20250307-214724
> base: https://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux.git for-next
> patch link: https://lore.kernel.org/r/f6d2a09fb43742fb5be38f820908510e298f8d40.1741354479.git.fdmanana%40suse.com
> patch subject: [PATCH 4/8] btrfs: make btrfs_iget() return a btrfs inode instead
> config: sh-allmodconfig (https://download.01.org/0day-ci/archive/20250308/202503082341.T7dnq95G-lkp@intel.com/config)
> compiler: sh4-linux-gcc (GCC) 14.2.0
> reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250308/202503082341.T7dnq95G-lkp@intel.com/reproduce)
>
> If you fix the issue in a separate patch/commit (i.e. not just a new version of
> the same patch/commit), kindly add following tags
> | Reported-by: kernel test robot <lkp@intel.com>
> | Closes: https://lore.kernel.org/oe-kbuild-all/202503082341.T7dnq95G-lkp@intel.com/
>
> All errors (new ones prefixed by >>):
>
> fs/btrfs/send.c: In function 'send_encoded_inline_extent':
> >> fs/btrfs/send.c:5535:15: error: assignment to 'struct inode *' from incompatible pointer type 'struct btrfs_inode *' [-Wincompatible-pointer-types]
> 5535 | inode = btrfs_iget(sctx->cur_ino, root);
You're testing against a branch that doesn't contain this dependency:
https://lore.kernel.org/linux-btrfs/89867e61f94b9a9f3711f66c141e4d483a9cc6bd.1741283556.git.fdmanana@suse.com/
It's in the for-next branch of the github repo:
https://github.com/btrfs/linux/commits/for-next/
but not yet in any kernel.org repo.
Thanks.
> | ^
>
>
> vim +5535 fs/btrfs/send.c
>
> 16e7549f045d33b Josef Bacik 2013-10-22 5519
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5520 static int send_encoded_inline_extent(struct send_ctx *sctx,
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5521 struct btrfs_path *path, u64 offset,
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5522 u64 len)
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5523 {
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5524 struct btrfs_root *root = sctx->send_root;
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5525 struct btrfs_fs_info *fs_info = root->fs_info;
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5526 struct inode *inode;
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5527 struct fs_path *fspath;
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5528 struct extent_buffer *leaf = path->nodes[0];
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5529 struct btrfs_key key;
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5530 struct btrfs_file_extent_item *ei;
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5531 u64 ram_bytes;
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5532 size_t inline_size;
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5533 int ret;
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5534
> d13240dd0a2d13b Filipe Manana 2024-06-13 @5535 inode = btrfs_iget(sctx->cur_ino, root);
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5536 if (IS_ERR(inode))
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5537 return PTR_ERR(inode);
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5538
> 6054b503e2eafac Filipe Manana 2025-02-18 5539 fspath = get_cur_inode_path(sctx);
> 6054b503e2eafac Filipe Manana 2025-02-18 5540 if (IS_ERR(fspath)) {
> 6054b503e2eafac Filipe Manana 2025-02-18 5541 ret = PTR_ERR(fspath);
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5542 goto out;
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5543 }
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5544
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5545 ret = begin_cmd(sctx, BTRFS_SEND_C_ENCODED_WRITE);
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5546 if (ret < 0)
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5547 goto out;
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5548
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5549 btrfs_item_key_to_cpu(leaf, &key, path->slots[0]);
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5550 ei = btrfs_item_ptr(leaf, path->slots[0], struct btrfs_file_extent_item);
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5551 ram_bytes = btrfs_file_extent_ram_bytes(leaf, ei);
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5552 inline_size = btrfs_file_extent_inline_item_len(leaf, path->slots[0]);
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5553
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5554 TLV_PUT_PATH(sctx, BTRFS_SEND_A_PATH, fspath);
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5555 TLV_PUT_U64(sctx, BTRFS_SEND_A_FILE_OFFSET, offset);
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5556 TLV_PUT_U64(sctx, BTRFS_SEND_A_UNENCODED_FILE_LEN,
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5557 min(key.offset + ram_bytes - offset, len));
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5558 TLV_PUT_U64(sctx, BTRFS_SEND_A_UNENCODED_LEN, ram_bytes);
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5559 TLV_PUT_U64(sctx, BTRFS_SEND_A_UNENCODED_OFFSET, offset - key.offset);
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5560 ret = btrfs_encoded_io_compression_from_extent(fs_info,
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5561 btrfs_file_extent_compression(leaf, ei));
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5562 if (ret < 0)
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5563 goto out;
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5564 TLV_PUT_U32(sctx, BTRFS_SEND_A_COMPRESSION, ret);
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5565
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5566 ret = put_data_header(sctx, inline_size);
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5567 if (ret < 0)
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5568 goto out;
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5569 read_extent_buffer(leaf, sctx->send_buf + sctx->send_size,
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5570 btrfs_file_extent_inline_start(ei), inline_size);
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5571 sctx->send_size += inline_size;
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5572
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5573 ret = send_cmd(sctx);
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5574
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5575 tlv_put_failure:
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5576 out:
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5577 iput(inode);
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5578 return ret;
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5579 }
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5580
>
> --
> 0-DAY CI Kernel Test Service
> https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 15+ messages in thread* Re: [PATCH 4/8] btrfs: make btrfs_iget() return a btrfs inode instead
2025-03-10 10:45 ` Filipe Manana
@ 2025-03-11 9:40 ` Philip Li
0 siblings, 0 replies; 15+ messages in thread
From: Philip Li @ 2025-03-11 9:40 UTC (permalink / raw)
To: Filipe Manana; +Cc: kernel test robot, linux-btrfs, oe-kbuild-all
On Mon, Mar 10, 2025 at 10:45:24AM +0000, Filipe Manana wrote:
> On Sat, Mar 8, 2025 at 3:32 PM kernel test robot <lkp@intel.com> wrote:
> >
> > Hi,
> >
> > kernel test robot noticed the following build errors:
> >
> > [auto build test ERROR on kdave/for-next]
> > [also build test ERROR on next-20250307]
> > [cannot apply to linus/master v6.14-rc5]
> > [If your patch is applied to the wrong git tree, kindly drop us a note.
> > And when submitting patch, we suggest to use '--base' as documented in
> > https://git-scm.com/docs/git-format-patch#_base_tree_information]
> >
> > url: https://github.com/intel-lab-lkp/linux/commits/fdmanana-kernel-org/btrfs-return-a-btrfs_inode-from-btrfs_iget_logging/20250307-214724
> > base: https://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux.git for-next
> > patch link: https://lore.kernel.org/r/f6d2a09fb43742fb5be38f820908510e298f8d40.1741354479.git.fdmanana%40suse.com
> > patch subject: [PATCH 4/8] btrfs: make btrfs_iget() return a btrfs inode instead
> > config: sh-allmodconfig (https://download.01.org/0day-ci/archive/20250308/202503082341.T7dnq95G-lkp@intel.com/config)
> > compiler: sh4-linux-gcc (GCC) 14.2.0
> > reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250308/202503082341.T7dnq95G-lkp@intel.com/reproduce)
> >
> > If you fix the issue in a separate patch/commit (i.e. not just a new version of
> > the same patch/commit), kindly add following tags
> > | Reported-by: kernel test robot <lkp@intel.com>
> > | Closes: https://lore.kernel.org/oe-kbuild-all/202503082341.T7dnq95G-lkp@intel.com/
> >
> > All errors (new ones prefixed by >>):
> >
> > fs/btrfs/send.c: In function 'send_encoded_inline_extent':
> > >> fs/btrfs/send.c:5535:15: error: assignment to 'struct inode *' from incompatible pointer type 'struct btrfs_inode *' [-Wincompatible-pointer-types]
> > 5535 | inode = btrfs_iget(sctx->cur_ino, root);
>
>
> You're testing against a branch that doesn't contain this dependency:
>
> https://lore.kernel.org/linux-btrfs/89867e61f94b9a9f3711f66c141e4d483a9cc6bd.1741283556.git.fdmanana@suse.com/
>
> It's in the for-next branch of the github repo:
>
> https://github.com/btrfs/linux/commits/for-next/
Thanks for the info, i will configure the bot to consider this. Sorry for the false
positive.
>
> but not yet in any kernel.org repo.
>
> Thanks.
>
> > | ^
> >
> >
> > vim +5535 fs/btrfs/send.c
> >
> > 16e7549f045d33b Josef Bacik 2013-10-22 5519
> > 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5520 static int send_encoded_inline_extent(struct send_ctx *sctx,
> > 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5521 struct btrfs_path *path, u64 offset,
> > 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5522 u64 len)
> > 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5523 {
> > 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5524 struct btrfs_root *root = sctx->send_root;
> > 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5525 struct btrfs_fs_info *fs_info = root->fs_info;
> > 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5526 struct inode *inode;
> > 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5527 struct fs_path *fspath;
> > 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5528 struct extent_buffer *leaf = path->nodes[0];
> > 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5529 struct btrfs_key key;
> > 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5530 struct btrfs_file_extent_item *ei;
> > 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5531 u64 ram_bytes;
> > 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5532 size_t inline_size;
> > 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5533 int ret;
> > 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5534
> > d13240dd0a2d13b Filipe Manana 2024-06-13 @5535 inode = btrfs_iget(sctx->cur_ino, root);
> > 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5536 if (IS_ERR(inode))
> > 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5537 return PTR_ERR(inode);
> > 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5538
> > 6054b503e2eafac Filipe Manana 2025-02-18 5539 fspath = get_cur_inode_path(sctx);
> > 6054b503e2eafac Filipe Manana 2025-02-18 5540 if (IS_ERR(fspath)) {
> > 6054b503e2eafac Filipe Manana 2025-02-18 5541 ret = PTR_ERR(fspath);
> > 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5542 goto out;
> > 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5543 }
> > 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5544
> > 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5545 ret = begin_cmd(sctx, BTRFS_SEND_C_ENCODED_WRITE);
> > 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5546 if (ret < 0)
> > 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5547 goto out;
> > 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5548
> > 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5549 btrfs_item_key_to_cpu(leaf, &key, path->slots[0]);
> > 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5550 ei = btrfs_item_ptr(leaf, path->slots[0], struct btrfs_file_extent_item);
> > 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5551 ram_bytes = btrfs_file_extent_ram_bytes(leaf, ei);
> > 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5552 inline_size = btrfs_file_extent_inline_item_len(leaf, path->slots[0]);
> > 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5553
> > 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5554 TLV_PUT_PATH(sctx, BTRFS_SEND_A_PATH, fspath);
> > 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5555 TLV_PUT_U64(sctx, BTRFS_SEND_A_FILE_OFFSET, offset);
> > 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5556 TLV_PUT_U64(sctx, BTRFS_SEND_A_UNENCODED_FILE_LEN,
> > 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5557 min(key.offset + ram_bytes - offset, len));
> > 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5558 TLV_PUT_U64(sctx, BTRFS_SEND_A_UNENCODED_LEN, ram_bytes);
> > 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5559 TLV_PUT_U64(sctx, BTRFS_SEND_A_UNENCODED_OFFSET, offset - key.offset);
> > 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5560 ret = btrfs_encoded_io_compression_from_extent(fs_info,
> > 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5561 btrfs_file_extent_compression(leaf, ei));
> > 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5562 if (ret < 0)
> > 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5563 goto out;
> > 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5564 TLV_PUT_U32(sctx, BTRFS_SEND_A_COMPRESSION, ret);
> > 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5565
> > 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5566 ret = put_data_header(sctx, inline_size);
> > 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5567 if (ret < 0)
> > 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5568 goto out;
> > 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5569 read_extent_buffer(leaf, sctx->send_buf + sctx->send_size,
> > 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5570 btrfs_file_extent_inline_start(ei), inline_size);
> > 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5571 sctx->send_size += inline_size;
> > 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5572
> > 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5573 ret = send_cmd(sctx);
> > 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5574
> > 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5575 tlv_put_failure:
> > 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5576 out:
> > 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5577 iput(inode);
> > 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5578 return ret;
> > 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5579 }
> > 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5580
> >
> > --
> > 0-DAY CI Kernel Test Service
> > https://github.com/intel/lkp-tests/wiki
>
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 4/8] btrfs: make btrfs_iget() return a btrfs inode instead
2025-03-07 13:44 ` [PATCH 4/8] btrfs: make btrfs_iget() return a btrfs inode instead fdmanana
2025-03-08 15:31 ` kernel test robot
@ 2025-03-08 17:48 ` kernel test robot
2025-03-10 10:46 ` Filipe Manana
1 sibling, 1 reply; 15+ messages in thread
From: kernel test robot @ 2025-03-08 17:48 UTC (permalink / raw)
To: fdmanana, linux-btrfs; +Cc: llvm, oe-kbuild-all
Hi,
kernel test robot noticed the following build errors:
[auto build test ERROR on kdave/for-next]
[also build test ERROR on next-20250307]
[cannot apply to linus/master v6.14-rc5]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/fdmanana-kernel-org/btrfs-return-a-btrfs_inode-from-btrfs_iget_logging/20250307-214724
base: https://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux.git for-next
patch link: https://lore.kernel.org/r/f6d2a09fb43742fb5be38f820908510e298f8d40.1741354479.git.fdmanana%40suse.com
patch subject: [PATCH 4/8] btrfs: make btrfs_iget() return a btrfs inode instead
config: s390-allmodconfig (https://download.01.org/0day-ci/archive/20250309/202503090344.SeJrOfHD-lkp@intel.com/config)
compiler: clang version 19.1.7 (https://github.com/llvm/llvm-project cd708029e0b2869e80abe31ddb175f7c35361f90)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250309/202503090344.SeJrOfHD-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202503090344.SeJrOfHD-lkp@intel.com/
All errors (new ones prefixed by >>):
In file included from fs/btrfs/send.c:11:
In file included from include/linux/xattr.h:18:
In file included from include/linux/mm.h:2224:
include/linux/vmstat.h:504:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion]
504 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~ ^
505 | item];
| ~~~~
include/linux/vmstat.h:511:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion]
511 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~ ^
512 | NR_VM_NUMA_EVENT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~~
include/linux/vmstat.h:524:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion]
524 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~ ^
525 | NR_VM_NUMA_EVENT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~~
>> fs/btrfs/send.c:5535:8: error: incompatible pointer types assigning to 'struct inode *' from 'struct btrfs_inode *' [-Werror,-Wincompatible-pointer-types]
5535 | inode = btrfs_iget(sctx->cur_ino, root);
| ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3 warnings and 1 error generated.
vim +5535 fs/btrfs/send.c
16e7549f045d33b Josef Bacik 2013-10-22 5519
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5520 static int send_encoded_inline_extent(struct send_ctx *sctx,
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5521 struct btrfs_path *path, u64 offset,
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5522 u64 len)
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5523 {
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5524 struct btrfs_root *root = sctx->send_root;
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5525 struct btrfs_fs_info *fs_info = root->fs_info;
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5526 struct inode *inode;
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5527 struct fs_path *fspath;
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5528 struct extent_buffer *leaf = path->nodes[0];
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5529 struct btrfs_key key;
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5530 struct btrfs_file_extent_item *ei;
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5531 u64 ram_bytes;
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5532 size_t inline_size;
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5533 int ret;
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5534
d13240dd0a2d13b Filipe Manana 2024-06-13 @5535 inode = btrfs_iget(sctx->cur_ino, root);
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5536 if (IS_ERR(inode))
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5537 return PTR_ERR(inode);
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5538
6054b503e2eafac Filipe Manana 2025-02-18 5539 fspath = get_cur_inode_path(sctx);
6054b503e2eafac Filipe Manana 2025-02-18 5540 if (IS_ERR(fspath)) {
6054b503e2eafac Filipe Manana 2025-02-18 5541 ret = PTR_ERR(fspath);
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5542 goto out;
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5543 }
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5544
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5545 ret = begin_cmd(sctx, BTRFS_SEND_C_ENCODED_WRITE);
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5546 if (ret < 0)
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5547 goto out;
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5548
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5549 btrfs_item_key_to_cpu(leaf, &key, path->slots[0]);
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5550 ei = btrfs_item_ptr(leaf, path->slots[0], struct btrfs_file_extent_item);
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5551 ram_bytes = btrfs_file_extent_ram_bytes(leaf, ei);
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5552 inline_size = btrfs_file_extent_inline_item_len(leaf, path->slots[0]);
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5553
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5554 TLV_PUT_PATH(sctx, BTRFS_SEND_A_PATH, fspath);
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5555 TLV_PUT_U64(sctx, BTRFS_SEND_A_FILE_OFFSET, offset);
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5556 TLV_PUT_U64(sctx, BTRFS_SEND_A_UNENCODED_FILE_LEN,
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5557 min(key.offset + ram_bytes - offset, len));
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5558 TLV_PUT_U64(sctx, BTRFS_SEND_A_UNENCODED_LEN, ram_bytes);
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5559 TLV_PUT_U64(sctx, BTRFS_SEND_A_UNENCODED_OFFSET, offset - key.offset);
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5560 ret = btrfs_encoded_io_compression_from_extent(fs_info,
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5561 btrfs_file_extent_compression(leaf, ei));
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5562 if (ret < 0)
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5563 goto out;
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5564 TLV_PUT_U32(sctx, BTRFS_SEND_A_COMPRESSION, ret);
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5565
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5566 ret = put_data_header(sctx, inline_size);
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5567 if (ret < 0)
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5568 goto out;
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5569 read_extent_buffer(leaf, sctx->send_buf + sctx->send_size,
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5570 btrfs_file_extent_inline_start(ei), inline_size);
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5571 sctx->send_size += inline_size;
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5572
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5573 ret = send_cmd(sctx);
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5574
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5575 tlv_put_failure:
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5576 out:
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5577 iput(inode);
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5578 return ret;
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5579 }
3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5580
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 15+ messages in thread* Re: [PATCH 4/8] btrfs: make btrfs_iget() return a btrfs inode instead
2025-03-08 17:48 ` kernel test robot
@ 2025-03-10 10:46 ` Filipe Manana
0 siblings, 0 replies; 15+ messages in thread
From: Filipe Manana @ 2025-03-10 10:46 UTC (permalink / raw)
To: kernel test robot; +Cc: linux-btrfs, llvm, oe-kbuild-all
On Sat, Mar 8, 2025 at 5:49 PM kernel test robot <lkp@intel.com> wrote:
>
> Hi,
>
> kernel test robot noticed the following build errors:
>
> [auto build test ERROR on kdave/for-next]
> [also build test ERROR on next-20250307]
> [cannot apply to linus/master v6.14-rc5]
> [If your patch is applied to the wrong git tree, kindly drop us a note.
> And when submitting patch, we suggest to use '--base' as documented in
> https://git-scm.com/docs/git-format-patch#_base_tree_information]
>
> url: https://github.com/intel-lab-lkp/linux/commits/fdmanana-kernel-org/btrfs-return-a-btrfs_inode-from-btrfs_iget_logging/20250307-214724
> base: https://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux.git for-next
> patch link: https://lore.kernel.org/r/f6d2a09fb43742fb5be38f820908510e298f8d40.1741354479.git.fdmanana%40suse.com
> patch subject: [PATCH 4/8] btrfs: make btrfs_iget() return a btrfs inode instead
> config: s390-allmodconfig (https://download.01.org/0day-ci/archive/20250309/202503090344.SeJrOfHD-lkp@intel.com/config)
> compiler: clang version 19.1.7 (https://github.com/llvm/llvm-project cd708029e0b2869e80abe31ddb175f7c35361f90)
> reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250309/202503090344.SeJrOfHD-lkp@intel.com/reproduce)
>
> If you fix the issue in a separate patch/commit (i.e. not just a new version of
> the same patch/commit), kindly add following tags
> | Reported-by: kernel test robot <lkp@intel.com>
> | Closes: https://lore.kernel.org/oe-kbuild-all/202503090344.SeJrOfHD-lkp@intel.com/
>
> All errors (new ones prefixed by >>):
>
> In file included from fs/btrfs/send.c:11:
> In file included from include/linux/xattr.h:18:
> In file included from include/linux/mm.h:2224:
> include/linux/vmstat.h:504:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion]
> 504 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
> | ~~~~~~~~~~~~~~~~~~~~~ ^
> 505 | item];
> | ~~~~
> include/linux/vmstat.h:511:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion]
> 511 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
> | ~~~~~~~~~~~~~~~~~~~~~ ^
> 512 | NR_VM_NUMA_EVENT_ITEMS +
> | ~~~~~~~~~~~~~~~~~~~~~~
> include/linux/vmstat.h:524:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion]
> 524 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
> | ~~~~~~~~~~~~~~~~~~~~~ ^
> 525 | NR_VM_NUMA_EVENT_ITEMS +
> | ~~~~~~~~~~~~~~~~~~~~~~
> >> fs/btrfs/send.c:5535:8: error: incompatible pointer types assigning to 'struct inode *' from 'struct btrfs_inode *' [-Werror,-Wincompatible-pointer-types]
> 5535 | inode = btrfs_iget(sctx->cur_ino, root);
> | ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 3 warnings and 1 error generated.
You're testing against a branch that doesn't contain this dependency:
https://lore.kernel.org/linux-btrfs/89867e61f94b9a9f3711f66c141e4d483a9cc6bd.1741283556.git.fdmanana@suse.com/
It's in the for-next branch of the github repo:
https://github.com/btrfs/linux/commits/for-next/
but not yet in any kernel.org repo.
Thanks.
>
>
> vim +5535 fs/btrfs/send.c
>
> 16e7549f045d33b Josef Bacik 2013-10-22 5519
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5520 static int send_encoded_inline_extent(struct send_ctx *sctx,
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5521 struct btrfs_path *path, u64 offset,
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5522 u64 len)
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5523 {
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5524 struct btrfs_root *root = sctx->send_root;
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5525 struct btrfs_fs_info *fs_info = root->fs_info;
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5526 struct inode *inode;
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5527 struct fs_path *fspath;
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5528 struct extent_buffer *leaf = path->nodes[0];
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5529 struct btrfs_key key;
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5530 struct btrfs_file_extent_item *ei;
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5531 u64 ram_bytes;
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5532 size_t inline_size;
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5533 int ret;
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5534
> d13240dd0a2d13b Filipe Manana 2024-06-13 @5535 inode = btrfs_iget(sctx->cur_ino, root);
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5536 if (IS_ERR(inode))
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5537 return PTR_ERR(inode);
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5538
> 6054b503e2eafac Filipe Manana 2025-02-18 5539 fspath = get_cur_inode_path(sctx);
> 6054b503e2eafac Filipe Manana 2025-02-18 5540 if (IS_ERR(fspath)) {
> 6054b503e2eafac Filipe Manana 2025-02-18 5541 ret = PTR_ERR(fspath);
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5542 goto out;
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5543 }
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5544
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5545 ret = begin_cmd(sctx, BTRFS_SEND_C_ENCODED_WRITE);
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5546 if (ret < 0)
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5547 goto out;
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5548
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5549 btrfs_item_key_to_cpu(leaf, &key, path->slots[0]);
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5550 ei = btrfs_item_ptr(leaf, path->slots[0], struct btrfs_file_extent_item);
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5551 ram_bytes = btrfs_file_extent_ram_bytes(leaf, ei);
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5552 inline_size = btrfs_file_extent_inline_item_len(leaf, path->slots[0]);
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5553
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5554 TLV_PUT_PATH(sctx, BTRFS_SEND_A_PATH, fspath);
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5555 TLV_PUT_U64(sctx, BTRFS_SEND_A_FILE_OFFSET, offset);
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5556 TLV_PUT_U64(sctx, BTRFS_SEND_A_UNENCODED_FILE_LEN,
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5557 min(key.offset + ram_bytes - offset, len));
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5558 TLV_PUT_U64(sctx, BTRFS_SEND_A_UNENCODED_LEN, ram_bytes);
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5559 TLV_PUT_U64(sctx, BTRFS_SEND_A_UNENCODED_OFFSET, offset - key.offset);
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5560 ret = btrfs_encoded_io_compression_from_extent(fs_info,
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5561 btrfs_file_extent_compression(leaf, ei));
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5562 if (ret < 0)
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5563 goto out;
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5564 TLV_PUT_U32(sctx, BTRFS_SEND_A_COMPRESSION, ret);
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5565
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5566 ret = put_data_header(sctx, inline_size);
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5567 if (ret < 0)
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5568 goto out;
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5569 read_extent_buffer(leaf, sctx->send_buf + sctx->send_size,
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5570 btrfs_file_extent_inline_start(ei), inline_size);
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5571 sctx->send_size += inline_size;
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5572
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5573 ret = send_cmd(sctx);
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5574
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5575 tlv_put_failure:
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5576 out:
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5577 iput(inode);
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5578 return ret;
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5579 }
> 3ea4dc5bf00c7d1 Omar Sandoval 2022-03-17 5580
>
> --
> 0-DAY CI Kernel Test Service
> https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH 5/8] btrfs: make btrfs_iget_path() return a btrfs inode instead
2025-03-07 13:44 [PATCH 0/8] btrfs: some trivial cleanups fdmanana
` (3 preceding siblings ...)
2025-03-07 13:44 ` [PATCH 4/8] btrfs: make btrfs_iget() return a btrfs inode instead fdmanana
@ 2025-03-07 13:44 ` fdmanana
2025-03-07 13:44 ` [PATCH 6/8] btrfs: remove unnecessary fs_info argument from create_reloc_inode() fdmanana
` (3 subsequent siblings)
8 siblings, 0 replies; 15+ messages in thread
From: fdmanana @ 2025-03-07 13:44 UTC (permalink / raw)
To: linux-btrfs
From: Filipe Manana <fdmanana@suse.com>
It's an internal function and btrfs_iget() is now returning a btrfs inode,
so change btrfs_iget_path() to also return a btrfs inode instead of a VFS
inode.
Signed-off-by: Filipe Manana <fdmanana@suse.com>
---
fs/btrfs/btrfs_inode.h | 4 ++--
fs/btrfs/free-space-cache.c | 10 +++++-----
fs/btrfs/inode.c | 8 ++++----
3 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/fs/btrfs/btrfs_inode.h b/fs/btrfs/btrfs_inode.h
index d81bfc760f9b..a2925562b4e9 100644
--- a/fs/btrfs/btrfs_inode.h
+++ b/fs/btrfs/btrfs_inode.h
@@ -592,8 +592,8 @@ void btrfs_free_inode(struct inode *inode);
int btrfs_drop_inode(struct inode *inode);
int __init btrfs_init_cachep(void);
void __cold btrfs_destroy_cachep(void);
-struct inode *btrfs_iget_path(u64 ino, struct btrfs_root *root,
- struct btrfs_path *path);
+struct btrfs_inode *btrfs_iget_path(u64 ino, struct btrfs_root *root,
+ struct btrfs_path *path);
struct btrfs_inode *btrfs_iget(u64 ino, struct btrfs_root *root);
struct extent_map *btrfs_get_extent(struct btrfs_inode *inode,
struct folio *folio, u64 start, u64 len);
diff --git a/fs/btrfs/free-space-cache.c b/fs/btrfs/free-space-cache.c
index 3095cce904b5..05e173311c1a 100644
--- a/fs/btrfs/free-space-cache.c
+++ b/fs/btrfs/free-space-cache.c
@@ -88,7 +88,7 @@ static struct inode *__lookup_free_space_inode(struct btrfs_root *root,
struct btrfs_disk_key disk_key;
struct btrfs_free_space_header *header;
struct extent_buffer *leaf;
- struct inode *inode = NULL;
+ struct btrfs_inode *inode;
unsigned nofs_flag;
int ret;
@@ -120,13 +120,13 @@ static struct inode *__lookup_free_space_inode(struct btrfs_root *root,
btrfs_release_path(path);
memalloc_nofs_restore(nofs_flag);
if (IS_ERR(inode))
- return inode;
+ return ERR_CAST(inode);
- mapping_set_gfp_mask(inode->i_mapping,
- mapping_gfp_constraint(inode->i_mapping,
+ mapping_set_gfp_mask(inode->vfs_inode.i_mapping,
+ mapping_gfp_constraint(inode->vfs_inode.i_mapping,
~(__GFP_FS | __GFP_HIGHMEM)));
- return inode;
+ return &inode->vfs_inode;
}
struct inode *lookup_free_space_inode(struct btrfs_block_group *block_group,
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 072e7a47f162..d2cafd2f46b0 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -5650,8 +5650,8 @@ static struct btrfs_inode *btrfs_iget_locked(u64 ino, struct btrfs_root *root)
* Get an inode object given its inode number and corresponding root. Path is
* preallocated to prevent recursing back to iget through allocator.
*/
-struct inode *btrfs_iget_path(u64 ino, struct btrfs_root *root,
- struct btrfs_path *path)
+struct btrfs_inode *btrfs_iget_path(u64 ino, struct btrfs_root *root,
+ struct btrfs_path *path)
{
struct btrfs_inode *inode;
int ret;
@@ -5661,14 +5661,14 @@ struct inode *btrfs_iget_path(u64 ino, struct btrfs_root *root,
return ERR_PTR(-ENOMEM);
if (!(inode->vfs_inode.i_state & I_NEW))
- return &inode->vfs_inode;
+ return inode;
ret = btrfs_read_locked_inode(inode, path);
if (ret)
return ERR_PTR(ret);
unlock_new_inode(&inode->vfs_inode);
- return &inode->vfs_inode;
+ return inode;
}
/*
--
2.45.2
^ permalink raw reply related [flat|nested] 15+ messages in thread* [PATCH 6/8] btrfs: remove unnecessary fs_info argument from create_reloc_inode()
2025-03-07 13:44 [PATCH 0/8] btrfs: some trivial cleanups fdmanana
` (4 preceding siblings ...)
2025-03-07 13:44 ` [PATCH 5/8] btrfs: make btrfs_iget_path() " fdmanana
@ 2025-03-07 13:44 ` fdmanana
2025-03-07 13:44 ` [PATCH 7/8] btrfs: remove unnecessary fs_info argument from delete_block_group_cache() fdmanana
` (2 subsequent siblings)
8 siblings, 0 replies; 15+ messages in thread
From: fdmanana @ 2025-03-07 13:44 UTC (permalink / raw)
To: linux-btrfs
From: Filipe Manana <fdmanana@suse.com>
The fs_info can be taken from the given block group, so there is no need
to pass it as an argument.
Signed-off-by: Filipe Manana <fdmanana@suse.com>
---
fs/btrfs/relocation.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/fs/btrfs/relocation.c b/fs/btrfs/relocation.c
index 5359cf2b79b5..33d3b5ca7ee0 100644
--- a/fs/btrfs/relocation.c
+++ b/fs/btrfs/relocation.c
@@ -3763,9 +3763,9 @@ static void delete_orphan_inode(struct btrfs_trans_handle *trans,
* the inode is in data relocation tree and its link count is 0
*/
static noinline_for_stack struct inode *create_reloc_inode(
- struct btrfs_fs_info *fs_info,
const struct btrfs_block_group *group)
{
+ struct btrfs_fs_info *fs_info = group->fs_info;
struct btrfs_inode *inode = NULL;
struct btrfs_trans_handle *trans;
struct btrfs_root *root;
@@ -3989,7 +3989,7 @@ int btrfs_relocate_block_group(struct btrfs_fs_info *fs_info, u64 group_start)
goto out;
}
- rc->data_inode = create_reloc_inode(fs_info, rc->block_group);
+ rc->data_inode = create_reloc_inode(rc->block_group);
if (IS_ERR(rc->data_inode)) {
err = PTR_ERR(rc->data_inode);
rc->data_inode = NULL;
--
2.45.2
^ permalink raw reply related [flat|nested] 15+ messages in thread* [PATCH 7/8] btrfs: remove unnecessary fs_info argument from delete_block_group_cache()
2025-03-07 13:44 [PATCH 0/8] btrfs: some trivial cleanups fdmanana
` (5 preceding siblings ...)
2025-03-07 13:44 ` [PATCH 6/8] btrfs: remove unnecessary fs_info argument from create_reloc_inode() fdmanana
@ 2025-03-07 13:44 ` fdmanana
2025-03-07 13:44 ` [PATCH 8/8] btrfs: remove unnecessary fs_info argument from btrfs_add_block_group_cache() fdmanana
2025-03-10 18:42 ` [PATCH 0/8] btrfs: some trivial cleanups David Sterba
8 siblings, 0 replies; 15+ messages in thread
From: fdmanana @ 2025-03-07 13:44 UTC (permalink / raw)
To: linux-btrfs
From: Filipe Manana <fdmanana@suse.com>
The fs_info can be taken from the given block group, so there is no need
to pass it as an argument.
Signed-off-by: Filipe Manana <fdmanana@suse.com>
---
fs/btrfs/relocation.c | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/fs/btrfs/relocation.c b/fs/btrfs/relocation.c
index 33d3b5ca7ee0..f948f4f6431c 100644
--- a/fs/btrfs/relocation.c
+++ b/fs/btrfs/relocation.c
@@ -3239,11 +3239,11 @@ static int __add_tree_block(struct reloc_control *rc,
return ret;
}
-static int delete_block_group_cache(struct btrfs_fs_info *fs_info,
- struct btrfs_block_group *block_group,
+static int delete_block_group_cache(struct btrfs_block_group *block_group,
struct inode *inode,
u64 ino)
{
+ struct btrfs_fs_info *fs_info = block_group->fs_info;
struct btrfs_root *root = fs_info->tree_root;
struct btrfs_trans_handle *trans;
struct btrfs_inode *btrfs_inode;
@@ -3315,8 +3315,7 @@ static int delete_v1_space_cache(struct extent_buffer *leaf,
}
if (!found)
return -ENOENT;
- ret = delete_block_group_cache(leaf->fs_info, block_group, NULL,
- space_cache_ino);
+ ret = delete_block_group_cache(block_group, NULL, space_cache_ino);
return ret;
}
@@ -3980,7 +3979,7 @@ int btrfs_relocate_block_group(struct btrfs_fs_info *fs_info, u64 group_start)
btrfs_free_path(path);
if (!IS_ERR(inode))
- ret = delete_block_group_cache(fs_info, rc->block_group, inode, 0);
+ ret = delete_block_group_cache(rc->block_group, inode, 0);
else
ret = PTR_ERR(inode);
--
2.45.2
^ permalink raw reply related [flat|nested] 15+ messages in thread* [PATCH 8/8] btrfs: remove unnecessary fs_info argument from btrfs_add_block_group_cache()
2025-03-07 13:44 [PATCH 0/8] btrfs: some trivial cleanups fdmanana
` (6 preceding siblings ...)
2025-03-07 13:44 ` [PATCH 7/8] btrfs: remove unnecessary fs_info argument from delete_block_group_cache() fdmanana
@ 2025-03-07 13:44 ` fdmanana
2025-03-10 18:42 ` [PATCH 0/8] btrfs: some trivial cleanups David Sterba
8 siblings, 0 replies; 15+ messages in thread
From: fdmanana @ 2025-03-07 13:44 UTC (permalink / raw)
To: linux-btrfs
From: Filipe Manana <fdmanana@suse.com>
The fs_info can be taken from the given block group, so there is no need
to pass it as an argument. Also rename the local variable from 'info' to
'fs_info' which is more widely used, more clear and to be more consistent.
Signed-off-by: Filipe Manana <fdmanana@suse.com>
---
fs/btrfs/block-group.c | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/fs/btrfs/block-group.c b/fs/btrfs/block-group.c
index 64f0268dcf02..4975aa5665ae 100644
--- a/fs/btrfs/block-group.c
+++ b/fs/btrfs/block-group.c
@@ -191,21 +191,21 @@ static int btrfs_bg_start_cmp(const struct rb_node *new,
/*
* This adds the block group to the fs_info rb tree for the block group cache
*/
-static int btrfs_add_block_group_cache(struct btrfs_fs_info *info,
- struct btrfs_block_group *block_group)
+static int btrfs_add_block_group_cache(struct btrfs_block_group *block_group)
{
+ struct btrfs_fs_info *fs_info = block_group->fs_info;
struct rb_node *exist;
int ret = 0;
ASSERT(block_group->length != 0);
- write_lock(&info->block_group_cache_lock);
+ write_lock(&fs_info->block_group_cache_lock);
exist = rb_find_add_cached(&block_group->cache_node,
- &info->block_group_cache_tree, btrfs_bg_start_cmp);
+ &fs_info->block_group_cache_tree, btrfs_bg_start_cmp);
if (exist)
ret = -EEXIST;
- write_unlock(&info->block_group_cache_lock);
+ write_unlock(&fs_info->block_group_cache_lock);
return ret;
}
@@ -2438,7 +2438,7 @@ static int read_one_block_group(struct btrfs_fs_info *info,
goto error;
}
- ret = btrfs_add_block_group_cache(info, cache);
+ ret = btrfs_add_block_group_cache(cache);
if (ret) {
btrfs_remove_free_space_cache(cache);
goto error;
@@ -2487,7 +2487,7 @@ static int fill_dummy_bgs(struct btrfs_fs_info *fs_info)
bg->cached = BTRFS_CACHE_FINISHED;
bg->used = map->chunk_len;
bg->flags = map->type;
- ret = btrfs_add_block_group_cache(fs_info, bg);
+ ret = btrfs_add_block_group_cache(bg);
/*
* We may have some valid block group cache added already, in
* that case we skip to the next one.
@@ -2914,7 +2914,7 @@ struct btrfs_block_group *btrfs_make_block_group(struct btrfs_trans_handle *tran
cache->space_info = btrfs_find_space_info(fs_info, cache->flags);
ASSERT(cache->space_info);
- ret = btrfs_add_block_group_cache(fs_info, cache);
+ ret = btrfs_add_block_group_cache(cache);
if (ret) {
btrfs_remove_free_space_cache(cache);
btrfs_put_block_group(cache);
--
2.45.2
^ permalink raw reply related [flat|nested] 15+ messages in thread* Re: [PATCH 0/8] btrfs: some trivial cleanups
2025-03-07 13:44 [PATCH 0/8] btrfs: some trivial cleanups fdmanana
` (7 preceding siblings ...)
2025-03-07 13:44 ` [PATCH 8/8] btrfs: remove unnecessary fs_info argument from btrfs_add_block_group_cache() fdmanana
@ 2025-03-10 18:42 ` David Sterba
8 siblings, 0 replies; 15+ messages in thread
From: David Sterba @ 2025-03-10 18:42 UTC (permalink / raw)
To: fdmanana; +Cc: linux-btrfs
On Fri, Mar 07, 2025 at 01:44:17PM +0000, fdmanana@kernel.org wrote:
> From: Filipe Manana <fdmanana@suse.com>
>
> A group of trivial cleanups that started with making log tree code
> less verbose while fixing a couple bugs, by removing repeated BTRFS_I()
> calls, and then extended to btrfs_iget() and removing redundant arguments
> from a few functions. Details in the change logs.
>
> Filipe Manana (8):
> btrfs: return a btrfs_inode from btrfs_iget_logging()
> btrfs: return a btrfs_inode from read_one_inode()
> btrfs: pass a btrfs_inode to fixup_inode_link_count()
> btrfs: make btrfs_iget() return a btrfs inode instead
> btrfs: make btrfs_iget_path() return a btrfs inode instead
> btrfs: remove unnecessary fs_info argument from create_reloc_inode()
> btrfs: remove unnecessary fs_info argument from delete_block_group_cache()
> btrfs: remove unnecessary fs_info argument from btrfs_add_block_group_cache()
Reviewed-by: David Sterba <dsterba@suse.com>
^ permalink raw reply [flat|nested] 15+ messages in thread