linux-btrfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 00/14] Another batch of inode vs btrfs_inode cleanups
@ 2020-11-02 14:48 Nikolay Borisov
  2020-11-02 14:48 ` [PATCH 01/14] btrfs: Make btrfs_inode_safe_disk_i_size_write take btrfs_inode Nikolay Borisov
                   ` (15 more replies)
  0 siblings, 16 replies; 21+ messages in thread
From: Nikolay Borisov @ 2020-11-02 14:48 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

Here is another batch which  gets use closer to unified btrfs_inode vs inode
usage in functions.

Nikolay Borisov (14):
  btrfs: Make btrfs_inode_safe_disk_i_size_write take btrfs_inode
  btrfs: Make insert_prealloc_file_extent take btrfs_inode
  btrfs: Make btrfs_truncate_inode_items take btrfs_inode
  btrfs: Make btrfs_finish_ordered_io btrfs_inode-centric
  btrfs: Make btrfs_delayed_update_inode take btrfs_inode
  btrfs: Make btrfs_update_inode_item take btrfs_inode
  btrfs: Make btrfs_update_inode take btrfs_inode
  btrfs: Make maybe_insert_hole take btrfs_inode
  btrfs: Make find_first_non_hole take btrfs_inode
  btrfs: Make btrfs_insert_replace_extent take btrfs_inode
  btrfs: Make btrfs_truncate_block take btrfs_inode
  btrfs: Make btrfs_cont_expand take btrfs_inode
  btrfs: Make btrfs_drop_extents take btrfs_inode
  btrfs: Make btrfs_update_inode_fallback take btrfs_inode

 fs/btrfs/block-group.c      |   2 +-
 fs/btrfs/ctree.h            |  21 +--
 fs/btrfs/delayed-inode.c    |  13 +-
 fs/btrfs/delayed-inode.h    |   3 +-
 fs/btrfs/file-item.c        |  18 +--
 fs/btrfs/file.c             |  88 +++++++------
 fs/btrfs/free-space-cache.c |   8 +-
 fs/btrfs/inode-map.c        |   2 +-
 fs/btrfs/inode.c            | 249 ++++++++++++++++++------------------
 fs/btrfs/ioctl.c            |   6 +-
 fs/btrfs/reflink.c          |   9 +-
 fs/btrfs/transaction.c      |   3 +-
 fs/btrfs/tree-log.c         |  24 ++--
 fs/btrfs/xattr.c            |   4 +-
 14 files changed, 233 insertions(+), 217 deletions(-)

--
2.25.1


^ permalink raw reply	[flat|nested] 21+ messages in thread

* [PATCH 01/14] btrfs: Make btrfs_inode_safe_disk_i_size_write take btrfs_inode
  2020-11-02 14:48 [PATCH 00/14] Another batch of inode vs btrfs_inode cleanups Nikolay Borisov
@ 2020-11-02 14:48 ` Nikolay Borisov
  2020-11-02 14:48 ` [PATCH 02/14] btrfs: Make insert_prealloc_file_extent " Nikolay Borisov
                   ` (14 subsequent siblings)
  15 siblings, 0 replies; 21+ messages in thread
From: Nikolay Borisov @ 2020-11-02 14:48 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

Signed-off-by: Nikolay Borisov <nborisov@suse.com>
---
 fs/btrfs/ctree.h     |  3 ++-
 fs/btrfs/file-item.c | 18 +++++++++---------
 fs/btrfs/file.c      |  2 +-
 fs/btrfs/inode.c     | 12 ++++++------
 fs/btrfs/reflink.c   |  2 +-
 5 files changed, 19 insertions(+), 18 deletions(-)

diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h
index 8a83bce3225c..c0108a4730d1 100644
--- a/fs/btrfs/ctree.h
+++ b/fs/btrfs/ctree.h
@@ -2967,7 +2967,8 @@ int btrfs_inode_clear_file_extent_range(struct btrfs_inode *inode, u64 start,
 					u64 len);
 int btrfs_inode_set_file_extent_range(struct btrfs_inode *inode, u64 start,
 				      u64 len);
-void btrfs_inode_safe_disk_i_size_write(struct inode *inode, u64 new_i_size);
+void btrfs_inode_safe_disk_i_size_write(struct btrfs_inode *inode,
+					u64 new_i_size);
 u64 btrfs_file_extent_end(const struct btrfs_path *path);
 
 /* inode.c */
diff --git a/fs/btrfs/file-item.c b/fs/btrfs/file-item.c
index 816f57d52fc9..17c2695d083c 100644
--- a/fs/btrfs/file-item.c
+++ b/fs/btrfs/file-item.c
@@ -38,27 +38,27 @@
  * Finally new_i_size should only be set in the case of truncate where we're not
  * ready to use i_size_read() as the limiter yet.
  */
-void btrfs_inode_safe_disk_i_size_write(struct inode *inode, u64 new_i_size)
+void btrfs_inode_safe_disk_i_size_write(struct btrfs_inode *inode, u64 new_i_size)
 {
-	struct btrfs_fs_info *fs_info = BTRFS_I(inode)->root->fs_info;
+	struct btrfs_fs_info *fs_info = inode->root->fs_info;
 	u64 start, end, i_size;
 	int ret;
 
-	i_size = new_i_size ?: i_size_read(inode);
+	i_size = new_i_size ?: i_size_read(&inode->vfs_inode);
 	if (btrfs_fs_incompat(fs_info, NO_HOLES)) {
-		BTRFS_I(inode)->disk_i_size = i_size;
+		inode->disk_i_size = i_size;
 		return;
 	}
 
-	spin_lock(&BTRFS_I(inode)->lock);
-	ret = find_contiguous_extent_bit(&BTRFS_I(inode)->file_extent_tree, 0,
-					 &start, &end, EXTENT_DIRTY);
+	spin_lock(&inode->lock);
+	ret = find_contiguous_extent_bit(&inode->file_extent_tree, 0, &start,
+					 &end, EXTENT_DIRTY);
 	if (!ret && start == 0)
 		i_size = min(i_size, end + 1);
 	else
 		i_size = 0;
-	BTRFS_I(inode)->disk_i_size = i_size;
-	spin_unlock(&BTRFS_I(inode)->lock);
+	inode->disk_i_size = i_size;
+	spin_unlock(&inode->lock);
 }
 
 /**
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c
index 1c97e559aefb..4b44ad980a5d 100644
--- a/fs/btrfs/file.c
+++ b/fs/btrfs/file.c
@@ -3090,7 +3090,7 @@ static int btrfs_fallocate_update_isize(struct inode *inode,
 
 	inode->i_ctime = current_time(inode);
 	i_size_write(inode, end);
-	btrfs_inode_safe_disk_i_size_write(inode, 0);
+	btrfs_inode_safe_disk_i_size_write(BTRFS_I(inode), 0);
 	ret = btrfs_update_inode(trans, root, inode);
 	ret2 = btrfs_end_transaction(trans);
 
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index bfb719c3836c..aa8c3a73bf1b 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -2606,7 +2606,7 @@ static int btrfs_finish_ordered_io(struct btrfs_ordered_extent *ordered_extent)
 	if (test_bit(BTRFS_ORDERED_NOCOW, &ordered_extent->flags)) {
 		BUG_ON(!list_empty(&ordered_extent->list)); /* Logic error */
 
-		btrfs_inode_safe_disk_i_size_write(inode, 0);
+		btrfs_inode_safe_disk_i_size_write(BTRFS_I(inode), 0);
 		if (freespace_inode)
 			trans = btrfs_join_transaction_spacecache(root);
 		else
@@ -2670,7 +2670,7 @@ static int btrfs_finish_ordered_io(struct btrfs_ordered_extent *ordered_extent)
 		goto out;
 	}
 
-	btrfs_inode_safe_disk_i_size_write(inode, 0);
+	btrfs_inode_safe_disk_i_size_write(BTRFS_I(inode), 0);
 	ret = btrfs_update_inode_fallback(trans, root, inode);
 	if (ret) { /* -ENOMEM or corruption */
 		btrfs_abort_transaction(trans, ret);
@@ -4464,7 +4464,7 @@ int btrfs_truncate_inode_items(struct btrfs_trans_handle *trans,
 		ASSERT(last_size >= new_size);
 		if (!ret && last_size > new_size)
 			last_size = new_size;
-		btrfs_inode_safe_disk_i_size_write(inode, last_size);
+		btrfs_inode_safe_disk_i_size_write(BTRFS_I(inode), last_size);
 		unlock_extent_cached(&BTRFS_I(inode)->io_tree, lock_start,
 				     (u64)-1, &cached_state);
 	}
@@ -4820,7 +4820,7 @@ static int btrfs_setsize(struct inode *inode, struct iattr *attr)
 		}
 
 		i_size_write(inode, newsize);
-		btrfs_inode_safe_disk_i_size_write(inode, 0);
+		btrfs_inode_safe_disk_i_size_write(BTRFS_I(inode), 0);
 		pagecache_isize_extended(inode, oldsize, newsize);
 		ret = btrfs_update_inode(trans, root, inode);
 		btrfs_drew_write_unlock(&root->snapshot_lock);
@@ -8502,7 +8502,7 @@ static int btrfs_truncate(struct inode *inode, bool skip_writeback)
 			ret = PTR_ERR(trans);
 			goto out;
 		}
-		btrfs_inode_safe_disk_i_size_write(inode, 0);
+		btrfs_inode_safe_disk_i_size_write(BTRFS_I(inode), 0);
 	}
 
 	if (trans) {
@@ -9731,7 +9731,7 @@ static int __btrfs_prealloc_file_range(struct inode *inode, int mode,
 			else
 				i_size = cur_offset;
 			i_size_write(inode, i_size);
-			btrfs_inode_safe_disk_i_size_write(inode, 0);
+			btrfs_inode_safe_disk_i_size_write(BTRFS_I(inode), 0);
 		}
 
 		ret = btrfs_update_inode(trans, root, inode);
diff --git a/fs/btrfs/reflink.c b/fs/btrfs/reflink.c
index 99aa87c08912..e624f4cd0585 100644
--- a/fs/btrfs/reflink.c
+++ b/fs/btrfs/reflink.c
@@ -31,7 +31,7 @@ static int clone_finish_inode_update(struct btrfs_trans_handle *trans,
 		endoff = destoff + olen;
 	if (endoff > inode->i_size) {
 		i_size_write(inode, endoff);
-		btrfs_inode_safe_disk_i_size_write(inode, 0);
+		btrfs_inode_safe_disk_i_size_write(BTRFS_I(inode), 0);
 	}
 
 	ret = btrfs_update_inode(trans, root, inode);
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [PATCH 02/14] btrfs: Make insert_prealloc_file_extent take btrfs_inode
  2020-11-02 14:48 [PATCH 00/14] Another batch of inode vs btrfs_inode cleanups Nikolay Borisov
  2020-11-02 14:48 ` [PATCH 01/14] btrfs: Make btrfs_inode_safe_disk_i_size_write take btrfs_inode Nikolay Borisov
@ 2020-11-02 14:48 ` Nikolay Borisov
  2020-11-02 14:48 ` [PATCH 03/14] btrfs: Make btrfs_truncate_inode_items " Nikolay Borisov
                   ` (13 subsequent siblings)
  15 siblings, 0 replies; 21+ messages in thread
From: Nikolay Borisov @ 2020-11-02 14:48 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

Signed-off-by: Nikolay Borisov <nborisov@suse.com>
---
 fs/btrfs/inode.c | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index aa8c3a73bf1b..f31132106fad 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -9566,7 +9566,8 @@ static int btrfs_symlink(struct inode *dir, struct dentry *dentry,

 static struct btrfs_trans_handle *insert_prealloc_file_extent(
 				       struct btrfs_trans_handle *trans_in,
-				       struct inode *inode, struct btrfs_key *ins,
+				       struct btrfs_inode *inode,
+				       struct btrfs_key *ins,
 				       u64 file_offset)
 {
 	struct btrfs_file_extent_item stack_fi;
@@ -9587,13 +9588,13 @@ static struct btrfs_trans_handle *insert_prealloc_file_extent(
 	btrfs_set_stack_file_extent_compression(&stack_fi, BTRFS_COMPRESS_NONE);
 	/* Encryption and other encoding is reserved and all 0 */

-	ret = btrfs_qgroup_release_data(BTRFS_I(inode), file_offset, len);
+	ret = btrfs_qgroup_release_data(inode, file_offset, len);
 	if (ret < 0)
 		return ERR_PTR(ret);

 	if (trans) {
-		ret = insert_reserved_file_extent(trans, BTRFS_I(inode),
-						  file_offset, &stack_fi, ret);
+		ret = insert_reserved_file_extent(trans, inode, file_offset,
+						  &stack_fi, ret);
 		if (ret)
 			return ERR_PTR(ret);
 		return trans;
@@ -9613,7 +9614,7 @@ static struct btrfs_trans_handle *insert_prealloc_file_extent(
 	if (!path)
 		return ERR_PTR(-ENOMEM);

-	ret = btrfs_replace_file_extents(inode, path, file_offset,
+	ret = btrfs_replace_file_extents(&inode->vfs_inode, path, file_offset,
 				     file_offset + len - 1, &extent_info,
 				     &trans);
 	btrfs_free_path(path);
@@ -9669,7 +9670,8 @@ static int __btrfs_prealloc_file_range(struct inode *inode, int mode,
 		clear_offset += ins.offset;

 		last_alloc = ins.offset;
-		trans = insert_prealloc_file_extent(trans, inode, &ins, cur_offset);
+		trans = insert_prealloc_file_extent(trans, BTRFS_I(inode),
+						    &ins, cur_offset);
 		/*
 		 * Now that we inserted the prealloc extent we can finally
 		 * decrement the number of reservations in the block group.
--
2.25.1


^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [PATCH 03/14] btrfs: Make btrfs_truncate_inode_items take btrfs_inode
  2020-11-02 14:48 [PATCH 00/14] Another batch of inode vs btrfs_inode cleanups Nikolay Borisov
  2020-11-02 14:48 ` [PATCH 01/14] btrfs: Make btrfs_inode_safe_disk_i_size_write take btrfs_inode Nikolay Borisov
  2020-11-02 14:48 ` [PATCH 02/14] btrfs: Make insert_prealloc_file_extent " Nikolay Borisov
@ 2020-11-02 14:48 ` Nikolay Borisov
  2020-11-05 14:45   ` David Sterba
  2020-11-02 14:48 ` [PATCH 04/14] btrfs: Make btrfs_finish_ordered_io btrfs_inode-centric Nikolay Borisov
                   ` (12 subsequent siblings)
  15 siblings, 1 reply; 21+ messages in thread
From: Nikolay Borisov @ 2020-11-02 14:48 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

Signed-off-by: Nikolay Borisov <nborisov@suse.com>
---
 fs/btrfs/ctree.h            |  2 +-
 fs/btrfs/free-space-cache.c |  2 +-
 fs/btrfs/inode.c            | 43 ++++++++++++++++++++-----------------
 fs/btrfs/tree-log.c         |  5 ++---
 4 files changed, 27 insertions(+), 25 deletions(-)

diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h
index c0108a4730d1..f85a5e69614c 100644
--- a/fs/btrfs/ctree.h
+++ b/fs/btrfs/ctree.h
@@ -2998,7 +2998,7 @@ int btrfs_truncate_block(struct inode *inode, loff_t from, loff_t len,
 			int front);
 int btrfs_truncate_inode_items(struct btrfs_trans_handle *trans,
 			       struct btrfs_root *root,
-			       struct inode *inode, u64 new_size,
+			       struct btrfs_inode *inode, u64 new_size,
 			       u32 min_type);
 
 int btrfs_start_delalloc_snapshot(struct btrfs_root *root);
diff --git a/fs/btrfs/free-space-cache.c b/fs/btrfs/free-space-cache.c
index 5ea36a06e514..48f059e91518 100644
--- a/fs/btrfs/free-space-cache.c
+++ b/fs/btrfs/free-space-cache.c
@@ -267,7 +267,7 @@ int btrfs_truncate_free_space_cache(struct btrfs_trans_handle *trans,
 	 * We skip the throttling logic for free space cache inodes, so we don't
 	 * need to check for -EAGAIN.
 	 */
-	ret = btrfs_truncate_inode_items(trans, root, inode,
+	ret = btrfs_truncate_inode_items(trans, root, BTRFS_I(inode),
 					 0, BTRFS_EXTENT_DATA_KEY);
 	if (ret)
 		goto fail;
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index f31132106fad..4ec4e59ddb47 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -4130,7 +4130,7 @@ static int btrfs_rmdir(struct inode *dir, struct dentry *dentry)
  */
 int btrfs_truncate_inode_items(struct btrfs_trans_handle *trans,
 			       struct btrfs_root *root,
-			       struct inode *inode,
+			       struct btrfs_inode *inode,
 			       u64 new_size, u32 min_type)
 {
 	struct btrfs_fs_info *fs_info = root->fs_info;
@@ -4151,7 +4151,7 @@ int btrfs_truncate_inode_items(struct btrfs_trans_handle *trans,
 	int pending_del_slot = 0;
 	int extent_type = -1;
 	int ret;
-	u64 ino = btrfs_ino(BTRFS_I(inode));
+	u64 ino = btrfs_ino(inode);
 	u64 bytes_deleted = 0;
 	bool be_nice = false;
 	bool should_throttle = false;
@@ -4165,7 +4165,7 @@ int btrfs_truncate_inode_items(struct btrfs_trans_handle *trans,
 	 * off from time to time.  This means all inodes in subvolume roots,
 	 * reloc roots, and data reloc roots.
 	 */
-	if (!btrfs_is_free_space_inode(BTRFS_I(inode)) &&
+	if (!btrfs_is_free_space_inode(inode) &&
 	    test_bit(BTRFS_ROOT_SHAREABLE, &root->state))
 		be_nice = true;
 
@@ -4175,7 +4175,7 @@ int btrfs_truncate_inode_items(struct btrfs_trans_handle *trans,
 	path->reada = READA_BACK;
 
 	if (root->root_key.objectid != BTRFS_TREE_LOG_OBJECTID) {
-		lock_extent_bits(&BTRFS_I(inode)->io_tree, lock_start, (u64)-1,
+		lock_extent_bits(&inode->io_tree, lock_start, (u64)-1,
 				 &cached_state);
 
 		/*
@@ -4183,7 +4183,7 @@ int btrfs_truncate_inode_items(struct btrfs_trans_handle *trans,
 		 * new size is not block aligned since we will be keeping the
 		 * last block of the extent just the way it is.
 		 */
-		btrfs_drop_extent_cache(BTRFS_I(inode), ALIGN(new_size,
+		btrfs_drop_extent_cache(inode, ALIGN(new_size,
 					fs_info->sectorsize),
 					(u64)-1, 0);
 	}
@@ -4194,8 +4194,8 @@ int btrfs_truncate_inode_items(struct btrfs_trans_handle *trans,
 	 * it is used to drop the logged items. So we shouldn't kill the delayed
 	 * items.
 	 */
-	if (min_type == 0 && root == BTRFS_I(inode)->root)
-		btrfs_kill_delayed_inode_items(BTRFS_I(inode));
+	if (min_type == 0 && root == inode->root)
+		btrfs_kill_delayed_inode_items(inode);
 
 	key.objectid = ino;
 	key.offset = (u64)-1;
@@ -4251,14 +4251,13 @@ int btrfs_truncate_inode_items(struct btrfs_trans_handle *trans,
 				    btrfs_file_extent_num_bytes(leaf, fi);
 
 				trace_btrfs_truncate_show_fi_regular(
-					BTRFS_I(inode), leaf, fi,
-					found_key.offset);
+					inode, leaf, fi, found_key.offset);
 			} else if (extent_type == BTRFS_FILE_EXTENT_INLINE) {
 				item_end += btrfs_file_extent_ram_bytes(leaf,
 									fi);
 
 				trace_btrfs_truncate_show_fi_inline(
-					BTRFS_I(inode), leaf, fi, path->slots[0],
+					inode, leaf, fi, path->slots[0],
 					found_key.offset);
 			}
 			item_end--;
@@ -4297,7 +4296,8 @@ int btrfs_truncate_inode_items(struct btrfs_trans_handle *trans,
 				if (test_bit(BTRFS_ROOT_SHAREABLE,
 					     &root->state) &&
 				    extent_start != 0)
-					inode_sub_bytes(inode, num_dec);
+					inode_sub_bytes(&inode->vfs_info,
+							num_dec);
 				btrfs_mark_buffer_dirty(leaf);
 			} else {
 				extent_num_bytes =
@@ -4312,7 +4312,8 @@ int btrfs_truncate_inode_items(struct btrfs_trans_handle *trans,
 					found_extent = 1;
 					if (test_bit(BTRFS_ROOT_SHAREABLE,
 						     &root->state))
-						inode_sub_bytes(inode, num_dec);
+						inode_sub_bytes(&inode->vfs_inode,
+								num_dec);
 				}
 			}
 			clear_len = num_dec;
@@ -4347,7 +4348,8 @@ int btrfs_truncate_inode_items(struct btrfs_trans_handle *trans,
 			}
 
 			if (test_bit(BTRFS_ROOT_SHAREABLE, &root->state))
-				inode_sub_bytes(inode, item_end + 1 - new_size);
+				inode_sub_bytes(&inode->vfs_inode,
+						item_end + 1 - new_size);
 		}
 delete:
 		/*
@@ -4355,8 +4357,8 @@ int btrfs_truncate_inode_items(struct btrfs_trans_handle *trans,
 		 * multiple fsyncs, and in this case we don't want to clear the
 		 * file extent range because it's just the log.
 		 */
-		if (root == BTRFS_I(inode)->root) {
-			ret = btrfs_inode_clear_file_extent_range(BTRFS_I(inode),
+		if (root == inode->root) {
+			ret = btrfs_inode_clear_file_extent_range(inode,
 						  clear_start, clear_len);
 			if (ret) {
 				btrfs_abort_transaction(trans, ret);
@@ -4464,9 +4466,9 @@ int btrfs_truncate_inode_items(struct btrfs_trans_handle *trans,
 		ASSERT(last_size >= new_size);
 		if (!ret && last_size > new_size)
 			last_size = new_size;
-		btrfs_inode_safe_disk_i_size_write(BTRFS_I(inode), last_size);
-		unlock_extent_cached(&BTRFS_I(inode)->io_tree, lock_start,
-				     (u64)-1, &cached_state);
+		btrfs_inode_safe_disk_i_size_write(inode, last_size);
+		unlock_extent_cached(&inode->io_tree, lock_start, (u64)-1,
+				     &cached_state);
 	}
 
 	btrfs_free_path(path);
@@ -5093,7 +5095,8 @@ void btrfs_evict_inode(struct inode *inode)
 
 		trans->block_rsv = rsv;
 
-		ret = btrfs_truncate_inode_items(trans, root, inode, 0, 0);
+		ret = btrfs_truncate_inode_items(trans, root, BTRFS_I(inode),
+						 0, 0);
 		trans->block_rsv = &fs_info->trans_block_rsv;
 		btrfs_end_transaction(trans);
 		btrfs_btree_balance_dirty(fs_info);
@@ -8456,7 +8459,7 @@ static int btrfs_truncate(struct inode *inode, bool skip_writeback)
 	trans->block_rsv = rsv;
 
 	while (1) {
-		ret = btrfs_truncate_inode_items(trans, root, inode,
+		ret = btrfs_truncate_inode_items(trans, root, BTRFS_I(inode),
 						 inode->i_size,
 						 BTRFS_EXTENT_DATA_KEY);
 		trans->block_rsv = &fs_info->trans_block_rsv;
diff --git a/fs/btrfs/tree-log.c b/fs/btrfs/tree-log.c
index 135cb40295c1..4ea54fe23e3c 100644
--- a/fs/btrfs/tree-log.c
+++ b/fs/btrfs/tree-log.c
@@ -4365,8 +4365,7 @@ static int btrfs_log_prealloc_extents(struct btrfs_trans_handle *trans,
 			do {
 				ret = btrfs_truncate_inode_items(trans,
 							 root->log_root,
-							 &inode->vfs_inode,
-							 truncate_offset,
+							 inode, truncate_offset,
 							 BTRFS_EXTENT_DATA_KEY);
 			} while (ret == -EAGAIN);
 			if (ret)
@@ -5293,7 +5292,7 @@ static int btrfs_log_inode(struct btrfs_trans_handle *trans,
 					  &inode->runtime_flags);
 				while(1) {
 					ret = btrfs_truncate_inode_items(trans,
-						log, &inode->vfs_inode, 0, 0);
+						log, inode, 0, 0);
 					if (ret != -EAGAIN)
 						break;
 				}
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [PATCH 04/14] btrfs: Make btrfs_finish_ordered_io btrfs_inode-centric
  2020-11-02 14:48 [PATCH 00/14] Another batch of inode vs btrfs_inode cleanups Nikolay Borisov
                   ` (2 preceding siblings ...)
  2020-11-02 14:48 ` [PATCH 03/14] btrfs: Make btrfs_truncate_inode_items " Nikolay Borisov
@ 2020-11-02 14:48 ` Nikolay Borisov
  2020-11-02 14:48 ` [PATCH 05/14] btrfs: Make btrfs_delayed_update_inode take btrfs_inode Nikolay Borisov
                   ` (11 subsequent siblings)
  15 siblings, 0 replies; 21+ messages in thread
From: Nikolay Borisov @ 2020-11-02 14:48 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

Signed-off-by: Nikolay Borisov <nborisov@suse.com>
---
 fs/btrfs/inode.c | 37 ++++++++++++++++++-------------------
 1 file changed, 18 insertions(+), 19 deletions(-)

diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 4ec4e59ddb47..5bcac6f27cf9 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -2561,11 +2561,11 @@ static int insert_ordered_extent_file_extent(struct btrfs_trans_handle *trans,
  */
 static int btrfs_finish_ordered_io(struct btrfs_ordered_extent *ordered_extent)
 {
-	struct inode *inode = ordered_extent->inode;
-	struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
-	struct btrfs_root *root = BTRFS_I(inode)->root;
+	struct btrfs_inode *inode = BTRFS_I(ordered_extent->inode);
+	struct btrfs_root *root = inode->root;
+	struct btrfs_fs_info *fs_info = root->fs_info;
 	struct btrfs_trans_handle *trans = NULL;
-	struct extent_io_tree *io_tree = &BTRFS_I(inode)->io_tree;
+	struct extent_io_tree *io_tree = &inode->io_tree;
 	struct extent_state *cached_state = NULL;
 	u64 start, end;
 	int compress_type = 0;
@@ -2586,14 +2586,14 @@ static int btrfs_finish_ordered_io(struct btrfs_ordered_extent *ordered_extent)
 	    !test_bit(BTRFS_ORDERED_DIRECT, &ordered_extent->flags))
 		clear_new_delalloc_bytes = true;
 
-	freespace_inode = btrfs_is_free_space_inode(BTRFS_I(inode));
+	freespace_inode = btrfs_is_free_space_inode(inode);
 
 	if (test_bit(BTRFS_ORDERED_IOERR, &ordered_extent->flags)) {
 		ret = -EIO;
 		goto out;
 	}
 
-	btrfs_free_io_failure_record(BTRFS_I(inode), start, end);
+	btrfs_free_io_failure_record(inode, start, end);
 
 	if (test_bit(BTRFS_ORDERED_TRUNCATED, &ordered_extent->flags)) {
 		truncated = true;
@@ -2606,7 +2606,7 @@ static int btrfs_finish_ordered_io(struct btrfs_ordered_extent *ordered_extent)
 	if (test_bit(BTRFS_ORDERED_NOCOW, &ordered_extent->flags)) {
 		BUG_ON(!list_empty(&ordered_extent->list)); /* Logic error */
 
-		btrfs_inode_safe_disk_i_size_write(BTRFS_I(inode), 0);
+		btrfs_inode_safe_disk_i_size_write(inode, 0);
 		if (freespace_inode)
 			trans = btrfs_join_transaction_spacecache(root);
 		else
@@ -2616,8 +2616,8 @@ static int btrfs_finish_ordered_io(struct btrfs_ordered_extent *ordered_extent)
 			trans = NULL;
 			goto out;
 		}
-		trans->block_rsv = &BTRFS_I(inode)->block_rsv;
-		ret = btrfs_update_inode_fallback(trans, root, inode);
+		trans->block_rsv = &inode->block_rsv;
+		ret = btrfs_update_inode_fallback(trans, root, &inode->vfs_inode);
 		if (ret) /* -ENOMEM or corruption */
 			btrfs_abort_transaction(trans, ret);
 		goto out;
@@ -2636,13 +2636,13 @@ static int btrfs_finish_ordered_io(struct btrfs_ordered_extent *ordered_extent)
 		goto out;
 	}
 
-	trans->block_rsv = &BTRFS_I(inode)->block_rsv;
+	trans->block_rsv = &inode->block_rsv;
 
 	if (test_bit(BTRFS_ORDERED_COMPRESSED, &ordered_extent->flags))
 		compress_type = ordered_extent->compress_type;
 	if (test_bit(BTRFS_ORDERED_PREALLOC, &ordered_extent->flags)) {
 		BUG_ON(compress_type);
-		ret = btrfs_mark_extent_written(trans, BTRFS_I(inode),
+		ret = btrfs_mark_extent_written(trans, inode,
 						ordered_extent->file_offset,
 						ordered_extent->file_offset +
 						logical_len);
@@ -2656,8 +2656,7 @@ static int btrfs_finish_ordered_io(struct btrfs_ordered_extent *ordered_extent)
 						ordered_extent->disk_num_bytes);
 		}
 	}
-	unpin_extent_cache(&BTRFS_I(inode)->extent_tree,
-			   ordered_extent->file_offset,
+	unpin_extent_cache(&inode->extent_tree, ordered_extent->file_offset,
 			   ordered_extent->num_bytes, trans->transid);
 	if (ret < 0) {
 		btrfs_abort_transaction(trans, ret);
@@ -2670,8 +2669,8 @@ static int btrfs_finish_ordered_io(struct btrfs_ordered_extent *ordered_extent)
 		goto out;
 	}
 
-	btrfs_inode_safe_disk_i_size_write(BTRFS_I(inode), 0);
-	ret = btrfs_update_inode_fallback(trans, root, inode);
+	btrfs_inode_safe_disk_i_size_write(inode, 0);
+	ret = btrfs_update_inode_fallback(trans, root, &inode->vfs_inode);
 	if (ret) { /* -ENOMEM or corruption */
 		btrfs_abort_transaction(trans, ret);
 		goto out;
@@ -2683,7 +2682,7 @@ static int btrfs_finish_ordered_io(struct btrfs_ordered_extent *ordered_extent)
 		clear_bits |= EXTENT_LOCKED;
 	if (clear_new_delalloc_bytes)
 		clear_bits |= EXTENT_DELALLOC_NEW;
-	clear_extent_bit(&BTRFS_I(inode)->io_tree, start, end, clear_bits,
+	clear_extent_bit(&inode->io_tree, start, end, clear_bits,
 			 (clear_bits & EXTENT_LOCKED) ? 1 : 0, 0,
 			 &cached_state);
 
@@ -2698,7 +2697,7 @@ static int btrfs_finish_ordered_io(struct btrfs_ordered_extent *ordered_extent)
 		clear_extent_uptodate(io_tree, unwritten_start, end, NULL);
 
 		/* Drop the cache for the part of the extent we didn't write. */
-		btrfs_drop_extent_cache(BTRFS_I(inode), unwritten_start, end, 0);
+		btrfs_drop_extent_cache(inode, unwritten_start, end, 0);
 
 		/*
 		 * If the ordered extent had an IOERR or something else went
@@ -2733,7 +2732,7 @@ static int btrfs_finish_ordered_io(struct btrfs_ordered_extent *ordered_extent)
 	 * This needs to be done to make sure anybody waiting knows we are done
 	 * updating everything for this ordered extent.
 	 */
-	btrfs_remove_ordered_extent(BTRFS_I(inode), ordered_extent);
+	btrfs_remove_ordered_extent(inode, ordered_extent);
 
 	/* once for us */
 	btrfs_put_ordered_extent(ordered_extent);
@@ -4296,7 +4295,7 @@ int btrfs_truncate_inode_items(struct btrfs_trans_handle *trans,
 				if (test_bit(BTRFS_ROOT_SHAREABLE,
 					     &root->state) &&
 				    extent_start != 0)
-					inode_sub_bytes(&inode->vfs_info,
+					inode_sub_bytes(&inode->vfs_inode,
 							num_dec);
 				btrfs_mark_buffer_dirty(leaf);
 			} else {
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [PATCH 05/14] btrfs: Make btrfs_delayed_update_inode take btrfs_inode
  2020-11-02 14:48 [PATCH 00/14] Another batch of inode vs btrfs_inode cleanups Nikolay Borisov
                   ` (3 preceding siblings ...)
  2020-11-02 14:48 ` [PATCH 04/14] btrfs: Make btrfs_finish_ordered_io btrfs_inode-centric Nikolay Borisov
@ 2020-11-02 14:48 ` Nikolay Borisov
  2020-11-02 14:48 ` [PATCH 06/14] btrfs: Make btrfs_update_inode_item " Nikolay Borisov
                   ` (10 subsequent siblings)
  15 siblings, 0 replies; 21+ messages in thread
From: Nikolay Borisov @ 2020-11-02 14:48 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

Signed-off-by: Nikolay Borisov <nborisov@suse.com>
---
 fs/btrfs/delayed-inode.c | 13 ++++++++-----
 fs/btrfs/delayed-inode.h |  3 ++-
 fs/btrfs/inode.c         |  2 +-
 3 files changed, 11 insertions(+), 7 deletions(-)

diff --git a/fs/btrfs/delayed-inode.c b/fs/btrfs/delayed-inode.c
index 5aba81e16113..6fcc5bd2839a 100644
--- a/fs/btrfs/delayed-inode.c
+++ b/fs/btrfs/delayed-inode.c
@@ -1826,27 +1826,30 @@ int btrfs_fill_inode(struct inode *inode, u32 *rdev)
 }
 
 int btrfs_delayed_update_inode(struct btrfs_trans_handle *trans,
-			       struct btrfs_root *root, struct inode *inode)
+			       struct btrfs_root *root,
+			       struct btrfs_inode *inode)
 {
 	struct btrfs_delayed_node *delayed_node;
 	int ret = 0;
 
-	delayed_node = btrfs_get_or_create_delayed_node(BTRFS_I(inode));
+	delayed_node = btrfs_get_or_create_delayed_node(inode);
 	if (IS_ERR(delayed_node))
 		return PTR_ERR(delayed_node);
 
 	mutex_lock(&delayed_node->mutex);
 	if (test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags)) {
-		fill_stack_inode_item(trans, &delayed_node->inode_item, inode);
+		fill_stack_inode_item(trans, &delayed_node->inode_item,
+				      &inode->vfs_inode);
 		goto release_node;
 	}
 
-	ret = btrfs_delayed_inode_reserve_metadata(trans, root, BTRFS_I(inode),
+	ret = btrfs_delayed_inode_reserve_metadata(trans, root, inode,
 						   delayed_node);
 	if (ret)
 		goto release_node;
 
-	fill_stack_inode_item(trans, &delayed_node->inode_item, inode);
+	fill_stack_inode_item(trans, &delayed_node->inode_item,
+			      &inode->vfs_inode);
 	set_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags);
 	delayed_node->count++;
 	atomic_inc(&root->fs_info->delayed_root->items);
diff --git a/fs/btrfs/delayed-inode.h b/fs/btrfs/delayed-inode.h
index ca96ef007d8f..b2412160c5bc 100644
--- a/fs/btrfs/delayed-inode.h
+++ b/fs/btrfs/delayed-inode.h
@@ -110,7 +110,8 @@ int btrfs_commit_inode_delayed_inode(struct btrfs_inode *inode);
 
 
 int btrfs_delayed_update_inode(struct btrfs_trans_handle *trans,
-			       struct btrfs_root *root, struct inode *inode);
+			       struct btrfs_root *root,
+			       struct btrfs_inode *inode);
 int btrfs_fill_inode(struct inode *inode, u32 *rdev);
 int btrfs_delayed_delete_inode_ref(struct btrfs_inode *inode);
 
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 5bcac6f27cf9..e4993706a7fa 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -3504,7 +3504,7 @@ noinline int btrfs_update_inode(struct btrfs_trans_handle *trans,
 	    && !test_bit(BTRFS_FS_LOG_RECOVERING, &fs_info->flags)) {
 		btrfs_update_root_times(trans, root);
 
-		ret = btrfs_delayed_update_inode(trans, root, inode);
+		ret = btrfs_delayed_update_inode(trans, root, BTRFS_I(inode));
 		if (!ret)
 			btrfs_set_inode_last_trans(trans, BTRFS_I(inode));
 		return ret;
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [PATCH 06/14] btrfs: Make btrfs_update_inode_item take btrfs_inode
  2020-11-02 14:48 [PATCH 00/14] Another batch of inode vs btrfs_inode cleanups Nikolay Borisov
                   ` (4 preceding siblings ...)
  2020-11-02 14:48 ` [PATCH 05/14] btrfs: Make btrfs_delayed_update_inode take btrfs_inode Nikolay Borisov
@ 2020-11-02 14:48 ` Nikolay Borisov
  2020-11-02 14:48 ` [PATCH 07/14] btrfs: Make btrfs_update_inode " Nikolay Borisov
                   ` (9 subsequent siblings)
  15 siblings, 0 replies; 21+ messages in thread
From: Nikolay Borisov @ 2020-11-02 14:48 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

Signed-off-by: Nikolay Borisov <nborisov@suse.com>
---
 fs/btrfs/inode.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index e4993706a7fa..4165eb322c11 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -3450,7 +3450,8 @@ static void fill_inode_item(struct btrfs_trans_handle *trans,
  * copy everything in the in-memory inode into the btree.
  */
 static noinline int btrfs_update_inode_item(struct btrfs_trans_handle *trans,
-				struct btrfs_root *root, struct inode *inode)
+				struct btrfs_root *root,
+				struct btrfs_inode *inode)
 {
 	struct btrfs_inode_item *inode_item;
 	struct btrfs_path *path;
@@ -3462,8 +3463,7 @@ static noinline int btrfs_update_inode_item(struct btrfs_trans_handle *trans,
 		return -ENOMEM;
 
 	path->leave_spinning = 1;
-	ret = btrfs_lookup_inode(trans, root, path, &BTRFS_I(inode)->location,
-				 1);
+	ret = btrfs_lookup_inode(trans, root, path, &inode->location, 1);
 	if (ret) {
 		if (ret > 0)
 			ret = -ENOENT;
@@ -3474,9 +3474,9 @@ static noinline int btrfs_update_inode_item(struct btrfs_trans_handle *trans,
 	inode_item = btrfs_item_ptr(leaf, path->slots[0],
 				    struct btrfs_inode_item);
 
-	fill_inode_item(trans, leaf, inode_item, inode);
+	fill_inode_item(trans, leaf, inode_item, &inode->vfs_inode);
 	btrfs_mark_buffer_dirty(leaf);
-	btrfs_set_inode_last_trans(trans, BTRFS_I(inode));
+	btrfs_set_inode_last_trans(trans, inode);
 	ret = 0;
 failed:
 	btrfs_free_path(path);
@@ -3510,7 +3510,7 @@ noinline int btrfs_update_inode(struct btrfs_trans_handle *trans,
 		return ret;
 	}
 
-	return btrfs_update_inode_item(trans, root, inode);
+	return btrfs_update_inode_item(trans, root, BTRFS_I(inode));
 }
 
 noinline int btrfs_update_inode_fallback(struct btrfs_trans_handle *trans,
@@ -3521,7 +3521,7 @@ noinline int btrfs_update_inode_fallback(struct btrfs_trans_handle *trans,
 
 	ret = btrfs_update_inode(trans, root, inode);
 	if (ret == -ENOSPC)
-		return btrfs_update_inode_item(trans, root, inode);
+		return btrfs_update_inode_item(trans, root, BTRFS_I(inode));
 	return ret;
 }
 
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [PATCH 07/14] btrfs: Make btrfs_update_inode take btrfs_inode
  2020-11-02 14:48 [PATCH 00/14] Another batch of inode vs btrfs_inode cleanups Nikolay Borisov
                   ` (5 preceding siblings ...)
  2020-11-02 14:48 ` [PATCH 06/14] btrfs: Make btrfs_update_inode_item " Nikolay Borisov
@ 2020-11-02 14:48 ` Nikolay Borisov
  2020-11-02 14:49 ` [PATCH 08/14] btrfs: Make maybe_insert_hole " Nikolay Borisov
                   ` (8 subsequent siblings)
  15 siblings, 0 replies; 21+ messages in thread
From: Nikolay Borisov @ 2020-11-02 14:48 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

Signed-off-by: Nikolay Borisov <nborisov@suse.com>
---
 fs/btrfs/block-group.c      |  2 +-
 fs/btrfs/ctree.h            |  3 +-
 fs/btrfs/file.c             |  8 +++---
 fs/btrfs/free-space-cache.c |  6 ++--
 fs/btrfs/inode-map.c        |  2 +-
 fs/btrfs/inode.c            | 57 +++++++++++++++++++------------------
 fs/btrfs/ioctl.c            |  6 ++--
 fs/btrfs/reflink.c          |  2 +-
 fs/btrfs/tree-log.c         | 13 +++++----
 fs/btrfs/xattr.c            |  4 +--
 10 files changed, 52 insertions(+), 51 deletions(-)

diff --git a/fs/btrfs/block-group.c b/fs/btrfs/block-group.c
index bb6685711824..d2fd228a90a7 100644
--- a/fs/btrfs/block-group.c
+++ b/fs/btrfs/block-group.c
@@ -2449,7 +2449,7 @@ static int cache_save_setup(struct btrfs_block_group *block_group,
 	 * time.
 	 */
 	BTRFS_I(inode)->generation = 0;
-	ret = btrfs_update_inode(trans, root, inode);
+	ret = btrfs_update_inode(trans, root, BTRFS_I(inode));
 	if (ret) {
 		/*
 		 * So theoretically we could recover from this, simply set the
diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h
index f85a5e69614c..a23a7de6a4f3 100644
--- a/fs/btrfs/ctree.h
+++ b/fs/btrfs/ctree.h
@@ -3038,8 +3038,7 @@ struct extent_map *btrfs_get_extent(struct btrfs_inode *inode,
 				    struct page *page, size_t pg_offset,
 				    u64 start, u64 end);
 int btrfs_update_inode(struct btrfs_trans_handle *trans,
-			      struct btrfs_root *root,
-			      struct inode *inode);
+		       struct btrfs_root *root, struct btrfs_inode *inode);
 int btrfs_update_inode_fallback(struct btrfs_trans_handle *trans,
 				struct btrfs_root *root, struct inode *inode);
 int btrfs_orphan_add(struct btrfs_trans_handle *trans,
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c
index 4b44ad980a5d..56f6548da451 100644
--- a/fs/btrfs/file.c
+++ b/fs/btrfs/file.c
@@ -2760,7 +2760,7 @@ int btrfs_replace_file_extents(struct inode *inode, struct btrfs_path *path,
 
 		cur_offset = drop_end;
 
-		ret = btrfs_update_inode(trans, root, inode);
+		ret = btrfs_update_inode(trans, root, BTRFS_I(inode));
 		if (ret)
 			break;
 
@@ -2995,7 +2995,7 @@ static int btrfs_punch_hole(struct inode *inode, loff_t offset, loff_t len)
 	ASSERT(trans != NULL);
 	inode_inc_iversion(inode);
 	inode->i_mtime = inode->i_ctime = current_time(inode);
-	ret = btrfs_update_inode(trans, root, inode);
+	ret = btrfs_update_inode(trans, root, BTRFS_I(inode));
 	updated_inode = true;
 	btrfs_end_transaction(trans);
 	btrfs_btree_balance_dirty(fs_info);
@@ -3022,7 +3022,7 @@ static int btrfs_punch_hole(struct inode *inode, loff_t offset, loff_t len)
 		} else {
 			int ret2;
 
-			ret = btrfs_update_inode(trans, root, inode);
+			ret = btrfs_update_inode(trans, root, BTRFS_I(inode));
 			ret2 = btrfs_end_transaction(trans);
 			if (!ret)
 				ret = ret2;
@@ -3091,7 +3091,7 @@ static int btrfs_fallocate_update_isize(struct inode *inode,
 	inode->i_ctime = current_time(inode);
 	i_size_write(inode, end);
 	btrfs_inode_safe_disk_i_size_write(BTRFS_I(inode), 0);
-	ret = btrfs_update_inode(trans, root, inode);
+	ret = btrfs_update_inode(trans, root, BTRFS_I(inode));
 	ret2 = btrfs_end_transaction(trans);
 
 	return ret ? ret : ret2;
diff --git a/fs/btrfs/free-space-cache.c b/fs/btrfs/free-space-cache.c
index 48f059e91518..d72afb76a9f9 100644
--- a/fs/btrfs/free-space-cache.c
+++ b/fs/btrfs/free-space-cache.c
@@ -272,7 +272,7 @@ int btrfs_truncate_free_space_cache(struct btrfs_trans_handle *trans,
 	if (ret)
 		goto fail;
 
-	ret = btrfs_update_inode(trans, root, inode);
+	ret = btrfs_update_inode(trans, root, BTRFS_I(inode));
 
 fail:
 	if (locked)
@@ -1191,7 +1191,7 @@ static int __btrfs_wait_cache_io(struct btrfs_root *root,
 	  "failed to write free space cache for block group %llu error %d",
 				  block_group->start, ret);
 	}
-	btrfs_update_inode(trans, root, inode);
+	btrfs_update_inode(trans, root, BTRFS_I(inode));
 
 	if (block_group) {
 		/* the dirty list is protected by the dirty_bgs_lock */
@@ -1381,7 +1381,7 @@ static int __btrfs_write_out_cache(struct btrfs_root *root, struct inode *inode,
 		invalidate_inode_pages2(inode->i_mapping);
 		BTRFS_I(inode)->generation = 0;
 	}
-	btrfs_update_inode(trans, root, inode);
+	btrfs_update_inode(trans, root, BTRFS_I(inode));
 	if (must_iput)
 		iput(inode);
 	return ret;
diff --git a/fs/btrfs/inode-map.c b/fs/btrfs/inode-map.c
index 76d2e43817ea..8cf39402b227 100644
--- a/fs/btrfs/inode-map.c
+++ b/fs/btrfs/inode-map.c
@@ -463,7 +463,7 @@ int btrfs_save_ino_cache(struct btrfs_root *root,
 	}
 
 	BTRFS_I(inode)->generation = 0;
-	ret = btrfs_update_inode(trans, root, inode);
+	ret = btrfs_update_inode(trans, root, BTRFS_I(inode));
 	if (ret) {
 		btrfs_abort_transaction(trans, ret);
 		goto out_put;
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 4165eb322c11..a82dbc683a43 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -256,7 +256,7 @@ static int insert_inline_extent(struct btrfs_trans_handle *trans,
 	 * could end up racing with unlink.
 	 */
 	BTRFS_I(inode)->disk_i_size = inode->i_size;
-	ret = btrfs_update_inode(trans, root, inode);
+	ret = btrfs_update_inode(trans, root, BTRFS_I(inode));
 
 fail:
 	return ret;
@@ -3487,7 +3487,8 @@ static noinline int btrfs_update_inode_item(struct btrfs_trans_handle *trans,
  * copy everything in the in-memory inode into the btree.
  */
 noinline int btrfs_update_inode(struct btrfs_trans_handle *trans,
-				struct btrfs_root *root, struct inode *inode)
+				struct btrfs_root *root,
+				struct btrfs_inode *inode)
 {
 	struct btrfs_fs_info *fs_info = root->fs_info;
 	int ret;
@@ -3499,18 +3500,18 @@ noinline int btrfs_update_inode(struct btrfs_trans_handle *trans,
 	 * The data relocation inode should also be directly updated
 	 * without delay
 	 */
-	if (!btrfs_is_free_space_inode(BTRFS_I(inode))
+	if (!btrfs_is_free_space_inode(inode)
 	    && root->root_key.objectid != BTRFS_DATA_RELOC_TREE_OBJECTID
 	    && !test_bit(BTRFS_FS_LOG_RECOVERING, &fs_info->flags)) {
 		btrfs_update_root_times(trans, root);
 
-		ret = btrfs_delayed_update_inode(trans, root, BTRFS_I(inode));
+		ret = btrfs_delayed_update_inode(trans, root, inode);
 		if (!ret)
-			btrfs_set_inode_last_trans(trans, BTRFS_I(inode));
+			btrfs_set_inode_last_trans(trans, inode);
 		return ret;
 	}
 
-	return btrfs_update_inode_item(trans, root, BTRFS_I(inode));
+	return btrfs_update_inode_item(trans, root, inode);
 }
 
 noinline int btrfs_update_inode_fallback(struct btrfs_trans_handle *trans,
@@ -3519,7 +3520,7 @@ noinline int btrfs_update_inode_fallback(struct btrfs_trans_handle *trans,
 {
 	int ret;
 
-	ret = btrfs_update_inode(trans, root, inode);
+	ret = btrfs_update_inode(trans, root, BTRFS_I(inode));
 	if (ret == -ENOSPC)
 		return btrfs_update_inode_item(trans, root, BTRFS_I(inode));
 	return ret;
@@ -3630,7 +3631,7 @@ static int __btrfs_unlink_inode(struct btrfs_trans_handle *trans,
 	inode_inc_iversion(&dir->vfs_inode);
 	inode->vfs_inode.i_ctime = dir->vfs_inode.i_mtime =
 		dir->vfs_inode.i_ctime = current_time(&inode->vfs_inode);
-	ret = btrfs_update_inode(trans, root, &dir->vfs_inode);
+	ret = btrfs_update_inode(trans, root, dir);
 out:
 	return ret;
 }
@@ -3644,7 +3645,7 @@ int btrfs_unlink_inode(struct btrfs_trans_handle *trans,
 	ret = __btrfs_unlink_inode(trans, root, dir, inode, name, name_len);
 	if (!ret) {
 		drop_nlink(&inode->vfs_inode);
-		ret = btrfs_update_inode(trans, root, &inode->vfs_inode);
+		ret = btrfs_update_inode(trans, root, inode);
 	}
 	return ret;
 }
@@ -4662,7 +4663,7 @@ static int maybe_insert_hole(struct btrfs_root *root, struct inode *inode,
 	if (ret)
 		btrfs_abort_transaction(trans, ret);
 	else
-		btrfs_update_inode(trans, root, inode);
+		btrfs_update_inode(trans, root, BTRFS_I(inode));
 	btrfs_end_transaction(trans);
 	return ret;
 }
@@ -4823,7 +4824,7 @@ static int btrfs_setsize(struct inode *inode, struct iattr *attr)
 		i_size_write(inode, newsize);
 		btrfs_inode_safe_disk_i_size_write(BTRFS_I(inode), 0);
 		pagecache_isize_extended(inode, oldsize, newsize);
-		ret = btrfs_update_inode(trans, root, inode);
+		ret = btrfs_update_inode(trans, root, BTRFS_I(inode));
 		btrfs_drew_write_unlock(&root->snapshot_lock);
 		btrfs_end_transaction(trans);
 	} else {
@@ -5735,7 +5736,7 @@ static int btrfs_dirty_inode(struct inode *inode)
 	if (IS_ERR(trans))
 		return PTR_ERR(trans);
 
-	ret = btrfs_update_inode(trans, root, inode);
+	ret = btrfs_update_inode(trans, root, BTRFS_I(inode));
 	if (ret && ret == -ENOSPC) {
 		/* whoops, lets try again with the full transaction */
 		btrfs_end_transaction(trans);
@@ -5743,7 +5744,7 @@ static int btrfs_dirty_inode(struct inode *inode)
 		if (IS_ERR(trans))
 			return PTR_ERR(trans);
 
-		ret = btrfs_update_inode(trans, root, inode);
+		ret = btrfs_update_inode(trans, root, BTRFS_I(inode));
 	}
 	btrfs_end_transaction(trans);
 	if (BTRFS_I(inode)->delayed_node)
@@ -6132,7 +6133,7 @@ int btrfs_add_link(struct btrfs_trans_handle *trans,
 		parent_inode->vfs_inode.i_mtime = now;
 		parent_inode->vfs_inode.i_ctime = now;
 	}
-	ret = btrfs_update_inode(trans, root, &parent_inode->vfs_inode);
+	ret = btrfs_update_inode(trans, root, parent_inode);
 	if (ret)
 		btrfs_abort_transaction(trans, ret);
 	return ret;
@@ -6223,7 +6224,7 @@ static int btrfs_mknod(struct inode *dir, struct dentry *dentry,
 	if (err)
 		goto out_unlock;
 
-	btrfs_update_inode(trans, root, inode);
+	btrfs_update_inode(trans, root, BTRFS_I(inode));
 	d_instantiate_new(dentry, inode);
 
 out_unlock:
@@ -6282,7 +6283,7 @@ static int btrfs_create(struct inode *dir, struct dentry *dentry,
 	if (err)
 		goto out_unlock;
 
-	err = btrfs_update_inode(trans, root, inode);
+	err = btrfs_update_inode(trans, root, BTRFS_I(inode));
 	if (err)
 		goto out_unlock;
 
@@ -6354,7 +6355,7 @@ static int btrfs_link(struct dentry *old_dentry, struct inode *dir,
 	} else {
 		struct dentry *parent = dentry->d_parent;
 
-		err = btrfs_update_inode(trans, root, inode);
+		err = btrfs_update_inode(trans, root, BTRFS_I(inode));
 		if (err)
 			goto fail;
 		if (inode->i_nlink == 1) {
@@ -6422,7 +6423,7 @@ static int btrfs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode)
 		goto out_fail;
 
 	btrfs_i_size_write(BTRFS_I(inode), 0);
-	err = btrfs_update_inode(trans, root, inode);
+	err = btrfs_update_inode(trans, root, BTRFS_I(inode));
 	if (err)
 		goto out_fail;
 
@@ -8465,7 +8466,7 @@ static int btrfs_truncate(struct inode *inode, bool skip_writeback)
 		if (ret != -ENOSPC && ret != -EAGAIN)
 			break;
 
-		ret = btrfs_update_inode(trans, root, inode);
+		ret = btrfs_update_inode(trans, root, BTRFS_I(inode));
 		if (ret)
 			break;
 
@@ -8511,7 +8512,7 @@ static int btrfs_truncate(struct inode *inode, bool skip_writeback)
 		int ret2;
 
 		trans->block_rsv = &fs_info->trans_block_rsv;
-		ret2 = btrfs_update_inode(trans, root, inode);
+		ret2 = btrfs_update_inode(trans, root, BTRFS_I(inode));
 		if (ret2 && !ret)
 			ret = ret2;
 
@@ -8557,7 +8558,7 @@ int btrfs_create_subvol_root(struct btrfs_trans_handle *trans,
 			  "error inheriting subvolume %llu properties: %d",
 			  new_root->root_key.objectid, err);
 
-	err = btrfs_update_inode(trans, new_root, inode);
+	err = btrfs_update_inode(trans, new_root, BTRFS_I(inode));
 
 	iput(inode);
 	return err;
@@ -8912,7 +8913,7 @@ static int btrfs_rename_exchange(struct inode *old_dir,
 					   old_dentry->d_name.name,
 					   old_dentry->d_name.len);
 		if (!ret)
-			ret = btrfs_update_inode(trans, root, old_inode);
+			ret = btrfs_update_inode(trans, root, BTRFS_I(old_inode));
 	}
 	if (ret) {
 		btrfs_abort_transaction(trans, ret);
@@ -8928,7 +8929,7 @@ static int btrfs_rename_exchange(struct inode *old_dir,
 					   new_dentry->d_name.name,
 					   new_dentry->d_name.len);
 		if (!ret)
-			ret = btrfs_update_inode(trans, dest, new_inode);
+			ret = btrfs_update_inode(trans, dest, BTRFS_I(new_inode));
 	}
 	if (ret) {
 		btrfs_abort_transaction(trans, ret);
@@ -9048,7 +9049,7 @@ static int btrfs_whiteout_for_rename(struct btrfs_trans_handle *trans,
 	if (ret)
 		goto out;
 
-	ret = btrfs_update_inode(trans, root, inode);
+	ret = btrfs_update_inode(trans, root, BTRFS_I(inode));
 out:
 	unlock_new_inode(inode);
 	if (ret)
@@ -9182,7 +9183,7 @@ static int btrfs_rename(struct inode *old_dir, struct dentry *old_dentry,
 					old_dentry->d_name.name,
 					old_dentry->d_name.len);
 		if (!ret)
-			ret = btrfs_update_inode(trans, root, old_inode);
+			ret = btrfs_update_inode(trans, root, BTRFS_I(old_inode));
 	}
 	if (ret) {
 		btrfs_abort_transaction(trans, ret);
@@ -9542,7 +9543,7 @@ static int btrfs_symlink(struct inode *dir, struct dentry *dentry,
 	inode_nohighmem(inode);
 	inode_set_bytes(inode, name_len);
 	btrfs_i_size_write(BTRFS_I(inode), name_len);
-	err = btrfs_update_inode(trans, root, inode);
+	err = btrfs_update_inode(trans, root, BTRFS_I(inode));
 	/*
 	 * Last step, add directory indexes for our symlink inode. This is the
 	 * last step to avoid extra cleanup of these indexes if an error happens
@@ -9738,7 +9739,7 @@ static int __btrfs_prealloc_file_range(struct inode *inode, int mode,
 			btrfs_inode_safe_disk_i_size_write(BTRFS_I(inode), 0);
 		}
 
-		ret = btrfs_update_inode(trans, root, inode);
+		ret = btrfs_update_inode(trans, root, BTRFS_I(inode));
 
 		if (ret) {
 			btrfs_abort_transaction(trans, ret);
@@ -9834,7 +9835,7 @@ static int btrfs_tmpfile(struct inode *dir, struct dentry *dentry, umode_t mode)
 	if (ret)
 		goto out;
 
-	ret = btrfs_update_inode(trans, root, inode);
+	ret = btrfs_update_inode(trans, root, BTRFS_I(inode));
 	if (ret)
 		goto out;
 	ret = btrfs_orphan_add(trans, BTRFS_I(inode));
diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c
index 30f86670635f..53a02b50340d 100644
--- a/fs/btrfs/ioctl.c
+++ b/fs/btrfs/ioctl.c
@@ -336,7 +336,7 @@ static int btrfs_ioctl_setflags(struct file *file, void __user *arg)
 	btrfs_sync_inode_flags_to_i_flags(inode);
 	inode_inc_iversion(inode);
 	inode->i_ctime = current_time(inode);
-	ret = btrfs_update_inode(trans, root, inode);
+	ret = btrfs_update_inode(trans, root, BTRFS_I(inode));
 
  out_end_trans:
 	btrfs_end_transaction(trans);
@@ -479,7 +479,7 @@ static int btrfs_ioctl_fssetxattr(struct file *file, void __user *arg)
 	btrfs_sync_inode_flags_to_i_flags(inode);
 	inode_inc_iversion(inode);
 	inode->i_ctime = current_time(inode);
-	ret = btrfs_update_inode(trans, root, inode);
+	ret = btrfs_update_inode(trans, root, BTRFS_I(inode));
 
 	btrfs_end_transaction(trans);
 
@@ -733,7 +733,7 @@ static noinline int create_subvol(struct inode *dir,
 	}
 
 	btrfs_i_size_write(BTRFS_I(dir), dir->i_size + namelen * 2);
-	ret = btrfs_update_inode(trans, root, dir);
+	ret = btrfs_update_inode(trans, root, BTRFS_I(dir));
 	if (ret) {
 		btrfs_abort_transaction(trans, ret);
 		goto fail;
diff --git a/fs/btrfs/reflink.c b/fs/btrfs/reflink.c
index e624f4cd0585..f896dfba771b 100644
--- a/fs/btrfs/reflink.c
+++ b/fs/btrfs/reflink.c
@@ -34,7 +34,7 @@ static int clone_finish_inode_update(struct btrfs_trans_handle *trans,
 		btrfs_inode_safe_disk_i_size_write(BTRFS_I(inode), 0);
 	}
 
-	ret = btrfs_update_inode(trans, root, inode);
+	ret = btrfs_update_inode(trans, root, BTRFS_I(inode));
 	if (ret) {
 		btrfs_abort_transaction(trans, ret);
 		btrfs_end_transaction(trans);
diff --git a/fs/btrfs/tree-log.c b/fs/btrfs/tree-log.c
index 4ea54fe23e3c..baa2c4cfd293 100644
--- a/fs/btrfs/tree-log.c
+++ b/fs/btrfs/tree-log.c
@@ -830,7 +830,7 @@ static noinline int replay_one_extent(struct btrfs_trans_handle *trans,
 
 	inode_add_bytes(inode, nbytes);
 update_inode:
-	ret = btrfs_update_inode(trans, root, inode);
+	ret = btrfs_update_inode(trans, root, BTRFS_I(inode));
 out:
 	if (inode)
 		iput(inode);
@@ -1529,7 +1529,7 @@ static noinline int add_inode_ref(struct btrfs_trans_handle *trans,
 			if (ret)
 				goto out;
 
-			btrfs_update_inode(trans, root, inode);
+			btrfs_update_inode(trans, root, BTRFS_I(inode));
 		}
 
 		ref_ptr = (unsigned long)(ref_ptr + ref_struct_size) + namelen;
@@ -1704,7 +1704,7 @@ static noinline int fixup_inode_link_count(struct btrfs_trans_handle *trans,
 
 	if (nlink != inode->i_nlink) {
 		set_nlink(inode, nlink);
-		btrfs_update_inode(trans, root, inode);
+		btrfs_update_inode(trans, root, BTRFS_I(inode));
 	}
 	BTRFS_I(inode)->index_cnt = (u64)-1;
 
@@ -1810,7 +1810,7 @@ static noinline int link_to_fixup_dir(struct btrfs_trans_handle *trans,
 			set_nlink(inode, 1);
 		else
 			inc_nlink(inode);
-		ret = btrfs_update_inode(trans, root, inode);
+		ret = btrfs_update_inode(trans, root, BTRFS_I(inode));
 	} else if (ret == -EEXIST) {
 		ret = 0;
 	} else {
@@ -1963,7 +1963,7 @@ static noinline int replay_one_name(struct btrfs_trans_handle *trans,
 	btrfs_release_path(path);
 	if (!ret && update_size) {
 		btrfs_i_size_write(BTRFS_I(dir), dir->i_size + name_len * 2);
-		ret = btrfs_update_inode(trans, root, dir);
+		ret = btrfs_update_inode(trans, root, BTRFS_I(dir));
 	}
 	kfree(name);
 	iput(dir);
@@ -2591,7 +2591,8 @@ static int replay_one_buffer(struct btrfs_root *log, struct extent_buffer *eb,
 				if (!ret) {
 					/* Update the inode's nbytes. */
 					ret = btrfs_update_inode(wc->trans,
-								 root, inode);
+								 root,
+								 BTRFS_I(inode));
 				}
 				iput(inode);
 				if (ret)
diff --git a/fs/btrfs/xattr.c b/fs/btrfs/xattr.c
index 95d9aebff2c4..f32fe9e39a74 100644
--- a/fs/btrfs/xattr.c
+++ b/fs/btrfs/xattr.c
@@ -239,7 +239,7 @@ int btrfs_setxattr_trans(struct inode *inode, const char *name,
 
 	inode_inc_iversion(inode);
 	inode->i_ctime = current_time(inode);
-	ret = btrfs_update_inode(trans, root, inode);
+	ret = btrfs_update_inode(trans, root, BTRFS_I(inode));
 	BUG_ON(ret);
 out:
 	btrfs_end_transaction(trans);
@@ -390,7 +390,7 @@ static int btrfs_xattr_handler_set_prop(const struct xattr_handler *handler,
 	if (!ret) {
 		inode_inc_iversion(inode);
 		inode->i_ctime = current_time(inode);
-		ret = btrfs_update_inode(trans, root, inode);
+		ret = btrfs_update_inode(trans, root, BTRFS_I(inode));
 		BUG_ON(ret);
 	}
 
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [PATCH 08/14] btrfs: Make maybe_insert_hole take btrfs_inode
  2020-11-02 14:48 [PATCH 00/14] Another batch of inode vs btrfs_inode cleanups Nikolay Borisov
                   ` (6 preceding siblings ...)
  2020-11-02 14:48 ` [PATCH 07/14] btrfs: Make btrfs_update_inode " Nikolay Borisov
@ 2020-11-02 14:49 ` Nikolay Borisov
  2020-11-02 14:49 ` [PATCH 09/14] btrfs: Make find_first_non_hole " Nikolay Borisov
                   ` (7 subsequent siblings)
  15 siblings, 0 replies; 21+ messages in thread
From: Nikolay Borisov @ 2020-11-02 14:49 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

Signed-off-by: Nikolay Borisov <nborisov@suse.com>
---
 fs/btrfs/inode.c | 23 ++++++++++++-----------
 1 file changed, 12 insertions(+), 11 deletions(-)

diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index a82dbc683a43..6264777474ad 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -4624,10 +4624,10 @@ int btrfs_truncate_block(struct inode *inode, loff_t from, loff_t len,
 	return ret;
 }
 
-static int maybe_insert_hole(struct btrfs_root *root, struct inode *inode,
+static int maybe_insert_hole(struct btrfs_root *root, struct btrfs_inode *inode,
 			     u64 offset, u64 len)
 {
-	struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
+	struct btrfs_fs_info *fs_info = root->fs_info;
 	struct btrfs_trans_handle *trans;
 	int ret;
 
@@ -4636,9 +4636,9 @@ static int maybe_insert_hole(struct btrfs_root *root, struct inode *inode,
 	 * that any holes get logged if we fsync.
 	 */
 	if (btrfs_fs_incompat(fs_info, NO_HOLES)) {
-		BTRFS_I(inode)->last_trans = fs_info->generation;
-		BTRFS_I(inode)->last_sub_trans = root->log_transid;
-		BTRFS_I(inode)->last_log_commit = root->last_log_commit;
+		inode->last_trans = fs_info->generation;
+		inode->last_sub_trans = root->log_transid;
+		inode->last_log_commit = root->last_log_commit;
 		return 0;
 	}
 
@@ -4651,19 +4651,20 @@ static int maybe_insert_hole(struct btrfs_root *root, struct inode *inode,
 	if (IS_ERR(trans))
 		return PTR_ERR(trans);
 
-	ret = btrfs_drop_extents(trans, root, inode, offset, offset + len, 1);
+	ret = btrfs_drop_extents(trans, root, &inode->vfs_inode, offset,
+				 offset + len, 1);
 	if (ret) {
 		btrfs_abort_transaction(trans, ret);
 		btrfs_end_transaction(trans);
 		return ret;
 	}
 
-	ret = btrfs_insert_file_extent(trans, root, btrfs_ino(BTRFS_I(inode)),
-			offset, 0, 0, len, 0, len, 0, 0, 0);
+	ret = btrfs_insert_file_extent(trans, root, btrfs_ino(inode), offset,
+				       0, 0, len, 0, len, 0, 0, 0);
 	if (ret)
 		btrfs_abort_transaction(trans, ret);
 	else
-		btrfs_update_inode(trans, root, BTRFS_I(inode));
+		btrfs_update_inode(trans, root, inode);
 	btrfs_end_transaction(trans);
 	return ret;
 }
@@ -4719,8 +4720,8 @@ int btrfs_cont_expand(struct inode *inode, loff_t oldsize, loff_t size)
 		if (!test_bit(EXTENT_FLAG_PREALLOC, &em->flags)) {
 			struct extent_map *hole_em;
 
-			err = maybe_insert_hole(root, inode, cur_offset,
-						hole_size);
+			err = maybe_insert_hole(root, BTRFS_I(inode),
+						cur_offset, hole_size);
 			if (err)
 				break;
 
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [PATCH 09/14] btrfs: Make find_first_non_hole take btrfs_inode
  2020-11-02 14:48 [PATCH 00/14] Another batch of inode vs btrfs_inode cleanups Nikolay Borisov
                   ` (7 preceding siblings ...)
  2020-11-02 14:49 ` [PATCH 08/14] btrfs: Make maybe_insert_hole " Nikolay Borisov
@ 2020-11-02 14:49 ` Nikolay Borisov
  2020-11-02 14:49 ` [PATCH 10/14] btrfs: Make btrfs_insert_replace_extent " Nikolay Borisov
                   ` (6 subsequent siblings)
  15 siblings, 0 replies; 21+ messages in thread
From: Nikolay Borisov @ 2020-11-02 14:49 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

Signed-off-by: Nikolay Borisov <nborisov@suse.com>
---
 fs/btrfs/file.c | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c
index 56f6548da451..1baf69f012fe 100644
--- a/fs/btrfs/file.c
+++ b/fs/btrfs/file.c
@@ -2484,13 +2484,13 @@ static int fill_holes(struct btrfs_trans_handle *trans,
  *	   em->start + em->len > start)
  * When a hole extent is found, return 1 and modify start/len.
  */
-static int find_first_non_hole(struct inode *inode, u64 *start, u64 *len)
+static int find_first_non_hole(struct btrfs_inode *inode, u64 *start, u64 *len)
 {
-	struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
+	struct btrfs_fs_info *fs_info = inode->root->fs_info;
 	struct extent_map *em;
 	int ret = 0;
 
-	em = btrfs_get_extent(BTRFS_I(inode), NULL, 0,
+	em = btrfs_get_extent(inode, NULL, 0,
 			      round_down(*start, fs_info->sectorsize),
 			      round_up(*len, fs_info->sectorsize));
 	if (IS_ERR(em))
@@ -2780,7 +2780,8 @@ int btrfs_replace_file_extents(struct inode *inode, struct btrfs_path *path,
 		trans->block_rsv = rsv;
 
 		if (!extent_info) {
-			ret = find_first_non_hole(inode, &cur_offset, &len);
+			ret = find_first_non_hole(BTRFS_I(inode), &cur_offset,
+						  &len);
 			if (unlikely(ret < 0))
 				break;
 			if (ret && !len) {
@@ -2890,7 +2891,7 @@ static int btrfs_punch_hole(struct inode *inode, loff_t offset, loff_t len)
 
 	inode_lock(inode);
 	ino_size = round_up(inode->i_size, fs_info->sectorsize);
-	ret = find_first_non_hole(inode, &offset, &len);
+	ret = find_first_non_hole(BTRFS_I(inode), &offset, &len);
 	if (ret < 0)
 		goto out_only_mutex;
 	if (ret && !len) {
@@ -2940,7 +2941,7 @@ static int btrfs_punch_hole(struct inode *inode, loff_t offset, loff_t len)
 		/* after truncate page, check hole again */
 		len = offset + len - lockstart;
 		offset = lockstart;
-		ret = find_first_non_hole(inode, &offset, &len);
+		ret = find_first_non_hole(BTRFS_I(inode), &offset, &len);
 		if (ret < 0)
 			goto out_only_mutex;
 		if (ret && !len) {
@@ -2954,7 +2955,7 @@ static int btrfs_punch_hole(struct inode *inode, loff_t offset, loff_t len)
 	tail_start = lockend + 1;
 	tail_len = offset + len - tail_start;
 	if (tail_len) {
-		ret = find_first_non_hole(inode, &tail_start, &tail_len);
+		ret = find_first_non_hole(BTRFS_I(inode), &tail_start, &tail_len);
 		if (unlikely(ret < 0))
 			goto out_only_mutex;
 		if (!ret) {
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [PATCH 10/14] btrfs: Make btrfs_insert_replace_extent take btrfs_inode
  2020-11-02 14:48 [PATCH 00/14] Another batch of inode vs btrfs_inode cleanups Nikolay Borisov
                   ` (8 preceding siblings ...)
  2020-11-02 14:49 ` [PATCH 09/14] btrfs: Make find_first_non_hole " Nikolay Borisov
@ 2020-11-02 14:49 ` Nikolay Borisov
  2020-11-02 14:49 ` [PATCH 11/14] btrfs: Make btrfs_truncate_block " Nikolay Borisov
                   ` (5 subsequent siblings)
  15 siblings, 0 replies; 21+ messages in thread
From: Nikolay Borisov @ 2020-11-02 14:49 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

Signed-off-by: Nikolay Borisov <nborisov@suse.com>
---
 fs/btrfs/file.c | 34 ++++++++++++++++++----------------
 1 file changed, 18 insertions(+), 16 deletions(-)

diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c
index 1baf69f012fe..0f3b9fb842e7 100644
--- a/fs/btrfs/file.c
+++ b/fs/btrfs/file.c
@@ -2550,13 +2550,13 @@ static int btrfs_punch_hole_lock_range(struct inode *inode,
 }

 static int btrfs_insert_replace_extent(struct btrfs_trans_handle *trans,
-				     struct inode *inode,
-				     struct btrfs_path *path,
-				     struct btrfs_replace_extent_info *extent_info,
-				     const u64 replace_len)
+				       struct btrfs_inode *inode,
+				       struct btrfs_path *path,
+				       struct btrfs_replace_extent_info *extent_info,
+				       const u64 replace_len)
 {
-	struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
-	struct btrfs_root *root = BTRFS_I(inode)->root;
+	struct btrfs_fs_info *fs_info = trans->fs_info;
+	struct btrfs_root *root = inode->root;
 	struct btrfs_file_extent_item *extent;
 	struct extent_buffer *leaf;
 	struct btrfs_key key;
@@ -2571,7 +2571,7 @@ static int btrfs_insert_replace_extent(struct btrfs_trans_handle *trans,
 	    btrfs_fs_incompat(fs_info, NO_HOLES))
 		return 0;

-	key.objectid = btrfs_ino(BTRFS_I(inode));
+	key.objectid = btrfs_ino(inode);
 	key.type = BTRFS_EXTENT_DATA_KEY;
 	key.offset = extent_info->file_offset;
 	ret = btrfs_insert_empty_item(trans, root, path, &key,
@@ -2592,8 +2592,8 @@ static int btrfs_insert_replace_extent(struct btrfs_trans_handle *trans,
 	btrfs_mark_buffer_dirty(leaf);
 	btrfs_release_path(path);

-	ret = btrfs_inode_set_file_extent_range(BTRFS_I(inode),
-			extent_info->file_offset, replace_len);
+	ret = btrfs_inode_set_file_extent_range(inode, extent_info->file_offset,
+						replace_len);
 	if (ret)
 		return ret;

@@ -2601,14 +2601,14 @@ static int btrfs_insert_replace_extent(struct btrfs_trans_handle *trans,
 	if (extent_info->disk_offset == 0)
 		return 0;

-	inode_add_bytes(inode, replace_len);
+	inode_add_bytes(&inode->vfs_inode, replace_len);

 	if (extent_info->is_new_extent && extent_info->insertions == 0) {
 		key.objectid = extent_info->disk_offset;
 		key.type = BTRFS_EXTENT_ITEM_KEY;
 		key.offset = extent_info->disk_len;
 		ret = btrfs_alloc_reserved_file_extent(trans, root,
-						       btrfs_ino(BTRFS_I(inode)),
+						       btrfs_ino(inode),
 						       extent_info->file_offset,
 						       extent_info->qgroup_reserved,
 						       &key);
@@ -2620,7 +2620,7 @@ static int btrfs_insert_replace_extent(struct btrfs_trans_handle *trans,
 				       extent_info->disk_len, 0);
 		ref_offset = extent_info->file_offset - extent_info->data_offset;
 		btrfs_init_data_ref(&ref, root->root_key.objectid,
-				    btrfs_ino(BTRFS_I(inode)), ref_offset);
+				    btrfs_ino(inode), ref_offset);
 		ret = btrfs_inc_extent_ref(trans, &ref);
 	}

@@ -2747,8 +2747,9 @@ int btrfs_replace_file_extents(struct inode *inode, struct btrfs_path *path,
 		if (extent_info && drop_end > extent_info->file_offset) {
 			u64 replace_len = drop_end - extent_info->file_offset;

-			ret = btrfs_insert_replace_extent(trans, inode, path,
-							extent_info, replace_len);
+			ret = btrfs_insert_replace_extent(trans, BTRFS_I(inode),
+							  path,	extent_info,
+							  replace_len);
 			if (ret) {
 				btrfs_abort_transaction(trans, ret);
 				break;
@@ -2844,8 +2845,9 @@ int btrfs_replace_file_extents(struct inode *inode, struct btrfs_path *path,

 	}
 	if (extent_info) {
-		ret = btrfs_insert_replace_extent(trans, inode, path, extent_info,
-						extent_info->data_len);
+		ret = btrfs_insert_replace_extent(trans, BTRFS_I(inode), path,
+						  extent_info,
+						  extent_info->data_len);
 		if (ret) {
 			btrfs_abort_transaction(trans, ret);
 			goto out_trans;
--
2.25.1


^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [PATCH 11/14] btrfs: Make btrfs_truncate_block take btrfs_inode
  2020-11-02 14:48 [PATCH 00/14] Another batch of inode vs btrfs_inode cleanups Nikolay Borisov
                   ` (9 preceding siblings ...)
  2020-11-02 14:49 ` [PATCH 10/14] btrfs: Make btrfs_insert_replace_extent " Nikolay Borisov
@ 2020-11-02 14:49 ` Nikolay Borisov
  2020-11-02 14:49 ` [PATCH 12/14] btrfs: Make btrfs_cont_expand " Nikolay Borisov
                   ` (4 subsequent siblings)
  15 siblings, 0 replies; 21+ messages in thread
From: Nikolay Borisov @ 2020-11-02 14:49 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

Signed-off-by: Nikolay Borisov <nborisov@suse.com>
---
 fs/btrfs/ctree.h |  4 ++--
 fs/btrfs/file.c  | 17 +++++++++-------
 fs/btrfs/inode.c | 52 +++++++++++++++++++++++-------------------------
 3 files changed, 37 insertions(+), 36 deletions(-)

diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h
index a23a7de6a4f3..bfcd4748319f 100644
--- a/fs/btrfs/ctree.h
+++ b/fs/btrfs/ctree.h
@@ -2994,8 +2994,8 @@ int btrfs_add_link(struct btrfs_trans_handle *trans,
 		   struct btrfs_inode *parent_inode, struct btrfs_inode *inode,
 		   const char *name, int name_len, int add_backref, u64 index);
 int btrfs_delete_subvolume(struct inode *dir, struct dentry *dentry);
-int btrfs_truncate_block(struct inode *inode, loff_t from, loff_t len,
-			int front);
+int btrfs_truncate_block(struct btrfs_inode *inode, loff_t from, loff_t len,
+			 int front);
 int btrfs_truncate_inode_items(struct btrfs_trans_handle *trans,
 			       struct btrfs_root *root,
 			       struct btrfs_inode *inode, u64 new_size,
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c
index 0f3b9fb842e7..3731b3b3325d 100644
--- a/fs/btrfs/file.c
+++ b/fs/btrfs/file.c
@@ -2918,7 +2918,8 @@ static int btrfs_punch_hole(struct inode *inode, loff_t offset, loff_t len)
 	if (same_block && len < fs_info->sectorsize) {
 		if (offset < ino_size) {
 			truncated_block = true;
-			ret = btrfs_truncate_block(inode, offset, len, 0);
+			ret = btrfs_truncate_block(BTRFS_I(inode), offset, len,
+						   0);
 		} else {
 			ret = 0;
 		}
@@ -2928,7 +2929,7 @@ static int btrfs_punch_hole(struct inode *inode, loff_t offset, loff_t len)
 	/* zero back part of the first block */
 	if (offset < ino_size) {
 		truncated_block = true;
-		ret = btrfs_truncate_block(inode, offset, 0, 0);
+		ret = btrfs_truncate_block(BTRFS_I(inode), offset, 0, 0);
 		if (ret) {
 			inode_unlock(inode);
 			return ret;
@@ -2964,7 +2965,7 @@ static int btrfs_punch_hole(struct inode *inode, loff_t offset, loff_t len)
 			/* zero the front end of the last page */
 			if (tail_start + tail_len < ino_size) {
 				truncated_block = true;
-				ret = btrfs_truncate_block(inode,
+				ret = btrfs_truncate_block(BTRFS_I(inode),
 							tail_start + tail_len,
 							0, 1);
 				if (ret)
@@ -3206,7 +3207,8 @@ static int btrfs_zero_range(struct inode *inode,
 		}
 		if (len < sectorsize && em->block_start != EXTENT_MAP_HOLE) {
 			free_extent_map(em);
-			ret = btrfs_truncate_block(inode, offset, len, 0);
+			ret = btrfs_truncate_block(BTRFS_I(inode), offset, len,
+						   0);
 			if (!ret)
 				ret = btrfs_fallocate_update_isize(inode,
 								   offset + len,
@@ -3237,7 +3239,7 @@ static int btrfs_zero_range(struct inode *inode,
 			alloc_start = round_down(offset, sectorsize);
 			ret = 0;
 		} else if (ret == RANGE_BOUNDARY_WRITTEN_EXTENT) {
-			ret = btrfs_truncate_block(inode, offset, 0, 0);
+			ret = btrfs_truncate_block(BTRFS_I(inode), offset, 0, 0);
 			if (ret)
 				goto out;
 		} else {
@@ -3254,7 +3256,8 @@ static int btrfs_zero_range(struct inode *inode,
 			alloc_end = round_up(offset + len, sectorsize);
 			ret = 0;
 		} else if (ret == RANGE_BOUNDARY_WRITTEN_EXTENT) {
-			ret = btrfs_truncate_block(inode, offset + len, 0, 1);
+			ret = btrfs_truncate_block(BTRFS_I(inode), offset + len,
+						   0, 1);
 			if (ret)
 				goto out;
 		} else {
@@ -3374,7 +3377,7 @@ static long btrfs_fallocate(struct file *file, int mode,
 		 * need to zero out the end of the block if i_size lands in the
 		 * middle of a block.
 		 */
-		ret = btrfs_truncate_block(inode, inode->i_size, 0, 0);
+		ret = btrfs_truncate_block(BTRFS_I(inode), inode->i_size, 0, 0);
 		if (ret)
 			goto out;
 	}
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 6264777474ad..a7fdea00b824 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -4486,12 +4486,12 @@ int btrfs_truncate_inode_items(struct btrfs_trans_handle *trans,
  * This will find the block for the "from" offset and cow the block and zero the
  * part we want to zero.  This is used with truncate and hole punching.
  */
-int btrfs_truncate_block(struct inode *inode, loff_t from, loff_t len,
-			int front)
+int btrfs_truncate_block(struct btrfs_inode *inode, loff_t from, loff_t len,
+			 int front)
 {
-	struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
-	struct address_space *mapping = inode->i_mapping;
-	struct extent_io_tree *io_tree = &BTRFS_I(inode)->io_tree;
+	struct btrfs_fs_info *fs_info = inode->root->fs_info;
+	struct address_space *mapping = inode->vfs_inode.i_mapping;
+	struct extent_io_tree *io_tree = &inode->io_tree;
 	struct btrfs_ordered_extent *ordered;
 	struct extent_state *cached_state = NULL;
 	struct extent_changeset *data_reserved = NULL;
@@ -4514,10 +4514,10 @@ int btrfs_truncate_block(struct inode *inode, loff_t from, loff_t len,
 	block_start = round_down(from, blocksize);
 	block_end = block_start + blocksize - 1;
 
-	ret = btrfs_check_data_free_space(BTRFS_I(inode), &data_reserved,
-					  block_start, blocksize);
+	ret = btrfs_check_data_free_space(inode, &data_reserved, block_start,
+					  blocksize);
 	if (ret < 0) {
-		if (btrfs_check_nocow_lock(BTRFS_I(inode), block_start,
+		if (btrfs_check_nocow_lock(inode, block_start,
 					   &write_bytes) > 0) {
 			/* For nocow case, no need to reserve data space */
 			only_release_metadata = true;
@@ -4525,19 +4525,19 @@ int btrfs_truncate_block(struct inode *inode, loff_t from, loff_t len,
 			goto out;
 		}
 	}
-	ret = btrfs_delalloc_reserve_metadata(BTRFS_I(inode), blocksize);
+	ret = btrfs_delalloc_reserve_metadata(inode, blocksize);
 	if (ret < 0) {
 		if (!only_release_metadata)
-			btrfs_free_reserved_data_space(BTRFS_I(inode),
-					data_reserved, block_start, blocksize);
+			btrfs_free_reserved_data_space(inode, data_reserved,
+						       block_start, blocksize);
 		goto out;
 	}
 again:
 	page = find_or_create_page(mapping, index, mask);
 	if (!page) {
-		btrfs_delalloc_release_space(BTRFS_I(inode), data_reserved,
-					     block_start, blocksize, true);
-		btrfs_delalloc_release_extents(BTRFS_I(inode), blocksize);
+		btrfs_delalloc_release_space(inode, data_reserved, block_start,
+					     blocksize, true);
+		btrfs_delalloc_release_extents(inode, blocksize);
 		ret = -ENOMEM;
 		goto out;
 	}
@@ -4560,7 +4560,7 @@ int btrfs_truncate_block(struct inode *inode, loff_t from, loff_t len,
 	lock_extent_bits(io_tree, block_start, block_end, &cached_state);
 	set_page_extent_mapped(page);
 
-	ordered = btrfs_lookup_ordered_extent(BTRFS_I(inode), block_start);
+	ordered = btrfs_lookup_ordered_extent(inode, block_start);
 	if (ordered) {
 		unlock_extent_cached(io_tree, block_start, block_end,
 				     &cached_state);
@@ -4571,11 +4571,11 @@ int btrfs_truncate_block(struct inode *inode, loff_t from, loff_t len,
 		goto again;
 	}
 
-	clear_extent_bit(&BTRFS_I(inode)->io_tree, block_start, block_end,
+	clear_extent_bit(&inode->io_tree, block_start, block_end,
 			 EXTENT_DELALLOC | EXTENT_DO_ACCOUNTING | EXTENT_DEFRAG,
 			 0, 0, &cached_state);
 
-	ret = btrfs_set_extent_delalloc(BTRFS_I(inode), block_start, block_end, 0,
+	ret = btrfs_set_extent_delalloc(inode, block_start, block_end, 0,
 					&cached_state);
 	if (ret) {
 		unlock_extent_cached(io_tree, block_start, block_end,
@@ -4601,25 +4601,23 @@ int btrfs_truncate_block(struct inode *inode, loff_t from, loff_t len,
 	unlock_extent_cached(io_tree, block_start, block_end, &cached_state);
 
 	if (only_release_metadata)
-		set_extent_bit(&BTRFS_I(inode)->io_tree, block_start,
-				block_end, EXTENT_NORESERVE, NULL, NULL,
-				GFP_NOFS);
+		set_extent_bit(io_tree, block_start, block_end,
+			       EXTENT_NORESERVE, NULL, NULL, GFP_NOFS);
 
 out_unlock:
 	if (ret) {
 		if (only_release_metadata)
-			btrfs_delalloc_release_metadata(BTRFS_I(inode),
-					blocksize, true);
+			btrfs_delalloc_release_metadata(inode, blocksize, true);
 		else
-			btrfs_delalloc_release_space(BTRFS_I(inode), data_reserved,
+			btrfs_delalloc_release_space(inode, data_reserved,
 					block_start, blocksize, true);
 	}
-	btrfs_delalloc_release_extents(BTRFS_I(inode), blocksize);
+	btrfs_delalloc_release_extents(inode, blocksize);
 	unlock_page(page);
 	put_page(page);
 out:
 	if (only_release_metadata)
-		btrfs_check_nocow_unlock(BTRFS_I(inode));
+		btrfs_check_nocow_unlock(inode);
 	extent_changeset_free(data_reserved);
 	return ret;
 }
@@ -4695,7 +4693,7 @@ int btrfs_cont_expand(struct inode *inode, loff_t oldsize, loff_t size)
 	 * rest of the block before we expand the i_size, otherwise we could
 	 * expose stale data.
 	 */
-	err = btrfs_truncate_block(inode, oldsize, 0, 0);
+	err = btrfs_truncate_block(BTRFS_I(inode), oldsize, 0, 0);
 	if (err)
 		return err;
 
@@ -8498,7 +8496,7 @@ static int btrfs_truncate(struct inode *inode, bool skip_writeback)
 		btrfs_end_transaction(trans);
 		btrfs_btree_balance_dirty(fs_info);
 
-		ret = btrfs_truncate_block(inode, inode->i_size, 0, 0);
+		ret = btrfs_truncate_block(BTRFS_I(inode), inode->i_size, 0, 0);
 		if (ret)
 			goto out;
 		trans = btrfs_start_transaction(root, 1);
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [PATCH 12/14] btrfs: Make btrfs_cont_expand take btrfs_inode
  2020-11-02 14:48 [PATCH 00/14] Another batch of inode vs btrfs_inode cleanups Nikolay Borisov
                   ` (10 preceding siblings ...)
  2020-11-02 14:49 ` [PATCH 11/14] btrfs: Make btrfs_truncate_block " Nikolay Borisov
@ 2020-11-02 14:49 ` Nikolay Borisov
  2020-11-02 14:49 ` [PATCH 13/14] btrfs: Make btrfs_drop_extents " Nikolay Borisov
                   ` (3 subsequent siblings)
  15 siblings, 0 replies; 21+ messages in thread
From: Nikolay Borisov @ 2020-11-02 14:49 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

Signed-off-by: Nikolay Borisov <nborisov@suse.com>
---
 fs/btrfs/ctree.h   |  2 +-
 fs/btrfs/file.c    |  4 ++--
 fs/btrfs/inode.c   | 37 ++++++++++++++++++-------------------
 fs/btrfs/reflink.c |  2 +-
 4 files changed, 22 insertions(+), 23 deletions(-)

diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h
index bfcd4748319f..879b80ef641e 100644
--- a/fs/btrfs/ctree.h
+++ b/fs/btrfs/ctree.h
@@ -3044,7 +3044,7 @@ int btrfs_update_inode_fallback(struct btrfs_trans_handle *trans,
 int btrfs_orphan_add(struct btrfs_trans_handle *trans,
 		struct btrfs_inode *inode);
 int btrfs_orphan_cleanup(struct btrfs_root *root);
-int btrfs_cont_expand(struct inode *inode, loff_t oldsize, loff_t size);
+int btrfs_cont_expand(struct btrfs_inode *inode, loff_t oldsize, loff_t size);
 void btrfs_add_delayed_iput(struct inode *inode);
 void btrfs_run_delayed_iputs(struct btrfs_fs_info *fs_info);
 int btrfs_wait_on_delayed_iputs(struct btrfs_fs_info *fs_info);
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c
index 3731b3b3325d..05374aa99da8 100644
--- a/fs/btrfs/file.c
+++ b/fs/btrfs/file.c
@@ -1989,7 +1989,7 @@ static ssize_t btrfs_file_write_iter(struct kiocb *iocb,
 		/* Expand hole size to cover write data, preventing empty gap */
 		end_pos = round_up(pos + count,
 				   fs_info->sectorsize);
-		err = btrfs_cont_expand(inode, oldsize, end_pos);
+		err = btrfs_cont_expand(BTRFS_I(inode), oldsize, end_pos);
 		if (err) {
 			inode_unlock(inode);
 			goto out;
@@ -3367,7 +3367,7 @@ static long btrfs_fallocate(struct file *file, int mode,
 	 * But that's a minor problem and won't do much harm BTW.
 	 */
 	if (alloc_start > inode->i_size) {
-		ret = btrfs_cont_expand(inode, i_size_read(inode),
+		ret = btrfs_cont_expand(BTRFS_I(inode), i_size_read(inode),
 					alloc_start);
 		if (ret)
 			goto out;
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index a7fdea00b824..23b9a0621be3 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -4673,14 +4673,14 @@ static int maybe_insert_hole(struct btrfs_root *root, struct btrfs_inode *inode,
  * these file extents so that btrfs_get_extent will return a EXTENT_MAP_HOLE for
  * the range between oldsize and size
  */
-int btrfs_cont_expand(struct inode *inode, loff_t oldsize, loff_t size)
+int btrfs_cont_expand(struct btrfs_inode *inode, loff_t oldsize, loff_t size)
 {
-	struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
-	struct btrfs_root *root = BTRFS_I(inode)->root;
-	struct extent_io_tree *io_tree = &BTRFS_I(inode)->io_tree;
+	struct btrfs_root *root = inode->root;
+	struct btrfs_fs_info *fs_info = root->fs_info;
+	struct extent_io_tree *io_tree = &inode->io_tree;
 	struct extent_map *em = NULL;
 	struct extent_state *cached_state = NULL;
-	struct extent_map_tree *em_tree = &BTRFS_I(inode)->extent_tree;
+	struct extent_map_tree *em_tree = &inode->extent_tree;
 	u64 hole_start = ALIGN(oldsize, fs_info->sectorsize);
 	u64 block_end = ALIGN(size, fs_info->sectorsize);
 	u64 last_byte;
@@ -4693,18 +4693,18 @@ int btrfs_cont_expand(struct inode *inode, loff_t oldsize, loff_t size)
 	 * rest of the block before we expand the i_size, otherwise we could
 	 * expose stale data.
 	 */
-	err = btrfs_truncate_block(BTRFS_I(inode), oldsize, 0, 0);
+	err = btrfs_truncate_block(inode, oldsize, 0, 0);
 	if (err)
 		return err;
 
 	if (size <= hole_start)
 		return 0;
 
-	btrfs_lock_and_flush_ordered_range(BTRFS_I(inode), hole_start,
-					   block_end - 1, &cached_state);
+	btrfs_lock_and_flush_ordered_range(inode, hole_start, block_end - 1,
+					   &cached_state);
 	cur_offset = hole_start;
 	while (1) {
-		em = btrfs_get_extent(BTRFS_I(inode), NULL, 0, cur_offset,
+		em = btrfs_get_extent(inode, NULL, 0, cur_offset,
 				      block_end - cur_offset);
 		if (IS_ERR(em)) {
 			err = PTR_ERR(em);
@@ -4718,22 +4718,22 @@ int btrfs_cont_expand(struct inode *inode, loff_t oldsize, loff_t size)
 		if (!test_bit(EXTENT_FLAG_PREALLOC, &em->flags)) {
 			struct extent_map *hole_em;
 
-			err = maybe_insert_hole(root, BTRFS_I(inode),
-						cur_offset, hole_size);
+			err = maybe_insert_hole(root, inode, cur_offset,
+						hole_size);
 			if (err)
 				break;
 
-			err = btrfs_inode_set_file_extent_range(BTRFS_I(inode),
-							cur_offset, hole_size);
+			err = btrfs_inode_set_file_extent_range(inode,
+								cur_offset, hole_size);
 			if (err)
 				break;
 
-			btrfs_drop_extent_cache(BTRFS_I(inode), cur_offset,
+			btrfs_drop_extent_cache(inode, cur_offset,
 						cur_offset + hole_size - 1, 0);
 			hole_em = alloc_extent_map();
 			if (!hole_em) {
 				set_bit(BTRFS_INODE_NEEDS_FULL_SYNC,
-					&BTRFS_I(inode)->runtime_flags);
+					&inode->runtime_flags);
 				goto next;
 			}
 			hole_em->start = cur_offset;
@@ -4753,14 +4753,13 @@ int btrfs_cont_expand(struct inode *inode, loff_t oldsize, loff_t size)
 				write_unlock(&em_tree->lock);
 				if (err != -EEXIST)
 					break;
-				btrfs_drop_extent_cache(BTRFS_I(inode),
-							cur_offset,
+				btrfs_drop_extent_cache(inode, cur_offset,
 							cur_offset +
 							hole_size - 1, 0);
 			}
 			free_extent_map(hole_em);
 		} else {
-			err = btrfs_inode_set_file_extent_range(BTRFS_I(inode),
+			err = btrfs_inode_set_file_extent_range(inode,
 							cur_offset, hole_size);
 			if (err)
 				break;
@@ -4808,7 +4807,7 @@ static int btrfs_setsize(struct inode *inode, struct iattr *attr)
 		 * this truncation.
 		 */
 		btrfs_drew_write_lock(&root->snapshot_lock);
-		ret = btrfs_cont_expand(inode, oldsize, newsize);
+		ret = btrfs_cont_expand(BTRFS_I(inode), oldsize, newsize);
 		if (ret) {
 			btrfs_drew_write_unlock(&root->snapshot_lock);
 			return ret;
diff --git a/fs/btrfs/reflink.c b/fs/btrfs/reflink.c
index f896dfba771b..be00315995ec 100644
--- a/fs/btrfs/reflink.c
+++ b/fs/btrfs/reflink.c
@@ -652,7 +652,7 @@ static noinline int btrfs_clone_files(struct file *file, struct file *file_src,
 	if (destoff > inode->i_size) {
 		const u64 wb_start = ALIGN_DOWN(inode->i_size, bs);
 
-		ret = btrfs_cont_expand(inode, inode->i_size, destoff);
+		ret = btrfs_cont_expand(BTRFS_I(inode), inode->i_size, destoff);
 		if (ret)
 			return ret;
 		/*
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [PATCH 13/14] btrfs: Make btrfs_drop_extents take btrfs_inode
  2020-11-02 14:48 [PATCH 00/14] Another batch of inode vs btrfs_inode cleanups Nikolay Borisov
                   ` (11 preceding siblings ...)
  2020-11-02 14:49 ` [PATCH 12/14] btrfs: Make btrfs_cont_expand " Nikolay Borisov
@ 2020-11-02 14:49 ` Nikolay Borisov
  2020-11-02 14:49 ` [PATCH 14/14] btrfs: Make btrfs_update_inode_fallback " Nikolay Borisov
                   ` (2 subsequent siblings)
  15 siblings, 0 replies; 21+ messages in thread
From: Nikolay Borisov @ 2020-11-02 14:49 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

Signed-off-by: Nikolay Borisov <nborisov@suse.com>
---
 fs/btrfs/ctree.h    | 4 ++--
 fs/btrfs/file.c     | 8 ++++----
 fs/btrfs/inode.c    | 3 +--
 fs/btrfs/reflink.c  | 3 ++-
 fs/btrfs/tree-log.c | 6 ++++--
 5 files changed, 13 insertions(+), 11 deletions(-)

diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h
index 879b80ef641e..8bf6d655f06b 100644
--- a/fs/btrfs/ctree.h
+++ b/fs/btrfs/ctree.h
@@ -3100,8 +3100,8 @@ int __btrfs_drop_extents(struct btrfs_trans_handle *trans,
 			 u32 extent_item_size,
 			 int *key_inserted);
 int btrfs_drop_extents(struct btrfs_trans_handle *trans,
-		       struct btrfs_root *root, struct inode *inode, u64 start,
-		       u64 end, int drop_cache);
+		       struct btrfs_root *root, struct btrfs_inode *inode,
+		       u64 start, u64 end, int drop_cache);
 int btrfs_replace_file_extents(struct inode *inode, struct btrfs_path *path,
 			   const u64 start, const u64 end,
 			   struct btrfs_replace_extent_info *extent_info,
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c
index 05374aa99da8..b993c528f2dd 100644
--- a/fs/btrfs/file.c
+++ b/fs/btrfs/file.c
@@ -1075,8 +1075,8 @@ int __btrfs_drop_extents(struct btrfs_trans_handle *trans,
 }
 
 int btrfs_drop_extents(struct btrfs_trans_handle *trans,
-		       struct btrfs_root *root, struct inode *inode, u64 start,
-		       u64 end, int drop_cache)
+		       struct btrfs_root *root, struct btrfs_inode *inode,
+		       u64 start, u64 end, int drop_cache)
 {
 	struct btrfs_path *path;
 	int ret;
@@ -1084,8 +1084,8 @@ int btrfs_drop_extents(struct btrfs_trans_handle *trans,
 	path = btrfs_alloc_path();
 	if (!path)
 		return -ENOMEM;
-	ret = __btrfs_drop_extents(trans, root, BTRFS_I(inode), path, start,
-				   end, NULL, drop_cache, 0, 0, NULL);
+	ret = __btrfs_drop_extents(trans, root, inode, path, start, end, NULL,
+				   drop_cache, 0, 0, NULL);
 	btrfs_free_path(path);
 	return ret;
 }
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 23b9a0621be3..e620c278984c 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -4649,8 +4649,7 @@ static int maybe_insert_hole(struct btrfs_root *root, struct btrfs_inode *inode,
 	if (IS_ERR(trans))
 		return PTR_ERR(trans);
 
-	ret = btrfs_drop_extents(trans, root, &inode->vfs_inode, offset,
-				 offset + len, 1);
+	ret = btrfs_drop_extents(trans, root, inode, offset, offset + len, 1);
 	if (ret) {
 		btrfs_abort_transaction(trans, ret);
 		btrfs_end_transaction(trans);
diff --git a/fs/btrfs/reflink.c b/fs/btrfs/reflink.c
index be00315995ec..b3cc1fdc6e48 100644
--- a/fs/btrfs/reflink.c
+++ b/fs/btrfs/reflink.c
@@ -252,7 +252,8 @@ static int clone_copy_inline_extent(struct inode *dst,
 		trans = NULL;
 		goto out;
 	}
-	ret = btrfs_drop_extents(trans, root, dst, drop_start, aligned_end, 1);
+	ret = btrfs_drop_extents(trans, root, BTRFS_I(dst), drop_start,
+				 aligned_end, 1);
 	if (ret)
 		goto out;
 	ret = btrfs_insert_empty_item(trans, root, path, new_key, size);
diff --git a/fs/btrfs/tree-log.c b/fs/btrfs/tree-log.c
index baa2c4cfd293..71bd0f08543b 100644
--- a/fs/btrfs/tree-log.c
+++ b/fs/btrfs/tree-log.c
@@ -653,7 +653,8 @@ static noinline int replay_one_extent(struct btrfs_trans_handle *trans,
 	btrfs_release_path(path);
 
 	/* drop any overlapping extents */
-	ret = btrfs_drop_extents(trans, root, inode, start, extent_end, 1);
+	ret = btrfs_drop_extents(trans, root, BTRFS_I(inode), start, extent_end,
+				 1);
 	if (ret)
 		goto out;
 
@@ -2586,7 +2587,8 @@ static int replay_one_buffer(struct btrfs_root *log, struct extent_buffer *eb,
 				}
 				from = ALIGN(i_size_read(inode),
 					     root->fs_info->sectorsize);
-				ret = btrfs_drop_extents(wc->trans, root, inode,
+				ret = btrfs_drop_extents(wc->trans, root,
+							 BTRFS_I(inode),
 							 from, (u64)-1, 1);
 				if (!ret) {
 					/* Update the inode's nbytes. */
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [PATCH 14/14] btrfs: Make btrfs_update_inode_fallback take btrfs_inode
  2020-11-02 14:48 [PATCH 00/14] Another batch of inode vs btrfs_inode cleanups Nikolay Borisov
                   ` (12 preceding siblings ...)
  2020-11-02 14:49 ` [PATCH 13/14] btrfs: Make btrfs_drop_extents " Nikolay Borisov
@ 2020-11-02 14:49 ` Nikolay Borisov
  2020-11-02 15:48 ` [PATCH 00/14] Another batch of inode vs btrfs_inode cleanups Johannes Thumshirn
  2020-11-05 16:21 ` David Sterba
  15 siblings, 0 replies; 21+ messages in thread
From: Nikolay Borisov @ 2020-11-02 14:49 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

Signed-off-by: Nikolay Borisov <nborisov@suse.com>
---
 fs/btrfs/ctree.h       |  3 ++-
 fs/btrfs/inode.c       | 15 +++++++--------
 fs/btrfs/transaction.c |  3 ++-
 3 files changed, 11 insertions(+), 10 deletions(-)

diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h
index 8bf6d655f06b..a61f01d3d5d1 100644
--- a/fs/btrfs/ctree.h
+++ b/fs/btrfs/ctree.h
@@ -3040,7 +3040,8 @@ struct extent_map *btrfs_get_extent(struct btrfs_inode *inode,
 int btrfs_update_inode(struct btrfs_trans_handle *trans,
 		       struct btrfs_root *root, struct btrfs_inode *inode);
 int btrfs_update_inode_fallback(struct btrfs_trans_handle *trans,
-				struct btrfs_root *root, struct inode *inode);
+				struct btrfs_root *root,
+				struct btrfs_inode *inode);
 int btrfs_orphan_add(struct btrfs_trans_handle *trans,
 		struct btrfs_inode *inode);
 int btrfs_orphan_cleanup(struct btrfs_root *root);
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index e620c278984c..869fdfc93d69 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -2617,7 +2617,7 @@ static int btrfs_finish_ordered_io(struct btrfs_ordered_extent *ordered_extent)
 			goto out;
 		}
 		trans->block_rsv = &inode->block_rsv;
-		ret = btrfs_update_inode_fallback(trans, root, &inode->vfs_inode);
+		ret = btrfs_update_inode_fallback(trans, root, inode);
 		if (ret) /* -ENOMEM or corruption */
 			btrfs_abort_transaction(trans, ret);
 		goto out;
@@ -2670,7 +2670,7 @@ static int btrfs_finish_ordered_io(struct btrfs_ordered_extent *ordered_extent)
 	}
 
 	btrfs_inode_safe_disk_i_size_write(inode, 0);
-	ret = btrfs_update_inode_fallback(trans, root, &inode->vfs_inode);
+	ret = btrfs_update_inode_fallback(trans, root, inode);
 	if (ret) { /* -ENOMEM or corruption */
 		btrfs_abort_transaction(trans, ret);
 		goto out;
@@ -3514,15 +3514,14 @@ noinline int btrfs_update_inode(struct btrfs_trans_handle *trans,
 	return btrfs_update_inode_item(trans, root, inode);
 }
 
-noinline int btrfs_update_inode_fallback(struct btrfs_trans_handle *trans,
-					 struct btrfs_root *root,
-					 struct inode *inode)
+int btrfs_update_inode_fallback(struct btrfs_trans_handle *trans,
+			    struct btrfs_root *root, struct btrfs_inode *inode)
 {
 	int ret;
 
-	ret = btrfs_update_inode(trans, root, BTRFS_I(inode));
+	ret = btrfs_update_inode(trans, root, inode);
 	if (ret == -ENOSPC)
-		return btrfs_update_inode_item(trans, root, BTRFS_I(inode));
+		return btrfs_update_inode_item(trans, root, inode);
 	return ret;
 }
 
@@ -3794,7 +3793,7 @@ static int btrfs_unlink_subvol(struct btrfs_trans_handle *trans,
 	btrfs_i_size_write(BTRFS_I(dir), dir->i_size - name_len * 2);
 	inode_inc_iversion(dir);
 	dir->i_mtime = dir->i_ctime = current_time(dir);
-	ret = btrfs_update_inode_fallback(trans, root, dir);
+	ret = btrfs_update_inode_fallback(trans, root, BTRFS_I(dir));
 	if (ret)
 		btrfs_abort_transaction(trans, ret);
 out:
diff --git a/fs/btrfs/transaction.c b/fs/btrfs/transaction.c
index 3a7d26ba2da2..5c9de63ad166 100644
--- a/fs/btrfs/transaction.c
+++ b/fs/btrfs/transaction.c
@@ -1679,7 +1679,8 @@ static noinline int create_pending_snapshot(struct btrfs_trans_handle *trans,
 					 dentry->d_name.len * 2);
 	parent_inode->i_mtime = parent_inode->i_ctime =
 		current_time(parent_inode);
-	ret = btrfs_update_inode_fallback(trans, parent_root, parent_inode);
+	ret = btrfs_update_inode_fallback(trans, parent_root,
+					  BTRFS_I(parent_inode));
 	if (ret) {
 		btrfs_abort_transaction(trans, ret);
 		goto fail;
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 21+ messages in thread

* Re: [PATCH 00/14] Another batch of inode vs btrfs_inode cleanups
  2020-11-02 14:48 [PATCH 00/14] Another batch of inode vs btrfs_inode cleanups Nikolay Borisov
                   ` (13 preceding siblings ...)
  2020-11-02 14:49 ` [PATCH 14/14] btrfs: Make btrfs_update_inode_fallback " Nikolay Borisov
@ 2020-11-02 15:48 ` Johannes Thumshirn
  2020-11-02 16:10   ` David Sterba
  2020-11-05 16:21 ` David Sterba
  15 siblings, 1 reply; 21+ messages in thread
From: Johannes Thumshirn @ 2020-11-02 15:48 UTC (permalink / raw)
  To: Nikolay Borisov, linux-btrfs

On 02/11/2020 15:49, Nikolay Borisov wrote:
> Here is another batch which  gets use closer to unified btrfs_inode vs inode
> usage in functions.
> 
> Nikolay Borisov (14):
>   btrfs: Make btrfs_inode_safe_disk_i_size_write take btrfs_inode
>   btrfs: Make insert_prealloc_file_extent take btrfs_inode
>   btrfs: Make btrfs_truncate_inode_items take btrfs_inode
>   btrfs: Make btrfs_finish_ordered_io btrfs_inode-centric
>   btrfs: Make btrfs_delayed_update_inode take btrfs_inode
>   btrfs: Make btrfs_update_inode_item take btrfs_inode
>   btrfs: Make btrfs_update_inode take btrfs_inode
>   btrfs: Make maybe_insert_hole take btrfs_inode
>   btrfs: Make find_first_non_hole take btrfs_inode
>   btrfs: Make btrfs_insert_replace_extent take btrfs_inode
>   btrfs: Make btrfs_truncate_block take btrfs_inode
>   btrfs: Make btrfs_cont_expand take btrfs_inode
>   btrfs: Make btrfs_drop_extents take btrfs_inode
>   btrfs: Make btrfs_update_inode_fallback take btrfs_inode
> 
>  fs/btrfs/block-group.c      |   2 +-
>  fs/btrfs/ctree.h            |  21 +--
>  fs/btrfs/delayed-inode.c    |  13 +-
>  fs/btrfs/delayed-inode.h    |   3 +-
>  fs/btrfs/file-item.c        |  18 +--
>  fs/btrfs/file.c             |  88 +++++++------
>  fs/btrfs/free-space-cache.c |   8 +-
>  fs/btrfs/inode-map.c        |   2 +-
>  fs/btrfs/inode.c            | 249 ++++++++++++++++++------------------
>  fs/btrfs/ioctl.c            |   6 +-
>  fs/btrfs/reflink.c          |   9 +-
>  fs/btrfs/transaction.c      |   3 +-
>  fs/btrfs/tree-log.c         |  24 ++--
>  fs/btrfs/xattr.c            |   4 +-
>  14 files changed, 233 insertions(+), 217 deletions(-)
> 
> --
> 2.25.1
> 
> 


Code wise this looks good to me. FYI patches 11/14 and 12/14 don't 
apply cleanly on today's misc-next (at least for me).

For the whole series:
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH 00/14] Another batch of inode vs btrfs_inode cleanups
  2020-11-02 15:48 ` [PATCH 00/14] Another batch of inode vs btrfs_inode cleanups Johannes Thumshirn
@ 2020-11-02 16:10   ` David Sterba
  2020-11-02 16:25     ` Johannes Thumshirn
  0 siblings, 1 reply; 21+ messages in thread
From: David Sterba @ 2020-11-02 16:10 UTC (permalink / raw)
  To: Johannes Thumshirn; +Cc: Nikolay Borisov, linux-btrfs

On Mon, Nov 02, 2020 at 03:48:52PM +0000, Johannes Thumshirn wrote:
> On 02/11/2020 15:49, Nikolay Borisov wrote:
> > Here is another batch which  gets use closer to unified btrfs_inode vs inode
> > usage in functions.
> > 
> > Nikolay Borisov (14):
> >   btrfs: Make btrfs_inode_safe_disk_i_size_write take btrfs_inode
> >   btrfs: Make insert_prealloc_file_extent take btrfs_inode
> >   btrfs: Make btrfs_truncate_inode_items take btrfs_inode
> >   btrfs: Make btrfs_finish_ordered_io btrfs_inode-centric
> >   btrfs: Make btrfs_delayed_update_inode take btrfs_inode
> >   btrfs: Make btrfs_update_inode_item take btrfs_inode
> >   btrfs: Make btrfs_update_inode take btrfs_inode
> >   btrfs: Make maybe_insert_hole take btrfs_inode
> >   btrfs: Make find_first_non_hole take btrfs_inode
> >   btrfs: Make btrfs_insert_replace_extent take btrfs_inode
> >   btrfs: Make btrfs_truncate_block take btrfs_inode
> >   btrfs: Make btrfs_cont_expand take btrfs_inode
> >   btrfs: Make btrfs_drop_extents take btrfs_inode
> >   btrfs: Make btrfs_update_inode_fallback take btrfs_inode
> > 
> >  fs/btrfs/block-group.c      |   2 +-
> >  fs/btrfs/ctree.h            |  21 +--
> >  fs/btrfs/delayed-inode.c    |  13 +-
> >  fs/btrfs/delayed-inode.h    |   3 +-
> >  fs/btrfs/file-item.c        |  18 +--
> >  fs/btrfs/file.c             |  88 +++++++------
> >  fs/btrfs/free-space-cache.c |   8 +-
> >  fs/btrfs/inode-map.c        |   2 +-
> >  fs/btrfs/inode.c            | 249 ++++++++++++++++++------------------
> >  fs/btrfs/ioctl.c            |   6 +-
> >  fs/btrfs/reflink.c          |   9 +-
> >  fs/btrfs/transaction.c      |   3 +-
> >  fs/btrfs/tree-log.c         |  24 ++--
> >  fs/btrfs/xattr.c            |   4 +-
> >  14 files changed, 233 insertions(+), 217 deletions(-)
> > 
> > --
> > 2.25.1
> > 
> > 
> 
> 
> Code wise this looks good to me. FYI patches 11/14 and 12/14 don't 
> apply cleanly on today's misc-next (at least for me).

We're expecting conflicts, there are about 50+ patches in for-next where
it could collide but I'd like to see what's the scope so I could
better schedule the order.

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH 00/14] Another batch of inode vs btrfs_inode cleanups
  2020-11-02 16:10   ` David Sterba
@ 2020-11-02 16:25     ` Johannes Thumshirn
  0 siblings, 0 replies; 21+ messages in thread
From: Johannes Thumshirn @ 2020-11-02 16:25 UTC (permalink / raw)
  To: dsterba; +Cc: Nikolay Borisov, linux-btrfs

On 02/11/2020 17:12, David Sterba wrote:
> On Mon, Nov 02, 2020 at 03:48:52PM +0000, Johannes Thumshirn wrote:
>> On 02/11/2020 15:49, Nikolay Borisov wrote:
>>> Here is another batch which  gets use closer to unified btrfs_inode vs inode
>>> usage in functions.
>>>
>>> Nikolay Borisov (14):
>>>   btrfs: Make btrfs_inode_safe_disk_i_size_write take btrfs_inode
>>>   btrfs: Make insert_prealloc_file_extent take btrfs_inode
>>>   btrfs: Make btrfs_truncate_inode_items take btrfs_inode
>>>   btrfs: Make btrfs_finish_ordered_io btrfs_inode-centric
>>>   btrfs: Make btrfs_delayed_update_inode take btrfs_inode
>>>   btrfs: Make btrfs_update_inode_item take btrfs_inode
>>>   btrfs: Make btrfs_update_inode take btrfs_inode
>>>   btrfs: Make maybe_insert_hole take btrfs_inode
>>>   btrfs: Make find_first_non_hole take btrfs_inode
>>>   btrfs: Make btrfs_insert_replace_extent take btrfs_inode
>>>   btrfs: Make btrfs_truncate_block take btrfs_inode
>>>   btrfs: Make btrfs_cont_expand take btrfs_inode
>>>   btrfs: Make btrfs_drop_extents take btrfs_inode
>>>   btrfs: Make btrfs_update_inode_fallback take btrfs_inode
>>>
>>>  fs/btrfs/block-group.c      |   2 +-
>>>  fs/btrfs/ctree.h            |  21 +--
>>>  fs/btrfs/delayed-inode.c    |  13 +-
>>>  fs/btrfs/delayed-inode.h    |   3 +-
>>>  fs/btrfs/file-item.c        |  18 +--
>>>  fs/btrfs/file.c             |  88 +++++++------
>>>  fs/btrfs/free-space-cache.c |   8 +-
>>>  fs/btrfs/inode-map.c        |   2 +-
>>>  fs/btrfs/inode.c            | 249 ++++++++++++++++++------------------
>>>  fs/btrfs/ioctl.c            |   6 +-
>>>  fs/btrfs/reflink.c          |   9 +-
>>>  fs/btrfs/transaction.c      |   3 +-
>>>  fs/btrfs/tree-log.c         |  24 ++--
>>>  fs/btrfs/xattr.c            |   4 +-
>>>  14 files changed, 233 insertions(+), 217 deletions(-)
>>>
>>> --
>>> 2.25.1
>>>
>>>
>>
>>
>> Code wise this looks good to me. FYI patches 11/14 and 12/14 don't 
>> apply cleanly on today's misc-next (at least for me).
> 
> We're expecting conflicts, there are about 50+ patches in for-next where
> it could collide but I'd like to see what's the scope so I could
> better schedule the order.
> 

For 11:

error: while searching for:
        unlock_extent_cached(io_tree, block_start, block_end, &cached_state);

        if (only_release_metadata)
                set_extent_bit(&BTRFS_I(inode)->io_tree, block_start,
                                block_end, EXTENT_NORESERVE, NULL, NULL,
                                          one NULL too much ~~^
                                GFP_NOFS);

out_unlock:
        if (ret) {
                if (only_release_metadata)
                        btrfs_delalloc_release_metadata(BTRFS_I(inode),
                                        blocksize, true);
                else
                        btrfs_delalloc_release_space(BTRFS_I(inode), data_reserved,
                                        block_start, blocksize, true);
        }
        btrfs_delalloc_release_extents(BTRFS_I(inode), blocksize);
        unlock_page(page);
        put_page(page);
out:
        if (only_release_metadata)
                btrfs_check_nocow_unlock(BTRFS_I(inode));
        extent_changeset_free(data_reserved);
        return ret;
}

error: patch failed: fs/btrfs/inode.c:4601
Hunk #7 succeeded at 4763 (offset 70 lines).
Hunk #8 succeeded at 8428 (offset -68 lines).
Applied patch fs/btrfs/ctree.h cleanly.
Applied patch fs/btrfs/file.c cleanly.
Applying patch fs/btrfs/inode.c with 1 reject...
Hunk #1 applied cleanly.
Hunk #2 applied cleanly.
Hunk #3 applied cleanly.
Hunk #4 applied cleanly.
Hunk #5 applied cleanly.
Rejected hunk #6.
Hunk #7 applied cleanly.
Hunk #8 applied cleanly.
Patch failed at 0011 btrfs: Make btrfs_truncate_block take btrfs_inode

For 12:
Hunk #1 succeeded at 3049 (offset 5 lines).
Checking patch fs/btrfs/file.c...
error: while searching for:
                /* Expand hole size to cover write data, preventing empty gap */
                end_pos = round_up(pos + count,
                                   fs_info->sectorsize);

No linebreak after the comma but a blank line in misc-next

                err = btrfs_cont_expand(inode, oldsize, end_pos);
                if (err) {
                        inode_unlock(inode);
                        goto out;

error: patch failed: fs/btrfs/file.c:1989
Hunk #2 succeeded at 3382 (offset 15 lines).
Checking patch fs/btrfs/inode.c...
Hunk #1 succeeded at 4742 (offset 69 lines).
Hunk #2 succeeded at 4762 (offset 69 lines).
Hunk #3 succeeded at 4787 (offset 69 lines).
Hunk #4 succeeded at 4822 (offset 69 lines).
Hunk #5 succeeded at 4876 (offset 69 lines).
Checking patch fs/btrfs/reflink.c...
Applied patch fs/btrfs/ctree.h cleanly.
Applying patch fs/btrfs/file.c with 1 reject...
Rejected hunk #1.
Hunk #2 applied cleanly.
Applied patch fs/btrfs/inode.c cleanly.
Applied patch fs/btrfs/reflink.c cleanly.
Patch failed at 0012 btrfs: Make btrfs_cont_expand take btrfs_inode

Overall easy to fixup when applying or rebasing

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH 03/14] btrfs: Make btrfs_truncate_inode_items take btrfs_inode
  2020-11-02 14:48 ` [PATCH 03/14] btrfs: Make btrfs_truncate_inode_items " Nikolay Borisov
@ 2020-11-05 14:45   ` David Sterba
  0 siblings, 0 replies; 21+ messages in thread
From: David Sterba @ 2020-11-05 14:45 UTC (permalink / raw)
  To: Nikolay Borisov; +Cc: linux-btrfs

On Mon, Nov 02, 2020 at 04:48:55PM +0200, Nikolay Borisov wrote:
> @@ -4297,7 +4296,8 @@ int btrfs_truncate_inode_items(struct btrfs_trans_handle *trans,
>  				if (test_bit(BTRFS_ROOT_SHAREABLE,
>  					     &root->state) &&
>  				    extent_start != 0)
> -					inode_sub_bytes(inode, num_dec);
> +					inode_sub_bytes(&inode->vfs_info,
> +							num_dec);

  CC [M]  fs/btrfs/tree-log.o
fs/btrfs/inode.c: In function ‘btrfs_truncate_inode_items’:
fs/btrfs/inode.c:4364:30: error: ‘struct btrfs_inode’ has no member named ‘vfs_info’; did you mean ‘vfs_inode’?
 4364 |      inode_sub_bytes(&inode->vfs_info,
      |                              ^~~~~~~~
      |                              vfs_inode

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH 00/14] Another batch of inode vs btrfs_inode cleanups
  2020-11-02 14:48 [PATCH 00/14] Another batch of inode vs btrfs_inode cleanups Nikolay Borisov
                   ` (14 preceding siblings ...)
  2020-11-02 15:48 ` [PATCH 00/14] Another batch of inode vs btrfs_inode cleanups Johannes Thumshirn
@ 2020-11-05 16:21 ` David Sterba
  2020-11-12 18:25   ` David Sterba
  15 siblings, 1 reply; 21+ messages in thread
From: David Sterba @ 2020-11-05 16:21 UTC (permalink / raw)
  To: Nikolay Borisov; +Cc: linux-btrfs

On Mon, Nov 02, 2020 at 04:48:52PM +0200, Nikolay Borisov wrote:
> Here is another batch which  gets use closer to unified btrfs_inode vs inode
> usage in functions.
> 
> Nikolay Borisov (14):
>   btrfs: Make btrfs_inode_safe_disk_i_size_write take btrfs_inode
>   btrfs: Make insert_prealloc_file_extent take btrfs_inode
>   btrfs: Make btrfs_truncate_inode_items take btrfs_inode
>   btrfs: Make btrfs_finish_ordered_io btrfs_inode-centric
>   btrfs: Make btrfs_delayed_update_inode take btrfs_inode
>   btrfs: Make btrfs_update_inode_item take btrfs_inode
>   btrfs: Make btrfs_update_inode take btrfs_inode
>   btrfs: Make maybe_insert_hole take btrfs_inode
>   btrfs: Make find_first_non_hole take btrfs_inode
>   btrfs: Make btrfs_insert_replace_extent take btrfs_inode
>   btrfs: Make btrfs_truncate_block take btrfs_inode
>   btrfs: Make btrfs_cont_expand take btrfs_inode
>   btrfs: Make btrfs_drop_extents take btrfs_inode
>   btrfs: Make btrfs_update_inode_fallback take btrfs_inode

With a few fixups it's now in a topic branch and it does not conflict
with the pending branches. I will postpone merging it until we have the
core changes in (like the preemptive flushing and such) but so far it
seems to be smoother than expected. Thanks.

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH 00/14] Another batch of inode vs btrfs_inode cleanups
  2020-11-05 16:21 ` David Sterba
@ 2020-11-12 18:25   ` David Sterba
  0 siblings, 0 replies; 21+ messages in thread
From: David Sterba @ 2020-11-12 18:25 UTC (permalink / raw)
  To: dsterba, Nikolay Borisov, linux-btrfs

On Thu, Nov 05, 2020 at 05:21:12PM +0100, David Sterba wrote:
> On Mon, Nov 02, 2020 at 04:48:52PM +0200, Nikolay Borisov wrote:
> > Here is another batch which  gets use closer to unified btrfs_inode vs inode
> > usage in functions.
> > 
> > Nikolay Borisov (14):
> >   btrfs: Make btrfs_inode_safe_disk_i_size_write take btrfs_inode
> >   btrfs: Make insert_prealloc_file_extent take btrfs_inode
> >   btrfs: Make btrfs_truncate_inode_items take btrfs_inode
> >   btrfs: Make btrfs_finish_ordered_io btrfs_inode-centric
> >   btrfs: Make btrfs_delayed_update_inode take btrfs_inode
> >   btrfs: Make btrfs_update_inode_item take btrfs_inode
> >   btrfs: Make btrfs_update_inode take btrfs_inode
> >   btrfs: Make maybe_insert_hole take btrfs_inode
> >   btrfs: Make find_first_non_hole take btrfs_inode
> >   btrfs: Make btrfs_insert_replace_extent take btrfs_inode
> >   btrfs: Make btrfs_truncate_block take btrfs_inode
> >   btrfs: Make btrfs_cont_expand take btrfs_inode
> >   btrfs: Make btrfs_drop_extents take btrfs_inode
> >   btrfs: Make btrfs_update_inode_fallback take btrfs_inode
> 
> With a few fixups it's now in a topic branch and it does not conflict
> with the pending branches. I will postpone merging it until we have the
> core changes in (like the preemptive flushing and such) but so far it
> seems to be smoother than expected. Thanks.

Moved to misc-next.

^ permalink raw reply	[flat|nested] 21+ messages in thread

end of thread, other threads:[~2020-11-12 18:27 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-11-02 14:48 [PATCH 00/14] Another batch of inode vs btrfs_inode cleanups Nikolay Borisov
2020-11-02 14:48 ` [PATCH 01/14] btrfs: Make btrfs_inode_safe_disk_i_size_write take btrfs_inode Nikolay Borisov
2020-11-02 14:48 ` [PATCH 02/14] btrfs: Make insert_prealloc_file_extent " Nikolay Borisov
2020-11-02 14:48 ` [PATCH 03/14] btrfs: Make btrfs_truncate_inode_items " Nikolay Borisov
2020-11-05 14:45   ` David Sterba
2020-11-02 14:48 ` [PATCH 04/14] btrfs: Make btrfs_finish_ordered_io btrfs_inode-centric Nikolay Borisov
2020-11-02 14:48 ` [PATCH 05/14] btrfs: Make btrfs_delayed_update_inode take btrfs_inode Nikolay Borisov
2020-11-02 14:48 ` [PATCH 06/14] btrfs: Make btrfs_update_inode_item " Nikolay Borisov
2020-11-02 14:48 ` [PATCH 07/14] btrfs: Make btrfs_update_inode " Nikolay Borisov
2020-11-02 14:49 ` [PATCH 08/14] btrfs: Make maybe_insert_hole " Nikolay Borisov
2020-11-02 14:49 ` [PATCH 09/14] btrfs: Make find_first_non_hole " Nikolay Borisov
2020-11-02 14:49 ` [PATCH 10/14] btrfs: Make btrfs_insert_replace_extent " Nikolay Borisov
2020-11-02 14:49 ` [PATCH 11/14] btrfs: Make btrfs_truncate_block " Nikolay Borisov
2020-11-02 14:49 ` [PATCH 12/14] btrfs: Make btrfs_cont_expand " Nikolay Borisov
2020-11-02 14:49 ` [PATCH 13/14] btrfs: Make btrfs_drop_extents " Nikolay Borisov
2020-11-02 14:49 ` [PATCH 14/14] btrfs: Make btrfs_update_inode_fallback " Nikolay Borisov
2020-11-02 15:48 ` [PATCH 00/14] Another batch of inode vs btrfs_inode cleanups Johannes Thumshirn
2020-11-02 16:10   ` David Sterba
2020-11-02 16:25     ` Johannes Thumshirn
2020-11-05 16:21 ` David Sterba
2020-11-12 18:25   ` David Sterba

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).