linux-btrfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 00/46] Trivial BTRFS_I removal
@ 2020-06-01 15:36 Nikolay Borisov
  2020-06-01 15:36 ` [PATCH 01/46] btrfs: Make __btrfs_add_ordered_extent take struct btrfs_inode Nikolay Borisov
                   ` (47 more replies)
  0 siblings, 48 replies; 56+ messages in thread
From: Nikolay Borisov @ 2020-06-01 15:36 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

Here are 4 dozen patches that "bubble up" the usage of BTRFS_I from internal
functions towards the external interfaces. Still far away from a complete
cleanup but a step in the right direction. The primary goal is to unify the
internal interfaces by always taking btrfs_inode and only use vfs_inode where
it makes sense. Also reduce the clutter and line lenghts that BTRFS_I brings.

Despite being trivial I tested the series with xfstest and found no regressions
compared to current misc-next.

As a bonus, this series also results in a slight, overall, code decrease:

add/remove: 0/0 grow/shrink: 26/37 up/down: 301/-349 (-48)
Function                                     old     new   delta
btrfs_fallocate                             4371    4426     +55
btrfs_run_delalloc_range                    1201    1232     +31
writepage_delalloc                           325     345     +20
btrfs_dio_iomap_begin                       1838    1856     +18
cow_file_range_inline.constprop             1738    1753     +15
btrfs_truncate_block                        1246    1261     +15
btrfs_test_inodes                           2238    2253     +15
btrfs_submit_direct                         1249    1263     +14
__btrfs_write_out_cache                     1126    1140     +14
submit_compressed_extents                   1161    1174     +13
btrfs_qgroup_reserve_data                    718     729     +11
__btrfs_qgroup_release_data                  789     799     +10
btrfs_submit_compressed_write                854     863      +9
btrfs_finish_ordered_io                     1994    2003      +9
btrfs_submit_bio_start_direct_io              24      31      +7
btrfs_submit_bio_start                        23      30      +7
btrfs_evict_inode                           1324    1331      +7
btrfs_dio_private_put                        150     157      +7
btrfs_find_ordered_sum                       378     383      +5
cache_save_setup                             911     915      +4
btrfs_submit_bio_hook                        372     376      +4
btrfs_drop_extents                           128     132      +4
extent_clear_unlock_delalloc                 105     108      +3
compress_file_range                         2064    2066      +2
btrfs_dio_iomap_end                          295     296      +1
__UNIQUE_ID_file828                           26      27      +1
btrfs_reloc_clone_csums                      258     257      -1
btrfs_qgroup_check_reserved_leak.cold         42      41      -1
btrfs_punch_hole_range                      2048    2047      -1
btrfs_dec_test_first_ordered_pending         550     549      -1
btrfs_csum_one_bio                          1268    1267      -1
cluster_pages_for_defrag                    1896    1894      -2
btrfs_invalidatepage                         725     723      -2
get_extent_allocation_hint                   147     144      -3
btrfs_check_data_free_space                  154     151      -3
__btrfs_add_ordered_extent                  1378    1375      -3
btrfs_qgroup_check_reserved_leak             210     206      -4
btrfs_free_reserved_data_space                98      94      -4
btrfs_destroy_inode                          502     498      -4
btrfs_delalloc_reserve_space                 103      99      -4
__extent_writepage_io.cold                    48      44      -4
btrfs_create_dio_extent                      198     193      -5
btrfs_buffered_write.isra                   1898    1892      -6
prealloc_file_extent_cluster                 549     542      -7
btrfs_log_changed_extents.isra              2799    2792      -7
btrfs_dirty_pages                            677     670      -7
btrfs_delalloc_release_space                  65      58      -7
__extent_writepage_io                        893     885      -8
insert_reserved_file_extent.constprop        740     730     -10
fallback_to_cow                             1060    1050     -10
btrfs_save_ino_cache                        1600    1590     -10
__btrfs_prealloc_file_range                 1185    1175     -10
btrfs_free_reserved_data_space_noquota       642     631     -11
create_io_em                                 347     334     -13
btrfs_writepage_fixup_worker                 954     940     -14
btrfs_page_mkwrite                          1336    1322     -14
relocate_file_extent_cluster                1237    1221     -16
copy_inline_to_page                          742     724     -18
__endio_write_update_ordered                 333     313     -20
__btrfs_drop_extents                        3744    3720     -24
run_delalloc_nocow                          2538    2512     -26
__extent_writepage                          1022     992     -30
cow_file_range                              1034     996     -38
Total: Before=1080235, After=1080187, chg -0.00%

Nikolay Borisov (46):
  btrfs: Make __btrfs_add_ordered_extent take struct btrfs_inode
  btrfs: Make get_extent_allocation_hint take btrfs_inode
  btrfs: Make btrfs_lookup_ordered_extent take btrfs_inode
  btrfs: Make btrfs_reloc_clone_csums take btrfs_inode
  btrfs: Make create_io_em take btrfs_inode
  btrfs: Make extent_clear_unlock_delalloc take btrfs_inode
  btrfs: Make btrfs_csum_one_bio takae btrfs_inode
  btrfs: Make __btrfs_drop_extents take btrfs_inode
  btrfs: Make qgroup_free_reserved_data take btrfs_inode
  btrfs: Make __btrfs_qgroup_release_data take btrfs_inode
  btrfs: Make btrfs_qgroup_free_data take btrfs_inode
  btrfs: Make cow_file_range_inline take btrfs_inode
  btrfs: Make btrfs_add_ordered_extent take btrfs_inode
  btrfs: Make cow_file_range take btrfs_inode
  btrfs: Make btrfs_add_ordered_extent_compress take btrfs_inode
  btrfs: Make btrfs_submit_compressed_write take btrfs_inode
  btrfs: Make submit_compressed_extents take btrfs_inode
  btrfs: Make btrfs_qgroup_release_data take btrfs_inode
  btrfs: Make insert_reserved_file_extent take btrfs_inode
  btrfs: Make fallback_to_cow take btrfs_inode
  btrfs: Make run_delalloc_nocow take btrfs_inode
  btrfs: Make cow_file_range_async take btrfs_inode
  btrfs: Make btrfs_dec_test_first_ordered_pending take btrfs_inode
  btrfs: Make __endio_write_update_ordered take btrfs_inode
  btrfs: Make btrfs_cleanup_ordered_extents take btrfs_inode
  btrfs: Make inode_can_compress take btrfs_inode
  btrfs: Make inode_need_compress take btrfs_inode
  btrfs: Make need_force_cow take btrfs_inode
  btrfs: Make btrfs_run_delalloc_range take btrfs_inode
  btrfs: Make btrfs_add_ordered_extent_dio take btrfs_inode
  btrfs: Make btrfs_create_dio_extent take btrfs_inode
  btrfs: Make btrfs_new_extent_direct take btrfs_inode
  btrfs: Make __extent_writepage_io take btrfs_inode
  btrfs: Make writepage_delalloc take btrfs_inode
  btrfs: Make btrfs_set_extent_delalloc take btrfs_inode
  btrfs: Make btrfs_dirty_pages take btrfs_inode
  btrfs: Make btrfs_qgroup_reserve_data take btrfs_inode
  btrfs: Make btrfs_free_reserved_data_space_noquota take btrfs_fs_info
  btrfs: Make btrfs_free_reserved_data_space take btrfs_inode
  btrfs: Make btrfs_delalloc_release_space take btrfs_inode
  btrfs: Make btrfs_check_data_free_space take btrfs_inode
  btrfs: Make btrfs_delalloc_reserve_space take btrfs_inode
  btrfs: Remove BTRFS_I calls in btrfs_writepage_fixup_worker
  btrfs: Make prealloc_file_extent_cluster take btrfs_inode
  btrfs: make btrfs_set_inode_last_trans take btrfs_inode
  btrfs: Make btrfs_qgroup_check_reserved_leak take btrfs_inode

 fs/btrfs/block-group.c       |   3 +-
 fs/btrfs/compression.c       |  10 +-
 fs/btrfs/compression.h       |   4 +-
 fs/btrfs/ctree.h             |  14 +-
 fs/btrfs/delalloc-space.c    |  33 ++--
 fs/btrfs/delalloc-space.h    |  12 +-
 fs/btrfs/extent_io.c         |  32 ++--
 fs/btrfs/extent_io.h         |   2 +-
 fs/btrfs/file-item.c         |   4 +-
 fs/btrfs/file.c              |  73 ++++----
 fs/btrfs/free-space-cache.c  |   5 +-
 fs/btrfs/inode-map.c         |   3 +-
 fs/btrfs/inode.c             | 351 +++++++++++++++++------------------
 fs/btrfs/ioctl.c             |   8 +-
 fs/btrfs/ordered-data.c      |  38 ++--
 fs/btrfs/ordered-data.h      |  10 +-
 fs/btrfs/qgroup.c            |  49 +++--
 fs/btrfs/qgroup.h            |  12 +-
 fs/btrfs/reflink.c           |  11 +-
 fs/btrfs/relocation.c        |  32 ++--
 fs/btrfs/tests/inode-tests.c |  14 +-
 fs/btrfs/transaction.h       |  12 +-
 fs/btrfs/tree-log.c          |   4 +-
 23 files changed, 369 insertions(+), 367 deletions(-)

--
2.17.1


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

* [PATCH 01/46] btrfs: Make __btrfs_add_ordered_extent take struct btrfs_inode
  2020-06-01 15:36 [PATCH 00/46] Trivial BTRFS_I removal Nikolay Borisov
@ 2020-06-01 15:36 ` Nikolay Borisov
  2020-06-02  8:50   ` Johannes Thumshirn
  2020-06-01 15:37 ` [PATCH 02/46] btrfs: Make get_extent_allocation_hint take btrfs_inode Nikolay Borisov
                   ` (46 subsequent siblings)
  47 siblings, 1 reply; 56+ messages in thread
From: Nikolay Borisov @ 2020-06-01 15:36 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

This is internal btrfs function what really needs the vfs_inode only for
igrab and a tracepoint.

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

diff --git a/fs/btrfs/ordered-data.c b/fs/btrfs/ordered-data.c
index e13b3d28c063..7bf7edbb994c 100644
--- a/fs/btrfs/ordered-data.c
+++ b/fs/btrfs/ordered-data.c
@@ -157,18 +157,17 @@ static inline struct rb_node *tree_search(struct btrfs_ordered_inode_tree *tree,
  * The tree is given a single reference on the ordered extent that was
  * inserted.
  */
-static int __btrfs_add_ordered_extent(struct inode *inode, u64 file_offset,
+static int __btrfs_add_ordered_extent(struct btrfs_inode *inode, u64 file_offset,
 				      u64 disk_bytenr, u64 num_bytes,
 				      u64 disk_num_bytes, int type, int dio,
 				      int compress_type)
 {
-	struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
-	struct btrfs_root *root = BTRFS_I(inode)->root;
-	struct btrfs_ordered_inode_tree *tree;
+	struct btrfs_root *root = inode->root;
+	struct btrfs_fs_info *fs_info = root->fs_info;
+	struct btrfs_ordered_inode_tree *tree = &inode->ordered_tree;
 	struct rb_node *node;
 	struct btrfs_ordered_extent *entry;

-	tree = &BTRFS_I(inode)->ordered_tree;
 	entry = kmem_cache_zalloc(btrfs_ordered_extent_cache, GFP_NOFS);
 	if (!entry)
 		return -ENOMEM;
@@ -178,7 +177,7 @@ static int __btrfs_add_ordered_extent(struct inode *inode, u64 file_offset,
 	entry->num_bytes = num_bytes;
 	entry->disk_num_bytes = disk_num_bytes;
 	entry->bytes_left = num_bytes;
-	entry->inode = igrab(inode);
+	entry->inode = igrab(&inode->vfs_inode);
 	entry->compress_type = compress_type;
 	entry->truncated_len = (u64)-1;
 	if (type != BTRFS_ORDERED_IO_DONE && type != BTRFS_ORDERED_COMPLETE)
@@ -200,7 +199,7 @@ static int __btrfs_add_ordered_extent(struct inode *inode, u64 file_offset,
 	INIT_LIST_HEAD(&entry->log_list);
 	INIT_LIST_HEAD(&entry->trans_list);

-	trace_btrfs_ordered_extent_add(inode, entry);
+	trace_btrfs_ordered_extent_add(&inode->vfs_inode, entry);

 	spin_lock_irq(&tree->lock);
 	node = tree_insert(&tree->tree, file_offset,
@@ -228,9 +227,9 @@ static int __btrfs_add_ordered_extent(struct inode *inode, u64 file_offset,
 	 * that work has been done at higher layers, so this is truly the
 	 * smallest the extent is going to get.
 	 */
-	spin_lock(&BTRFS_I(inode)->lock);
-	btrfs_mod_outstanding_extents(BTRFS_I(inode), 1);
-	spin_unlock(&BTRFS_I(inode)->lock);
+	spin_lock(&inode->lock);
+	btrfs_mod_outstanding_extents(inode, 1);
+	spin_unlock(&inode->lock);

 	return 0;
 }
@@ -239,7 +238,7 @@ int btrfs_add_ordered_extent(struct inode *inode, u64 file_offset,
 			     u64 disk_bytenr, u64 num_bytes, u64 disk_num_bytes,
 			     int type)
 {
-	return __btrfs_add_ordered_extent(inode, file_offset, disk_bytenr,
+	return __btrfs_add_ordered_extent(BTRFS_I(inode), file_offset, disk_bytenr,
 					  num_bytes, disk_num_bytes, type, 0,
 					  BTRFS_COMPRESS_NONE);
 }
@@ -248,7 +247,7 @@ int btrfs_add_ordered_extent_dio(struct inode *inode, u64 file_offset,
 				 u64 disk_bytenr, u64 num_bytes,
 				 u64 disk_num_bytes, int type)
 {
-	return __btrfs_add_ordered_extent(inode, file_offset, disk_bytenr,
+	return __btrfs_add_ordered_extent(BTRFS_I(inode), file_offset, disk_bytenr,
 					  num_bytes, disk_num_bytes, type, 1,
 					  BTRFS_COMPRESS_NONE);
 }
@@ -258,7 +257,7 @@ int btrfs_add_ordered_extent_compress(struct inode *inode, u64 file_offset,
 				      u64 disk_num_bytes, int type,
 				      int compress_type)
 {
-	return __btrfs_add_ordered_extent(inode, file_offset, disk_bytenr,
+	return __btrfs_add_ordered_extent(BTRFS_I(inode), file_offset, disk_bytenr,
 					  num_bytes, disk_num_bytes, type, 0,
 					  compress_type);
 }
--
2.17.1


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

* [PATCH 02/46] btrfs: Make get_extent_allocation_hint take btrfs_inode
  2020-06-01 15:36 [PATCH 00/46] Trivial BTRFS_I removal Nikolay Borisov
  2020-06-01 15:36 ` [PATCH 01/46] btrfs: Make __btrfs_add_ordered_extent take struct btrfs_inode Nikolay Borisov
@ 2020-06-01 15:37 ` Nikolay Borisov
  2020-06-02  8:54   ` Johannes Thumshirn
  2020-06-01 15:37 ` [PATCH 03/46] btrfs: Make btrfs_lookup_ordered_extent " Nikolay Borisov
                   ` (45 subsequent siblings)
  47 siblings, 1 reply; 56+ messages in thread
From: Nikolay Borisov @ 2020-06-01 15:37 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

It doesn't use the vfs inode for anything, can just as easily take btrfs_inode.
Follow up patches will convert callers as well.

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

diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 1242d0aa108d..bc94051e3b4a 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -928,10 +928,10 @@ static noinline void submit_compressed_extents(struct async_chunk *async_chunk)
 	goto again;
 }

-static u64 get_extent_allocation_hint(struct inode *inode, u64 start,
+static u64 get_extent_allocation_hint(struct btrfs_inode *inode, u64 start,
 				      u64 num_bytes)
 {
-	struct extent_map_tree *em_tree = &BTRFS_I(inode)->extent_tree;
+	struct extent_map_tree *em_tree = &inode->extent_tree;
 	struct extent_map *em;
 	u64 alloc_hint = 0;

@@ -1030,7 +1030,8 @@ static noinline int cow_file_range(struct inode *inode,
 		}
 	}

-	alloc_hint = get_extent_allocation_hint(inode, start, num_bytes);
+	alloc_hint = get_extent_allocation_hint(BTRFS_I(inode), start,
+						num_bytes);
 	btrfs_drop_extent_cache(BTRFS_I(inode), start,
 			start + num_bytes - 1, 0);

@@ -6875,7 +6876,7 @@ static struct extent_map *btrfs_new_extent_direct(struct inode *inode,
 	u64 alloc_hint;
 	int ret;

-	alloc_hint = get_extent_allocation_hint(inode, start, len);
+	alloc_hint = get_extent_allocation_hint(BTRFS_I(inode), start, len);
 	ret = btrfs_reserve_extent(root, len, len, fs_info->sectorsize,
 				   0, alloc_hint, &ins, 1, 1);
 	if (ret)
--
2.17.1


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

* [PATCH 03/46] btrfs: Make btrfs_lookup_ordered_extent take btrfs_inode
  2020-06-01 15:36 [PATCH 00/46] Trivial BTRFS_I removal Nikolay Borisov
  2020-06-01 15:36 ` [PATCH 01/46] btrfs: Make __btrfs_add_ordered_extent take struct btrfs_inode Nikolay Borisov
  2020-06-01 15:37 ` [PATCH 02/46] btrfs: Make get_extent_allocation_hint take btrfs_inode Nikolay Borisov
@ 2020-06-01 15:37 ` Nikolay Borisov
  2020-06-02  8:56   ` Johannes Thumshirn
  2020-06-01 15:37 ` [PATCH 04/46] btrfs: Make btrfs_reloc_clone_csums " Nikolay Borisov
                   ` (44 subsequent siblings)
  47 siblings, 1 reply; 56+ messages in thread
From: Nikolay Borisov @ 2020-06-01 15:37 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

It doesn't use the generic vfs inode for anything use btrfs_inode directly.

Signed-off-by: Nikolay Borisov <nborisov@suse.com>
---
 fs/btrfs/file-item.c    | 5 +++--
 fs/btrfs/inode.c        | 2 +-
 fs/btrfs/ioctl.c        | 2 +-
 fs/btrfs/ordered-data.c | 6 +++---
 fs/btrfs/ordered-data.h | 2 +-
 fs/btrfs/relocation.c   | 2 +-
 6 files changed, 10 insertions(+), 9 deletions(-)

diff --git a/fs/btrfs/file-item.c b/fs/btrfs/file-item.c
index 706a3128e192..9d311e834b20 100644
--- a/fs/btrfs/file-item.c
+++ b/fs/btrfs/file-item.c
@@ -522,10 +522,11 @@ int btrfs_lookup_csums_range(struct btrfs_root *root, u64 start, u64 end,
  *		 means this bio can contains potentially discontigous bio vecs
  *		 so the logical offset of each should be calculated separately.
  */
-blk_status_t btrfs_csum_one_bio(struct inode *inode, struct bio *bio,
+blk_status_t btrfs_csum_one_bio(struct inode *vfsinode, struct bio *bio,
 		       u64 file_start, int contig)
 {
-	struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
+	struct btrfs_inode *inode = BTRFS_I(vfsinode);
+	struct btrfs_fs_info *fs_info = inode->root->fs_info;
 	SHASH_DESC_ON_STACK(shash, fs_info->csum_shash);
 	struct btrfs_ordered_sum *sums;
 	struct btrfs_ordered_extent *ordered = NULL;
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index bc94051e3b4a..09a0c6a9a73a 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -4543,7 +4543,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(inode, block_start);
+	ordered = btrfs_lookup_ordered_extent(BTRFS_I(inode), block_start);
 	if (ordered) {
 		unlock_extent_cached(io_tree, block_start, block_end,
 				     &cached_state);
diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c
index 168deb8ef68a..4dc308048d8c 100644
--- a/fs/btrfs/ioctl.c
+++ b/fs/btrfs/ioctl.c
@@ -1265,7 +1265,7 @@ static int cluster_pages_for_defrag(struct inode *inode,
 		while (1) {
 			lock_extent_bits(tree, page_start, page_end,
 					 &cached_state);
-			ordered = btrfs_lookup_ordered_extent(inode,
+			ordered = btrfs_lookup_ordered_extent(BTRFS_I(inode),
 							      page_start);
 			unlock_extent_cached(tree, page_start, page_end,
 					     &cached_state);
diff --git a/fs/btrfs/ordered-data.c b/fs/btrfs/ordered-data.c
index 7bf7edbb994c..4139de966c74 100644
--- a/fs/btrfs/ordered-data.c
+++ b/fs/btrfs/ordered-data.c
@@ -697,14 +697,14 @@ int btrfs_wait_ordered_range(struct inode *inode, u64 start, u64 len)
  * find an ordered extent corresponding to file_offset.  return NULL if
  * nothing is found, otherwise take a reference on the extent and return it
  */
-struct btrfs_ordered_extent *btrfs_lookup_ordered_extent(struct inode *inode,
+struct btrfs_ordered_extent *btrfs_lookup_ordered_extent(struct btrfs_inode *inode,
 							 u64 file_offset)
 {
 	struct btrfs_ordered_inode_tree *tree;
 	struct rb_node *node;
 	struct btrfs_ordered_extent *entry = NULL;

-	tree = &BTRFS_I(inode)->ordered_tree;
+	tree = &inode->ordered_tree;
 	spin_lock_irq(&tree->lock);
 	node = tree_search(tree, file_offset);
 	if (!node)
@@ -802,7 +802,7 @@ int btrfs_find_ordered_sum(struct inode *inode, u64 offset, u64 disk_bytenr,
 	const u16 csum_size = btrfs_super_csum_size(fs_info->super_copy);
 	int index = 0;

-	ordered = btrfs_lookup_ordered_extent(inode, offset);
+	ordered = btrfs_lookup_ordered_extent(BTRFS_I(inode), offset);
 	if (!ordered)
 		return 0;

diff --git a/fs/btrfs/ordered-data.h b/fs/btrfs/ordered-data.h
index c01c9698250b..6afa9d98e84e 100644
--- a/fs/btrfs/ordered-data.h
+++ b/fs/btrfs/ordered-data.h
@@ -166,7 +166,7 @@ int btrfs_add_ordered_extent_compress(struct inode *inode, u64 file_offset,
 				      int compress_type);
 void btrfs_add_ordered_sum(struct btrfs_ordered_extent *entry,
 			   struct btrfs_ordered_sum *sum);
-struct btrfs_ordered_extent *btrfs_lookup_ordered_extent(struct inode *inode,
+struct btrfs_ordered_extent *btrfs_lookup_ordered_extent(struct btrfs_inode *inode,
 							 u64 file_offset);
 void btrfs_start_ordered_extent(struct inode *inode,
 				struct btrfs_ordered_extent *entry, int wait);
diff --git a/fs/btrfs/relocation.c b/fs/btrfs/relocation.c
index 3bbae80c752f..2a49115ee4c6 100644
--- a/fs/btrfs/relocation.c
+++ b/fs/btrfs/relocation.c
@@ -3882,7 +3882,7 @@ int btrfs_reloc_clone_csums(struct inode *inode, u64 file_pos, u64 len)
 	u64 new_bytenr;
 	LIST_HEAD(list);

-	ordered = btrfs_lookup_ordered_extent(inode, file_pos);
+	ordered = btrfs_lookup_ordered_extent(BTRFS_I(inode), file_pos);
 	BUG_ON(ordered->file_offset != file_pos || ordered->num_bytes != len);

 	disk_bytenr = file_pos + BTRFS_I(inode)->index_cnt;
--
2.17.1


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

* [PATCH 04/46] btrfs: Make btrfs_reloc_clone_csums take btrfs_inode
  2020-06-01 15:36 [PATCH 00/46] Trivial BTRFS_I removal Nikolay Borisov
                   ` (2 preceding siblings ...)
  2020-06-01 15:37 ` [PATCH 03/46] btrfs: Make btrfs_lookup_ordered_extent " Nikolay Borisov
@ 2020-06-01 15:37 ` Nikolay Borisov
  2020-06-02  8:57   ` Johannes Thumshirn
  2020-06-01 15:37 ` [PATCH 05/46] btrfs: Make create_io_em " Nikolay Borisov
                   ` (43 subsequent siblings)
  47 siblings, 1 reply; 56+ messages in thread
From: Nikolay Borisov @ 2020-06-01 15:37 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

It really wants btrfs_inode and not a vfs inode.

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

diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h
index 161533040978..3e8063f9b30a 100644
--- a/fs/btrfs/ctree.h
+++ b/fs/btrfs/ctree.h
@@ -3380,7 +3380,7 @@ int btrfs_init_reloc_root(struct btrfs_trans_handle *trans,
 int btrfs_update_reloc_root(struct btrfs_trans_handle *trans,
 			    struct btrfs_root *root);
 int btrfs_recover_relocation(struct btrfs_root *root);
-int btrfs_reloc_clone_csums(struct inode *inode, u64 file_pos, u64 len);
+int btrfs_reloc_clone_csums(struct btrfs_inode *inode, u64 file_pos, u64 len);
 int btrfs_reloc_cow_block(struct btrfs_trans_handle *trans,
 			  struct btrfs_root *root, struct extent_buffer *buf,
 			  struct extent_buffer *cow);
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 09a0c6a9a73a..56015fdd46c9 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -1067,7 +1067,7 @@ static noinline int cow_file_range(struct inode *inode,

 		if (root->root_key.objectid ==
 		    BTRFS_DATA_RELOC_TREE_OBJECTID) {
-			ret = btrfs_reloc_clone_csums(inode, start,
+			ret = btrfs_reloc_clone_csums(BTRFS_I(inode), start,
 						      cur_alloc_size);
 			/*
 			 * Only drop cache here, and process as normal.
@@ -1725,7 +1725,7 @@ static noinline int run_delalloc_nocow(struct inode *inode,
 			 * extent_clear_unlock_delalloc() in error handler
 			 * from freeing metadata of created ordered extent.
 			 */
-			ret = btrfs_reloc_clone_csums(inode, cur_offset,
+			ret = btrfs_reloc_clone_csums(BTRFS_I(inode), cur_offset,
 						      num_bytes);

 		extent_clear_unlock_delalloc(inode, cur_offset,
diff --git a/fs/btrfs/relocation.c b/fs/btrfs/relocation.c
index 2a49115ee4c6..3d708a929b04 100644
--- a/fs/btrfs/relocation.c
+++ b/fs/btrfs/relocation.c
@@ -3872,9 +3872,9 @@ int btrfs_recover_relocation(struct btrfs_root *root)
  * cloning checksum properly handles the nodatasum extents.
  * it also saves CPU time to re-calculate the checksum.
  */
-int btrfs_reloc_clone_csums(struct inode *inode, u64 file_pos, u64 len)
+int btrfs_reloc_clone_csums(struct btrfs_inode *inode, u64 file_pos, u64 len)
 {
-	struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
+	struct btrfs_fs_info *fs_info = inode->root->fs_info;
 	struct btrfs_ordered_sum *sums;
 	struct btrfs_ordered_extent *ordered;
 	int ret;
@@ -3882,10 +3882,10 @@ int btrfs_reloc_clone_csums(struct inode *inode, u64 file_pos, u64 len)
 	u64 new_bytenr;
 	LIST_HEAD(list);

-	ordered = btrfs_lookup_ordered_extent(BTRFS_I(inode), file_pos);
+	ordered = btrfs_lookup_ordered_extent(inode, file_pos);
 	BUG_ON(ordered->file_offset != file_pos || ordered->num_bytes != len);

-	disk_bytenr = file_pos + BTRFS_I(inode)->index_cnt;
+	disk_bytenr = file_pos + inode->index_cnt;
 	ret = btrfs_lookup_csums_range(fs_info->csum_root, disk_bytenr,
 				       disk_bytenr + len - 1, &list, 0);
 	if (ret)
--
2.17.1


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

* [PATCH 05/46] btrfs: Make create_io_em take btrfs_inode
  2020-06-01 15:36 [PATCH 00/46] Trivial BTRFS_I removal Nikolay Borisov
                   ` (3 preceding siblings ...)
  2020-06-01 15:37 ` [PATCH 04/46] btrfs: Make btrfs_reloc_clone_csums " Nikolay Borisov
@ 2020-06-01 15:37 ` Nikolay Borisov
  2020-06-02  8:58   ` Johannes Thumshirn
  2020-06-01 15:37 ` [PATCH 06/46] btrfs: Make extent_clear_unlock_delalloc " Nikolay Borisov
                   ` (42 subsequent siblings)
  47 siblings, 1 reply; 56+ messages in thread
From: Nikolay Borisov @ 2020-06-01 15:37 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

It really wants a btrfs_inode and will allow submit_compressed_extents
to be completely converted to btrfs_inode in follow up patches.

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

diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 56015fdd46c9..00ad7bdb7d34 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -83,8 +83,8 @@ static noinline int cow_file_range(struct inode *inode,
 				   struct page *locked_page,
 				   u64 start, u64 end, int *page_started,
 				   unsigned long *nr_written, int unlock);
-static struct extent_map *create_io_em(struct inode *inode, u64 start, u64 len,
-				       u64 orig_start, u64 block_start,
+static struct extent_map *create_io_em(struct btrfs_inode *inode, u64 start,
+				       u64 len, u64 orig_start, u64 block_start,
 				       u64 block_len, u64 orig_block_len,
 				       u64 ram_bytes, int compress_type,
 				       int type);
@@ -844,7 +844,7 @@ static noinline void submit_compressed_extents(struct async_chunk *async_chunk)
 		 * here we're doing allocation and writeback of the
 		 * compressed pages
 		 */
-		em = create_io_em(inode, async_extent->start,
+		em = create_io_em(BTRFS_I(inode), async_extent->start,
 				  async_extent->ram_size, /* len */
 				  async_extent->start, /* orig_start */
 				  ins.objectid, /* block_start */
@@ -1046,7 +1046,7 @@ static noinline int cow_file_range(struct inode *inode,
 		extent_reserved = true;

 		ram_size = ins.offset;
-		em = create_io_em(inode, start, ins.offset, /* len */
+		em = create_io_em(BTRFS_I(inode), start, ins.offset, /* len */
 				  start, /* orig_start */
 				  ins.objectid, /* block_start */
 				  ins.offset, /* block_len */
@@ -1679,7 +1679,7 @@ static noinline int run_delalloc_nocow(struct inode *inode,
 			u64 orig_start = found_key.offset - extent_offset;
 			struct extent_map *em;

-			em = create_io_em(inode, cur_offset, num_bytes,
+			em = create_io_em(BTRFS_I(inode), cur_offset, num_bytes,
 					  orig_start,
 					  disk_bytenr, /* block_start */
 					  num_bytes, /* block_len */
@@ -6843,7 +6843,7 @@ static struct extent_map *btrfs_create_dio_extent(struct inode *inode,
 	int ret;

 	if (type != BTRFS_ORDERED_NOCOW) {
-		em = create_io_em(inode, start, len, orig_start,
+		em = create_io_em(BTRFS_I(inode), start, len, orig_start,
 				  block_start, block_len, orig_block_len,
 				  ram_bytes,
 				  BTRFS_COMPRESS_NONE, /* compress_type */
@@ -7122,8 +7122,8 @@ static int lock_extent_direct(struct inode *inode, u64 lockstart, u64 lockend,
 }

 /* The callers of this must take lock_extent() */
-static struct extent_map *create_io_em(struct inode *inode, u64 start, u64 len,
-				       u64 orig_start, u64 block_start,
+static struct extent_map *create_io_em(struct btrfs_inode *inode, u64 start,
+				       u64 len, u64 orig_start, u64 block_start,
 				       u64 block_len, u64 orig_block_len,
 				       u64 ram_bytes, int compress_type,
 				       int type)
@@ -7137,7 +7137,7 @@ static struct extent_map *create_io_em(struct inode *inode, u64 start, u64 len,
 	       type == BTRFS_ORDERED_NOCOW ||
 	       type == BTRFS_ORDERED_REGULAR);

-	em_tree = &BTRFS_I(inode)->extent_tree;
+	em_tree = &inode->extent_tree;
 	em = alloc_extent_map();
 	if (!em)
 		return ERR_PTR(-ENOMEM);
@@ -7159,8 +7159,8 @@ static struct extent_map *create_io_em(struct inode *inode, u64 start, u64 len,
 	}

 	do {
-		btrfs_drop_extent_cache(BTRFS_I(inode), em->start,
-				em->start + em->len - 1, 0);
+		btrfs_drop_extent_cache(inode, em->start,
+					em->start + em->len - 1, 0);
 		write_lock(&em_tree->lock);
 		ret = add_extent_mapping(em_tree, em, 1);
 		write_unlock(&em_tree->lock);
--
2.17.1


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

* [PATCH 06/46] btrfs: Make extent_clear_unlock_delalloc take btrfs_inode
  2020-06-01 15:36 [PATCH 00/46] Trivial BTRFS_I removal Nikolay Borisov
                   ` (4 preceding siblings ...)
  2020-06-01 15:37 ` [PATCH 05/46] btrfs: Make create_io_em " Nikolay Borisov
@ 2020-06-01 15:37 ` Nikolay Borisov
  2020-06-01 15:37 ` [PATCH 07/46] btrfs: Make btrfs_csum_one_bio takae btrfs_inode Nikolay Borisov
                   ` (41 subsequent siblings)
  47 siblings, 0 replies; 56+ messages in thread
From: Nikolay Borisov @ 2020-06-01 15:37 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

It has 1 vfs and 1 btrfs inode usages but converting it to btrfs_inode interface
will allow seamless conversion of its callers.

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

diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c
index c59e07360083..4d19cb930d57 100644
--- a/fs/btrfs/extent_io.c
+++ b/fs/btrfs/extent_io.c
@@ -2017,15 +2017,14 @@ static int __process_pages_contig(struct address_space *mapping,
 	return err;
 }

-void extent_clear_unlock_delalloc(struct inode *inode, u64 start, u64 end,
+void extent_clear_unlock_delalloc(struct btrfs_inode *inode, u64 start, u64 end,
 				  struct page *locked_page,
 				  unsigned clear_bits,
 				  unsigned long page_ops)
 {
-	clear_extent_bit(&BTRFS_I(inode)->io_tree, start, end, clear_bits, 1, 0,
-			 NULL);
+	clear_extent_bit(&inode->io_tree, start, end, clear_bits, 1, 0, NULL);

-	__process_pages_contig(inode->i_mapping, locked_page,
+	__process_pages_contig(inode->vfs_inode.i_mapping, locked_page,
 			       start >> PAGE_SHIFT, end >> PAGE_SHIFT,
 			       page_ops, NULL);
 }
diff --git a/fs/btrfs/extent_io.h b/fs/btrfs/extent_io.h
index 9a10681b12bf..8e693cf2f89c 100644
--- a/fs/btrfs/extent_io.h
+++ b/fs/btrfs/extent_io.h
@@ -277,7 +277,7 @@ void clear_extent_buffer_uptodate(struct extent_buffer *eb);
 int extent_buffer_under_io(const struct extent_buffer *eb);
 void extent_range_clear_dirty_for_io(struct inode *inode, u64 start, u64 end);
 void extent_range_redirty_for_io(struct inode *inode, u64 start, u64 end);
-void extent_clear_unlock_delalloc(struct inode *inode, u64 start, u64 end,
+void extent_clear_unlock_delalloc(struct btrfs_inode *inode, u64 start, u64 end,
 				  struct page *locked_page,
 				  unsigned bits_to_clear,
 				  unsigned long page_ops);
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 00ad7bdb7d34..7615b73feb30 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -641,7 +641,8 @@ static noinline int compress_file_range(struct async_chunk *async_chunk)
 			 * our outstanding extent for clearing delalloc for this
 			 * range.
 			 */
-			extent_clear_unlock_delalloc(inode, start, end, NULL,
+			extent_clear_unlock_delalloc(BTRFS_I(inode), start, end,
+						     NULL,
 						     clear_flags,
 						     PAGE_UNLOCK |
 						     PAGE_CLEAR_DIRTY |
@@ -877,7 +878,7 @@ static noinline void submit_compressed_extents(struct async_chunk *async_chunk)
 		/*
 		 * clear dirty, set writeback and unlock the pages.
 		 */
-		extent_clear_unlock_delalloc(inode, async_extent->start,
+		extent_clear_unlock_delalloc(BTRFS_I(inode), async_extent->start,
 				async_extent->start +
 				async_extent->ram_size - 1,
 				NULL, EXTENT_LOCKED | EXTENT_DELALLOC,
@@ -899,7 +900,7 @@ static noinline void submit_compressed_extents(struct async_chunk *async_chunk)
 			btrfs_writepage_endio_finish_ordered(p, start, end, 0);

 			p->mapping = NULL;
-			extent_clear_unlock_delalloc(inode, start, end,
+			extent_clear_unlock_delalloc(BTRFS_I(inode), start, end,
 						     NULL, 0,
 						     PAGE_END_WRITEBACK |
 						     PAGE_SET_ERROR);
@@ -914,7 +915,7 @@ static noinline void submit_compressed_extents(struct async_chunk *async_chunk)
 	btrfs_dec_block_group_reservations(fs_info, ins.objectid);
 	btrfs_free_reserved_extent(fs_info, ins.objectid, ins.offset, 1);
 out_free:
-	extent_clear_unlock_delalloc(inode, async_extent->start,
+	extent_clear_unlock_delalloc(BTRFS_I(inode), async_extent->start,
 				     async_extent->start +
 				     async_extent->ram_size - 1,
 				     NULL, EXTENT_LOCKED | EXTENT_DELALLOC |
@@ -1015,7 +1016,8 @@ static noinline int cow_file_range(struct inode *inode,
 			 * our outstanding extent for clearing delalloc for this
 			 * range.
 			 */
-			extent_clear_unlock_delalloc(inode, start, end, NULL,
+			extent_clear_unlock_delalloc(BTRFS_I(inode), start, end,
+				     NULL,
 				     EXTENT_LOCKED | EXTENT_DELALLOC |
 				     EXTENT_DELALLOC_NEW | EXTENT_DEFRAG |
 				     EXTENT_DO_ACCOUNTING, PAGE_UNLOCK |
@@ -1097,7 +1099,7 @@ static noinline int cow_file_range(struct inode *inode,
 		page_ops = unlock ? PAGE_UNLOCK : 0;
 		page_ops |= PAGE_SET_PRIVATE2;

-		extent_clear_unlock_delalloc(inode, start,
+		extent_clear_unlock_delalloc(BTRFS_I(inode), start,
 					     start + ram_size - 1,
 					     locked_page,
 					     EXTENT_LOCKED | EXTENT_DELALLOC,
@@ -1142,7 +1144,7 @@ static noinline int cow_file_range(struct inode *inode,
 	 * it the flag EXTENT_CLEAR_DATA_RESV.
 	 */
 	if (extent_reserved) {
-		extent_clear_unlock_delalloc(inode, start,
+		extent_clear_unlock_delalloc(BTRFS_I(inode), start,
 					     start + cur_alloc_size - 1,
 					     locked_page,
 					     clear_bits,
@@ -1151,7 +1153,7 @@ static noinline int cow_file_range(struct inode *inode,
 		if (start >= end)
 			goto out;
 	}
-	extent_clear_unlock_delalloc(inode, start, end, locked_page,
+	extent_clear_unlock_delalloc(BTRFS_I(inode), start, end, locked_page,
 				     clear_bits | EXTENT_CLEAR_DATA_RESV,
 				     page_ops);
 	goto out;
@@ -1259,8 +1261,8 @@ static int cow_file_range_async(struct inode *inode,
 			PAGE_SET_WRITEBACK | PAGE_END_WRITEBACK |
 			PAGE_SET_ERROR;

-		extent_clear_unlock_delalloc(inode, start, end, locked_page,
-					     clear_bits, page_ops);
+		extent_clear_unlock_delalloc(BTRFS_I(inode), start, end,
+					     locked_page, clear_bits, page_ops);
 		return -ENOMEM;
 	}

@@ -1443,7 +1445,8 @@ static noinline int run_delalloc_nocow(struct inode *inode,

 	path = btrfs_alloc_path();
 	if (!path) {
-		extent_clear_unlock_delalloc(inode, start, end, locked_page,
+		extent_clear_unlock_delalloc(BTRFS_I(inode), start, end,
+					     locked_page,
 					     EXTENT_LOCKED | EXTENT_DELALLOC |
 					     EXTENT_DO_ACCOUNTING |
 					     EXTENT_DEFRAG, PAGE_UNLOCK |
@@ -1728,7 +1731,7 @@ static noinline int run_delalloc_nocow(struct inode *inode,
 			ret = btrfs_reloc_clone_csums(BTRFS_I(inode), cur_offset,
 						      num_bytes);

-		extent_clear_unlock_delalloc(inode, cur_offset,
+		extent_clear_unlock_delalloc(BTRFS_I(inode), cur_offset,
 					     cur_offset + num_bytes - 1,
 					     locked_page, EXTENT_LOCKED |
 					     EXTENT_DELALLOC |
@@ -1765,7 +1768,7 @@ static noinline int run_delalloc_nocow(struct inode *inode,
 		btrfs_dec_nocow_writers(fs_info, disk_bytenr);

 	if (ret && cur_offset < end)
-		extent_clear_unlock_delalloc(inode, cur_offset, end,
+		extent_clear_unlock_delalloc(BTRFS_I(inode), cur_offset, end,
 					     locked_page, EXTENT_LOCKED |
 					     EXTENT_DELALLOC | EXTENT_DEFRAG |
 					     EXTENT_DO_ACCOUNTING, PAGE_UNLOCK |
--
2.17.1


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

* [PATCH 07/46] btrfs: Make btrfs_csum_one_bio takae btrfs_inode
  2020-06-01 15:36 [PATCH 00/46] Trivial BTRFS_I removal Nikolay Borisov
                   ` (5 preceding siblings ...)
  2020-06-01 15:37 ` [PATCH 06/46] btrfs: Make extent_clear_unlock_delalloc " Nikolay Borisov
@ 2020-06-01 15:37 ` Nikolay Borisov
  2020-06-01 15:37 ` [PATCH 08/46] btrfs: Make __btrfs_drop_extents take btrfs_inode Nikolay Borisov
                   ` (40 subsequent siblings)
  47 siblings, 0 replies; 56+ messages in thread
From: Nikolay Borisov @ 2020-06-01 15:37 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

Will enable converting btrfs_submit_compressed_write to btrfs_inode more
easily.

Signed-off-by: Nikolay Borisov <nborisov@suse.com>
---
 fs/btrfs/compression.c | 5 +++--
 fs/btrfs/ctree.h       | 4 ++--
 fs/btrfs/file-item.c   | 3 +--
 fs/btrfs/inode.c       | 8 ++++----
 4 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/fs/btrfs/compression.c b/fs/btrfs/compression.c
index c6e648603f85..4f52cd8af517 100644
--- a/fs/btrfs/compression.c
+++ b/fs/btrfs/compression.c
@@ -475,7 +475,8 @@ blk_status_t btrfs_submit_compressed_write(struct inode *inode, u64 start,
 			BUG_ON(ret); /* -ENOMEM */

 			if (!skip_sum) {
-				ret = btrfs_csum_one_bio(inode, bio, start, 1);
+				ret = btrfs_csum_one_bio(BTRFS_I(inode), bio,
+							 start, 1);
 				BUG_ON(ret); /* -ENOMEM */
 			}

@@ -507,7 +508,7 @@ blk_status_t btrfs_submit_compressed_write(struct inode *inode, u64 start,
 	BUG_ON(ret); /* -ENOMEM */

 	if (!skip_sum) {
-		ret = btrfs_csum_one_bio(inode, bio, start, 1);
+		ret = btrfs_csum_one_bio(BTRFS_I(inode), bio, start, 1);
 		BUG_ON(ret); /* -ENOMEM */
 	}

diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h
index 3e8063f9b30a..55add0881615 100644
--- a/fs/btrfs/ctree.h
+++ b/fs/btrfs/ctree.h
@@ -2830,8 +2830,8 @@ int btrfs_lookup_file_extent(struct btrfs_trans_handle *trans,
 int btrfs_csum_file_blocks(struct btrfs_trans_handle *trans,
 			   struct btrfs_root *root,
 			   struct btrfs_ordered_sum *sums);
-blk_status_t btrfs_csum_one_bio(struct inode *inode, struct bio *bio,
-		       u64 file_start, int contig);
+blk_status_t btrfs_csum_one_bio(struct btrfs_inode *inode, struct bio *bio,
+				u64 file_start, int contig);
 int btrfs_lookup_csums_range(struct btrfs_root *root, u64 start, u64 end,
 			     struct list_head *list, int search_commit);
 void btrfs_extent_item_to_extent_map(struct btrfs_inode *inode,
diff --git a/fs/btrfs/file-item.c b/fs/btrfs/file-item.c
index 9d311e834b20..7d5ec71615b8 100644
--- a/fs/btrfs/file-item.c
+++ b/fs/btrfs/file-item.c
@@ -522,10 +522,9 @@ int btrfs_lookup_csums_range(struct btrfs_root *root, u64 start, u64 end,
  *		 means this bio can contains potentially discontigous bio vecs
  *		 so the logical offset of each should be calculated separately.
  */
-blk_status_t btrfs_csum_one_bio(struct inode *vfsinode, struct bio *bio,
+blk_status_t btrfs_csum_one_bio(struct btrfs_inode *inode, struct bio *bio,
 		       u64 file_start, int contig)
 {
-	struct btrfs_inode *inode = BTRFS_I(vfsinode);
 	struct btrfs_fs_info *fs_info = inode->root->fs_info;
 	SHASH_DESC_ON_STACK(shash, fs_info->csum_shash);
 	struct btrfs_ordered_sum *sums;
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 7615b73feb30..d20afd95ab4d 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -2149,7 +2149,7 @@ static blk_status_t btrfs_submit_bio_start(void *private_data, struct bio *bio,
 	struct inode *inode = private_data;
 	blk_status_t ret = 0;

-	ret = btrfs_csum_one_bio(inode, bio, 0, 0);
+	ret = btrfs_csum_one_bio(BTRFS_I(inode), bio, 0, 0);
 	BUG_ON(ret); /* -ENOMEM */
 	return 0;
 }
@@ -2214,7 +2214,7 @@ static blk_status_t btrfs_submit_bio_hook(struct inode *inode, struct bio *bio,
 					  0, inode, btrfs_submit_bio_start);
 		goto out;
 	} else if (!skip_sum) {
-		ret = btrfs_csum_one_bio(inode, bio, 0, 0);
+		ret = btrfs_csum_one_bio(BTRFS_I(inode), bio, 0, 0);
 		if (ret)
 			goto out;
 	}
@@ -7597,7 +7597,7 @@ static blk_status_t btrfs_submit_bio_start_direct_io(void *private_data,
 {
 	struct inode *inode = private_data;
 	blk_status_t ret;
-	ret = btrfs_csum_one_bio(inode, bio, offset, 1);
+	ret = btrfs_csum_one_bio(BTRFS_I(inode), bio, offset, 1);
 	BUG_ON(ret); /* -ENOMEM */
 	return 0;
 }
@@ -7658,7 +7658,7 @@ static inline blk_status_t btrfs_submit_dio_bio(struct bio *bio,
 		 * If we aren't doing async submit, calculate the csum of the
 		 * bio now.
 		 */
-		ret = btrfs_csum_one_bio(inode, bio, file_offset, 1);
+		ret = btrfs_csum_one_bio(BTRFS_I(inode), bio, file_offset, 1);
 		if (ret)
 			goto err;
 	} else {
--
2.17.1


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

* [PATCH 08/46] btrfs: Make __btrfs_drop_extents take btrfs_inode
  2020-06-01 15:36 [PATCH 00/46] Trivial BTRFS_I removal Nikolay Borisov
                   ` (6 preceding siblings ...)
  2020-06-01 15:37 ` [PATCH 07/46] btrfs: Make btrfs_csum_one_bio takae btrfs_inode Nikolay Borisov
@ 2020-06-01 15:37 ` Nikolay Borisov
  2020-06-01 15:37 ` [PATCH 09/46] btrfs: Make qgroup_free_reserved_data " Nikolay Borisov
                   ` (39 subsequent siblings)
  47 siblings, 0 replies; 56+ messages in thread
From: Nikolay Borisov @ 2020-06-01 15:37 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

It has only 4 uses of a vfs_inode for inode_sub_bytes but unifies the interface
with the non  __ prefixed version. Will also makes converting its callers
to btrfs_inode easier.

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

diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h
index 55add0881615..bd69e912e8d6 100644
--- a/fs/btrfs/ctree.h
+++ b/fs/btrfs/ctree.h
@@ -2964,7 +2964,7 @@ void btrfs_drop_extent_cache(struct btrfs_inode *inode, u64 start, u64 end,
 			     int skip_pinned);
 extern const struct file_operations btrfs_file_operations;
 int __btrfs_drop_extents(struct btrfs_trans_handle *trans,
-			 struct btrfs_root *root, struct inode *inode,
+			 struct btrfs_root *root, struct btrfs_inode *inode,
 			 struct btrfs_path *path, u64 start, u64 end,
 			 u64 *drop_end, int drop_cache,
 			 int replace_extent,
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c
index fde125616687..01745c0651cb 100644
--- a/fs/btrfs/file.c
+++ b/fs/btrfs/file.c
@@ -731,7 +731,7 @@ void btrfs_drop_extent_cache(struct btrfs_inode *inode, u64 start, u64 end,
  * is deleted from the tree.
  */
 int __btrfs_drop_extents(struct btrfs_trans_handle *trans,
-			 struct btrfs_root *root, struct inode *inode,
+			 struct btrfs_root *root, struct btrfs_inode *inode,
 			 struct btrfs_path *path, u64 start, u64 end,
 			 u64 *drop_end, int drop_cache,
 			 int replace_extent,
@@ -744,7 +744,8 @@ int __btrfs_drop_extents(struct btrfs_trans_handle *trans,
 	struct btrfs_ref ref = { 0 };
 	struct btrfs_key key;
 	struct btrfs_key new_key;
-	u64 ino = btrfs_ino(BTRFS_I(inode));
+	struct inode *vfs_inode = &inode->vfs_inode;
+	u64 ino = btrfs_ino(inode);
 	u64 search_start = start;
 	u64 disk_bytenr = 0;
 	u64 num_bytes = 0;
@@ -762,9 +763,9 @@ int __btrfs_drop_extents(struct btrfs_trans_handle *trans,
 	int leafs_visited = 0;

 	if (drop_cache)
-		btrfs_drop_extent_cache(BTRFS_I(inode), start, end - 1, 0);
+		btrfs_drop_extent_cache(inode, start, end - 1, 0);

-	if (start >= BTRFS_I(inode)->disk_i_size && !replace_extent)
+	if (start >= inode->disk_i_size && !replace_extent)
 		modify_tree = 0;

 	update_refs = (test_bit(BTRFS_ROOT_SHAREABLE, &root->state) ||
@@ -935,7 +936,7 @@ int __btrfs_drop_extents(struct btrfs_trans_handle *trans,
 							extent_end - end);
 			btrfs_mark_buffer_dirty(leaf);
 			if (update_refs && disk_bytenr > 0)
-				inode_sub_bytes(inode, end - key.offset);
+				inode_sub_bytes(vfs_inode, end - key.offset);
 			break;
 		}

@@ -955,7 +956,7 @@ int __btrfs_drop_extents(struct btrfs_trans_handle *trans,
 							start - key.offset);
 			btrfs_mark_buffer_dirty(leaf);
 			if (update_refs && disk_bytenr > 0)
-				inode_sub_bytes(inode, extent_end - start);
+				inode_sub_bytes(vfs_inode, extent_end - start);
 			if (end == extent_end)
 				break;

@@ -979,7 +980,7 @@ int __btrfs_drop_extents(struct btrfs_trans_handle *trans,

 			if (update_refs &&
 			    extent_type == BTRFS_FILE_EXTENT_INLINE) {
-				inode_sub_bytes(inode,
+				inode_sub_bytes(vfs_inode,
 						extent_end - key.offset);
 				extent_end = ALIGN(extent_end,
 						   fs_info->sectorsize);
@@ -993,7 +994,7 @@ int __btrfs_drop_extents(struct btrfs_trans_handle *trans,
 						key.offset - extent_offset);
 				ret = btrfs_free_extent(trans, &ref);
 				BUG_ON(ret); /* -ENOMEM */
-				inode_sub_bytes(inode,
+				inode_sub_bytes(vfs_inode,
 						extent_end - key.offset);
 			}

@@ -1082,8 +1083,8 @@ int btrfs_drop_extents(struct btrfs_trans_handle *trans,
 	path = btrfs_alloc_path();
 	if (!path)
 		return -ENOMEM;
-	ret = __btrfs_drop_extents(trans, root, inode, path, start, end, NULL,
-				   drop_cache, 0, 0, NULL);
+	ret = __btrfs_drop_extents(trans, root, BTRFS_I(inode), path, start,
+				   end, NULL, drop_cache, 0, 0, NULL);
 	btrfs_free_path(path);
 	return ret;
 }
@@ -2610,7 +2611,7 @@ int btrfs_punch_hole_range(struct inode *inode, struct btrfs_path *path,

 	cur_offset = start;
 	while (cur_offset < end) {
-		ret = __btrfs_drop_extents(trans, root, inode, path,
+		ret = __btrfs_drop_extents(trans, root, BTRFS_I(inode), path,
 					   cur_offset, end + 1, &drop_end,
 					   1, 0, 0, NULL);
 		if (ret != -ENOSPC) {
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index d20afd95ab4d..810065cd38a2 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -322,7 +322,7 @@ static noinline int cow_file_range_inline(struct inode *inode, u64 start,
 		extent_item_size = btrfs_file_extent_calc_inline_size(
 		    inline_len);

-	ret = __btrfs_drop_extents(trans, root, inode, path,
+	ret = __btrfs_drop_extents(trans, root, BTRFS_I(inode), path,
 				   start, aligned_end, NULL,
 				   1, 1, extent_item_size, &extent_inserted);
 	if (ret) {
@@ -2480,7 +2480,7 @@ static int insert_reserved_file_extent(struct btrfs_trans_handle *trans,
 	 * the caller is expected to unpin it and allow it to be merged
 	 * with the others.
 	 */
-	ret = __btrfs_drop_extents(trans, root, inode, path, file_pos,
+	ret = __btrfs_drop_extents(trans, root, BTRFS_I(inode), path, file_pos,
 				   file_pos + num_bytes, NULL, 0,
 				   1, sizeof(*fi), &extent_inserted);
 	if (ret)
@@ -4146,7 +4146,7 @@ static int log_one_extent(struct btrfs_trans_handle *trans,
 	if (ret)
 		return ret;

-	ret = __btrfs_drop_extents(trans, log, &inode->vfs_inode, path, em->start,
+	ret = __btrfs_drop_extents(trans, log, inode, path, em->start,
 				   em->start + em->len, NULL, 0, 1,
 				   sizeof(*fi), &extent_inserted);
 	if (ret)
--
2.17.1


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

* [PATCH 09/46] btrfs: Make qgroup_free_reserved_data take btrfs_inode
  2020-06-01 15:36 [PATCH 00/46] Trivial BTRFS_I removal Nikolay Borisov
                   ` (7 preceding siblings ...)
  2020-06-01 15:37 ` [PATCH 08/46] btrfs: Make __btrfs_drop_extents take btrfs_inode Nikolay Borisov
@ 2020-06-01 15:37 ` Nikolay Borisov
  2020-06-01 15:37 ` [PATCH 10/46] btrfs: Make __btrfs_qgroup_release_data " Nikolay Borisov
                   ` (38 subsequent siblings)
  47 siblings, 0 replies; 56+ messages in thread
From: Nikolay Borisov @ 2020-06-01 15:37 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

It  only uses btrfs_inode so can just as easily take it as an argument.

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

diff --git a/fs/btrfs/qgroup.c b/fs/btrfs/qgroup.c
index 5bd4089ad0e1..dcde4f9cba6c 100644
--- a/fs/btrfs/qgroup.c
+++ b/fs/btrfs/qgroup.c
@@ -3448,10 +3448,10 @@ int btrfs_qgroup_reserve_data(struct inode *inode,
 }

 /* Free ranges specified by @reserved, normally in error path */
-static int qgroup_free_reserved_data(struct inode *inode,
+static int qgroup_free_reserved_data(struct btrfs_inode *inode,
 			struct extent_changeset *reserved, u64 start, u64 len)
 {
-	struct btrfs_root *root = BTRFS_I(inode)->root;
+	struct btrfs_root *root = inode->root;
 	struct ulist_node *unode;
 	struct ulist_iterator uiter;
 	struct extent_changeset changeset;
@@ -3487,8 +3487,8 @@ static int qgroup_free_reserved_data(struct inode *inode,
 		 * EXTENT_QGROUP_RESERVED, we won't double free.
 		 * So not need to rush.
 		 */
-		ret = clear_record_extent_bits(&BTRFS_I(inode)->io_tree,
-				free_start, free_start + free_len - 1,
+		ret = clear_record_extent_bits(&inode->io_tree, free_start,
+				free_start + free_len - 1,
 				EXTENT_QGROUP_RESERVED, &changeset);
 		if (ret < 0)
 			goto out;
@@ -3517,9 +3517,10 @@ static int __btrfs_qgroup_release_data(struct inode *inode,
 	/* In release case, we shouldn't have @reserved */
 	WARN_ON(!free && reserved);
 	if (free && reserved)
-		return qgroup_free_reserved_data(inode, reserved, start, len);
+		return qgroup_free_reserved_data(BTRFS_I(inode), reserved,
+						 start, len);
 	extent_changeset_init(&changeset);
-	ret = clear_record_extent_bits(&BTRFS_I(inode)->io_tree, start,
+	ret = clear_record_extent_bits(&BTRFS_I(inode)->io_tree, start,
 			start + len -1, EXTENT_QGROUP_RESERVED, &changeset);
 	if (ret < 0)
 		goto out;
--
2.17.1


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

* [PATCH 10/46] btrfs: Make __btrfs_qgroup_release_data take btrfs_inode
  2020-06-01 15:36 [PATCH 00/46] Trivial BTRFS_I removal Nikolay Borisov
                   ` (8 preceding siblings ...)
  2020-06-01 15:37 ` [PATCH 09/46] btrfs: Make qgroup_free_reserved_data " Nikolay Borisov
@ 2020-06-01 15:37 ` Nikolay Borisov
  2020-06-01 15:37 ` [PATCH 11/46] btrfs: Make btrfs_qgroup_free_data " Nikolay Borisov
                   ` (37 subsequent siblings)
  47 siblings, 0 replies; 56+ messages in thread
From: Nikolay Borisov @ 2020-06-01 15:37 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

It uses vfs_inode only for a tracepoint so convert its interface to take
btrfs_inode directly.

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

diff --git a/fs/btrfs/qgroup.c b/fs/btrfs/qgroup.c
index dcde4f9cba6c..008e44446bd6 100644
--- a/fs/btrfs/qgroup.c
+++ b/fs/btrfs/qgroup.c
@@ -3502,7 +3502,7 @@ static int qgroup_free_reserved_data(struct btrfs_inode *inode,
 	return ret;
 }

-static int __btrfs_qgroup_release_data(struct inode *inode,
+static int __btrfs_qgroup_release_data(struct btrfs_inode *inode,
 			struct extent_changeset *reserved, u64 start, u64 len,
 			int free)
 {
@@ -3510,28 +3510,26 @@ static int __btrfs_qgroup_release_data(struct inode *inode,
 	int trace_op = QGROUP_RELEASE;
 	int ret;

-	if (!test_bit(BTRFS_FS_QUOTA_ENABLED,
-		      &BTRFS_I(inode)->root->fs_info->flags))
+	if (!test_bit(BTRFS_FS_QUOTA_ENABLED, &inode->root->fs_info->flags))
 		return 0;

 	/* In release case, we shouldn't have @reserved */
 	WARN_ON(!free && reserved);
 	if (free && reserved)
-		return qgroup_free_reserved_data(BTRFS_I(inode), reserved,
-						 start, len);
+		return qgroup_free_reserved_data(inode, reserved, start, len);
 	extent_changeset_init(&changeset);
-	ret = clear_record_extent_bits(&BTRFS_I(inode)->io_tree, start,
-			start + len -1, EXTENT_QGROUP_RESERVED, &changeset);
+	ret = clear_record_extent_bits(&inode->io_tree, start, start + len -1,
+				       EXTENT_QGROUP_RESERVED, &changeset);
 	if (ret < 0)
 		goto out;

 	if (free)
 		trace_op = QGROUP_FREE;
-	trace_btrfs_qgroup_release_data(inode, start, len,
+	trace_btrfs_qgroup_release_data(&inode->vfs_inode, start, len,
 					changeset.bytes_changed, trace_op);
 	if (free)
-		btrfs_qgroup_free_refroot(BTRFS_I(inode)->root->fs_info,
-				BTRFS_I(inode)->root->root_key.objectid,
+		btrfs_qgroup_free_refroot(inode->root->fs_info,
+				inode->root->root_key.objectid,
 				changeset.bytes_changed, BTRFS_QGROUP_RSV_DATA);
 	ret = changeset.bytes_changed;
 out:
@@ -3554,7 +3552,7 @@ static int __btrfs_qgroup_release_data(struct inode *inode,
 int btrfs_qgroup_free_data(struct inode *inode,
 			struct extent_changeset *reserved, u64 start, u64 len)
 {
-	return __btrfs_qgroup_release_data(inode, reserved, start, len, 1);
+	return __btrfs_qgroup_release_data(BTRFS_I(inode), reserved, start, len, 1);
 }

 /*
@@ -3574,7 +3572,7 @@ int btrfs_qgroup_free_data(struct inode *inode,
  */
 int btrfs_qgroup_release_data(struct inode *inode, u64 start, u64 len)
 {
-	return __btrfs_qgroup_release_data(inode, NULL, start, len, 0);
+	return __btrfs_qgroup_release_data(BTRFS_I(inode), NULL, start, len, 0);
 }

 static void add_root_meta_rsv(struct btrfs_root *root, int num_bytes,
--
2.17.1


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

* [PATCH 11/46] btrfs: Make btrfs_qgroup_free_data take btrfs_inode
  2020-06-01 15:36 [PATCH 00/46] Trivial BTRFS_I removal Nikolay Borisov
                   ` (9 preceding siblings ...)
  2020-06-01 15:37 ` [PATCH 10/46] btrfs: Make __btrfs_qgroup_release_data " Nikolay Borisov
@ 2020-06-01 15:37 ` Nikolay Borisov
  2020-06-01 15:37 ` [PATCH 12/46] btrfs: Make cow_file_range_inline " Nikolay Borisov
                   ` (36 subsequent siblings)
  47 siblings, 0 replies; 56+ messages in thread
From: Nikolay Borisov @ 2020-06-01 15:37 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

It passes btrfs_inode to its callee so change the interface.

Signed-off-by: Nikolay Borisov <nborisov@suse.com>
---
 fs/btrfs/delalloc-space.c |  2 +-
 fs/btrfs/inode.c          | 12 +++++++-----
 fs/btrfs/qgroup.c         |  4 ++--
 fs/btrfs/qgroup.h         |  6 +++---
 4 files changed, 13 insertions(+), 11 deletions(-)

diff --git a/fs/btrfs/delalloc-space.c b/fs/btrfs/delalloc-space.c
index 1245739a3a6e..0ee25dde18d3 100644
--- a/fs/btrfs/delalloc-space.c
+++ b/fs/btrfs/delalloc-space.c
@@ -304,7 +304,7 @@ void btrfs_free_reserved_data_space(struct inode *inode,
 	start = round_down(start, root->fs_info->sectorsize);

 	btrfs_free_reserved_data_space_noquota(inode, start, len);
-	btrfs_qgroup_free_data(inode, reserved, start, len);
+	btrfs_qgroup_free_data(BTRFS_I(inode), reserved, start, len);
 }

 /**
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 810065cd38a2..70ed320cd1fa 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -353,7 +353,7 @@ static noinline int cow_file_range_inline(struct inode *inode, u64 start,
 	 * And at reserve time, it's always aligned to page size, so
 	 * just free one page here.
 	 */
-	btrfs_qgroup_free_data(inode, NULL, 0, PAGE_SIZE);
+	btrfs_qgroup_free_data(BTRFS_I(inode), NULL, 0, PAGE_SIZE);
 	btrfs_free_path(path);
 	btrfs_end_transaction(trans);
 	return ret;
@@ -2613,7 +2613,7 @@ static int btrfs_finish_ordered_io(struct btrfs_ordered_extent *ordered_extent)
 		 * space for NOCOW range.
 		 * As NOCOW won't cause a new delayed ref, just free the space
 		 */
-		btrfs_qgroup_free_data(inode, NULL, start,
+		btrfs_qgroup_free_data(BTRFS_I(inode), NULL, start,
 				       ordered_extent->num_bytes);
 		btrfs_inode_safe_disk_i_size_write(inode, 0);
 		if (freespace_inode)
@@ -2651,7 +2651,7 @@ static int btrfs_finish_ordered_io(struct btrfs_ordered_extent *ordered_extent)
 		compress_type = ordered_extent->compress_type;
 	if (test_bit(BTRFS_ORDERED_PREALLOC, &ordered_extent->flags)) {
 		BUG_ON(compress_type);
-		btrfs_qgroup_free_data(inode, NULL, start,
+		btrfs_qgroup_free_data(BTRFS_I(inode), NULL, start,
 				       ordered_extent->num_bytes);
 		ret = btrfs_mark_extent_written(trans, BTRFS_I(inode),
 						ordered_extent->file_offset,
@@ -4948,7 +4948,8 @@ static void evict_inode_truncate_pages(struct inode *inode)
 		 * Note, end is the bytenr of last byte, so we need + 1 here.
 		 */
 		if (state_flags & EXTENT_DELALLOC)
-			btrfs_qgroup_free_data(inode, NULL, start, end - start + 1);
+			btrfs_qgroup_free_data(BTRFS_I(inode), NULL, start,
+					       end - start + 1);

 		clear_extent_bit(io_tree, start, end,
 				 EXTENT_LOCKED | EXTENT_DELALLOC |
@@ -8036,7 +8037,8 @@ static void btrfs_invalidatepage(struct page *page, unsigned int offset,
 	 *    free the entire extent.
 	 */
 	if (PageDirty(page))
-		btrfs_qgroup_free_data(inode, NULL, page_start, PAGE_SIZE);
+		btrfs_qgroup_free_data(BTRFS_I(inode), NULL, page_start,
+				       PAGE_SIZE);
 	if (!inode_evicting) {
 		clear_extent_bit(tree, page_start, page_end, EXTENT_LOCKED |
 				 EXTENT_DELALLOC | EXTENT_DELALLOC_NEW |
diff --git a/fs/btrfs/qgroup.c b/fs/btrfs/qgroup.c
index 008e44446bd6..4a09aa2fd975 100644
--- a/fs/btrfs/qgroup.c
+++ b/fs/btrfs/qgroup.c
@@ -3549,10 +3549,10 @@ static int __btrfs_qgroup_release_data(struct btrfs_inode *inode,
  *
  * NOTE: This function may sleep for memory allocation.
  */
-int btrfs_qgroup_free_data(struct inode *inode,
+int btrfs_qgroup_free_data(struct btrfs_inode *inode,
 			struct extent_changeset *reserved, u64 start, u64 len)
 {
-	return __btrfs_qgroup_release_data(BTRFS_I(inode), reserved, start, len, 1);
+	return __btrfs_qgroup_release_data(inode, reserved, start, len, 1);
 }

 /*
diff --git a/fs/btrfs/qgroup.h b/fs/btrfs/qgroup.h
index 1bc654459469..a40ea1c187d7 100644
--- a/fs/btrfs/qgroup.h
+++ b/fs/btrfs/qgroup.h
@@ -347,9 +347,9 @@ int btrfs_verify_qgroup_counts(struct btrfs_fs_info *fs_info, u64 qgroupid,
 int btrfs_qgroup_reserve_data(struct inode *inode,
 			struct extent_changeset **reserved, u64 start, u64 len);
 int btrfs_qgroup_release_data(struct inode *inode, u64 start, u64 len);
-int btrfs_qgroup_free_data(struct inode *inode,
-			struct extent_changeset *reserved, u64 start, u64 len);
-
+int btrfs_qgroup_free_data(struct btrfs_inode *inode,
+			   struct extent_changeset *reserved, u64 start,
+			   u64 len);
 int __btrfs_qgroup_reserve_meta(struct btrfs_root *root, int num_bytes,
 				enum btrfs_qgroup_rsv_type type, bool enforce);
 /* Reserve metadata space for pertrans and prealloc type */
--
2.17.1


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

* [PATCH 12/46] btrfs: Make cow_file_range_inline take btrfs_inode
  2020-06-01 15:36 [PATCH 00/46] Trivial BTRFS_I removal Nikolay Borisov
                   ` (10 preceding siblings ...)
  2020-06-01 15:37 ` [PATCH 11/46] btrfs: Make btrfs_qgroup_free_data " Nikolay Borisov
@ 2020-06-01 15:37 ` Nikolay Borisov
  2020-06-01 15:37 ` [PATCH 13/46] btrfs: Make btrfs_add_ordered_extent " Nikolay Borisov
                   ` (35 subsequent siblings)
  47 siblings, 0 replies; 56+ messages in thread
From: Nikolay Borisov @ 2020-06-01 15:37 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

It has only 2 uses for the vfs_inode - insert_inline_extent and i_size_read.
On the flipside it will allow converting its callers to btrfs_inode, so convert
it to taking btrfs_inode.

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

diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 70ed320cd1fa..a05ffc129967 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -273,15 +273,15 @@ static int insert_inline_extent(struct btrfs_trans_handle *trans,
  * does the checks required to make sure the data is small enough
  * to fit as an inline extent.
  */
-static noinline int cow_file_range_inline(struct inode *inode, u64 start,
+static noinline int cow_file_range_inline(struct btrfs_inode *inode, u64 start,
 					  u64 end, size_t compressed_size,
 					  int compress_type,
 					  struct page **compressed_pages)
 {
-	struct btrfs_root *root = BTRFS_I(inode)->root;
+	struct btrfs_root *root = inode->root;
 	struct btrfs_fs_info *fs_info = root->fs_info;
 	struct btrfs_trans_handle *trans;
-	u64 isize = i_size_read(inode);
+	u64 isize = i_size_read(&inode->vfs_inode);
 	u64 actual_end = min(end + 1, isize);
 	u64 inline_len = actual_end - start;
 	u64 aligned_end = ALIGN(end, fs_info->sectorsize);
@@ -313,7 +313,7 @@ static noinline int cow_file_range_inline(struct inode *inode, u64 start,
 		btrfs_free_path(path);
 		return PTR_ERR(trans);
 	}
-	trans->block_rsv = &BTRFS_I(inode)->block_rsv;
+	trans->block_rsv = &inode->block_rsv;

 	if (compressed_size && compressed_pages)
 		extent_item_size = btrfs_file_extent_calc_inline_size(
@@ -322,9 +322,9 @@ static noinline int cow_file_range_inline(struct inode *inode, u64 start,
 		extent_item_size = btrfs_file_extent_calc_inline_size(
 		    inline_len);

-	ret = __btrfs_drop_extents(trans, root, BTRFS_I(inode), path,
-				   start, aligned_end, NULL,
-				   1, 1, extent_item_size, &extent_inserted);
+	ret = __btrfs_drop_extents(trans, root, inode, path, start, aligned_end,
+				   NULL, 1, 1, extent_item_size,
+				   &extent_inserted);
 	if (ret) {
 		btrfs_abort_transaction(trans, ret);
 		goto out;
@@ -333,7 +333,7 @@ static noinline int cow_file_range_inline(struct inode *inode, u64 start,
 	if (isize > actual_end)
 		inline_len = min_t(u64, isize, actual_end);
 	ret = insert_inline_extent(trans, path, extent_inserted,
-				   root, inode, start,
+				   root, &inode->vfs_inode, start,
 				   inline_len, compressed_size,
 				   compress_type, compressed_pages);
 	if (ret && ret != -ENOSPC) {
@@ -344,8 +344,8 @@ static noinline int cow_file_range_inline(struct inode *inode, u64 start,
 		goto out;
 	}

-	set_bit(BTRFS_INODE_NEEDS_FULL_SYNC, &BTRFS_I(inode)->runtime_flags);
-	btrfs_drop_extent_cache(BTRFS_I(inode), start, aligned_end - 1, 0);
+	set_bit(BTRFS_INODE_NEEDS_FULL_SYNC, &inode->runtime_flags);
+	btrfs_drop_extent_cache(inode, start, aligned_end - 1, 0);
 out:
 	/*
 	 * Don't forget to free the reserved space, as for inlined extent
@@ -353,7 +353,7 @@ static noinline int cow_file_range_inline(struct inode *inode, u64 start,
 	 * And at reserve time, it's always aligned to page size, so
 	 * just free one page here.
 	 */
-	btrfs_qgroup_free_data(BTRFS_I(inode), NULL, 0, PAGE_SIZE);
+	btrfs_qgroup_free_data(inode, NULL, 0, PAGE_SIZE);
 	btrfs_free_path(path);
 	btrfs_end_transaction(trans);
 	return ret;
@@ -615,11 +615,12 @@ static noinline int compress_file_range(struct async_chunk *async_chunk)
 			/* we didn't compress the entire range, try
 			 * to make an uncompressed inline extent.
 			 */
-			ret = cow_file_range_inline(inode, start, end, 0,
-						    BTRFS_COMPRESS_NONE, NULL);
+			ret = cow_file_range_inline(BTRFS_I(inode), start, end,
+						    0, BTRFS_COMPRESS_NONE,
+						    NULL);
 		} else {
 			/* try making a compressed inline extent */
-			ret = cow_file_range_inline(inode, start, end,
+			ret = cow_file_range_inline(BTRFS_I(inode), start, end,
 						    total_compressed,
 						    compress_type, pages);
 		}
@@ -1007,7 +1008,7 @@ static noinline int cow_file_range(struct inode *inode,

 	if (start == 0) {
 		/* lets try to make an inline extent */
-		ret = cow_file_range_inline(inode, start, end, 0,
+		ret = cow_file_range_inline(BTRFS_I(inode), start, end, 0,
 					    BTRFS_COMPRESS_NONE, NULL);
 		if (ret == 0) {
 			/*
--
2.17.1


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

* [PATCH 13/46] btrfs: Make btrfs_add_ordered_extent take btrfs_inode
  2020-06-01 15:36 [PATCH 00/46] Trivial BTRFS_I removal Nikolay Borisov
                   ` (11 preceding siblings ...)
  2020-06-01 15:37 ` [PATCH 12/46] btrfs: Make cow_file_range_inline " Nikolay Borisov
@ 2020-06-01 15:37 ` Nikolay Borisov
  2020-06-01 15:37 ` [PATCH 14/46] btrfs: Make cow_file_range " Nikolay Borisov
                   ` (34 subsequent siblings)
  47 siblings, 0 replies; 56+ messages in thread
From: Nikolay Borisov @ 2020-06-01 15:37 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

Preparation to converting its callers to taking btrfs_inode.

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

diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index a05ffc129967..b04e27306058 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -1063,8 +1063,9 @@ static noinline int cow_file_range(struct inode *inode,
 		}
 		free_extent_map(em);

-		ret = btrfs_add_ordered_extent(inode, start, ins.objectid,
-					       ram_size, cur_alloc_size, 0);
+		ret = btrfs_add_ordered_extent(BTRFS_I(inode), start,
+					       ins.objectid, ram_size,
+					       cur_alloc_size, 0);
 		if (ret)
 			goto out_drop_extent_cache;

@@ -1698,7 +1699,7 @@ static noinline int run_delalloc_nocow(struct inode *inode,
 				goto error;
 			}
 			free_extent_map(em);
-			ret = btrfs_add_ordered_extent(inode, cur_offset,
+			ret = btrfs_add_ordered_extent(BTRFS_I(inode), cur_offset,
 						       disk_bytenr, num_bytes,
 						       num_bytes,
 						       BTRFS_ORDERED_PREALLOC);
@@ -1710,7 +1711,7 @@ static noinline int run_delalloc_nocow(struct inode *inode,
 				goto error;
 			}
 		} else {
-			ret = btrfs_add_ordered_extent(inode, cur_offset,
+			ret = btrfs_add_ordered_extent(BTRFS_I(inode), cur_offset,
 						       disk_bytenr, num_bytes,
 						       num_bytes,
 						       BTRFS_ORDERED_NOCOW);
diff --git a/fs/btrfs/ordered-data.c b/fs/btrfs/ordered-data.c
index 4139de966c74..146fdf16010e 100644
--- a/fs/btrfs/ordered-data.c
+++ b/fs/btrfs/ordered-data.c
@@ -234,11 +234,11 @@ static int __btrfs_add_ordered_extent(struct btrfs_inode *inode, u64 file_offset
 	return 0;
 }

-int btrfs_add_ordered_extent(struct inode *inode, u64 file_offset,
+int btrfs_add_ordered_extent(struct btrfs_inode *inode, u64 file_offset,
 			     u64 disk_bytenr, u64 num_bytes, u64 disk_num_bytes,
 			     int type)
 {
-	return __btrfs_add_ordered_extent(BTRFS_I(inode), file_offset, disk_bytenr,
+	return __btrfs_add_ordered_extent(inode, file_offset, disk_bytenr,
 					  num_bytes, disk_num_bytes, type, 0,
 					  BTRFS_COMPRESS_NONE);
 }
diff --git a/fs/btrfs/ordered-data.h b/fs/btrfs/ordered-data.h
index 6afa9d98e84e..ae6c4eaf975b 100644
--- a/fs/btrfs/ordered-data.h
+++ b/fs/btrfs/ordered-data.h
@@ -154,7 +154,7 @@ int btrfs_dec_test_first_ordered_pending(struct inode *inode,
 				   struct btrfs_ordered_extent **cached,
 				   u64 *file_offset, u64 io_size,
 				   int uptodate);
-int btrfs_add_ordered_extent(struct inode *inode, u64 file_offset,
+int btrfs_add_ordered_extent(struct btrfs_inode *inode, u64 file_offset,
 			     u64 disk_bytenr, u64 num_bytes, u64 disk_num_bytes,
 			     int type);
 int btrfs_add_ordered_extent_dio(struct inode *inode, u64 file_offset,
--
2.17.1


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

* [PATCH 14/46] btrfs: Make cow_file_range take btrfs_inode
  2020-06-01 15:36 [PATCH 00/46] Trivial BTRFS_I removal Nikolay Borisov
                   ` (12 preceding siblings ...)
  2020-06-01 15:37 ` [PATCH 13/46] btrfs: Make btrfs_add_ordered_extent " Nikolay Borisov
@ 2020-06-01 15:37 ` Nikolay Borisov
  2020-06-01 15:37 ` [PATCH 15/46] btrfs: Make btrfs_add_ordered_extent_compress " Nikolay Borisov
                   ` (33 subsequent siblings)
  47 siblings, 0 replies; 56+ messages in thread
From: Nikolay Borisov @ 2020-06-01 15:37 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

All its children functions take btrfs_inode so convert it to taking btrfs_inode.

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

diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index b04e27306058..2ec372c4499c 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -79,7 +79,7 @@ struct kmem_cache *btrfs_free_space_bitmap_cachep;
 static int btrfs_setsize(struct inode *inode, struct iattr *attr);
 static int btrfs_truncate(struct inode *inode, bool skip_writeback);
 static int btrfs_finish_ordered_io(struct btrfs_ordered_extent *ordered_extent);
-static noinline int cow_file_range(struct inode *inode,
+static noinline int cow_file_range(struct btrfs_inode *inode,
 				   struct page *locked_page,
 				   u64 start, u64 end, int *page_started,
 				   unsigned long *nr_written, int unlock);
@@ -788,7 +788,8 @@ static noinline void submit_compressed_extents(struct async_chunk *async_chunk)
 			unsigned long nr_written = 0;

 			/* allocate blocks */
-			ret = cow_file_range(inode, async_chunk->locked_page,
+			ret = cow_file_range(BTRFS_I(inode),
+					     async_chunk->locked_page,
 					     async_extent->start,
 					     async_extent->start +
 					     async_extent->ram_size - 1,
@@ -975,13 +976,13 @@ static u64 get_extent_allocation_hint(struct btrfs_inode *inode, u64 start,
  * required to start IO on it.  It may be clean and already done with
  * IO when we return.
  */
-static noinline int cow_file_range(struct inode *inode,
+static noinline int cow_file_range(struct btrfs_inode *inode,
 				   struct page *locked_page,
 				   u64 start, u64 end, int *page_started,
 				   unsigned long *nr_written, int unlock)
 {
-	struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
-	struct btrfs_root *root = BTRFS_I(inode)->root;
+	struct btrfs_root *root = inode->root;
+	struct btrfs_fs_info *fs_info = root->fs_info;
 	u64 alloc_hint = 0;
 	u64 num_bytes;
 	unsigned long ram_size;
@@ -994,7 +995,7 @@ static noinline int cow_file_range(struct inode *inode,
 	bool extent_reserved = false;
 	int ret = 0;

-	if (btrfs_is_free_space_inode(BTRFS_I(inode))) {
+	if (btrfs_is_free_space_inode(inode)) {
 		WARN_ON_ONCE(1);
 		ret = -EINVAL;
 		goto out_unlock;
@@ -1004,11 +1005,11 @@ static noinline int cow_file_range(struct inode *inode,
 	num_bytes = max(blocksize,  num_bytes);
 	ASSERT(num_bytes <= btrfs_super_total_bytes(fs_info->super_copy));

-	inode_should_defrag(BTRFS_I(inode), start, end, num_bytes, SZ_64K);
+	inode_should_defrag(inode, start, end, num_bytes, SZ_64K);

 	if (start == 0) {
 		/* lets try to make an inline extent */
-		ret = cow_file_range_inline(BTRFS_I(inode), start, end, 0,
+		ret = cow_file_range_inline(inode, start, end, 0,
 					    BTRFS_COMPRESS_NONE, NULL);
 		if (ret == 0) {
 			/*
@@ -1017,8 +1018,7 @@ static noinline int cow_file_range(struct inode *inode,
 			 * our outstanding extent for clearing delalloc for this
 			 * range.
 			 */
-			extent_clear_unlock_delalloc(BTRFS_I(inode), start, end,
-				     NULL,
+			extent_clear_unlock_delalloc(inode, start, end, NULL,
 				     EXTENT_LOCKED | EXTENT_DELALLOC |
 				     EXTENT_DELALLOC_NEW | EXTENT_DEFRAG |
 				     EXTENT_DO_ACCOUNTING, PAGE_UNLOCK |
@@ -1033,10 +1033,8 @@ static noinline int cow_file_range(struct inode *inode,
 		}
 	}

-	alloc_hint = get_extent_allocation_hint(BTRFS_I(inode), start,
-						num_bytes);
-	btrfs_drop_extent_cache(BTRFS_I(inode), start,
-			start + num_bytes - 1, 0);
+	alloc_hint = get_extent_allocation_hint(inode, start, num_bytes);
+	btrfs_drop_extent_cache(inode, start, start + num_bytes - 1, 0);

 	while (num_bytes > 0) {
 		cur_alloc_size = num_bytes;
@@ -1049,7 +1047,7 @@ static noinline int cow_file_range(struct inode *inode,
 		extent_reserved = true;

 		ram_size = ins.offset;
-		em = create_io_em(BTRFS_I(inode), start, ins.offset, /* len */
+		em = create_io_em(inode, start, ins.offset, /* len */
 				  start, /* orig_start */
 				  ins.objectid, /* block_start */
 				  ins.offset, /* block_len */
@@ -1063,15 +1061,14 @@ static noinline int cow_file_range(struct inode *inode,
 		}
 		free_extent_map(em);

-		ret = btrfs_add_ordered_extent(BTRFS_I(inode), start,
-					       ins.objectid, ram_size,
-					       cur_alloc_size, 0);
+		ret = btrfs_add_ordered_extent(inode, start, ins.objectid,
+					       ram_size, cur_alloc_size, 0);
 		if (ret)
 			goto out_drop_extent_cache;

 		if (root->root_key.objectid ==
 		    BTRFS_DATA_RELOC_TREE_OBJECTID) {
-			ret = btrfs_reloc_clone_csums(BTRFS_I(inode), start,
+			ret = btrfs_reloc_clone_csums(inode, start,
 						      cur_alloc_size);
 			/*
 			 * Only drop cache here, and process as normal.
@@ -1085,7 +1082,7 @@ static noinline int cow_file_range(struct inode *inode,
 			 * skip current ordered extent.
 			 */
 			if (ret)
-				btrfs_drop_extent_cache(BTRFS_I(inode), start,
+				btrfs_drop_extent_cache(inode, start,
 						start + ram_size - 1, 0);
 		}

@@ -1101,8 +1098,7 @@ static noinline int cow_file_range(struct inode *inode,
 		page_ops = unlock ? PAGE_UNLOCK : 0;
 		page_ops |= PAGE_SET_PRIVATE2;

-		extent_clear_unlock_delalloc(BTRFS_I(inode), start,
-					     start + ram_size - 1,
+		extent_clear_unlock_delalloc(inode, start, start + ram_size - 1,
 					     locked_page,
 					     EXTENT_LOCKED | EXTENT_DELALLOC,
 					     page_ops);
@@ -1126,7 +1122,7 @@ static noinline int cow_file_range(struct inode *inode,
 	return ret;

 out_drop_extent_cache:
-	btrfs_drop_extent_cache(BTRFS_I(inode), start, start + ram_size - 1, 0);
+	btrfs_drop_extent_cache(inode, start, start + ram_size - 1, 0);
 out_reserve:
 	btrfs_dec_block_group_reservations(fs_info, ins.objectid);
 	btrfs_free_reserved_extent(fs_info, ins.objectid, ins.offset, 1);
@@ -1146,7 +1142,7 @@ static noinline int cow_file_range(struct inode *inode,
 	 * it the flag EXTENT_CLEAR_DATA_RESV.
 	 */
 	if (extent_reserved) {
-		extent_clear_unlock_delalloc(BTRFS_I(inode), start,
+		extent_clear_unlock_delalloc(inode, start,
 					     start + cur_alloc_size - 1,
 					     locked_page,
 					     clear_bits,
@@ -1155,7 +1151,7 @@ static noinline int cow_file_range(struct inode *inode,
 		if (start >= end)
 			goto out;
 	}
-	extent_clear_unlock_delalloc(BTRFS_I(inode), start, end, locked_page,
+	extent_clear_unlock_delalloc(inode, start, end, locked_page,
 				     clear_bits | EXTENT_CLEAR_DATA_RESV,
 				     page_ops);
 	goto out;
@@ -1416,8 +1412,8 @@ static int fallback_to_cow(struct inode *inode, struct page *locked_page,
 					 0, 0, NULL);
 	}

-	return cow_file_range(inode, locked_page, start, end, page_started,
-			      nr_written, 1);
+	return cow_file_range(BTRFS_I(inode), locked_page, start, end,
+			      page_started, nr_written, 1);
 }

 /*
@@ -1820,7 +1816,7 @@ int btrfs_run_delalloc_range(struct inode *inode, struct page *locked_page,
 					 page_started, 0, nr_written);
 	} else if (!inode_can_compress(inode) ||
 		   !inode_need_compress(inode, start, end)) {
-		ret = cow_file_range(inode, locked_page, start, end,
+		ret = cow_file_range(BTRFS_I(inode), locked_page, start, end,
 				      page_started, nr_written, 1);
 	} else {
 		set_bit(BTRFS_INODE_HAS_ASYNC_EXTENT,
--
2.17.1


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

* [PATCH 15/46] btrfs: Make btrfs_add_ordered_extent_compress take btrfs_inode
  2020-06-01 15:36 [PATCH 00/46] Trivial BTRFS_I removal Nikolay Borisov
                   ` (13 preceding siblings ...)
  2020-06-01 15:37 ` [PATCH 14/46] btrfs: Make cow_file_range " Nikolay Borisov
@ 2020-06-01 15:37 ` Nikolay Borisov
  2020-06-01 15:37 ` [PATCH 16/46] btrfs: Make btrfs_submit_compressed_write " Nikolay Borisov
                   ` (32 subsequent siblings)
  47 siblings, 0 replies; 56+ messages in thread
From: Nikolay Borisov @ 2020-06-01 15:37 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

It simpy forwards its inode argument to __btrfs_add_ordered_extent which
already takes btrfs_inode.

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

diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 2ec372c4499c..a106c9857315 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -861,7 +861,7 @@ static noinline void submit_compressed_extents(struct async_chunk *async_chunk)
 			goto out_free_reserve;
 		free_extent_map(em);

-		ret = btrfs_add_ordered_extent_compress(inode,
+		ret = btrfs_add_ordered_extent_compress(BTRFS_I(inode),
 						async_extent->start,
 						ins.objectid,
 						async_extent->ram_size,
diff --git a/fs/btrfs/ordered-data.c b/fs/btrfs/ordered-data.c
index 146fdf16010e..b3e3ab28dd78 100644
--- a/fs/btrfs/ordered-data.c
+++ b/fs/btrfs/ordered-data.c
@@ -252,12 +252,12 @@ int btrfs_add_ordered_extent_dio(struct inode *inode, u64 file_offset,
 					  BTRFS_COMPRESS_NONE);
 }

-int btrfs_add_ordered_extent_compress(struct inode *inode, u64 file_offset,
+int btrfs_add_ordered_extent_compress(struct btrfs_inode *inode, u64 file_offset,
 				      u64 disk_bytenr, u64 num_bytes,
 				      u64 disk_num_bytes, int type,
 				      int compress_type)
 {
-	return __btrfs_add_ordered_extent(BTRFS_I(inode), file_offset, disk_bytenr,
+	return __btrfs_add_ordered_extent(inode, file_offset, disk_bytenr,
 					  num_bytes, disk_num_bytes, type, 0,
 					  compress_type);
 }
diff --git a/fs/btrfs/ordered-data.h b/fs/btrfs/ordered-data.h
index ae6c4eaf975b..a0c6c31fc79b 100644
--- a/fs/btrfs/ordered-data.h
+++ b/fs/btrfs/ordered-data.h
@@ -160,7 +160,7 @@ int btrfs_add_ordered_extent(struct btrfs_inode *inode, u64 file_offset,
 int btrfs_add_ordered_extent_dio(struct inode *inode, u64 file_offset,
 				 u64 disk_bytenr, u64 num_bytes,
 				 u64 disk_num_bytes, int type);
-int btrfs_add_ordered_extent_compress(struct inode *inode, u64 file_offset,
+int btrfs_add_ordered_extent_compress(struct btrfs_inode *inode, u64 file_offset,
 				      u64 disk_bytenr, u64 num_bytes,
 				      u64 disk_num_bytes, int type,
 				      int compress_type);
--
2.17.1


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

* [PATCH 16/46] btrfs: Make btrfs_submit_compressed_write take btrfs_inode
  2020-06-01 15:36 [PATCH 00/46] Trivial BTRFS_I removal Nikolay Borisov
                   ` (14 preceding siblings ...)
  2020-06-01 15:37 ` [PATCH 15/46] btrfs: Make btrfs_add_ordered_extent_compress " Nikolay Borisov
@ 2020-06-01 15:37 ` Nikolay Borisov
  2020-06-01 15:37 ` [PATCH 17/46] btrfs: Make submit_compressed_extents " Nikolay Borisov
                   ` (31 subsequent siblings)
  47 siblings, 0 replies; 56+ messages in thread
From: Nikolay Borisov @ 2020-06-01 15:37 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

Majority of its uses are for btrfs_inode so take it as an argument directly.

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

diff --git a/fs/btrfs/compression.c b/fs/btrfs/compression.c
index 4f52cd8af517..c2d5ca583dbf 100644
--- a/fs/btrfs/compression.c
+++ b/fs/btrfs/compression.c
@@ -405,7 +405,7 @@ static void end_compressed_bio_write(struct bio *bio)
  * This also checksums the file bytes and gets things ready for
  * the end io hooks.
  */
-blk_status_t btrfs_submit_compressed_write(struct inode *inode, u64 start,
+blk_status_t btrfs_submit_compressed_write(struct btrfs_inode *inode, u64 start,
 				 unsigned long len, u64 disk_start,
 				 unsigned long compressed_len,
 				 struct page **compressed_pages,
@@ -413,7 +413,7 @@ blk_status_t btrfs_submit_compressed_write(struct inode *inode, u64 start,
 				 unsigned int write_flags,
 				 struct cgroup_subsys_state *blkcg_css)
 {
-	struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
+	struct btrfs_fs_info *fs_info = inode->root->fs_info;
 	struct bio *bio = NULL;
 	struct compressed_bio *cb;
 	unsigned long bytes_left;
@@ -421,7 +421,7 @@ blk_status_t btrfs_submit_compressed_write(struct inode *inode, u64 start,
 	struct page *page;
 	u64 first_byte = disk_start;
 	blk_status_t ret;
-	int skip_sum = BTRFS_I(inode)->flags & BTRFS_INODE_NODATASUM;
+	int skip_sum = inode->flags & BTRFS_INODE_NODATASUM;

 	WARN_ON(!PAGE_ALIGNED(start));
 	cb = kmalloc(compressed_bio_size(fs_info, compressed_len), GFP_NOFS);
@@ -429,7 +429,7 @@ blk_status_t btrfs_submit_compressed_write(struct inode *inode, u64 start,
 		return BLK_STS_RESOURCE;
 	refcount_set(&cb->pending_bios, 0);
 	cb->errors = 0;
-	cb->inode = inode;
+	cb->inode = &inode->vfs_inode;
 	cb->start = start;
 	cb->len = len;
 	cb->mirror_num = 0;
@@ -455,7 +455,7 @@ blk_status_t btrfs_submit_compressed_write(struct inode *inode, u64 start,
 		int submit = 0;

 		page = compressed_pages[pg_index];
-		page->mapping = inode->i_mapping;
+		page->mapping = inode->vfs_inode.i_mapping;
 		if (bio->bi_iter.bi_size)
 			submit = btrfs_bio_fits_in_stripe(page, PAGE_SIZE, bio,
 							  0);
@@ -475,8 +475,7 @@ blk_status_t btrfs_submit_compressed_write(struct inode *inode, u64 start,
 			BUG_ON(ret); /* -ENOMEM */

 			if (!skip_sum) {
-				ret = btrfs_csum_one_bio(BTRFS_I(inode), bio,
-							 start, 1);
+				ret = btrfs_csum_one_bio(inode, bio, start, 1);
 				BUG_ON(ret); /* -ENOMEM */
 			}

@@ -508,7 +507,7 @@ blk_status_t btrfs_submit_compressed_write(struct inode *inode, u64 start,
 	BUG_ON(ret); /* -ENOMEM */

 	if (!skip_sum) {
-		ret = btrfs_csum_one_bio(BTRFS_I(inode), bio, start, 1);
+		ret = btrfs_csum_one_bio(inode, bio, start, 1);
 		BUG_ON(ret); /* -ENOMEM */
 	}

diff --git a/fs/btrfs/compression.h b/fs/btrfs/compression.h
index 284a3ad31350..9f3dbe372631 100644
--- a/fs/btrfs/compression.h
+++ b/fs/btrfs/compression.h
@@ -8,6 +8,8 @@

 #include <linux/sizes.h>

+struct btrfs_inode;
+
 /*
  * We want to make sure that amount of RAM required to uncompress an extent is
  * reasonable, so we limit the total size in ram of a compressed extent to
@@ -88,7 +90,7 @@ int btrfs_decompress_buf2page(const char *buf, unsigned long buf_start,
 			      unsigned long total_out, u64 disk_start,
 			      struct bio *bio);

-blk_status_t btrfs_submit_compressed_write(struct inode *inode, u64 start,
+blk_status_t btrfs_submit_compressed_write(struct btrfs_inode *inode, u64 start,
 				  unsigned long len, u64 disk_start,
 				  unsigned long compressed_len,
 				  struct page **compressed_pages,
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index a106c9857315..a527848c57d5 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -886,7 +886,7 @@ static noinline void submit_compressed_extents(struct async_chunk *async_chunk)
 				NULL, EXTENT_LOCKED | EXTENT_DELALLOC,
 				PAGE_UNLOCK | PAGE_CLEAR_DIRTY |
 				PAGE_SET_WRITEBACK);
-		if (btrfs_submit_compressed_write(inode,
+		if (btrfs_submit_compressed_write(BTRFS_I(inode),
 				    async_extent->start,
 				    async_extent->ram_size,
 				    ins.objectid,
--
2.17.1


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

* [PATCH 17/46] btrfs: Make submit_compressed_extents take btrfs_inode
  2020-06-01 15:36 [PATCH 00/46] Trivial BTRFS_I removal Nikolay Borisov
                   ` (15 preceding siblings ...)
  2020-06-01 15:37 ` [PATCH 16/46] btrfs: Make btrfs_submit_compressed_write " Nikolay Borisov
@ 2020-06-01 15:37 ` Nikolay Borisov
  2020-06-01 15:37 ` [PATCH 18/46] btrfs: Make btrfs_qgroup_release_data " Nikolay Borisov
                   ` (30 subsequent siblings)
  47 siblings, 0 replies; 56+ messages in thread
From: Nikolay Borisov @ 2020-06-01 15:37 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

All but 3 uses require vfs_inode so convert the logic to have btrfs_inode be
the main inode struct.

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

diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index a527848c57d5..9794895d16fe 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -763,14 +763,14 @@ static void free_async_extent_pages(struct async_extent *async_extent)
  */
 static noinline void submit_compressed_extents(struct async_chunk *async_chunk)
 {
-	struct inode *inode = async_chunk->inode;
-	struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
+	struct btrfs_inode *inode = BTRFS_I(async_chunk->inode);
+	struct btrfs_fs_info *fs_info = inode->root->fs_info;
 	struct async_extent *async_extent;
 	u64 alloc_hint = 0;
 	struct btrfs_key ins;
 	struct extent_map *em;
-	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 extent_io_tree *io_tree = &inode->io_tree;
 	int ret = 0;

 again:
@@ -788,8 +788,7 @@ static noinline void submit_compressed_extents(struct async_chunk *async_chunk)
 			unsigned long nr_written = 0;

 			/* allocate blocks */
-			ret = cow_file_range(BTRFS_I(inode),
-					     async_chunk->locked_page,
+			ret = cow_file_range(inode, async_chunk->locked_page,
 					     async_extent->start,
 					     async_extent->start +
 					     async_extent->ram_size - 1,
@@ -804,7 +803,7 @@ static noinline void submit_compressed_extents(struct async_chunk *async_chunk)
 			 * all those pages down to the drive.
 			 */
 			if (!page_started && !ret)
-				extent_write_locked_range(inode,
+				extent_write_locked_range(&inode->vfs_inode,
 						  async_extent->start,
 						  async_extent->start +
 						  async_extent->ram_size - 1,
@@ -834,7 +833,7 @@ static noinline void submit_compressed_extents(struct async_chunk *async_chunk)
 				 * will not submit these pages down to lower
 				 * layers.
 				 */
-				extent_range_redirty_for_io(inode,
+				extent_range_redirty_for_io(&inode->vfs_inode,
 						async_extent->start,
 						async_extent->start +
 						async_extent->ram_size - 1);
@@ -847,7 +846,7 @@ static noinline void submit_compressed_extents(struct async_chunk *async_chunk)
 		 * here we're doing allocation and writeback of the
 		 * compressed pages
 		 */
-		em = create_io_em(BTRFS_I(inode), async_extent->start,
+		em = create_io_em(inode, async_extent->start,
 				  async_extent->ram_size, /* len */
 				  async_extent->start, /* orig_start */
 				  ins.objectid, /* block_start */
@@ -861,7 +860,7 @@ static noinline void submit_compressed_extents(struct async_chunk *async_chunk)
 			goto out_free_reserve;
 		free_extent_map(em);

-		ret = btrfs_add_ordered_extent_compress(BTRFS_I(inode),
+		ret = btrfs_add_ordered_extent_compress(inode,
 						async_extent->start,
 						ins.objectid,
 						async_extent->ram_size,
@@ -869,8 +868,7 @@ static noinline void submit_compressed_extents(struct async_chunk *async_chunk)
 						BTRFS_ORDERED_COMPRESSED,
 						async_extent->compress_type);
 		if (ret) {
-			btrfs_drop_extent_cache(BTRFS_I(inode),
-						async_extent->start,
+			btrfs_drop_extent_cache(inode, async_extent->start,
 						async_extent->start +
 						async_extent->ram_size - 1, 0);
 			goto out_free_reserve;
@@ -880,14 +878,13 @@ static noinline void submit_compressed_extents(struct async_chunk *async_chunk)
 		/*
 		 * clear dirty, set writeback and unlock the pages.
 		 */
-		extent_clear_unlock_delalloc(BTRFS_I(inode), async_extent->start,
+		extent_clear_unlock_delalloc(inode, async_extent->start,
 				async_extent->start +
 				async_extent->ram_size - 1,
 				NULL, EXTENT_LOCKED | EXTENT_DELALLOC,
 				PAGE_UNLOCK | PAGE_CLEAR_DIRTY |
 				PAGE_SET_WRITEBACK);
-		if (btrfs_submit_compressed_write(BTRFS_I(inode),
-				    async_extent->start,
+		if (btrfs_submit_compressed_write(inode, async_extent->start,
 				    async_extent->ram_size,
 				    ins.objectid,
 				    ins.offset, async_extent->pages,
@@ -898,12 +895,11 @@ static noinline void submit_compressed_extents(struct async_chunk *async_chunk)
 			const u64 start = async_extent->start;
 			const u64 end = start + async_extent->ram_size - 1;

-			p->mapping = inode->i_mapping;
+			p->mapping = inode->vfs_inode.i_mapping;
 			btrfs_writepage_endio_finish_ordered(p, start, end, 0);

 			p->mapping = NULL;
-			extent_clear_unlock_delalloc(BTRFS_I(inode), start, end,
-						     NULL, 0,
+			extent_clear_unlock_delalloc(inode, start, end, NULL, 0,
 						     PAGE_END_WRITEBACK |
 						     PAGE_SET_ERROR);
 			free_async_extent_pages(async_extent);
@@ -917,7 +913,7 @@ static noinline void submit_compressed_extents(struct async_chunk *async_chunk)
 	btrfs_dec_block_group_reservations(fs_info, ins.objectid);
 	btrfs_free_reserved_extent(fs_info, ins.objectid, ins.offset, 1);
 out_free:
-	extent_clear_unlock_delalloc(BTRFS_I(inode), async_extent->start,
+	extent_clear_unlock_delalloc(inode, async_extent->start,
 				     async_extent->start +
 				     async_extent->ram_size - 1,
 				     NULL, EXTENT_LOCKED | EXTENT_DELALLOC |
--
2.17.1


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

* [PATCH 18/46] btrfs: Make btrfs_qgroup_release_data take btrfs_inode
  2020-06-01 15:36 [PATCH 00/46] Trivial BTRFS_I removal Nikolay Borisov
                   ` (16 preceding siblings ...)
  2020-06-01 15:37 ` [PATCH 17/46] btrfs: Make submit_compressed_extents " Nikolay Borisov
@ 2020-06-01 15:37 ` Nikolay Borisov
  2020-06-01 15:37 ` [PATCH 19/46] btrfs: Make insert_reserved_file_extent " Nikolay Borisov
                   ` (29 subsequent siblings)
  47 siblings, 0 replies; 56+ messages in thread
From: Nikolay Borisov @ 2020-06-01 15:37 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

It just forwards its argument to __btrfs_qgroup_release_data.

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

diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 9794895d16fe..28dfadb97a6a 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -2523,7 +2523,7 @@ static int insert_reserved_file_extent(struct btrfs_trans_handle *trans,
 	 * Release the reserved range from inode dirty range map, as it is
 	 * already moved into delayed_ref_head
 	 */
-	ret = btrfs_qgroup_release_data(inode, file_pos, ram_bytes);
+	ret = btrfs_qgroup_release_data(BTRFS_I(inode), file_pos, ram_bytes);
 	if (ret < 0)
 		goto out;
 	qg_released = ret;
diff --git a/fs/btrfs/qgroup.c b/fs/btrfs/qgroup.c
index 4a09aa2fd975..c884f3ec89a0 100644
--- a/fs/btrfs/qgroup.c
+++ b/fs/btrfs/qgroup.c
@@ -3570,9 +3570,9 @@ int btrfs_qgroup_free_data(struct btrfs_inode *inode,
  *
  * NOTE: This function may sleep for memory allocation.
  */
-int btrfs_qgroup_release_data(struct inode *inode, u64 start, u64 len)
+int btrfs_qgroup_release_data(struct btrfs_inode *inode, u64 start, u64 len)
 {
-	return __btrfs_qgroup_release_data(BTRFS_I(inode), NULL, start, len, 0);
+	return __btrfs_qgroup_release_data(inode, NULL, start, len, 0);
 }

 static void add_root_meta_rsv(struct btrfs_root *root, int num_bytes,
diff --git a/fs/btrfs/qgroup.h b/fs/btrfs/qgroup.h
index a40ea1c187d7..139cad24a95d 100644
--- a/fs/btrfs/qgroup.h
+++ b/fs/btrfs/qgroup.h
@@ -346,7 +346,7 @@ int btrfs_verify_qgroup_counts(struct btrfs_fs_info *fs_info, u64 qgroupid,
 /* New io_tree based accurate qgroup reserve API */
 int btrfs_qgroup_reserve_data(struct inode *inode,
 			struct extent_changeset **reserved, u64 start, u64 len);
-int btrfs_qgroup_release_data(struct inode *inode, u64 start, u64 len);
+int btrfs_qgroup_release_data(struct btrfs_inode *inode, u64 start, u64 len);
 int btrfs_qgroup_free_data(struct btrfs_inode *inode,
 			   struct extent_changeset *reserved, u64 start,
 			   u64 len);
--
2.17.1


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

* [PATCH 19/46] btrfs: Make insert_reserved_file_extent take btrfs_inode
  2020-06-01 15:36 [PATCH 00/46] Trivial BTRFS_I removal Nikolay Borisov
                   ` (17 preceding siblings ...)
  2020-06-01 15:37 ` [PATCH 18/46] btrfs: Make btrfs_qgroup_release_data " Nikolay Borisov
@ 2020-06-01 15:37 ` Nikolay Borisov
  2020-06-01 15:37 ` [PATCH 20/46] btrfs: Make fallback_to_cow " Nikolay Borisov
                   ` (28 subsequent siblings)
  47 siblings, 0 replies; 56+ messages in thread
From: Nikolay Borisov @ 2020-06-01 15:37 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

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

diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 28dfadb97a6a..2f6460241c61 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -2446,13 +2446,13 @@ int btrfs_writepage_cow_fixup(struct page *page, u64 start, u64 end)
 }
 
 static int insert_reserved_file_extent(struct btrfs_trans_handle *trans,
-				       struct inode *inode, u64 file_pos,
+				       struct btrfs_inode *inode, u64 file_pos,
 				       u64 disk_bytenr, u64 disk_num_bytes,
 				       u64 num_bytes, u64 ram_bytes,
 				       u8 compression, u8 encryption,
 				       u16 other_encoding, int extent_type)
 {
-	struct btrfs_root *root = BTRFS_I(inode)->root;
+	struct btrfs_root *root = inode->root;
 	struct btrfs_file_extent_item *fi;
 	struct btrfs_path *path;
 	struct extent_buffer *leaf;
@@ -2474,14 +2474,14 @@ static int insert_reserved_file_extent(struct btrfs_trans_handle *trans,
 	 * the caller is expected to unpin it and allow it to be merged
 	 * with the others.
 	 */
-	ret = __btrfs_drop_extents(trans, root, BTRFS_I(inode), path, file_pos,
+	ret = __btrfs_drop_extents(trans, root, inode, path, file_pos,
 				   file_pos + num_bytes, NULL, 0,
 				   1, sizeof(*fi), &extent_inserted);
 	if (ret)
 		goto out;
 
 	if (!extent_inserted) {
-		ins.objectid = btrfs_ino(BTRFS_I(inode));
+		ins.objectid = btrfs_ino(inode);
 		ins.offset = file_pos;
 		ins.type = BTRFS_EXTENT_DATA_KEY;
 
@@ -2508,14 +2508,13 @@ static int insert_reserved_file_extent(struct btrfs_trans_handle *trans,
 	btrfs_mark_buffer_dirty(leaf);
 	btrfs_release_path(path);
 
-	inode_add_bytes(inode, num_bytes);
+	inode_add_bytes(&inode->vfs_inode, num_bytes);
 
 	ins.objectid = disk_bytenr;
 	ins.offset = disk_num_bytes;
 	ins.type = BTRFS_EXTENT_ITEM_KEY;
 
-	ret = btrfs_inode_set_file_extent_range(BTRFS_I(inode), file_pos,
-						ram_bytes);
+	ret = btrfs_inode_set_file_extent_range(inode, file_pos, ram_bytes);
 	if (ret)
 		goto out;
 
@@ -2523,12 +2522,11 @@ static int insert_reserved_file_extent(struct btrfs_trans_handle *trans,
 	 * Release the reserved range from inode dirty range map, as it is
 	 * already moved into delayed_ref_head
 	 */
-	ret = btrfs_qgroup_release_data(BTRFS_I(inode), file_pos, ram_bytes);
+	ret = btrfs_qgroup_release_data(inode, file_pos, ram_bytes);
 	if (ret < 0)
 		goto out;
 	qg_released = ret;
-	ret = btrfs_alloc_reserved_file_extent(trans, root,
-					       btrfs_ino(BTRFS_I(inode)),
+	ret = btrfs_alloc_reserved_file_extent(trans, root, btrfs_ino(inode),
 					       file_pos, qg_released, &ins);
 out:
 	btrfs_free_path(path);
@@ -2653,7 +2651,7 @@ static int btrfs_finish_ordered_io(struct btrfs_ordered_extent *ordered_extent)
 						logical_len);
 	} else {
 		BUG_ON(root == fs_info->tree_root);
-		ret = insert_reserved_file_extent(trans, inode, start,
+		ret = insert_reserved_file_extent(trans, BTRFS_I(inode), start,
 						ordered_extent->disk_bytenr,
 						ordered_extent->disk_num_bytes,
 						logical_len, logical_len,
@@ -9545,7 +9543,7 @@ static int __btrfs_prealloc_file_range(struct inode *inode, int mode,
 		btrfs_dec_block_group_reservations(fs_info, ins.objectid);
 
 		last_alloc = ins.offset;
-		ret = insert_reserved_file_extent(trans, inode,
+		ret = insert_reserved_file_extent(trans, BTRFS_I(inode),
 						  cur_offset, ins.objectid,
 						  ins.offset, ins.offset,
 						  ins.offset, 0, 0, 0,
-- 
2.17.1


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

* [PATCH 20/46] btrfs: Make fallback_to_cow take btrfs_inode
  2020-06-01 15:36 [PATCH 00/46] Trivial BTRFS_I removal Nikolay Borisov
                   ` (18 preceding siblings ...)
  2020-06-01 15:37 ` [PATCH 19/46] btrfs: Make insert_reserved_file_extent " Nikolay Borisov
@ 2020-06-01 15:37 ` Nikolay Borisov
  2020-06-02  9:23   ` Johannes Thumshirn
  2020-06-01 15:37 ` [PATCH 21/46] btrfs: Make run_delalloc_nocow " Nikolay Borisov
                   ` (27 subsequent siblings)
  47 siblings, 1 reply; 56+ messages in thread
From: Nikolay Borisov @ 2020-06-01 15:37 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

It really wants btrfs_inode and is prepration to converting run_delalloc_nocow
to taking btrfs_inode.

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

diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 2f6460241c61..27051e8a7013 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -1352,13 +1352,13 @@ static noinline int csum_exist_in_range(struct btrfs_fs_info *fs_info,
 	return 1;
 }

-static int fallback_to_cow(struct inode *inode, struct page *locked_page,
+static int fallback_to_cow(struct btrfs_inode *inode, struct page *locked_page,
 			   const u64 start, const u64 end,
 			   int *page_started, unsigned long *nr_written)
 {
-	const bool is_space_ino = btrfs_is_free_space_inode(BTRFS_I(inode));
+	const bool is_space_ino = btrfs_is_free_space_inode(inode);
 	const u64 range_bytes = end + 1 - start;
-	struct extent_io_tree *io_tree = &BTRFS_I(inode)->io_tree;
+	struct extent_io_tree *io_tree = &inode->io_tree;
 	u64 range_start = start;
 	u64 count;

@@ -1396,7 +1396,7 @@ static int fallback_to_cow(struct inode *inode, struct page *locked_page,
 				 EXTENT_NORESERVE, 0);
 	if (count > 0 || is_space_ino) {
 		const u64 bytes = is_space_ino ? range_bytes : count;
-		struct btrfs_fs_info *fs_info = BTRFS_I(inode)->root->fs_info;
+		struct btrfs_fs_info *fs_info = inode->root->fs_info;
 		struct btrfs_space_info *sinfo = fs_info->data_sinfo;

 		spin_lock(&sinfo->lock);
@@ -1408,8 +1408,8 @@ static int fallback_to_cow(struct inode *inode, struct page *locked_page,
 					 0, 0, NULL);
 	}

-	return cow_file_range(BTRFS_I(inode), locked_page, start, end,
-			      page_started, nr_written, 1);
+	return cow_file_range(inode, locked_page, start, end, page_started,
+			      nr_written, 1);
 }

 /*
@@ -1660,8 +1660,8 @@ static noinline int run_delalloc_nocow(struct inode *inode,
 		 * NOCOW, following one which needs to be COW'ed
 		 */
 		if (cow_start != (u64)-1) {
-			ret = fallback_to_cow(inode, locked_page, cow_start,
-					      found_key.offset - 1,
+			ret = fallback_to_cow(BTRFS_I(inode), locked_page,
+					      cow_start, found_key.offset - 1,
 					      page_started, nr_written);
 			if (ret) {
 				if (nocow)
@@ -1751,8 +1751,8 @@ static noinline int run_delalloc_nocow(struct inode *inode,

 	if (cow_start != (u64)-1) {
 		cur_offset = end;
-		ret = fallback_to_cow(inode, locked_page, cow_start, end,
-				      page_started, nr_written);
+		ret = fallback_to_cow(BTRFS_I(inode), locked_page, cow_start,
+				      end, page_started, nr_written);
 		if (ret)
 			goto error;
 	}
--
2.17.1


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

* [PATCH 21/46] btrfs: Make run_delalloc_nocow take btrfs_inode
  2020-06-01 15:36 [PATCH 00/46] Trivial BTRFS_I removal Nikolay Borisov
                   ` (19 preceding siblings ...)
  2020-06-01 15:37 ` [PATCH 20/46] btrfs: Make fallback_to_cow " Nikolay Borisov
@ 2020-06-01 15:37 ` Nikolay Borisov
  2020-06-01 15:37 ` [PATCH 22/46] btrfs: Make cow_file_range_async " Nikolay Borisov
                   ` (26 subsequent siblings)
  47 siblings, 0 replies; 56+ messages in thread
From: Nikolay Borisov @ 2020-06-01 15:37 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

It only really uses btrfs_inode.

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

diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 27051e8a7013..2798154f2c48 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -1419,28 +1419,27 @@ static int fallback_to_cow(struct btrfs_inode *inode, struct page *locked_page,
  * If no cow copies or snapshots exist, we write directly to the existing
  * blocks on disk
  */
-static noinline int run_delalloc_nocow(struct inode *inode,
+static noinline int run_delalloc_nocow(struct btrfs_inode *inode,
 				       struct page *locked_page,
 				       const u64 start, const u64 end,
 				       int *page_started, int force,
 				       unsigned long *nr_written)
 {
-	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 = inode->root->fs_info;
+	struct btrfs_root *root = inode->root;
 	struct btrfs_path *path;
 	u64 cow_start = (u64)-1;
 	u64 cur_offset = start;
 	int ret;
 	bool check_prev = true;
-	const bool freespace_inode = btrfs_is_free_space_inode(BTRFS_I(inode));
-	u64 ino = btrfs_ino(BTRFS_I(inode));
+	const bool freespace_inode = btrfs_is_free_space_inode(inode);
+	u64 ino = btrfs_ino(inode);
 	bool nocow = false;
 	u64 disk_bytenr = 0;

 	path = btrfs_alloc_path();
 	if (!path) {
-		extent_clear_unlock_delalloc(BTRFS_I(inode), start, end,
-					     locked_page,
+		extent_clear_unlock_delalloc(inode, start, end, locked_page,
 					     EXTENT_LOCKED | EXTENT_DELALLOC |
 					     EXTENT_DO_ACCOUNTING |
 					     EXTENT_DEFRAG, PAGE_UNLOCK |
@@ -1660,7 +1659,7 @@ static noinline int run_delalloc_nocow(struct inode *inode,
 		 * NOCOW, following one which needs to be COW'ed
 		 */
 		if (cow_start != (u64)-1) {
-			ret = fallback_to_cow(BTRFS_I(inode), locked_page,
+			ret = fallback_to_cow(inode, locked_page,
 					      cow_start, found_key.offset - 1,
 					      page_started, nr_written);
 			if (ret) {
@@ -1676,7 +1675,7 @@ static noinline int run_delalloc_nocow(struct inode *inode,
 			u64 orig_start = found_key.offset - extent_offset;
 			struct extent_map *em;

-			em = create_io_em(BTRFS_I(inode), cur_offset, num_bytes,
+			em = create_io_em(inode, cur_offset, num_bytes,
 					  orig_start,
 					  disk_bytenr, /* block_start */
 					  num_bytes, /* block_len */
@@ -1691,19 +1690,18 @@ static noinline int run_delalloc_nocow(struct inode *inode,
 				goto error;
 			}
 			free_extent_map(em);
-			ret = btrfs_add_ordered_extent(BTRFS_I(inode), cur_offset,
+			ret = btrfs_add_ordered_extent(inode, cur_offset,
 						       disk_bytenr, num_bytes,
 						       num_bytes,
 						       BTRFS_ORDERED_PREALLOC);
 			if (ret) {
-				btrfs_drop_extent_cache(BTRFS_I(inode),
-							cur_offset,
+				btrfs_drop_extent_cache(inode, cur_offset,
 							cur_offset + num_bytes - 1,
 							0);
 				goto error;
 			}
 		} else {
-			ret = btrfs_add_ordered_extent(BTRFS_I(inode), cur_offset,
+			ret = btrfs_add_ordered_extent(inode, cur_offset,
 						       disk_bytenr, num_bytes,
 						       num_bytes,
 						       BTRFS_ORDERED_NOCOW);
@@ -1722,10 +1720,10 @@ static noinline int run_delalloc_nocow(struct inode *inode,
 			 * extent_clear_unlock_delalloc() in error handler
 			 * from freeing metadata of created ordered extent.
 			 */
-			ret = btrfs_reloc_clone_csums(BTRFS_I(inode), cur_offset,
+			ret = btrfs_reloc_clone_csums(inode, cur_offset,
 						      num_bytes);

-		extent_clear_unlock_delalloc(BTRFS_I(inode), cur_offset,
+		extent_clear_unlock_delalloc(inode, cur_offset,
 					     cur_offset + num_bytes - 1,
 					     locked_page, EXTENT_LOCKED |
 					     EXTENT_DELALLOC |
@@ -1751,8 +1749,8 @@ static noinline int run_delalloc_nocow(struct inode *inode,

 	if (cow_start != (u64)-1) {
 		cur_offset = end;
-		ret = fallback_to_cow(BTRFS_I(inode), locked_page, cow_start,
-				      end, page_started, nr_written);
+		ret = fallback_to_cow(inode, locked_page, cow_start, end,
+				      page_started, nr_written);
 		if (ret)
 			goto error;
 	}
@@ -1762,7 +1760,7 @@ static noinline int run_delalloc_nocow(struct inode *inode,
 		btrfs_dec_nocow_writers(fs_info, disk_bytenr);

 	if (ret && cur_offset < end)
-		extent_clear_unlock_delalloc(BTRFS_I(inode), cur_offset, end,
+		extent_clear_unlock_delalloc(inode, cur_offset, end,
 					     locked_page, EXTENT_LOCKED |
 					     EXTENT_DELALLOC | EXTENT_DEFRAG |
 					     EXTENT_DO_ACCOUNTING, PAGE_UNLOCK |
@@ -1805,10 +1803,10 @@ int btrfs_run_delalloc_range(struct inode *inode, struct page *locked_page,
 	int force_cow = need_force_cow(inode, start, end);

 	if (BTRFS_I(inode)->flags & BTRFS_INODE_NODATACOW && !force_cow) {
-		ret = run_delalloc_nocow(inode, locked_page, start, end,
+		ret = run_delalloc_nocow(BTRFS_I(inode), locked_page, start, end,
 					 page_started, 1, nr_written);
 	} else if (BTRFS_I(inode)->flags & BTRFS_INODE_PREALLOC && !force_cow) {
-		ret = run_delalloc_nocow(inode, locked_page, start, end,
+		ret = run_delalloc_nocow(BTRFS_I(inode), locked_page, start, end,
 					 page_started, 0, nr_written);
 	} else if (!inode_can_compress(inode) ||
 		   !inode_need_compress(inode, start, end)) {
--
2.17.1


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

* [PATCH 22/46] btrfs: Make cow_file_range_async take btrfs_inode
  2020-06-01 15:36 [PATCH 00/46] Trivial BTRFS_I removal Nikolay Borisov
                   ` (20 preceding siblings ...)
  2020-06-01 15:37 ` [PATCH 21/46] btrfs: Make run_delalloc_nocow " Nikolay Borisov
@ 2020-06-01 15:37 ` Nikolay Borisov
  2020-06-01 15:37 ` [PATCH 23/46] btrfs: Make btrfs_dec_test_first_ordered_pending " Nikolay Borisov
                   ` (25 subsequent siblings)
  47 siblings, 0 replies; 56+ messages in thread
From: Nikolay Borisov @ 2020-06-01 15:37 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

It only uses vfs inode for assigning it to the async_chunk function.

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

diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 2798154f2c48..192a2f0ce4ba 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -1215,13 +1215,13 @@ static noinline void async_cow_free(struct btrfs_work *work)
 		kvfree(async_chunk->pending);
 }

-static int cow_file_range_async(struct inode *inode,
+static int cow_file_range_async(struct btrfs_inode *inode,
 				struct writeback_control *wbc,
 				struct page *locked_page,
 				u64 start, u64 end, int *page_started,
 				unsigned long *nr_written)
 {
-	struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
+	struct btrfs_fs_info *fs_info = inode->root->fs_info;
 	struct cgroup_subsys_state *blkcg_css = wbc_blkcg_css(wbc);
 	struct async_cow *ctx;
 	struct async_chunk *async_chunk;
@@ -1233,9 +1233,9 @@ static int cow_file_range_async(struct inode *inode,
 	unsigned nofs_flag;
 	const unsigned int write_flags = wbc_to_write_flags(wbc);

-	unlock_extent(&BTRFS_I(inode)->io_tree, start, end);
+	unlock_extent(&inode->io_tree, start, end);

-	if (BTRFS_I(inode)->flags & BTRFS_INODE_NOCOMPRESS &&
+	if (inode->flags & BTRFS_INODE_NOCOMPRESS &&
 	    !btrfs_test_opt(fs_info, FORCE_COMPRESS)) {
 		num_chunks = 1;
 		should_compress = false;
@@ -1255,8 +1255,8 @@ static int cow_file_range_async(struct inode *inode,
 			PAGE_SET_WRITEBACK | PAGE_END_WRITEBACK |
 			PAGE_SET_ERROR;

-		extent_clear_unlock_delalloc(BTRFS_I(inode), start, end,
-					     locked_page, clear_bits, page_ops);
+		extent_clear_unlock_delalloc(inode, start, end, locked_page,
+					     clear_bits, page_ops);
 		return -ENOMEM;
 	}

@@ -1273,9 +1273,9 @@ static int cow_file_range_async(struct inode *inode,
 		 * igrab is called higher up in the call chain, take only the
 		 * lightweight reference for the callback lifetime
 		 */
-		ihold(inode);
+		ihold(&inode->vfs_inode);
 		async_chunk[i].pending = &ctx->num_chunks;
-		async_chunk[i].inode = inode;
+		async_chunk[i].inode = &inode->vfs_inode;
 		async_chunk[i].start = start;
 		async_chunk[i].end = cur_end;
 		async_chunk[i].write_flags = write_flags;
@@ -1815,7 +1815,7 @@ int btrfs_run_delalloc_range(struct inode *inode, struct page *locked_page,
 	} else {
 		set_bit(BTRFS_INODE_HAS_ASYNC_EXTENT,
 			&BTRFS_I(inode)->runtime_flags);
-		ret = cow_file_range_async(inode, wbc, locked_page, start, end,
+		ret = cow_file_range_async(BTRFS_I(inode), wbc, locked_page, start, end,
 					   page_started, nr_written);
 	}
 	if (ret)
--
2.17.1


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

* [PATCH 23/46] btrfs: Make btrfs_dec_test_first_ordered_pending take btrfs_inode
  2020-06-01 15:36 [PATCH 00/46] Trivial BTRFS_I removal Nikolay Borisov
                   ` (21 preceding siblings ...)
  2020-06-01 15:37 ` [PATCH 22/46] btrfs: Make cow_file_range_async " Nikolay Borisov
@ 2020-06-01 15:37 ` Nikolay Borisov
  2020-06-01 15:37 ` [PATCH 24/46] btrfs: Make __endio_write_update_ordered " Nikolay Borisov
                   ` (24 subsequent siblings)
  47 siblings, 0 replies; 56+ messages in thread
From: Nikolay Borisov @ 2020-06-01 15:37 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

It doesn't really need vfs_inode but btrfs_inode.

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

diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 192a2f0ce4ba..561bd8b4d7f3 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -7558,10 +7558,10 @@ static void __endio_write_update_ordered(struct inode *inode,

 	while (ordered_offset < offset + bytes) {
 		last_offset = ordered_offset;
-		if (btrfs_dec_test_first_ordered_pending(inode, &ordered,
-							   &ordered_offset,
-							   ordered_bytes,
-							   uptodate)) {
+		if (btrfs_dec_test_first_ordered_pending(BTRFS_I(inode), &ordered,
+							 &ordered_offset,
+							 ordered_bytes,
+							 uptodate)) {
 			btrfs_init_work(&ordered->work, finish_ordered_fn, NULL,
 					NULL);
 			btrfs_queue_work(wq, &ordered->work);
diff --git a/fs/btrfs/ordered-data.c b/fs/btrfs/ordered-data.c
index b3e3ab28dd78..4d32876649a5 100644
--- a/fs/btrfs/ordered-data.c
+++ b/fs/btrfs/ordered-data.c
@@ -290,12 +290,12 @@ void btrfs_add_ordered_sum(struct btrfs_ordered_extent *entry,
  * file_offset is updated to one byte past the range that is recorded as
  * complete.  This allows you to walk forward in the file.
  */
-int btrfs_dec_test_first_ordered_pending(struct inode *inode,
+int btrfs_dec_test_first_ordered_pending(struct btrfs_inode *inode,
 				   struct btrfs_ordered_extent **cached,
 				   u64 *file_offset, u64 io_size, int uptodate)
 {
-	struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
-	struct btrfs_ordered_inode_tree *tree;
+	struct btrfs_fs_info *fs_info = inode->root->fs_info;
+	struct btrfs_ordered_inode_tree *tree = &inode->ordered_tree;
 	struct rb_node *node;
 	struct btrfs_ordered_extent *entry = NULL;
 	int ret;
@@ -304,7 +304,6 @@ int btrfs_dec_test_first_ordered_pending(struct inode *inode,
 	u64 dec_start;
 	u64 to_dec;

-	tree = &BTRFS_I(inode)->ordered_tree;
 	spin_lock_irqsave(&tree->lock, flags);
 	node = tree_search(tree, *file_offset);
 	if (!node) {
diff --git a/fs/btrfs/ordered-data.h b/fs/btrfs/ordered-data.h
index a0c6c31fc79b..d9819bfcd3ec 100644
--- a/fs/btrfs/ordered-data.h
+++ b/fs/btrfs/ordered-data.h
@@ -150,7 +150,7 @@ void btrfs_remove_ordered_extent(struct inode *inode,
 int btrfs_dec_test_ordered_pending(struct inode *inode,
 				   struct btrfs_ordered_extent **cached,
 				   u64 file_offset, u64 io_size, int uptodate);
-int btrfs_dec_test_first_ordered_pending(struct inode *inode,
+int btrfs_dec_test_first_ordered_pending(struct btrfs_inode *inode,
 				   struct btrfs_ordered_extent **cached,
 				   u64 *file_offset, u64 io_size,
 				   int uptodate);
--
2.17.1


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

* [PATCH 24/46] btrfs: Make __endio_write_update_ordered take btrfs_inode
  2020-06-01 15:36 [PATCH 00/46] Trivial BTRFS_I removal Nikolay Borisov
                   ` (22 preceding siblings ...)
  2020-06-01 15:37 ` [PATCH 23/46] btrfs: Make btrfs_dec_test_first_ordered_pending " Nikolay Borisov
@ 2020-06-01 15:37 ` Nikolay Borisov
  2020-06-01 15:37 ` [PATCH 25/46] btrfs: Make btrfs_cleanup_ordered_extents " Nikolay Borisov
                   ` (23 subsequent siblings)
  47 siblings, 0 replies; 56+ messages in thread
From: Nikolay Borisov @ 2020-06-01 15:37 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

It really wants btrfs_inode.

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

diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 561bd8b4d7f3..964ebc0a8413 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -89,7 +89,7 @@ static struct extent_map *create_io_em(struct btrfs_inode *inode, u64 start,
 				       u64 ram_bytes, int compress_type,
 				       int type);

-static void __endio_write_update_ordered(struct inode *inode,
+static void __endio_write_update_ordered(struct btrfs_inode *inode,
 					 const u64 offset, const u64 bytes,
 					 const bool uptodate);

@@ -133,7 +133,8 @@ static inline void btrfs_cleanup_ordered_extents(struct inode *inode,
 		bytes -= PAGE_SIZE;
 	}

-	return __endio_write_update_ordered(inode, offset, bytes, false);
+	return __endio_write_update_ordered(BTRFS_I(inode), offset, bytes,
+					    false);
 }

 static int btrfs_dirty_inode(struct inode *inode);
@@ -7422,7 +7423,8 @@ static int btrfs_dio_iomap_end(struct inode *inode, loff_t pos, loff_t length,
 		pos += submitted;
 		length -= submitted;
 		if (write)
-			__endio_write_update_ordered(inode, pos, length, false);
+			__endio_write_update_ordered(BTRFS_I(inode), pos,
+						     length, false);
 		else
 			unlock_extent(&BTRFS_I(inode)->io_tree, pos,
 				      pos + length - 1);
@@ -7454,7 +7456,8 @@ static void btrfs_dio_private_put(struct btrfs_dio_private *dip)
 		return;

 	if (bio_op(dip->dio_bio) == REQ_OP_WRITE) {
-		__endio_write_update_ordered(dip->inode, dip->logical_offset,
+		__endio_write_update_ordered(BTRFS_I(dip->inode),
+					     dip->logical_offset,
 					     dip->bytes,
 					     !dip->dio_bio->bi_status);
 	} else {
@@ -7540,25 +7543,25 @@ static blk_status_t btrfs_check_read_dio_bio(struct inode *inode,
 	return err;
 }

-static void __endio_write_update_ordered(struct inode *inode,
+static void __endio_write_update_ordered(struct btrfs_inode *inode,
 					 const u64 offset, const u64 bytes,
 					 const bool uptodate)
 {
-	struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
+	struct btrfs_fs_info *fs_info = inode->root->fs_info;
 	struct btrfs_ordered_extent *ordered = NULL;
 	struct btrfs_workqueue *wq;
 	u64 ordered_offset = offset;
 	u64 ordered_bytes = bytes;
 	u64 last_offset;

-	if (btrfs_is_free_space_inode(BTRFS_I(inode)))
+	if (btrfs_is_free_space_inode(inode))
 		wq = fs_info->endio_freespace_worker;
 	else
 		wq = fs_info->endio_write_workers;

 	while (ordered_offset < offset + bytes) {
 		last_offset = ordered_offset;
-		if (btrfs_dec_test_first_ordered_pending(BTRFS_I(inode), &ordered,
+		if (btrfs_dec_test_first_ordered_pending(inode, &ordered,
 							 &ordered_offset,
 							 ordered_bytes,
 							 uptodate)) {
--
2.17.1


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

* [PATCH 25/46] btrfs: Make btrfs_cleanup_ordered_extents take btrfs_inode
  2020-06-01 15:36 [PATCH 00/46] Trivial BTRFS_I removal Nikolay Borisov
                   ` (23 preceding siblings ...)
  2020-06-01 15:37 ` [PATCH 24/46] btrfs: Make __endio_write_update_ordered " Nikolay Borisov
@ 2020-06-01 15:37 ` Nikolay Borisov
  2020-06-01 15:37 ` [PATCH 26/46] btrfs: Make inode_can_compress " Nikolay Borisov
                   ` (22 subsequent siblings)
  47 siblings, 0 replies; 56+ messages in thread
From: Nikolay Borisov @ 2020-06-01 15:37 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

Preparation to converting btrfs_run_delalloc_range to using btrfs_inode without
BTRFS_I() calls.

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

diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 964ebc0a8413..a8a41c19b0bb 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -103,7 +103,7 @@ static void __endio_write_update_ordered(struct btrfs_inode *inode,
  * to be released, which we want to happen only when finishing the ordered
  * extent (btrfs_finish_ordered_io()).
  */
-static inline void btrfs_cleanup_ordered_extents(struct inode *inode,
+static inline void btrfs_cleanup_ordered_extents(struct btrfs_inode *inode,
 						 struct page *locked_page,
 						 u64 offset, u64 bytes)
 {
@@ -115,7 +115,7 @@ static inline void btrfs_cleanup_ordered_extents(struct inode *inode,
 	struct page *page;

 	while (index <= end_index) {
-		page = find_get_page(inode->i_mapping, index);
+		page = find_get_page(inode->vfs_inode.i_mapping, index);
 		index++;
 		if (!page)
 			continue;
@@ -133,8 +133,7 @@ static inline void btrfs_cleanup_ordered_extents(struct inode *inode,
 		bytes -= PAGE_SIZE;
 	}

-	return __endio_write_update_ordered(BTRFS_I(inode), offset, bytes,
-					    false);
+	return __endio_write_update_ordered(inode, offset, bytes, false);
 }

 static int btrfs_dirty_inode(struct inode *inode);
@@ -1820,7 +1819,7 @@ int btrfs_run_delalloc_range(struct inode *inode, struct page *locked_page,
 					   page_started, nr_written);
 	}
 	if (ret)
-		btrfs_cleanup_ordered_extents(inode, locked_page, start,
+		btrfs_cleanup_ordered_extents(BTRFS_I(inode), locked_page, start,
 					      end - start + 1);
 	return ret;
 }
--
2.17.1


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

* [PATCH 26/46] btrfs: Make inode_can_compress take btrfs_inode
  2020-06-01 15:36 [PATCH 00/46] Trivial BTRFS_I removal Nikolay Borisov
                   ` (24 preceding siblings ...)
  2020-06-01 15:37 ` [PATCH 25/46] btrfs: Make btrfs_cleanup_ordered_extents " Nikolay Borisov
@ 2020-06-01 15:37 ` Nikolay Borisov
  2020-06-01 15:37 ` [PATCH 27/46] btrfs: Make inode_need_compress " Nikolay Borisov
                   ` (21 subsequent siblings)
  47 siblings, 0 replies; 56+ messages in thread
From: Nikolay Borisov @ 2020-06-01 15:37 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

Gets rid of superfluous BTRFS_I() calls.

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

diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index a8a41c19b0bb..1c3704b18f3a 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -411,10 +411,10 @@ static noinline int add_async_extent(struct async_chunk *cow,
 /*
  * Check if the inode has flags compatible with compression
  */
-static inline bool inode_can_compress(struct inode *inode)
+static inline bool inode_can_compress(struct btrfs_inode *inode)
 {
-	if (BTRFS_I(inode)->flags & BTRFS_INODE_NODATACOW ||
-	    BTRFS_I(inode)->flags & BTRFS_INODE_NODATASUM)
+	if (inode->flags & BTRFS_INODE_NODATACOW ||
+	    inode->flags & BTRFS_INODE_NODATASUM)
 		return false;
 	return true;
 }
@@ -427,7 +427,7 @@ static inline int inode_need_compress(struct inode *inode, u64 start, u64 end)
 {
 	struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);

-	if (!inode_can_compress(inode)) {
+	if (!inode_can_compress(BTRFS_I(inode))) {
 		WARN(IS_ENABLED(CONFIG_BTRFS_DEBUG),
 			KERN_ERR "BTRFS: unexpected compression for ino %llu\n",
 			btrfs_ino(BTRFS_I(inode)));
@@ -1808,7 +1808,7 @@ int btrfs_run_delalloc_range(struct inode *inode, struct page *locked_page,
 	} else if (BTRFS_I(inode)->flags & BTRFS_INODE_PREALLOC && !force_cow) {
 		ret = run_delalloc_nocow(BTRFS_I(inode), locked_page, start, end,
 					 page_started, 0, nr_written);
-	} else if (!inode_can_compress(inode) ||
+	} else if (!inode_can_compress(BTRFS_I(inode)) ||
 		   !inode_need_compress(inode, start, end)) {
 		ret = cow_file_range(BTRFS_I(inode), locked_page, start, end,
 				      page_started, nr_written, 1);
--
2.17.1


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

* [PATCH 27/46] btrfs: Make inode_need_compress take btrfs_inode
  2020-06-01 15:36 [PATCH 00/46] Trivial BTRFS_I removal Nikolay Borisov
                   ` (25 preceding siblings ...)
  2020-06-01 15:37 ` [PATCH 26/46] btrfs: Make inode_can_compress " Nikolay Borisov
@ 2020-06-01 15:37 ` Nikolay Borisov
  2020-06-01 15:37 ` [PATCH 28/46] btrfs: Make need_force_cow " Nikolay Borisov
                   ` (20 subsequent siblings)
  47 siblings, 0 replies; 56+ messages in thread
From: Nikolay Borisov @ 2020-06-01 15:37 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

Simply gets rid of superfluous BTRFS_I() calls.

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 1c3704b18f3a..c44e2ded2597 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -423,29 +423,30 @@ static inline bool inode_can_compress(struct btrfs_inode *inode)
  * Check if the inode needs to be submitted to compression, based on mount
  * options, defragmentation, properties or heuristics.
  */
-static inline int inode_need_compress(struct inode *inode, u64 start, u64 end)
+static inline int inode_need_compress(struct btrfs_inode *inode, u64 start,
+				      u64 end)
 {
-	struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
+	struct btrfs_fs_info *fs_info = inode->root->fs_info;

-	if (!inode_can_compress(BTRFS_I(inode))) {
+	if (!inode_can_compress(inode)) {
 		WARN(IS_ENABLED(CONFIG_BTRFS_DEBUG),
 			KERN_ERR "BTRFS: unexpected compression for ino %llu\n",
-			btrfs_ino(BTRFS_I(inode)));
+			btrfs_ino(inode));
 		return 0;
 	}
 	/* force compress */
 	if (btrfs_test_opt(fs_info, FORCE_COMPRESS))
 		return 1;
 	/* defrag ioctl */
-	if (BTRFS_I(inode)->defrag_compress)
+	if (inode->defrag_compress)
 		return 1;
 	/* bad compression ratios */
-	if (BTRFS_I(inode)->flags & BTRFS_INODE_NOCOMPRESS)
+	if (inode->flags & BTRFS_INODE_NOCOMPRESS)
 		return 0;
 	if (btrfs_test_opt(fs_info, COMPRESS) ||
-	    BTRFS_I(inode)->flags & BTRFS_INODE_COMPRESS ||
-	    BTRFS_I(inode)->prop_compress)
-		return btrfs_compress_heuristic(inode, start, end);
+	    inode->flags & BTRFS_INODE_COMPRESS ||
+	    inode->prop_compress)
+		return btrfs_compress_heuristic(&inode->vfs_inode, start, end);
 	return 0;
 }

@@ -551,7 +552,7 @@ static noinline int compress_file_range(struct async_chunk *async_chunk)
 	 * inode has not been flagged as nocompress.  This flag can
 	 * change at any time if we discover bad compression ratios.
 	 */
-	if (inode_need_compress(inode, start, end)) {
+	if (inode_need_compress(BTRFS_I(inode), start, end)) {
 		WARN_ON(pages);
 		pages = kcalloc(nr_pages, sizeof(struct page *), GFP_NOFS);
 		if (!pages) {
@@ -1809,7 +1810,7 @@ int btrfs_run_delalloc_range(struct inode *inode, struct page *locked_page,
 		ret = run_delalloc_nocow(BTRFS_I(inode), locked_page, start, end,
 					 page_started, 0, nr_written);
 	} else if (!inode_can_compress(BTRFS_I(inode)) ||
-		   !inode_need_compress(inode, start, end)) {
+		   !inode_need_compress(BTRFS_I(inode), start, end)) {
 		ret = cow_file_range(BTRFS_I(inode), locked_page, start, end,
 				      page_started, nr_written, 1);
 	} else {
--
2.17.1


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

* [PATCH 28/46] btrfs: Make need_force_cow take btrfs_inode
  2020-06-01 15:36 [PATCH 00/46] Trivial BTRFS_I removal Nikolay Borisov
                   ` (26 preceding siblings ...)
  2020-06-01 15:37 ` [PATCH 27/46] btrfs: Make inode_need_compress " Nikolay Borisov
@ 2020-06-01 15:37 ` Nikolay Borisov
  2020-06-01 15:37 ` [PATCH 29/46] btrfs: Make btrfs_run_delalloc_range " Nikolay Borisov
                   ` (19 subsequent siblings)
  47 siblings, 0 replies; 56+ messages in thread
From: Nikolay Borisov @ 2020-06-01 15:37 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

Gets rid of superfulous BTRFS_I() calls and prepare for converting
btrfs_run_delalloc_range to using btrfs_inode.

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

diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index c44e2ded2597..709253e2470a 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -1772,11 +1772,11 @@ static noinline int run_delalloc_nocow(struct btrfs_inode *inode,
 	return ret;
 }

-static inline int need_force_cow(struct inode *inode, u64 start, u64 end)
+static inline int need_force_cow(struct btrfs_inode *inode, u64 start, u64 end)
 {

-	if (!(BTRFS_I(inode)->flags & BTRFS_INODE_NODATACOW) &&
-	    !(BTRFS_I(inode)->flags & BTRFS_INODE_PREALLOC))
+	if (!(inode->flags & BTRFS_INODE_NODATACOW) &&
+	    !(inode->flags & BTRFS_INODE_PREALLOC))
 		return 0;

 	/*
@@ -1784,9 +1784,8 @@ static inline int need_force_cow(struct inode *inode, u64 start, u64 end)
 	 * if is not zero, it means the file is defragging.
 	 * Force cow if given extent needs to be defragged.
 	 */
-	if (BTRFS_I(inode)->defrag_bytes &&
-	    test_range_bit(&BTRFS_I(inode)->io_tree, start, end,
-			   EXTENT_DEFRAG, 0, NULL))
+	if (inode->defrag_bytes &&
+	    test_range_bit(&inode->io_tree, start, end, EXTENT_DEFRAG, 0, NULL))
 		return 1;

 	return 0;
@@ -1801,7 +1800,7 @@ int btrfs_run_delalloc_range(struct inode *inode, struct page *locked_page,
 		struct writeback_control *wbc)
 {
 	int ret;
-	int force_cow = need_force_cow(inode, start, end);
+	int force_cow = need_force_cow(BTRFS_I(inode), start, end);

 	if (BTRFS_I(inode)->flags & BTRFS_INODE_NODATACOW && !force_cow) {
 		ret = run_delalloc_nocow(BTRFS_I(inode), locked_page, start, end,
--
2.17.1


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

* [PATCH 29/46] btrfs: Make btrfs_run_delalloc_range take btrfs_inode
  2020-06-01 15:36 [PATCH 00/46] Trivial BTRFS_I removal Nikolay Borisov
                   ` (27 preceding siblings ...)
  2020-06-01 15:37 ` [PATCH 28/46] btrfs: Make need_force_cow " Nikolay Borisov
@ 2020-06-01 15:37 ` Nikolay Borisov
  2020-06-01 15:37 ` [PATCH 30/46] btrfs: Make btrfs_add_ordered_extent_dio " Nikolay Borisov
                   ` (18 subsequent siblings)
  47 siblings, 0 replies; 56+ messages in thread
From: Nikolay Borisov @ 2020-06-01 15:37 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

All children now take btrfs_inode so convert it to taking it as a parameter
as well.

Signed-off-by: Nikolay Borisov <nborisov@suse.com>
---
 fs/btrfs/ctree.h     |  2 +-
 fs/btrfs/extent_io.c |  6 ++++--
 fs/btrfs/inode.c     | 26 +++++++++++++-------------
 3 files changed, 18 insertions(+), 16 deletions(-)

diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h
index bd69e912e8d6..e6f47bdf6f0a 100644
--- a/fs/btrfs/ctree.h
+++ b/fs/btrfs/ctree.h
@@ -2927,7 +2927,7 @@ int btrfs_prealloc_file_range_trans(struct inode *inode,
 				    struct btrfs_trans_handle *trans, int mode,
 				    u64 start, u64 num_bytes, u64 min_size,
 				    loff_t actual_len, u64 *alloc_hint);
-int btrfs_run_delalloc_range(struct inode *inode, struct page *locked_page,
+int btrfs_run_delalloc_range(struct btrfs_inode *inode, struct page *locked_page,
 		u64 start, u64 end, int *page_started, unsigned long *nr_written,
 		struct writeback_control *wbc);
 int btrfs_writepage_cow_fixup(struct page *page, u64 start, u64 end);
diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c
index 4d19cb930d57..e2a033e77b25 100644
--- a/fs/btrfs/extent_io.c
+++ b/fs/btrfs/extent_io.c
@@ -3444,8 +3444,10 @@ static noinline_for_stack int writepage_delalloc(struct inode *inode,
 			delalloc_start = delalloc_end + 1;
 			continue;
 		}
-		ret = btrfs_run_delalloc_range(inode, page, delalloc_start,
-				delalloc_end, &page_started, nr_written, wbc);
+		ret = btrfs_run_delalloc_range(BTRFS_I(inode), page,
+					       delalloc_start,
+					       delalloc_end, &page_started,
+					       nr_written, wbc);
 		if (ret) {
 			SetPageError(page);
 			/*
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 709253e2470a..54e291c94214 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -1795,31 +1795,31 @@ static inline int need_force_cow(struct btrfs_inode *inode, u64 start, u64 end)
  * Function to process delayed allocation (create CoW) for ranges which are
  * being touched for the first time.
  */
-int btrfs_run_delalloc_range(struct inode *inode, struct page *locked_page,
+int btrfs_run_delalloc_range(struct btrfs_inode *inode, struct page *locked_page,
 		u64 start, u64 end, int *page_started, unsigned long *nr_written,
 		struct writeback_control *wbc)
 {
 	int ret;
-	int force_cow = need_force_cow(BTRFS_I(inode), start, end);
+	int force_cow = need_force_cow(inode, start, end);

-	if (BTRFS_I(inode)->flags & BTRFS_INODE_NODATACOW && !force_cow) {
-		ret = run_delalloc_nocow(BTRFS_I(inode), locked_page, start, end,
+	if (inode->flags & BTRFS_INODE_NODATACOW && !force_cow) {
+		ret = run_delalloc_nocow(inode, locked_page, start, end,
 					 page_started, 1, nr_written);
-	} else if (BTRFS_I(inode)->flags & BTRFS_INODE_PREALLOC && !force_cow) {
-		ret = run_delalloc_nocow(BTRFS_I(inode), locked_page, start, end,
+	} else if (inode->flags & BTRFS_INODE_PREALLOC && !force_cow) {
+		ret = run_delalloc_nocow(inode, locked_page, start, end,
 					 page_started, 0, nr_written);
-	} else if (!inode_can_compress(BTRFS_I(inode)) ||
-		   !inode_need_compress(BTRFS_I(inode), start, end)) {
-		ret = cow_file_range(BTRFS_I(inode), locked_page, start, end,
-				      page_started, nr_written, 1);
+	} else if (!inode_can_compress(inode) ||
+		   !inode_need_compress(inode, start, end)) {
+		ret = cow_file_range(inode, locked_page, start, end,
+				     page_started, nr_written, 1);
 	} else {
 		set_bit(BTRFS_INODE_HAS_ASYNC_EXTENT,
-			&BTRFS_I(inode)->runtime_flags);
-		ret = cow_file_range_async(BTRFS_I(inode), wbc, locked_page, start, end,
+			&inode->runtime_flags);
+		ret = cow_file_range_async(inode, wbc, locked_page, start, end,
 					   page_started, nr_written);
 	}
 	if (ret)
-		btrfs_cleanup_ordered_extents(BTRFS_I(inode), locked_page, start,
+		btrfs_cleanup_ordered_extents(inode, locked_page, start,
 					      end - start + 1);
 	return ret;
 }
--
2.17.1


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

* [PATCH 30/46] btrfs: Make btrfs_add_ordered_extent_dio take btrfs_inode
  2020-06-01 15:36 [PATCH 00/46] Trivial BTRFS_I removal Nikolay Borisov
                   ` (28 preceding siblings ...)
  2020-06-01 15:37 ` [PATCH 29/46] btrfs: Make btrfs_run_delalloc_range " Nikolay Borisov
@ 2020-06-01 15:37 ` Nikolay Borisov
  2020-06-01 15:37 ` [PATCH 31/46] btrfs: Make btrfs_create_dio_extent " Nikolay Borisov
                   ` (17 subsequent siblings)
  47 siblings, 0 replies; 56+ messages in thread
From: Nikolay Borisov @ 2020-06-01 15:37 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

Simply forwards its argument so let's get rid of one extra BTRFS_I by taking
btrfs_inode directly.

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

diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 54e291c94214..96cb7cc42930 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -6845,7 +6845,7 @@ static struct extent_map *btrfs_create_dio_extent(struct inode *inode,
 		if (IS_ERR(em))
 			goto out;
 	}
-	ret = btrfs_add_ordered_extent_dio(inode, start, block_start,
+	ret = btrfs_add_ordered_extent_dio(BTRFS_I(inode), start, block_start,
 					   len, block_len, type);
 	if (ret) {
 		if (em) {
diff --git a/fs/btrfs/ordered-data.c b/fs/btrfs/ordered-data.c
index 4d32876649a5..648c3f06c463 100644
--- a/fs/btrfs/ordered-data.c
+++ b/fs/btrfs/ordered-data.c
@@ -243,11 +243,11 @@ int btrfs_add_ordered_extent(struct btrfs_inode *inode, u64 file_offset,
 					  BTRFS_COMPRESS_NONE);
 }

-int btrfs_add_ordered_extent_dio(struct inode *inode, u64 file_offset,
+int btrfs_add_ordered_extent_dio(struct btrfs_inode *inode, u64 file_offset,
 				 u64 disk_bytenr, u64 num_bytes,
 				 u64 disk_num_bytes, int type)
 {
-	return __btrfs_add_ordered_extent(BTRFS_I(inode), file_offset, disk_bytenr,
+	return __btrfs_add_ordered_extent(inode, file_offset, disk_bytenr,
 					  num_bytes, disk_num_bytes, type, 1,
 					  BTRFS_COMPRESS_NONE);
 }
diff --git a/fs/btrfs/ordered-data.h b/fs/btrfs/ordered-data.h
index d9819bfcd3ec..708603a0f708 100644
--- a/fs/btrfs/ordered-data.h
+++ b/fs/btrfs/ordered-data.h
@@ -157,7 +157,7 @@ int btrfs_dec_test_first_ordered_pending(struct btrfs_inode *inode,
 int btrfs_add_ordered_extent(struct btrfs_inode *inode, u64 file_offset,
 			     u64 disk_bytenr, u64 num_bytes, u64 disk_num_bytes,
 			     int type);
-int btrfs_add_ordered_extent_dio(struct inode *inode, u64 file_offset,
+int btrfs_add_ordered_extent_dio(struct btrfs_inode *inode, u64 file_offset,
 				 u64 disk_bytenr, u64 num_bytes,
 				 u64 disk_num_bytes, int type);
 int btrfs_add_ordered_extent_compress(struct btrfs_inode *inode, u64 file_offset,
--
2.17.1


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

* [PATCH 31/46] btrfs: Make btrfs_create_dio_extent take btrfs_inode
  2020-06-01 15:36 [PATCH 00/46] Trivial BTRFS_I removal Nikolay Borisov
                   ` (29 preceding siblings ...)
  2020-06-01 15:37 ` [PATCH 30/46] btrfs: Make btrfs_add_ordered_extent_dio " Nikolay Borisov
@ 2020-06-01 15:37 ` Nikolay Borisov
  2020-06-01 15:37 ` [PATCH 32/46] btrfs: Make btrfs_new_extent_direct " Nikolay Borisov
                   ` (16 subsequent siblings)
  47 siblings, 0 replies; 56+ messages in thread
From: Nikolay Borisov @ 2020-06-01 15:37 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

Take btrfs_inode directly and stop using superfulous BTRFS_I calls.

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

diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 96cb7cc42930..ac330d6c7c3d 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -6823,7 +6823,7 @@ struct extent_map *btrfs_get_extent_fiemap(struct btrfs_inode *inode,
 	return em;
 }

-static struct extent_map *btrfs_create_dio_extent(struct inode *inode,
+static struct extent_map *btrfs_create_dio_extent(struct btrfs_inode *inode,
 						  const u64 start,
 						  const u64 len,
 						  const u64 orig_start,
@@ -6837,21 +6837,20 @@ static struct extent_map *btrfs_create_dio_extent(struct inode *inode,
 	int ret;

 	if (type != BTRFS_ORDERED_NOCOW) {
-		em = create_io_em(BTRFS_I(inode), start, len, orig_start,
-				  block_start, block_len, orig_block_len,
-				  ram_bytes,
+		em = create_io_em(inode, start, len, orig_start, block_start,
+				  block_len, orig_block_len, ram_bytes,
 				  BTRFS_COMPRESS_NONE, /* compress_type */
 				  type);
 		if (IS_ERR(em))
 			goto out;
 	}
-	ret = btrfs_add_ordered_extent_dio(BTRFS_I(inode), start, block_start,
-					   len, block_len, type);
+	ret = btrfs_add_ordered_extent_dio(inode, start, block_start, len,
+					   block_len, type);
 	if (ret) {
 		if (em) {
 			free_extent_map(em);
-			btrfs_drop_extent_cache(BTRFS_I(inode), start,
-						start + len - 1, 0);
+			btrfs_drop_extent_cache(inode, start, start + len - 1,
+						0);
 		}
 		em = ERR_PTR(ret);
 	}
@@ -6876,7 +6875,7 @@ static struct extent_map *btrfs_new_extent_direct(struct inode *inode,
 	if (ret)
 		return ERR_PTR(ret);

-	em = btrfs_create_dio_extent(inode, start, ins.offset, start,
+	em = btrfs_create_dio_extent(BTRFS_I(inode), start, ins.offset, start,
 				     ins.objectid, ins.offset, ins.offset,
 				     ins.offset, BTRFS_ORDERED_REGULAR);
 	btrfs_dec_block_group_reservations(fs_info, ins.objectid);
@@ -7210,7 +7209,7 @@ static int btrfs_get_blocks_direct_write(struct extent_map **map,
 		    btrfs_inc_nocow_writers(fs_info, block_start)) {
 			struct extent_map *em2;

-			em2 = btrfs_create_dio_extent(inode, start, len,
+			em2 = btrfs_create_dio_extent(BTRFS_I(inode), start, len,
 						      orig_start, block_start,
 						      len, orig_block_len,
 						      ram_bytes, type);
--
2.17.1


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

* [PATCH 32/46] btrfs: Make btrfs_new_extent_direct take btrfs_inode
  2020-06-01 15:36 [PATCH 00/46] Trivial BTRFS_I removal Nikolay Borisov
                   ` (30 preceding siblings ...)
  2020-06-01 15:37 ` [PATCH 31/46] btrfs: Make btrfs_create_dio_extent " Nikolay Borisov
@ 2020-06-01 15:37 ` Nikolay Borisov
  2020-06-01 15:37 ` [PATCH 33/46] btrfs: Make __extent_writepage_io " Nikolay Borisov
                   ` (15 subsequent siblings)
  47 siblings, 0 replies; 56+ messages in thread
From: Nikolay Borisov @ 2020-06-01 15:37 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

This function really needs a btrfs_inode and not a generic vfs one. Take it
as a parameter and get rid of superfluous BTRFS_I() calls.

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

diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index ac330d6c7c3d..331a576170c0 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -6859,29 +6859,29 @@ static struct extent_map *btrfs_create_dio_extent(struct btrfs_inode *inode,
 	return em;
 }

-static struct extent_map *btrfs_new_extent_direct(struct inode *inode,
+static struct extent_map *btrfs_new_extent_direct(struct btrfs_inode *inode,
 						  u64 start, u64 len)
 {
-	struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
-	struct btrfs_root *root = BTRFS_I(inode)->root;
+	struct btrfs_root *root = inode->root;
+	struct btrfs_fs_info *fs_info = root->fs_info;
 	struct extent_map *em;
 	struct btrfs_key ins;
 	u64 alloc_hint;
 	int ret;

-	alloc_hint = get_extent_allocation_hint(BTRFS_I(inode), start, len);
+	alloc_hint = get_extent_allocation_hint(inode, start, len);
 	ret = btrfs_reserve_extent(root, len, len, fs_info->sectorsize,
 				   0, alloc_hint, &ins, 1, 1);
 	if (ret)
 		return ERR_PTR(ret);

-	em = btrfs_create_dio_extent(BTRFS_I(inode), start, ins.offset, start,
+	em = btrfs_create_dio_extent(inode, start, ins.offset, start,
 				     ins.objectid, ins.offset, ins.offset,
 				     ins.offset, BTRFS_ORDERED_REGULAR);
 	btrfs_dec_block_group_reservations(fs_info, ins.objectid);
 	if (IS_ERR(em))
-		btrfs_free_reserved_extent(fs_info, ins.objectid,
-					   ins.offset, 1);
+		btrfs_free_reserved_extent(fs_info, ins.objectid, ins.offset,
+					   1);

 	return em;
 }
@@ -7236,7 +7236,7 @@ static int btrfs_get_blocks_direct_write(struct extent_map **map,

 	/* this will cow the extent */
 	free_extent_map(em);
-	*map = em = btrfs_new_extent_direct(inode, start, len);
+	*map = em = btrfs_new_extent_direct(BTRFS_I(inode), start, len);
 	if (IS_ERR(em)) {
 		ret = PTR_ERR(em);
 		goto out;
--
2.17.1


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

* [PATCH 33/46] btrfs: Make __extent_writepage_io take btrfs_inode
  2020-06-01 15:36 [PATCH 00/46] Trivial BTRFS_I removal Nikolay Borisov
                   ` (31 preceding siblings ...)
  2020-06-01 15:37 ` [PATCH 32/46] btrfs: Make btrfs_new_extent_direct " Nikolay Borisov
@ 2020-06-01 15:37 ` Nikolay Borisov
  2020-06-01 15:37 ` [PATCH 34/46] btrfs: Make writepage_delalloc " Nikolay Borisov
                   ` (14 subsequent siblings)
  47 siblings, 0 replies; 56+ messages in thread
From: Nikolay Borisov @ 2020-06-01 15:37 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

It has only a single use for a generic vfs inode vs 3 for btrfs_inode.

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

diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c
index e2a033e77b25..58a07587efcd 100644
--- a/fs/btrfs/extent_io.c
+++ b/fs/btrfs/extent_io.c
@@ -3503,7 +3503,7 @@ static noinline_for_stack int writepage_delalloc(struct inode *inode,
  * 0 if all went well (page still locked)
  * < 0 if there were errors (page still locked)
  */
-static noinline_for_stack int __extent_writepage_io(struct inode *inode,
+static noinline_for_stack int __extent_writepage_io(struct btrfs_inode *inode,
 				 struct page *page,
 				 struct writeback_control *wbc,
 				 struct extent_page_data *epd,
@@ -3511,7 +3511,7 @@ static noinline_for_stack int __extent_writepage_io(struct inode *inode,
 				 unsigned long nr_written,
 				 int *nr_ret)
 {
-	struct extent_io_tree *tree = &BTRFS_I(inode)->io_tree;
+	struct extent_io_tree *tree = &inode->io_tree;
 	u64 start = page_offset(page);
 	u64 page_end = start + PAGE_SIZE - 1;
 	u64 end;
@@ -3543,7 +3543,7 @@ static noinline_for_stack int __extent_writepage_io(struct inode *inode,
 	update_nr_written(wbc, nr_written + 1);

 	end = page_end;
-	blocksize = inode->i_sb->s_blocksize;
+	blocksize = inode->vfs_inode.i_sb->s_blocksize;

 	while (cur <= end) {
 		u64 em_end;
@@ -3554,8 +3554,7 @@ static noinline_for_stack int __extent_writepage_io(struct inode *inode,
 							     page_end, 1);
 			break;
 		}
-		em = btrfs_get_extent(BTRFS_I(inode), NULL, 0, cur,
-				      end - cur + 1);
+		em = btrfs_get_extent(inode, NULL, 0, cur, end - cur + 1);
 		if (IS_ERR_OR_NULL(em)) {
 			SetPageError(page);
 			ret = PTR_ERR_OR_ZERO(em);
@@ -3592,7 +3591,7 @@ static noinline_for_stack int __extent_writepage_io(struct inode *inode,

 		btrfs_set_range_writeback(tree, cur, cur + iosize - 1);
 		if (!PageWriteback(page)) {
-			btrfs_err(BTRFS_I(inode)->root->fs_info,
+			btrfs_err(inode->root->fs_info,
 				   "page %lu not writeback, cur %llu end %llu",
 			       page->index, cur, end);
 		}
@@ -3672,8 +3671,8 @@ static int __extent_writepage(struct page *page, struct writeback_control *wbc,
 			goto done;
 	}

-	ret = __extent_writepage_io(inode, page, wbc, epd,
-				    i_size, nr_written, &nr);
+	ret = __extent_writepage_io(BTRFS_I(inode), page, wbc, epd, i_size,
+				    nr_written, &nr);
 	if (ret == 1)
 		return 0;

--
2.17.1


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

* [PATCH 34/46] btrfs: Make writepage_delalloc take btrfs_inode
  2020-06-01 15:36 [PATCH 00/46] Trivial BTRFS_I removal Nikolay Borisov
                   ` (32 preceding siblings ...)
  2020-06-01 15:37 ` [PATCH 33/46] btrfs: Make __extent_writepage_io " Nikolay Borisov
@ 2020-06-01 15:37 ` Nikolay Borisov
  2020-06-01 15:37 ` [PATCH 35/46] btrfs: Make btrfs_set_extent_delalloc " Nikolay Borisov
                   ` (13 subsequent siblings)
  47 siblings, 0 replies; 56+ messages in thread
From: Nikolay Borisov @ 2020-06-01 15:37 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

Only find_lock_delalloc_range uses vfs_inode so let's take the btrfs_inode
as a parameter.
Signed-off-by: Nikolay Borisov <nborisov@suse.com>
---
 fs/btrfs/extent_io.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c
index 58a07587efcd..2068a2c38e0c 100644
--- a/fs/btrfs/extent_io.c
+++ b/fs/btrfs/extent_io.c
@@ -3424,7 +3424,7 @@ static void update_nr_written(struct writeback_control *wbc,
  * This returns 0 if all went well (page still locked)
  * This returns < 0 if there were errors (page still locked)
  */
-static noinline_for_stack int writepage_delalloc(struct inode *inode,
+static noinline_for_stack int writepage_delalloc(struct btrfs_inode *inode,
 		struct page *page, struct writeback_control *wbc,
 		u64 delalloc_start, unsigned long *nr_written)
 {
@@ -3437,15 +3437,14 @@ static noinline_for_stack int writepage_delalloc(struct inode *inode,


 	while (delalloc_end < page_end) {
-		found = find_lock_delalloc_range(inode, page,
+		found = find_lock_delalloc_range(&inode->vfs_inode, page,
 					       &delalloc_start,
 					       &delalloc_end);
 		if (!found) {
 			delalloc_start = delalloc_end + 1;
 			continue;
 		}
-		ret = btrfs_run_delalloc_range(BTRFS_I(inode), page,
-					       delalloc_start,
+		ret = btrfs_run_delalloc_range(inode, page, delalloc_start,
 					       delalloc_end, &page_started,
 					       nr_written, wbc);
 		if (ret) {
@@ -3664,7 +3663,8 @@ static int __extent_writepage(struct page *page, struct writeback_control *wbc,
 	set_page_extent_mapped(page);

 	if (!epd->extent_locked) {
-		ret = writepage_delalloc(inode, page, wbc, start, &nr_written);
+		ret = writepage_delalloc(BTRFS_I(inode), page, wbc, start,
+					 &nr_written);
 		if (ret == 1)
 			return 0;
 		if (ret)
--
2.17.1


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

* [PATCH 35/46] btrfs: Make btrfs_set_extent_delalloc take btrfs_inode
  2020-06-01 15:36 [PATCH 00/46] Trivial BTRFS_I removal Nikolay Borisov
                   ` (33 preceding siblings ...)
  2020-06-01 15:37 ` [PATCH 34/46] btrfs: Make writepage_delalloc " Nikolay Borisov
@ 2020-06-01 15:37 ` Nikolay Borisov
  2020-06-01 15:37 ` [PATCH 36/46] btrfs: Make btrfs_dirty_pages " Nikolay Borisov
                   ` (12 subsequent siblings)
  47 siblings, 0 replies; 56+ messages in thread
From: Nikolay Borisov @ 2020-06-01 15:37 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

Preparation to make btrfs_dirty_pages take btrfs_inode as parameter.

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

diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h
index e6f47bdf6f0a..05a7cef660fc 100644
--- a/fs/btrfs/ctree.h
+++ b/fs/btrfs/ctree.h
@@ -2874,7 +2874,7 @@ int btrfs_truncate_inode_items(struct btrfs_trans_handle *trans,

 int btrfs_start_delalloc_snapshot(struct btrfs_root *root);
 int btrfs_start_delalloc_roots(struct btrfs_fs_info *fs_info, int nr);
-int btrfs_set_extent_delalloc(struct inode *inode, u64 start, u64 end,
+int btrfs_set_extent_delalloc(struct btrfs_inode *inode, u64 start, u64 end,
 			      unsigned int extra_bits,
 			      struct extent_state **cached_state);
 int btrfs_create_subvol_root(struct btrfs_trans_handle *trans,
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c
index 01745c0651cb..aa43d77bfd98 100644
--- a/fs/btrfs/file.c
+++ b/fs/btrfs/file.c
@@ -546,8 +546,8 @@ int btrfs_dirty_pages(struct inode *inode, struct page **pages,
 		}
 	}

-	err = btrfs_set_extent_delalloc(inode, start_pos, end_of_last_block,
-					extra_bits, cached);
+	err = btrfs_set_extent_delalloc(BTRFS_I(inode), start_pos,
+					end_of_last_block, extra_bits, cached);
 	if (err)
 		return err;

diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 331a576170c0..ed9ecb46208f 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -2243,13 +2243,13 @@ static noinline int add_pending_csums(struct btrfs_trans_handle *trans,
 	return 0;
 }

-int btrfs_set_extent_delalloc(struct inode *inode, u64 start, u64 end,
+int btrfs_set_extent_delalloc(struct btrfs_inode *inode, u64 start, u64 end,
 			      unsigned int extra_bits,
 			      struct extent_state **cached_state)
 {
 	WARN_ON(PAGE_ALIGNED(end));
-	return set_extent_delalloc(&BTRFS_I(inode)->io_tree, start, end,
-				   extra_bits, cached_state);
+	return set_extent_delalloc(&inode->io_tree, start, end, extra_bits,
+				   cached_state);
 }

 /* see btrfs_writepage_start_hook for details on why this is required */
@@ -2346,7 +2346,7 @@ static void btrfs_writepage_fixup_worker(struct btrfs_work *work)
 		goto again;
 	}

-	ret = btrfs_set_extent_delalloc(inode, page_start, page_end, 0,
+	ret = btrfs_set_extent_delalloc(BTRFS_I(inode), page_start, page_end, 0,
 					&cached_state);
 	if (ret)
 		goto out_reserved;
@@ -4551,7 +4551,7 @@ int btrfs_truncate_block(struct inode *inode, loff_t from, loff_t len,
 			 EXTENT_DELALLOC | EXTENT_DO_ACCOUNTING | EXTENT_DEFRAG,
 			 0, 0, &cached_state);

-	ret = btrfs_set_extent_delalloc(inode, block_start, block_end, 0,
+	ret = btrfs_set_extent_delalloc(BTRFS_I(inode), block_start, block_end, 0,
 					&cached_state);
 	if (ret) {
 		unlock_extent_cached(io_tree, block_start, block_end,
@@ -8162,7 +8162,7 @@ vm_fault_t btrfs_page_mkwrite(struct vm_fault *vmf)
 			  EXTENT_DELALLOC | EXTENT_DO_ACCOUNTING |
 			  EXTENT_DEFRAG, 0, 0, &cached_state);

-	ret2 = btrfs_set_extent_delalloc(inode, page_start, end, 0,
+	ret2 = btrfs_set_extent_delalloc(BTRFS_I(inode), page_start, end, 0,
 					&cached_state);
 	if (ret2) {
 		unlock_extent_cached(io_tree, page_start, page_end,
diff --git a/fs/btrfs/reflink.c b/fs/btrfs/reflink.c
index 040009d1cc31..fe3e05b51691 100644
--- a/fs/btrfs/reflink.c
+++ b/fs/btrfs/reflink.c
@@ -84,7 +84,8 @@ static int copy_inline_to_page(struct inode *inode,
 	clear_extent_bit(&BTRFS_I(inode)->io_tree, file_offset, range_end,
 			 EXTENT_DELALLOC | EXTENT_DO_ACCOUNTING | EXTENT_DEFRAG,
 			 0, 0, NULL);
-	ret = btrfs_set_extent_delalloc(inode, file_offset, range_end, 0, NULL);
+	ret = btrfs_set_extent_delalloc(BTRFS_I(inode), file_offset, range_end,
+					0, NULL);
 	if (ret)
 		goto out_unlock;

diff --git a/fs/btrfs/relocation.c b/fs/btrfs/relocation.c
index 3d708a929b04..fb1a4af8d307 100644
--- a/fs/btrfs/relocation.c
+++ b/fs/btrfs/relocation.c
@@ -2762,8 +2762,8 @@ static int relocate_file_extent_cluster(struct inode *inode,
 			nr++;
 		}

-		ret = btrfs_set_extent_delalloc(inode, page_start, page_end, 0,
-						NULL);
+		ret = btrfs_set_extent_delalloc(BTRFS_I(inode), page_start,
+						page_end, 0, NULL);
 		if (ret) {
 			unlock_page(page);
 			put_page(page);
diff --git a/fs/btrfs/tests/inode-tests.c b/fs/btrfs/tests/inode-tests.c
index 24a8c714f56c..894a63a92236 100644
--- a/fs/btrfs/tests/inode-tests.c
+++ b/fs/btrfs/tests/inode-tests.c
@@ -954,8 +954,8 @@ static int test_extent_accounting(u32 sectorsize, u32 nodesize)
 	btrfs_test_inode_set_ops(inode);

 	/* [BTRFS_MAX_EXTENT_SIZE] */
-	ret = btrfs_set_extent_delalloc(inode, 0, BTRFS_MAX_EXTENT_SIZE - 1, 0,
-					NULL);
+	ret = btrfs_set_extent_delalloc(BTRFS_I(inode), 0,
+					BTRFS_MAX_EXTENT_SIZE - 1, 0, NULL);
 	if (ret) {
 		test_err("btrfs_set_extent_delalloc returned %d", ret);
 		goto out;
@@ -968,7 +968,7 @@ static int test_extent_accounting(u32 sectorsize, u32 nodesize)
 	}

 	/* [BTRFS_MAX_EXTENT_SIZE][sectorsize] */
-	ret = btrfs_set_extent_delalloc(inode, BTRFS_MAX_EXTENT_SIZE,
+	ret = btrfs_set_extent_delalloc(BTRFS_I(inode), BTRFS_MAX_EXTENT_SIZE,
 					BTRFS_MAX_EXTENT_SIZE + sectorsize - 1,
 					0, NULL);
 	if (ret) {
@@ -999,7 +999,7 @@ static int test_extent_accounting(u32 sectorsize, u32 nodesize)
 	}

 	/* [BTRFS_MAX_EXTENT_SIZE][sectorsize] */
-	ret = btrfs_set_extent_delalloc(inode, BTRFS_MAX_EXTENT_SIZE >> 1,
+	ret = btrfs_set_extent_delalloc(BTRFS_I(inode), BTRFS_MAX_EXTENT_SIZE >> 1,
 					(BTRFS_MAX_EXTENT_SIZE >> 1)
 					+ sectorsize - 1,
 					0, NULL);
@@ -1017,7 +1017,7 @@ static int test_extent_accounting(u32 sectorsize, u32 nodesize)
 	/*
 	 * [BTRFS_MAX_EXTENT_SIZE+sectorsize][sectorsize HOLE][BTRFS_MAX_EXTENT_SIZE+sectorsize]
 	 */
-	ret = btrfs_set_extent_delalloc(inode,
+	ret = btrfs_set_extent_delalloc(BTRFS_I(inode),
 			BTRFS_MAX_EXTENT_SIZE + 2 * sectorsize,
 			(BTRFS_MAX_EXTENT_SIZE << 1) + 3 * sectorsize - 1,
 			0, NULL);
@@ -1035,7 +1035,7 @@ static int test_extent_accounting(u32 sectorsize, u32 nodesize)
 	/*
 	* [BTRFS_MAX_EXTENT_SIZE+sectorsize][sectorsize][BTRFS_MAX_EXTENT_SIZE+sectorsize]
 	*/
-	ret = btrfs_set_extent_delalloc(inode,
+	ret = btrfs_set_extent_delalloc(BTRFS_I(inode),
 			BTRFS_MAX_EXTENT_SIZE + sectorsize,
 			BTRFS_MAX_EXTENT_SIZE + 2 * sectorsize - 1, 0, NULL);
 	if (ret) {
@@ -1069,7 +1069,7 @@ static int test_extent_accounting(u32 sectorsize, u32 nodesize)
 	 * Refill the hole again just for good measure, because I thought it
 	 * might fail and I'd rather satisfy my paranoia at this point.
 	 */
-	ret = btrfs_set_extent_delalloc(inode,
+	ret = btrfs_set_extent_delalloc(BTRFS_I(inode),
 			BTRFS_MAX_EXTENT_SIZE + sectorsize,
 			BTRFS_MAX_EXTENT_SIZE + 2 * sectorsize - 1, 0, NULL);
 	if (ret) {
--
2.17.1


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

* [PATCH 36/46] btrfs: Make btrfs_dirty_pages take btrfs_inode
  2020-06-01 15:36 [PATCH 00/46] Trivial BTRFS_I removal Nikolay Borisov
                   ` (34 preceding siblings ...)
  2020-06-01 15:37 ` [PATCH 35/46] btrfs: Make btrfs_set_extent_delalloc " Nikolay Borisov
@ 2020-06-01 15:37 ` Nikolay Borisov
  2020-06-01 15:37 ` [PATCH 37/46] btrfs: Make btrfs_qgroup_reserve_data " Nikolay Borisov
                   ` (11 subsequent siblings)
  47 siblings, 0 replies; 56+ messages in thread
From: Nikolay Borisov @ 2020-06-01 15:37 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

There is a single use of the generic vfs_inode so let's take btrfs_inode as
a parameter and remove couple of redundant BTRFS_I() calls.

Signed-off-by: Nikolay Borisov <nborisov@suse.com>
---
 fs/btrfs/ctree.h            |  2 +-
 fs/btrfs/file.c             | 26 +++++++++++++-------------
 fs/btrfs/free-space-cache.c |  5 +++--
 3 files changed, 17 insertions(+), 16 deletions(-)

diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h
index 05a7cef660fc..9a28a2bd4769 100644
--- a/fs/btrfs/ctree.h
+++ b/fs/btrfs/ctree.h
@@ -2980,7 +2980,7 @@ int btrfs_punch_hole_range(struct inode *inode, struct btrfs_path *path,
 int btrfs_mark_extent_written(struct btrfs_trans_handle *trans,
 			      struct btrfs_inode *inode, u64 start, u64 end);
 int btrfs_release_file(struct inode *inode, struct file *file);
-int btrfs_dirty_pages(struct inode *inode, struct page **pages,
+int btrfs_dirty_pages(struct btrfs_inode *inode, struct page **pages,
 		      size_t num_pages, loff_t pos, size_t write_bytes,
 		      struct extent_state **cached);
 int btrfs_fdatawrite_range(struct inode *inode, loff_t start, loff_t end);
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c
index aa43d77bfd98..cd1bfd571749 100644
--- a/fs/btrfs/file.c
+++ b/fs/btrfs/file.c
@@ -500,18 +500,18 @@ static int btrfs_find_new_delalloc_bytes(struct btrfs_inode *inode,
  * this also makes the decision about creating an inline extent vs
  * doing real data extents, marking pages dirty and delalloc as required.
  */
-int btrfs_dirty_pages(struct inode *inode, struct page **pages,
+int btrfs_dirty_pages(struct btrfs_inode *inode, struct page **pages,
 		      size_t num_pages, loff_t pos, size_t write_bytes,
 		      struct extent_state **cached)
 {
-	struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
+	struct btrfs_fs_info *fs_info = inode->root->fs_info;
 	int err = 0;
 	int i;
 	u64 num_bytes;
 	u64 start_pos;
 	u64 end_of_last_block;
 	u64 end_pos = pos + write_bytes;
-	loff_t isize = i_size_read(inode);
+	loff_t isize = i_size_read(&inode->vfs_inode);
 	unsigned int extra_bits = 0;

 	start_pos = pos & ~((u64) fs_info->sectorsize - 1);
@@ -524,13 +524,13 @@ int btrfs_dirty_pages(struct inode *inode, struct page **pages,
 	 * The pages may have already been dirty, clear out old accounting so
 	 * we can set things up properly
 	 */
-	clear_extent_bit(&BTRFS_I(inode)->io_tree, start_pos, end_of_last_block,
+	clear_extent_bit(&inode->io_tree, start_pos, end_of_last_block,
 			 EXTENT_DELALLOC | EXTENT_DO_ACCOUNTING | EXTENT_DEFRAG,
 			 0, 0, cached);

-	if (!btrfs_is_free_space_inode(BTRFS_I(inode))) {
+	if (!btrfs_is_free_space_inode(inode)) {
 		if (start_pos >= isize &&
-		    !(BTRFS_I(inode)->flags & BTRFS_INODE_PREALLOC)) {
+		    !(inode->flags & BTRFS_INODE_PREALLOC)) {
 			/*
 			 * There can't be any extents following eof in this case
 			 * so just set the delalloc new bit for the range
@@ -538,16 +538,15 @@ int btrfs_dirty_pages(struct inode *inode, struct page **pages,
 			 */
 			extra_bits |= EXTENT_DELALLOC_NEW;
 		} else {
-			err = btrfs_find_new_delalloc_bytes(BTRFS_I(inode),
-							    start_pos,
+			err = btrfs_find_new_delalloc_bytes(inode, start_pos,
 							    num_bytes, cached);
 			if (err)
 				return err;
 		}
 	}

-	err = btrfs_set_extent_delalloc(BTRFS_I(inode), start_pos,
-					end_of_last_block, extra_bits, cached);
+	err = btrfs_set_extent_delalloc(inode, start_pos, end_of_last_block,
+					extra_bits, cached);
 	if (err)
 		return err;

@@ -564,7 +563,7 @@ int btrfs_dirty_pages(struct inode *inode, struct page **pages,
 	 * at this time.
 	 */
 	if (end_pos > isize)
-		i_size_write(inode, end_pos);
+		i_size_write(&inode->vfs_inode, end_pos);
 	return 0;
 }

@@ -1743,8 +1742,9 @@ static noinline ssize_t btrfs_buffered_write(struct kiocb *iocb,
 					fs_info->sectorsize);

 		if (copied > 0)
-			ret = btrfs_dirty_pages(inode, pages, dirty_pages,
-						pos, copied, &cached_state);
+			ret = btrfs_dirty_pages(BTRFS_I(inode), pages,
+						dirty_pages, pos, copied,
+						&cached_state);

 		/*
 		 * If we have not locked the extent range, because the range's
diff --git a/fs/btrfs/free-space-cache.c b/fs/btrfs/free-space-cache.c
index 55955bd424d7..e806341f4580 100644
--- a/fs/btrfs/free-space-cache.c
+++ b/fs/btrfs/free-space-cache.c
@@ -1334,8 +1334,9 @@ static int __btrfs_write_out_cache(struct btrfs_root *root, struct inode *inode,
 	io_ctl_zero_remaining_pages(io_ctl);

 	/* Everything is written out, now we dirty the pages in the file. */
-	ret = btrfs_dirty_pages(inode, io_ctl->pages, io_ctl->num_pages, 0,
-				i_size_read(inode), &cached_state);
+	ret = btrfs_dirty_pages(BTRFS_I(inode), io_ctl->pages,
+				io_ctl->num_pages, 0, i_size_read(inode),
+				&cached_state);
 	if (ret)
 		goto out_nospc;

--
2.17.1


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

* [PATCH 37/46] btrfs: Make btrfs_qgroup_reserve_data take btrfs_inode
  2020-06-01 15:36 [PATCH 00/46] Trivial BTRFS_I removal Nikolay Borisov
                   ` (35 preceding siblings ...)
  2020-06-01 15:37 ` [PATCH 36/46] btrfs: Make btrfs_dirty_pages " Nikolay Borisov
@ 2020-06-01 15:37 ` Nikolay Borisov
  2020-06-01 15:37 ` [PATCH 38/46] btrfs: Make btrfs_free_reserved_data_space_noquota take btrfs_fs_info Nikolay Borisov
                   ` (10 subsequent siblings)
  47 siblings, 0 replies; 56+ messages in thread
From: Nikolay Borisov @ 2020-06-01 15:37 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

There's only a single use of vfs_inode in a tracepoint so let's take btrfs_inode
directly.

Signed-off-by: Nikolay Borisov <nborisov@suse.com>
---
 fs/btrfs/delalloc-space.c |  2 +-
 fs/btrfs/file.c           |  7 ++++---
 fs/btrfs/qgroup.c         | 10 +++++-----
 fs/btrfs/qgroup.h         |  2 +-
 4 files changed, 11 insertions(+), 10 deletions(-)

diff --git a/fs/btrfs/delalloc-space.c b/fs/btrfs/delalloc-space.c
index 0ee25dde18d3..212dd9648b87 100644
--- a/fs/btrfs/delalloc-space.c
+++ b/fs/btrfs/delalloc-space.c
@@ -253,7 +253,7 @@ int btrfs_check_data_free_space(struct inode *inode,
 		return ret;

 	/* Use new btrfs_qgroup_reserve_data to reserve precious data space. */
-	ret = btrfs_qgroup_reserve_data(inode, reserved, start, len);
+	ret = btrfs_qgroup_reserve_data(BTRFS_I(inode), reserved, start, len);
 	if (ret < 0)
 		btrfs_free_reserved_data_space_noquota(inode, start, len);
 	else
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c
index cd1bfd571749..2b3e935baabc 100644
--- a/fs/btrfs/file.c
+++ b/fs/btrfs/file.c
@@ -3189,7 +3189,7 @@ static int btrfs_zero_range(struct inode *inode,
 		if (ret < 0)
 			goto out;
 		space_reserved = true;
-		ret = btrfs_qgroup_reserve_data(inode, &data_reserved,
+		ret = btrfs_qgroup_reserve_data(BTRFS_I(inode), &data_reserved,
 						alloc_start, bytes_to_reserve);
 		if (ret)
 			goto out;
@@ -3363,8 +3363,9 @@ static long btrfs_fallocate(struct file *file, int mode,
 				free_extent_map(em);
 				break;
 			}
-			ret = btrfs_qgroup_reserve_data(inode, &data_reserved,
-					cur_offset, last_byte - cur_offset);
+			ret = btrfs_qgroup_reserve_data(BTRFS_I(inode),
+					&data_reserved, cur_offset,
+					last_byte - cur_offset);
 			if (ret < 0) {
 				cur_offset = last_byte;
 				free_extent_map(em);
diff --git a/fs/btrfs/qgroup.c b/fs/btrfs/qgroup.c
index c884f3ec89a0..e5fab553afb7 100644
--- a/fs/btrfs/qgroup.c
+++ b/fs/btrfs/qgroup.c
@@ -3392,11 +3392,11 @@ btrfs_qgroup_rescan_resume(struct btrfs_fs_info *fs_info)
  *       same @reserved, caller must ensure when error happens it's OK
  *       to free *ALL* reserved space.
  */
-int btrfs_qgroup_reserve_data(struct inode *inode,
+int btrfs_qgroup_reserve_data(struct btrfs_inode *inode,
 			struct extent_changeset **reserved_ret, u64 start,
 			u64 len)
 {
-	struct btrfs_root *root = BTRFS_I(inode)->root;
+	struct btrfs_root *root = inode->root;
 	struct ulist_node *unode;
 	struct ulist_iterator uiter;
 	struct extent_changeset *reserved;
@@ -3419,12 +3419,12 @@ int btrfs_qgroup_reserve_data(struct inode *inode,
 	reserved = *reserved_ret;
 	/* Record already reserved space */
 	orig_reserved = reserved->bytes_changed;
-	ret = set_record_extent_bits(&BTRFS_I(inode)->io_tree, start,
+	ret = set_record_extent_bits(&inode->io_tree, start,
 			start + len -1, EXTENT_QGROUP_RESERVED, reserved);

 	/* Newly reserved space */
 	to_reserve = reserved->bytes_changed - orig_reserved;
-	trace_btrfs_qgroup_reserve_data(inode, start, len,
+	trace_btrfs_qgroup_reserve_data(&inode->vfs_inode, start, len,
 					to_reserve, QGROUP_RESERVE);
 	if (ret < 0)
 		goto cleanup;
@@ -3438,7 +3438,7 @@ int btrfs_qgroup_reserve_data(struct inode *inode,
 	/* cleanup *ALL* already reserved ranges */
 	ULIST_ITER_INIT(&uiter);
 	while ((unode = ulist_next(&reserved->range_changed, &uiter)))
-		clear_extent_bit(&BTRFS_I(inode)->io_tree, unode->val,
+		clear_extent_bit(&inode->io_tree, unode->val,
 				 unode->aux, EXTENT_QGROUP_RESERVED, 0, 0, NULL);
 	/* Also free data bytes of already reserved one */
 	btrfs_qgroup_free_refroot(root->fs_info, root->root_key.objectid,
diff --git a/fs/btrfs/qgroup.h b/fs/btrfs/qgroup.h
index 139cad24a95d..a22a1d3dae25 100644
--- a/fs/btrfs/qgroup.h
+++ b/fs/btrfs/qgroup.h
@@ -344,7 +344,7 @@ int btrfs_verify_qgroup_counts(struct btrfs_fs_info *fs_info, u64 qgroupid,
 #endif

 /* New io_tree based accurate qgroup reserve API */
-int btrfs_qgroup_reserve_data(struct inode *inode,
+int btrfs_qgroup_reserve_data(struct btrfs_inode *inode,
 			struct extent_changeset **reserved, u64 start, u64 len);
 int btrfs_qgroup_release_data(struct btrfs_inode *inode, u64 start, u64 len);
 int btrfs_qgroup_free_data(struct btrfs_inode *inode,
--
2.17.1


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

* [PATCH 38/46] btrfs: Make btrfs_free_reserved_data_space_noquota take btrfs_fs_info
  2020-06-01 15:36 [PATCH 00/46] Trivial BTRFS_I removal Nikolay Borisov
                   ` (36 preceding siblings ...)
  2020-06-01 15:37 ` [PATCH 37/46] btrfs: Make btrfs_qgroup_reserve_data " Nikolay Borisov
@ 2020-06-01 15:37 ` Nikolay Borisov
  2020-06-01 15:37 ` [PATCH 39/46] btrfs: Make btrfs_free_reserved_data_space take btrfs_inode Nikolay Borisov
                   ` (9 subsequent siblings)
  47 siblings, 0 replies; 56+ messages in thread
From: Nikolay Borisov @ 2020-06-01 15:37 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

No point in taking an inode only to get btrfs_fs_info from it, instead take
btrfs_fs_info directly.

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

diff --git a/fs/btrfs/delalloc-space.c b/fs/btrfs/delalloc-space.c
index 212dd9648b87..489df364bb04 100644
--- a/fs/btrfs/delalloc-space.c
+++ b/fs/btrfs/delalloc-space.c
@@ -255,7 +255,7 @@ int btrfs_check_data_free_space(struct inode *inode,
 	/* Use new btrfs_qgroup_reserve_data to reserve precious data space. */
 	ret = btrfs_qgroup_reserve_data(BTRFS_I(inode), reserved, start, len);
 	if (ret < 0)
-		btrfs_free_reserved_data_space_noquota(inode, start, len);
+		btrfs_free_reserved_data_space_noquota(fs_info, start, len);
 	else
 		ret = 0;
 	return ret;
@@ -269,10 +269,9 @@ int btrfs_check_data_free_space(struct inode *inode,
  * which we can't sleep and is sure it won't affect qgroup reserved space.
  * Like clear_bit_hook().
  */
-void btrfs_free_reserved_data_space_noquota(struct inode *inode, u64 start,
-					    u64 len)
+void btrfs_free_reserved_data_space_noquota(struct btrfs_fs_info *fs_info,
+					    u64 start, u64 len)
 {
-	struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
 	struct btrfs_space_info *data_sinfo;

 	/* Make sure the range is aligned to sectorsize */
@@ -303,7 +302,7 @@ void btrfs_free_reserved_data_space(struct inode *inode,
 	      round_down(start, root->fs_info->sectorsize);
 	start = round_down(start, root->fs_info->sectorsize);

-	btrfs_free_reserved_data_space_noquota(inode, start, len);
+	btrfs_free_reserved_data_space_noquota(btrfs_sb(inode->i_sb), start, len);
 	btrfs_qgroup_free_data(BTRFS_I(inode), reserved, start, len);
 }

diff --git a/fs/btrfs/delalloc-space.h b/fs/btrfs/delalloc-space.h
index 54466fbd7075..57ab719a9a79 100644
--- a/fs/btrfs/delalloc-space.h
+++ b/fs/btrfs/delalloc-space.h
@@ -13,8 +13,8 @@ void btrfs_free_reserved_data_space(struct inode *inode,
 void btrfs_delalloc_release_space(struct inode *inode,
 				  struct extent_changeset *reserved,
 				  u64 start, u64 len, bool qgroup_free);
-void btrfs_free_reserved_data_space_noquota(struct inode *inode, u64 start,
-					    u64 len);
+void btrfs_free_reserved_data_space_noquota(struct btrfs_fs_info *fs_info,
+					    u64 start, u64 len);
 void btrfs_delalloc_release_metadata(struct btrfs_inode *inode, u64 num_bytes,
 				     bool qgroup_free);
 int btrfs_delalloc_reserve_space(struct inode *inode,
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index ed9ecb46208f..cb27836b3d4f 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -2063,9 +2063,8 @@ void btrfs_clear_delalloc_extent(struct inode *vfs_inode,
 		if (root->root_key.objectid != BTRFS_DATA_RELOC_TREE_OBJECTID &&
 		    do_list && !(state->state & EXTENT_NORESERVE) &&
 		    (*bits & EXTENT_CLEAR_DATA_RESV))
-			btrfs_free_reserved_data_space_noquota(
-					&inode->vfs_inode,
-					state->start, len);
+			btrfs_free_reserved_data_space_noquota(fs_info,
+							state->start, len);

 		percpu_counter_add_batch(&fs_info->delalloc_bytes, -len,
 					 fs_info->delalloc_batch);
@@ -7228,7 +7227,7 @@ static int btrfs_get_blocks_direct_write(struct extent_map **map,
 			 * use the existing or preallocated extent, so does not
 			 * need to adjust btrfs_space_info's bytes_may_use.
 			 */
-			btrfs_free_reserved_data_space_noquota(inode, start,
+			btrfs_free_reserved_data_space_noquota(fs_info, start,
 							       len);
 			goto skip_cow;
 		}
--
2.17.1


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

* [PATCH 39/46] btrfs: Make btrfs_free_reserved_data_space take btrfs_inode
  2020-06-01 15:36 [PATCH 00/46] Trivial BTRFS_I removal Nikolay Borisov
                   ` (37 preceding siblings ...)
  2020-06-01 15:37 ` [PATCH 38/46] btrfs: Make btrfs_free_reserved_data_space_noquota take btrfs_fs_info Nikolay Borisov
@ 2020-06-01 15:37 ` Nikolay Borisov
  2020-06-01 15:37 ` [PATCH 40/46] btrfs: Make btrfs_delalloc_release_space " Nikolay Borisov
                   ` (8 subsequent siblings)
  47 siblings, 0 replies; 56+ messages in thread
From: Nikolay Borisov @ 2020-06-01 15:37 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

It only uses btrfs_inode internally so take it as a parameter.

Signed-off-by: Nikolay Borisov <nborisov@suse.com>
---
 fs/btrfs/delalloc-space.c | 18 +++++++++---------
 fs/btrfs/delalloc-space.h |  2 +-
 fs/btrfs/file.c           | 13 +++++++------
 fs/btrfs/inode.c          |  5 +++--
 fs/btrfs/relocation.c     |  7 ++++---
 5 files changed, 24 insertions(+), 21 deletions(-)

diff --git a/fs/btrfs/delalloc-space.c b/fs/btrfs/delalloc-space.c
index 489df364bb04..bf5420ad3af5 100644
--- a/fs/btrfs/delalloc-space.c
+++ b/fs/btrfs/delalloc-space.c
@@ -292,18 +292,18 @@ void btrfs_free_reserved_data_space_noquota(struct btrfs_fs_info *fs_info,
  * This one will handle the per-inode data rsv map for accurate reserved
  * space framework.
  */
-void btrfs_free_reserved_data_space(struct inode *inode,
+void btrfs_free_reserved_data_space(struct btrfs_inode *inode,
 			struct extent_changeset *reserved, u64 start, u64 len)
 {
-	struct btrfs_root *root = BTRFS_I(inode)->root;
+	struct btrfs_fs_info *fs_info = inode->root->fs_info;

 	/* Make sure the range is aligned to sectorsize */
-	len = round_up(start + len, root->fs_info->sectorsize) -
-	      round_down(start, root->fs_info->sectorsize);
-	start = round_down(start, root->fs_info->sectorsize);
+	len = round_up(start + len, fs_info->sectorsize) -
+	      round_down(start, fs_info->sectorsize);
+	start = round_down(start, fs_info->sectorsize);

-	btrfs_free_reserved_data_space_noquota(btrfs_sb(inode->i_sb), start, len);
-	btrfs_qgroup_free_data(BTRFS_I(inode), reserved, start, len);
+	btrfs_free_reserved_data_space_noquota(fs_info, start, len);
+	btrfs_qgroup_free_data(inode, reserved, start, len);
 }

 /**
@@ -566,7 +566,7 @@ int btrfs_delalloc_reserve_space(struct inode *inode,
 		return ret;
 	ret = btrfs_delalloc_reserve_metadata(BTRFS_I(inode), len);
 	if (ret < 0)
-		btrfs_free_reserved_data_space(inode, *reserved, start, len);
+		btrfs_free_reserved_data_space(BTRFS_I(inode), *reserved, start, len);
 	return ret;
 }

@@ -587,5 +587,5 @@ void btrfs_delalloc_release_space(struct inode *inode,
 				  u64 start, u64 len, bool qgroup_free)
 {
 	btrfs_delalloc_release_metadata(BTRFS_I(inode), len, qgroup_free);
-	btrfs_free_reserved_data_space(inode, reserved, start, len);
+	btrfs_free_reserved_data_space(BTRFS_I(inode), reserved, start, len);
 }
diff --git a/fs/btrfs/delalloc-space.h b/fs/btrfs/delalloc-space.h
index 57ab719a9a79..16a6f9320e39 100644
--- a/fs/btrfs/delalloc-space.h
+++ b/fs/btrfs/delalloc-space.h
@@ -8,7 +8,7 @@ struct extent_changeset;
 int btrfs_alloc_data_chunk_ondemand(struct btrfs_inode *inode, u64 bytes);
 int btrfs_check_data_free_space(struct inode *inode,
 			struct extent_changeset **reserved, u64 start, u64 len);
-void btrfs_free_reserved_data_space(struct inode *inode,
+void btrfs_free_reserved_data_space(struct btrfs_inode *inode,
 			struct extent_changeset *reserved, u64 start, u64 len);
 void btrfs_delalloc_release_space(struct inode *inode,
 				  struct extent_changeset *reserved,
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c
index 2b3e935baabc..71e055800609 100644
--- a/fs/btrfs/file.c
+++ b/fs/btrfs/file.c
@@ -1658,7 +1658,7 @@ static noinline ssize_t btrfs_buffered_write(struct kiocb *iocb,
 				reserve_bytes);
 		if (ret) {
 			if (!only_release_metadata)
-				btrfs_free_reserved_data_space(inode,
+				btrfs_free_reserved_data_space(BTRFS_I(inode),
 						data_reserved, pos,
 						write_bytes);
 			else
@@ -3212,7 +3212,7 @@ static int btrfs_zero_range(struct inode *inode,
 	ret = btrfs_fallocate_update_isize(inode, offset + len, mode);
  out:
 	if (ret && space_reserved)
-		btrfs_free_reserved_data_space(inode, data_reserved,
+		btrfs_free_reserved_data_space(BTRFS_I(inode), data_reserved,
 					       alloc_start, bytes_to_reserve);
 	extent_changeset_free(data_reserved);

@@ -3377,8 +3377,9 @@ static long btrfs_fallocate(struct file *file, int mode,
 			 * range, free reserved data space first, otherwise
 			 * it'll result in false ENOSPC error.
 			 */
-			btrfs_free_reserved_data_space(inode, data_reserved,
-					cur_offset, last_byte - cur_offset);
+			btrfs_free_reserved_data_space(BTRFS_I(inode),
+				data_reserved, cur_offset,
+				last_byte - cur_offset);
 		}
 		free_extent_map(em);
 		cur_offset = last_byte;
@@ -3395,7 +3396,7 @@ static long btrfs_fallocate(struct file *file, int mode,
 					range->len, i_blocksize(inode),
 					offset + len, &alloc_hint);
 		else
-			btrfs_free_reserved_data_space(inode,
+			btrfs_free_reserved_data_space(BTRFS_I(inode),
 					data_reserved, range->start,
 					range->len);
 		list_del(&range->list);
@@ -3416,7 +3417,7 @@ static long btrfs_fallocate(struct file *file, int mode,
 	inode_unlock(inode);
 	/* Let go of our reservation. */
 	if (ret != 0 && !(mode & FALLOC_FL_ZERO_RANGE))
-		btrfs_free_reserved_data_space(inode, data_reserved,
+		btrfs_free_reserved_data_space(BTRFS_I(inode), data_reserved,
 				cur_offset, alloc_end - cur_offset);
 	extent_changeset_free(data_reserved);
 	return ret;
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index cb27836b3d4f..7c9fc5b0f894 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -9618,8 +9618,9 @@ static int __btrfs_prealloc_file_range(struct inode *inode, int mode,
 			btrfs_end_transaction(trans);
 	}
 	if (clear_offset < end)
-		btrfs_free_reserved_data_space(inode, NULL, clear_offset,
-			end - clear_offset + 1);
+		btrfs_free_reserved_data_space(BTRFS_I(inode), NULL,
+					       clear_offset,
+					       end - clear_offset + 1);
 	return ret;
 }

diff --git a/fs/btrfs/relocation.c b/fs/btrfs/relocation.c
index fb1a4af8d307..a884addec7bd 100644
--- a/fs/btrfs/relocation.c
+++ b/fs/btrfs/relocation.c
@@ -2606,8 +2606,9 @@ int prealloc_file_extent_cluster(struct inode *inode,
 		lock_extent(&BTRFS_I(inode)->io_tree, start, end);
 		num_bytes = end + 1 - start;
 		if (cur_offset < start)
-			btrfs_free_reserved_data_space(inode, data_reserved,
-					cur_offset, start - cur_offset);
+			btrfs_free_reserved_data_space(BTRFS_I(inode),
+					data_reserved, cur_offset,
+					start - cur_offset);
 		ret = btrfs_prealloc_file_range(inode, 0, start,
 						num_bytes, num_bytes,
 						end + 1, &alloc_hint);
@@ -2618,7 +2619,7 @@ int prealloc_file_extent_cluster(struct inode *inode,
 		nr++;
 	}
 	if (cur_offset < prealloc_end)
-		btrfs_free_reserved_data_space(inode, data_reserved,
+		btrfs_free_reserved_data_space(BTRFS_I(inode), data_reserved,
 				cur_offset, prealloc_end + 1 - cur_offset);
 out:
 	inode_unlock(inode);
--
2.17.1


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

* [PATCH 40/46] btrfs: Make btrfs_delalloc_release_space take btrfs_inode
  2020-06-01 15:36 [PATCH 00/46] Trivial BTRFS_I removal Nikolay Borisov
                   ` (38 preceding siblings ...)
  2020-06-01 15:37 ` [PATCH 39/46] btrfs: Make btrfs_free_reserved_data_space take btrfs_inode Nikolay Borisov
@ 2020-06-01 15:37 ` Nikolay Borisov
  2020-06-01 15:37 ` [PATCH 41/46] btrfs: Make btrfs_check_data_free_space " Nikolay Borisov
                   ` (7 subsequent siblings)
  47 siblings, 0 replies; 56+ messages in thread
From: Nikolay Borisov @ 2020-06-01 15:37 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

It needs btrfs_inode so take it as a parameter directly.

Signed-off-by: Nikolay Borisov <nborisov@suse.com>
---
 fs/btrfs/delalloc-space.c |  6 +++---
 fs/btrfs/delalloc-space.h |  2 +-
 fs/btrfs/file.c           |  5 +++--
 fs/btrfs/inode.c          | 28 +++++++++++++++-------------
 fs/btrfs/ioctl.c          |  4 ++--
 fs/btrfs/reflink.c        |  4 ++--
 6 files changed, 26 insertions(+), 23 deletions(-)

diff --git a/fs/btrfs/delalloc-space.c b/fs/btrfs/delalloc-space.c
index bf5420ad3af5..776e671902bf 100644
--- a/fs/btrfs/delalloc-space.c
+++ b/fs/btrfs/delalloc-space.c
@@ -582,10 +582,10 @@ int btrfs_delalloc_reserve_space(struct inode *inode,
  * list if there are no delalloc bytes left.
  * Also it will handle the qgroup reserved space.
  */
-void btrfs_delalloc_release_space(struct inode *inode,
+void btrfs_delalloc_release_space(struct btrfs_inode *inode,
 				  struct extent_changeset *reserved,
 				  u64 start, u64 len, bool qgroup_free)
 {
-	btrfs_delalloc_release_metadata(BTRFS_I(inode), len, qgroup_free);
-	btrfs_free_reserved_data_space(BTRFS_I(inode), reserved, start, len);
+	btrfs_delalloc_release_metadata(inode, len, qgroup_free);
+	btrfs_free_reserved_data_space(inode, reserved, start, len);
 }
diff --git a/fs/btrfs/delalloc-space.h b/fs/btrfs/delalloc-space.h
index 16a6f9320e39..853a9ac3de35 100644
--- a/fs/btrfs/delalloc-space.h
+++ b/fs/btrfs/delalloc-space.h
@@ -10,7 +10,7 @@ int btrfs_check_data_free_space(struct inode *inode,
 			struct extent_changeset **reserved, u64 start, u64 len);
 void btrfs_free_reserved_data_space(struct btrfs_inode *inode,
 			struct extent_changeset *reserved, u64 start, u64 len);
-void btrfs_delalloc_release_space(struct inode *inode,
+void btrfs_delalloc_release_space(struct btrfs_inode *inode,
 				  struct extent_changeset *reserved,
 				  u64 start, u64 len, bool qgroup_free);
 void btrfs_free_reserved_data_space_noquota(struct btrfs_fs_info *fs_info,
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c
index 71e055800609..3a8b8bda9824 100644
--- a/fs/btrfs/file.c
+++ b/fs/btrfs/file.c
@@ -1732,7 +1732,7 @@ static noinline ssize_t btrfs_buffered_write(struct kiocb *iocb,
 				__pos = round_down(pos,
 						   fs_info->sectorsize) +
 					(dirty_pages << PAGE_SHIFT);
-				btrfs_delalloc_release_space(inode,
+				btrfs_delalloc_release_space(BTRFS_I(inode),
 						data_reserved, __pos,
 						release_bytes, true);
 			}
@@ -1800,7 +1800,8 @@ static noinline ssize_t btrfs_buffered_write(struct kiocb *iocb,
 			btrfs_delalloc_release_metadata(BTRFS_I(inode),
 					release_bytes, true);
 		} else {
-			btrfs_delalloc_release_space(inode, data_reserved,
+			btrfs_delalloc_release_space(BTRFS_I(inode),
+					data_reserved,
 					round_down(pos, fs_info->sectorsize),
 					release_bytes, true);
 		}
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 7c9fc5b0f894..687b06458f1a 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -2312,7 +2312,8 @@ static void btrfs_writepage_fixup_worker(struct btrfs_work *work)
 		if (!ret) {
 			btrfs_delalloc_release_extents(BTRFS_I(inode),
 						       PAGE_SIZE);
-			btrfs_delalloc_release_space(inode, data_reserved,
+			btrfs_delalloc_release_space(BTRFS_I(inode),
+						     data_reserved,
 						     page_start, PAGE_SIZE,
 						     true);
 		}
@@ -2362,8 +2363,8 @@ static void btrfs_writepage_fixup_worker(struct btrfs_work *work)
 out_reserved:
 	btrfs_delalloc_release_extents(BTRFS_I(inode), PAGE_SIZE);
 	if (free_delalloc_space)
-		btrfs_delalloc_release_space(inode, data_reserved, page_start,
-					     PAGE_SIZE, true);
+		btrfs_delalloc_release_space(BTRFS_I(inode), data_reserved,
+					     page_start, PAGE_SIZE, true);
 	unlock_extent_cached(&BTRFS_I(inode)->io_tree, page_start, page_end,
 			     &cached_state);
 out_page:
@@ -4510,7 +4511,7 @@ int btrfs_truncate_block(struct inode *inode, loff_t from, loff_t len,
 again:
 	page = find_or_create_page(mapping, index, mask);
 	if (!page) {
-		btrfs_delalloc_release_space(inode, data_reserved,
+		btrfs_delalloc_release_space(BTRFS_I(inode), data_reserved,
 					     block_start, blocksize, true);
 		btrfs_delalloc_release_extents(BTRFS_I(inode), blocksize);
 		ret = -ENOMEM;
@@ -4577,8 +4578,8 @@ int btrfs_truncate_block(struct inode *inode, loff_t from, loff_t len,

 out_unlock:
 	if (ret)
-		btrfs_delalloc_release_space(inode, data_reserved, block_start,
-					     blocksize, true);
+		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);
@@ -7393,8 +7394,9 @@ static int btrfs_dio_iomap_begin(struct inode *inode, loff_t start,
 			     &cached_state);
 err:
 	if (dio_data) {
-		btrfs_delalloc_release_space(inode, dio_data->data_reserved,
-				start, dio_data->reserve, true);
+		btrfs_delalloc_release_space(BTRFS_I(inode),
+					     dio_data->data_reserved,
+					     start, dio_data->reserve, true);
 		btrfs_delalloc_release_extents(BTRFS_I(inode), dio_data->reserve);
 		extent_changeset_free(dio_data->data_reserved);
 		kfree(dio_data);
@@ -7430,7 +7432,7 @@ static int btrfs_dio_iomap_end(struct inode *inode, loff_t pos, loff_t length,

 	if (write) {
 		if (dio_data->reserve)
-			btrfs_delalloc_release_space(inode,
+			btrfs_delalloc_release_space(BTRFS_I(inode),
 					dio_data->data_reserved, pos,
 					dio_data->reserve, true);
 		btrfs_delalloc_release_extents(BTRFS_I(inode), dio_data->length);
@@ -8144,9 +8146,9 @@ vm_fault_t btrfs_page_mkwrite(struct vm_fault *vmf)
 					  fs_info->sectorsize);
 		if (reserved_space < PAGE_SIZE) {
 			end = page_start + reserved_space - 1;
-			btrfs_delalloc_release_space(inode, data_reserved,
-					page_start, PAGE_SIZE - reserved_space,
-					true);
+			btrfs_delalloc_release_space(BTRFS_I(inode),
+					data_reserved, page_start,
+					PAGE_SIZE - reserved_space, true);
 		}
 	}

@@ -8201,7 +8203,7 @@ vm_fault_t btrfs_page_mkwrite(struct vm_fault *vmf)
 	unlock_page(page);
 out:
 	btrfs_delalloc_release_extents(BTRFS_I(inode), PAGE_SIZE);
-	btrfs_delalloc_release_space(inode, data_reserved, page_start,
+	btrfs_delalloc_release_space(BTRFS_I(inode), data_reserved, page_start,
 				     reserved_space, (ret != 0));
 out_noreserve:
 	sb_end_pagefault(inode->i_sb);
diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c
index 4dc308048d8c..37072628149d 100644
--- a/fs/btrfs/ioctl.c
+++ b/fs/btrfs/ioctl.c
@@ -1333,7 +1333,7 @@ static int cluster_pages_for_defrag(struct inode *inode,
 		spin_lock(&BTRFS_I(inode)->lock);
 		btrfs_mod_outstanding_extents(BTRFS_I(inode), 1);
 		spin_unlock(&BTRFS_I(inode)->lock);
-		btrfs_delalloc_release_space(inode, data_reserved,
+		btrfs_delalloc_release_space(BTRFS_I(inode), data_reserved,
 				start_index << PAGE_SHIFT,
 				(page_cnt - i_done) << PAGE_SHIFT, true);
 	}
@@ -1361,7 +1361,7 @@ static int cluster_pages_for_defrag(struct inode *inode,
 		unlock_page(pages[i]);
 		put_page(pages[i]);
 	}
-	btrfs_delalloc_release_space(inode, data_reserved,
+	btrfs_delalloc_release_space(BTRFS_I(inode), data_reserved,
 			start_index << PAGE_SHIFT,
 			page_cnt << PAGE_SHIFT, true);
 	btrfs_delalloc_release_extents(BTRFS_I(inode), page_cnt << PAGE_SHIFT);
diff --git a/fs/btrfs/reflink.c b/fs/btrfs/reflink.c
index fe3e05b51691..9da0f101548f 100644
--- a/fs/btrfs/reflink.c
+++ b/fs/btrfs/reflink.c
@@ -134,8 +134,8 @@ static int copy_inline_to_page(struct inode *inode,
 		put_page(page);
 	}
 	if (ret)
-		btrfs_delalloc_release_space(inode, data_reserved, file_offset,
-					     block_size, true);
+		btrfs_delalloc_release_space(BTRFS_I(inode), data_reserved,
+					     file_offset, block_size, true);
 	btrfs_delalloc_release_extents(BTRFS_I(inode), block_size);
 out:
 	extent_changeset_free(data_reserved);
--
2.17.1


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

* [PATCH 41/46] btrfs: Make btrfs_check_data_free_space take btrfs_inode
  2020-06-01 15:36 [PATCH 00/46] Trivial BTRFS_I removal Nikolay Borisov
                   ` (39 preceding siblings ...)
  2020-06-01 15:37 ` [PATCH 40/46] btrfs: Make btrfs_delalloc_release_space " Nikolay Borisov
@ 2020-06-01 15:37 ` Nikolay Borisov
  2020-06-01 15:37 ` [PATCH 42/46] btrfs: Make btrfs_delalloc_reserve_space " Nikolay Borisov
                   ` (6 subsequent siblings)
  47 siblings, 0 replies; 56+ messages in thread
From: Nikolay Borisov @ 2020-06-01 15:37 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

Instead of calling BTRFS_I on the passed vfs_inode take btrfs_inode directly.

Signed-off-by: Nikolay Borisov <nborisov@suse.com>
---
 fs/btrfs/block-group.c    |  3 ++-
 fs/btrfs/delalloc-space.c | 10 +++++-----
 fs/btrfs/delalloc-space.h |  2 +-
 fs/btrfs/file.c           |  3 ++-
 fs/btrfs/relocation.c     |  3 ++-
 5 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/fs/btrfs/block-group.c b/fs/btrfs/block-group.c
index 176e8a292fd1..9ff6d44415ad 100644
--- a/fs/btrfs/block-group.c
+++ b/fs/btrfs/block-group.c
@@ -2511,7 +2511,8 @@ static int cache_save_setup(struct btrfs_block_group *block_group,
 	num_pages *= 16;
 	num_pages *= PAGE_SIZE;

-	ret = btrfs_check_data_free_space(inode, &data_reserved, 0, num_pages);
+	ret = btrfs_check_data_free_space(BTRFS_I(inode), &data_reserved, 0,
+					  num_pages);
 	if (ret)
 		goto out_put;

diff --git a/fs/btrfs/delalloc-space.c b/fs/btrfs/delalloc-space.c
index 776e671902bf..e5580262e4dd 100644
--- a/fs/btrfs/delalloc-space.c
+++ b/fs/btrfs/delalloc-space.c
@@ -237,10 +237,10 @@ int btrfs_alloc_data_chunk_ondemand(struct btrfs_inode *inode, u64 bytes)
 	return 0;
 }

-int btrfs_check_data_free_space(struct inode *inode,
+int btrfs_check_data_free_space(struct btrfs_inode *inode,
 			struct extent_changeset **reserved, 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;
 	int ret;

 	/* align the range */
@@ -248,12 +248,12 @@ int btrfs_check_data_free_space(struct inode *inode,
 	      round_down(start, fs_info->sectorsize);
 	start = round_down(start, fs_info->sectorsize);

-	ret = btrfs_alloc_data_chunk_ondemand(BTRFS_I(inode), len);
+	ret = btrfs_alloc_data_chunk_ondemand(inode, len);
 	if (ret < 0)
 		return ret;

 	/* Use new btrfs_qgroup_reserve_data to reserve precious data space. */
-	ret = btrfs_qgroup_reserve_data(BTRFS_I(inode), reserved, start, len);
+	ret = btrfs_qgroup_reserve_data(inode, reserved, start, len);
 	if (ret < 0)
 		btrfs_free_reserved_data_space_noquota(fs_info, start, len);
 	else
@@ -561,7 +561,7 @@ int btrfs_delalloc_reserve_space(struct inode *inode,
 {
 	int ret;

-	ret = btrfs_check_data_free_space(inode, reserved, start, len);
+	ret = btrfs_check_data_free_space(BTRFS_I(inode), reserved, start, len);
 	if (ret < 0)
 		return ret;
 	ret = btrfs_delalloc_reserve_metadata(BTRFS_I(inode), len);
diff --git a/fs/btrfs/delalloc-space.h b/fs/btrfs/delalloc-space.h
index 853a9ac3de35..2722fb6d2e5b 100644
--- a/fs/btrfs/delalloc-space.h
+++ b/fs/btrfs/delalloc-space.h
@@ -6,7 +6,7 @@
 struct extent_changeset;

 int btrfs_alloc_data_chunk_ondemand(struct btrfs_inode *inode, u64 bytes);
-int btrfs_check_data_free_space(struct inode *inode,
+int btrfs_check_data_free_space(struct btrfs_inode *inode,
 			struct extent_changeset **reserved, u64 start, u64 len);
 void btrfs_free_reserved_data_space(struct btrfs_inode *inode,
 			struct extent_changeset *reserved, u64 start, u64 len);
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c
index 3a8b8bda9824..28c18ff5fbc1 100644
--- a/fs/btrfs/file.c
+++ b/fs/btrfs/file.c
@@ -1627,7 +1627,8 @@ static noinline ssize_t btrfs_buffered_write(struct kiocb *iocb,
 				fs_info->sectorsize);

 		extent_changeset_release(data_reserved);
-		ret = btrfs_check_data_free_space(inode, &data_reserved, pos,
+		ret = btrfs_check_data_free_space(BTRFS_I(inode),
+						  &data_reserved, pos,
 						  write_bytes);
 		if (ret < 0) {
 			if ((BTRFS_I(inode)->flags & (BTRFS_INODE_NODATACOW |
diff --git a/fs/btrfs/relocation.c b/fs/btrfs/relocation.c
index a884addec7bd..fd8710837430 100644
--- a/fs/btrfs/relocation.c
+++ b/fs/btrfs/relocation.c
@@ -2590,7 +2590,8 @@ int prealloc_file_extent_cluster(struct inode *inode,
 	BUG_ON(cluster->start != cluster->boundary[0]);
 	inode_lock(inode);

-	ret = btrfs_check_data_free_space(inode, &data_reserved, prealloc_start,
+	ret = btrfs_check_data_free_space(BTRFS_I(inode), &data_reserved,
+					  prealloc_start,
 					  prealloc_end + 1 - prealloc_start);
 	if (ret)
 		goto out;
--
2.17.1


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

* [PATCH 42/46] btrfs: Make btrfs_delalloc_reserve_space take btrfs_inode
  2020-06-01 15:36 [PATCH 00/46] Trivial BTRFS_I removal Nikolay Borisov
                   ` (40 preceding siblings ...)
  2020-06-01 15:37 ` [PATCH 41/46] btrfs: Make btrfs_check_data_free_space " Nikolay Borisov
@ 2020-06-01 15:37 ` Nikolay Borisov
  2020-06-01 15:37 ` [PATCH 43/46] btrfs: Remove BTRFS_I calls in btrfs_writepage_fixup_worker Nikolay Borisov
                   ` (5 subsequent siblings)
  47 siblings, 0 replies; 56+ messages in thread
From: Nikolay Borisov @ 2020-06-01 15:37 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

All of its children take btrfs_inode so bubble up this requirement to
btrfs_delalloc_reserve_space's interface and stop calling BTRFS_I internally.
Signed-off-by: Nikolay Borisov <nborisov@suse.com>
---
 fs/btrfs/delalloc-space.c |  8 ++++----
 fs/btrfs/delalloc-space.h |  2 +-
 fs/btrfs/inode-map.c      |  3 ++-
 fs/btrfs/inode.c          | 12 ++++++------
 fs/btrfs/ioctl.c          |  2 +-
 fs/btrfs/reflink.c        |  4 ++--
 6 files changed, 16 insertions(+), 15 deletions(-)

diff --git a/fs/btrfs/delalloc-space.c b/fs/btrfs/delalloc-space.c
index e5580262e4dd..d3bc86a7ad6d 100644
--- a/fs/btrfs/delalloc-space.c
+++ b/fs/btrfs/delalloc-space.c
@@ -556,17 +556,17 @@ void btrfs_delalloc_release_extents(struct btrfs_inode *inode, u64 num_bytes)
  * Return 0 for success
  * Return <0 for error(-ENOSPC or -EQUOT)
  */
-int btrfs_delalloc_reserve_space(struct inode *inode,
+int btrfs_delalloc_reserve_space(struct btrfs_inode *inode,
 			struct extent_changeset **reserved, u64 start, u64 len)
 {
 	int ret;

-	ret = btrfs_check_data_free_space(BTRFS_I(inode), reserved, start, len);
+	ret = btrfs_check_data_free_space(inode, reserved, start, len);
 	if (ret < 0)
 		return ret;
-	ret = btrfs_delalloc_reserve_metadata(BTRFS_I(inode), len);
+	ret = btrfs_delalloc_reserve_metadata(inode, len);
 	if (ret < 0)
-		btrfs_free_reserved_data_space(BTRFS_I(inode), *reserved, start, len);
+		btrfs_free_reserved_data_space(inode, *reserved, start, len);
 	return ret;
 }

diff --git a/fs/btrfs/delalloc-space.h b/fs/btrfs/delalloc-space.h
index 2722fb6d2e5b..47c5dcdc5402 100644
--- a/fs/btrfs/delalloc-space.h
+++ b/fs/btrfs/delalloc-space.h
@@ -17,7 +17,7 @@ void btrfs_free_reserved_data_space_noquota(struct btrfs_fs_info *fs_info,
 					    u64 start, u64 len);
 void btrfs_delalloc_release_metadata(struct btrfs_inode *inode, u64 num_bytes,
 				     bool qgroup_free);
-int btrfs_delalloc_reserve_space(struct inode *inode,
+int btrfs_delalloc_reserve_space(struct btrfs_inode *inode,
 			struct extent_changeset **reserved, u64 start, u64 len);

 #endif /* BTRFS_DELALLOC_SPACE_H */
diff --git a/fs/btrfs/inode-map.c b/fs/btrfs/inode-map.c
index 6009e0e939b5..76d2e43817ea 100644
--- a/fs/btrfs/inode-map.c
+++ b/fs/btrfs/inode-map.c
@@ -495,7 +495,8 @@ int btrfs_save_ino_cache(struct btrfs_root *root,
 	/* Just to make sure we have enough space */
 	prealloc += 8 * PAGE_SIZE;

-	ret = btrfs_delalloc_reserve_space(inode, &data_reserved, 0, prealloc);
+	ret = btrfs_delalloc_reserve_space(BTRFS_I(inode), &data_reserved, 0,
+					   prealloc);
 	if (ret)
 		goto out_put;

diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 687b06458f1a..bad40b41f329 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -2281,8 +2281,8 @@ static void btrfs_writepage_fixup_worker(struct btrfs_work *work)
 	 * This is similar to page_mkwrite, we need to reserve the space before
 	 * we take the page lock.
 	 */
-	ret = btrfs_delalloc_reserve_space(inode, &data_reserved, page_start,
-					   PAGE_SIZE);
+	ret = btrfs_delalloc_reserve_space(BTRFS_I(inode), &data_reserved,
+					   page_start, PAGE_SIZE);
 again:
 	lock_page(page);

@@ -4503,7 +4503,7 @@ 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_delalloc_reserve_space(inode, &data_reserved,
+	ret = btrfs_delalloc_reserve_space(BTRFS_I(inode), &data_reserved,
 					   block_start, blocksize);
 	if (ret)
 		goto out;
@@ -7295,7 +7295,7 @@ static int btrfs_dio_iomap_begin(struct inode *inode, loff_t start,
 	dio_data->length = length;
 	if (write) {
 		dio_data->reserve = round_up(length, fs_info->sectorsize);
-		ret = btrfs_delalloc_reserve_space(inode,
+		ret = btrfs_delalloc_reserve_space(BTRFS_I(inode),
 				&dio_data->data_reserved,
 				start, dio_data->reserve);
 		if (ret) {
@@ -8098,8 +8098,8 @@ vm_fault_t btrfs_page_mkwrite(struct vm_fault *vmf)
 	 * end up waiting indefinitely to get a lock on the page currently
 	 * being processed by btrfs_page_mkwrite() function.
 	 */
-	ret2 = btrfs_delalloc_reserve_space(inode, &data_reserved, page_start,
-					   reserved_space);
+	ret2 = btrfs_delalloc_reserve_space(BTRFS_I(inode), &data_reserved,
+					    page_start, reserved_space);
 	if (!ret2) {
 		ret2 = file_update_time(vmf->vma->vm_file);
 		reserved = 1;
diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c
index 37072628149d..dff1a9957a12 100644
--- a/fs/btrfs/ioctl.c
+++ b/fs/btrfs/ioctl.c
@@ -1243,7 +1243,7 @@ static int cluster_pages_for_defrag(struct inode *inode,

 	page_cnt = min_t(u64, (u64)num_pages, (u64)file_end - start_index + 1);

-	ret = btrfs_delalloc_reserve_space(inode, &data_reserved,
+	ret = btrfs_delalloc_reserve_space(BTRFS_I(inode), &data_reserved,
 			start_index << PAGE_SHIFT,
 			page_cnt << PAGE_SHIFT);
 	if (ret)
diff --git a/fs/btrfs/reflink.c b/fs/btrfs/reflink.c
index 9da0f101548f..834eb6d98caa 100644
--- a/fs/btrfs/reflink.c
+++ b/fs/btrfs/reflink.c
@@ -68,8 +68,8 @@ static int copy_inline_to_page(struct inode *inode,
 	 * reservation here. Also we must not do the reservation while holding
 	 * a transaction open, otherwise we would deadlock.
 	 */
-	ret = btrfs_delalloc_reserve_space(inode, &data_reserved, file_offset,
-					   block_size);
+	ret = btrfs_delalloc_reserve_space(BTRFS_I(inode), &data_reserved,
+					   file_offset, block_size);
 	if (ret)
 		goto out;

--
2.17.1


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

* [PATCH 43/46] btrfs: Remove BTRFS_I calls in btrfs_writepage_fixup_worker
  2020-06-01 15:36 [PATCH 00/46] Trivial BTRFS_I removal Nikolay Borisov
                   ` (41 preceding siblings ...)
  2020-06-01 15:37 ` [PATCH 42/46] btrfs: Make btrfs_delalloc_reserve_space " Nikolay Borisov
@ 2020-06-01 15:37 ` Nikolay Borisov
  2020-06-01 15:37 ` [PATCH 44/46] btrfs: Make prealloc_file_extent_cluster take btrfs_inode Nikolay Borisov
                   ` (4 subsequent siblings)
  47 siblings, 0 replies; 56+ messages in thread
From: Nikolay Borisov @ 2020-06-01 15:37 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

All of its children functions use btrfs_inode.

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

diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index bad40b41f329..39161a440125 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -2265,7 +2265,7 @@ static void btrfs_writepage_fixup_worker(struct btrfs_work *work)
 	struct extent_state *cached_state = NULL;
 	struct extent_changeset *data_reserved = NULL;
 	struct page *page;
-	struct inode *inode;
+	struct btrfs_inode *inode;
 	u64 page_start;
 	u64 page_end;
 	int ret = 0;
@@ -2273,7 +2273,7 @@ static void btrfs_writepage_fixup_worker(struct btrfs_work *work)

 	fixup = container_of(work, struct btrfs_writepage_fixup, work);
 	page = fixup->page;
-	inode = fixup->inode;
+	inode = BTRFS_I(fixup->inode);
 	page_start = page_offset(page);
 	page_end = page_offset(page) + PAGE_SIZE - 1;

@@ -2281,8 +2281,8 @@ static void btrfs_writepage_fixup_worker(struct btrfs_work *work)
 	 * This is similar to page_mkwrite, we need to reserve the space before
 	 * we take the page lock.
 	 */
-	ret = btrfs_delalloc_reserve_space(BTRFS_I(inode), &data_reserved,
-					   page_start, PAGE_SIZE);
+	ret = btrfs_delalloc_reserve_space(inode, &data_reserved, page_start,
+					   PAGE_SIZE);
 again:
 	lock_page(page);

@@ -2310,10 +2310,8 @@ static void btrfs_writepage_fixup_worker(struct btrfs_work *work)
 		 *    when the page was already properly dealt with.
 		 */
 		if (!ret) {
-			btrfs_delalloc_release_extents(BTRFS_I(inode),
-						       PAGE_SIZE);
-			btrfs_delalloc_release_space(BTRFS_I(inode),
-						     data_reserved,
+			btrfs_delalloc_release_extents(inode, PAGE_SIZE);
+			btrfs_delalloc_release_space(inode, data_reserved,
 						     page_start, PAGE_SIZE,
 						     true);
 		}
@@ -2328,25 +2326,23 @@ static void btrfs_writepage_fixup_worker(struct btrfs_work *work)
 	if (ret)
 		goto out_page;

-	lock_extent_bits(&BTRFS_I(inode)->io_tree, page_start, page_end,
-			 &cached_state);
+	lock_extent_bits(&inode->io_tree, page_start, page_end, &cached_state);

 	/* already ordered? We're done */
 	if (PagePrivate2(page))
 		goto out_reserved;

-	ordered = btrfs_lookup_ordered_range(BTRFS_I(inode), page_start,
-					PAGE_SIZE);
+	ordered = btrfs_lookup_ordered_range(inode, page_start, PAGE_SIZE);
 	if (ordered) {
-		unlock_extent_cached(&BTRFS_I(inode)->io_tree, page_start,
-				     page_end, &cached_state);
+		unlock_extent_cached(&inode->io_tree, page_start, page_end,
+				     &cached_state);
 		unlock_page(page);
-		btrfs_start_ordered_extent(inode, ordered, 1);
+		btrfs_start_ordered_extent(&inode->vfs_inode, ordered, 1);
 		btrfs_put_ordered_extent(ordered);
 		goto again;
 	}

-	ret = btrfs_set_extent_delalloc(BTRFS_I(inode), page_start, page_end, 0,
+	ret = btrfs_set_extent_delalloc(inode, page_start, page_end, 0,
 					&cached_state);
 	if (ret)
 		goto out_reserved;
@@ -2361,11 +2357,11 @@ static void btrfs_writepage_fixup_worker(struct btrfs_work *work)
 	BUG_ON(!PageDirty(page));
 	free_delalloc_space = false;
 out_reserved:
-	btrfs_delalloc_release_extents(BTRFS_I(inode), PAGE_SIZE);
+	btrfs_delalloc_release_extents(inode, PAGE_SIZE);
 	if (free_delalloc_space)
-		btrfs_delalloc_release_space(BTRFS_I(inode), data_reserved,
-					     page_start, PAGE_SIZE, true);
-	unlock_extent_cached(&BTRFS_I(inode)->io_tree, page_start, page_end,
+		btrfs_delalloc_release_space(inode, data_reserved, page_start,
+					     PAGE_SIZE, true);
+	unlock_extent_cached(&inode->io_tree, page_start, page_end,
 			     &cached_state);
 out_page:
 	if (ret) {
@@ -2388,7 +2384,7 @@ static void btrfs_writepage_fixup_worker(struct btrfs_work *work)
 	 * that could need flushing space. Recursing back to fixup worker would
 	 * deadlock.
 	 */
-	btrfs_add_delayed_iput(inode);
+	btrfs_add_delayed_iput(&inode->vfs_inode);
 }

 /*
--
2.17.1


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

* [PATCH 44/46] btrfs: Make prealloc_file_extent_cluster take btrfs_inode
  2020-06-01 15:36 [PATCH 00/46] Trivial BTRFS_I removal Nikolay Borisov
                   ` (42 preceding siblings ...)
  2020-06-01 15:37 ` [PATCH 43/46] btrfs: Remove BTRFS_I calls in btrfs_writepage_fixup_worker Nikolay Borisov
@ 2020-06-01 15:37 ` Nikolay Borisov
  2020-06-01 15:37 ` [PATCH 45/46] btrfs make btrfs_set_inode_last_trans " Nikolay Borisov
                   ` (3 subsequent siblings)
  47 siblings, 0 replies; 56+ messages in thread
From: Nikolay Borisov @ 2020-06-01 15:37 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

The vfs inode is only used for a pair of inode_lock/unlock calls all other uses
call for btrfs_inode.

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

diff --git a/fs/btrfs/relocation.c b/fs/btrfs/relocation.c
index fd8710837430..b48a8e9c844e 100644
--- a/fs/btrfs/relocation.c
+++ b/fs/btrfs/relocation.c
@@ -2572,13 +2572,13 @@ int relocate_tree_blocks(struct btrfs_trans_handle *trans,
 }

 static noinline_for_stack
-int prealloc_file_extent_cluster(struct inode *inode,
+int prealloc_file_extent_cluster(struct btrfs_inode *inode,
 				 struct file_extent_cluster *cluster)
 {
 	u64 alloc_hint = 0;
 	u64 start;
 	u64 end;
-	u64 offset = BTRFS_I(inode)->index_cnt;
+	u64 offset = inode->index_cnt;
 	u64 num_bytes;
 	int nr = 0;
 	int ret = 0;
@@ -2588,10 +2588,9 @@ int prealloc_file_extent_cluster(struct inode *inode,
 	struct extent_changeset *data_reserved = NULL;

 	BUG_ON(cluster->start != cluster->boundary[0]);
-	inode_lock(inode);
+	inode_lock(&inode->vfs_inode);

-	ret = btrfs_check_data_free_space(BTRFS_I(inode), &data_reserved,
-					  prealloc_start,
+	ret = btrfs_check_data_free_space(inode, &data_reserved, prealloc_start,
 					  prealloc_end + 1 - prealloc_start);
 	if (ret)
 		goto out;
@@ -2604,26 +2603,25 @@ int prealloc_file_extent_cluster(struct inode *inode,
 		else
 			end = cluster->end - offset;

-		lock_extent(&BTRFS_I(inode)->io_tree, start, end);
+		lock_extent(&inode->io_tree, start, end);
 		num_bytes = end + 1 - start;
 		if (cur_offset < start)
-			btrfs_free_reserved_data_space(BTRFS_I(inode),
-					data_reserved, cur_offset,
-					start - cur_offset);
-		ret = btrfs_prealloc_file_range(inode, 0, start,
+			btrfs_free_reserved_data_space(inode, data_reserved,
+						cur_offset, start - cur_offset);
+		ret = btrfs_prealloc_file_range(&inode->vfs_inode, 0, start,
 						num_bytes, num_bytes,
 						end + 1, &alloc_hint);
 		cur_offset = end + 1;
-		unlock_extent(&BTRFS_I(inode)->io_tree, start, end);
+		unlock_extent(&inode->io_tree, start, end);
 		if (ret)
 			break;
 		nr++;
 	}
 	if (cur_offset < prealloc_end)
-		btrfs_free_reserved_data_space(BTRFS_I(inode), data_reserved,
-				cur_offset, prealloc_end + 1 - cur_offset);
+		btrfs_free_reserved_data_space(inode, data_reserved, cur_offset,
+					       prealloc_end + 1 - cur_offset);
 out:
-	inode_unlock(inode);
+	inode_unlock(&inode->vfs_inode);
 	extent_changeset_free(data_reserved);
 	return ret;
 }
@@ -2692,7 +2690,7 @@ static int relocate_file_extent_cluster(struct inode *inode,
 	if (!ra)
 		return -ENOMEM;

-	ret = prealloc_file_extent_cluster(inode, cluster);
+	ret = prealloc_file_extent_cluster(BTRFS_I(inode), cluster);
 	if (ret)
 		goto out;

--
2.17.1


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

* [PATCH 45/46] btrfs make btrfs_set_inode_last_trans take btrfs_inode
  2020-06-01 15:36 [PATCH 00/46] Trivial BTRFS_I removal Nikolay Borisov
                   ` (43 preceding siblings ...)
  2020-06-01 15:37 ` [PATCH 44/46] btrfs: Make prealloc_file_extent_cluster take btrfs_inode Nikolay Borisov
@ 2020-06-01 15:37 ` Nikolay Borisov
  2020-06-01 15:37 ` [PATCH 46/46] btrfs: Make btrfs_qgroup_check_reserved_leak " Nikolay Borisov
                   ` (2 subsequent siblings)
  47 siblings, 0 replies; 56+ messages in thread
From: Nikolay Borisov @ 2020-06-01 15:37 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

Instead of making multiple calls to BTRFS_I simply take btrfs_inode as an input
paramter.


Signed-off-by: Nikolay Borisov <nborisov@suse.com>
---
 fs/btrfs/inode.c       |  6 +++---
 fs/btrfs/transaction.h | 12 ++++++------
 2 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 39161a440125..df1a347c1814 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -3468,7 +3468,7 @@ static noinline int btrfs_update_inode_item(struct btrfs_trans_handle *trans,

 	fill_inode_item(trans, leaf, inode_item, inode);
 	btrfs_mark_buffer_dirty(leaf);
-	btrfs_set_inode_last_trans(trans, inode);
+	btrfs_set_inode_last_trans(trans, BTRFS_I(inode));
 	ret = 0;
 failed:
 	btrfs_free_path(path);
@@ -3498,7 +3498,7 @@ noinline int btrfs_update_inode(struct btrfs_trans_handle *trans,

 		ret = btrfs_delayed_update_inode(trans, root, inode);
 		if (!ret)
-			btrfs_set_inode_last_trans(trans, inode);
+			btrfs_set_inode_last_trans(trans, BTRFS_I(inode));
 		return ret;
 	}

@@ -6010,7 +6010,7 @@ static struct inode *btrfs_new_inode(struct btrfs_trans_handle *trans,
 	inode_tree_add(inode);

 	trace_btrfs_inode_new(inode);
-	btrfs_set_inode_last_trans(trans, inode);
+	btrfs_set_inode_last_trans(trans, BTRFS_I(inode));

 	btrfs_update_root_times(trans, root);

diff --git a/fs/btrfs/transaction.h b/fs/btrfs/transaction.h
index bf102e64bfb2..6f65fff6cf50 100644
--- a/fs/btrfs/transaction.h
+++ b/fs/btrfs/transaction.h
@@ -156,13 +156,13 @@ struct btrfs_pending_snapshot {
 };

 static inline void btrfs_set_inode_last_trans(struct btrfs_trans_handle *trans,
-					      struct inode *inode)
+					      struct btrfs_inode *inode)
 {
-	spin_lock(&BTRFS_I(inode)->lock);
-	BTRFS_I(inode)->last_trans = trans->transaction->transid;
-	BTRFS_I(inode)->last_sub_trans = BTRFS_I(inode)->root->log_transid;
-	BTRFS_I(inode)->last_log_commit = BTRFS_I(inode)->root->last_log_commit;
-	spin_unlock(&BTRFS_I(inode)->lock);
+	spin_lock(&inode->lock);
+	inode->last_trans = trans->transaction->transid;
+	inode->last_sub_trans = inode->root->log_transid;
+	inode->last_log_commit = inode->root->last_log_commit;
+	spin_unlock(&inode->lock);
 }

 /*
--
2.17.1


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

* [PATCH 46/46] btrfs: Make btrfs_qgroup_check_reserved_leak take btrfs_inode
  2020-06-01 15:36 [PATCH 00/46] Trivial BTRFS_I removal Nikolay Borisov
                   ` (44 preceding siblings ...)
  2020-06-01 15:37 ` [PATCH 45/46] btrfs make btrfs_set_inode_last_trans " Nikolay Borisov
@ 2020-06-01 15:37 ` Nikolay Borisov
  2020-06-01 17:20 ` [PATCH 00/46] Trivial BTRFS_I removal David Sterba
  2020-06-02  9:46 ` Johannes Thumshirn
  47 siblings, 0 replies; 56+ messages in thread
From: Nikolay Borisov @ 2020-06-01 15:37 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov


vfs_inode is used only for the inode number everything else requires btrfs_inode.
Signed-off-by: Nikolay Borisov <nborisov@suse.com>
---
 fs/btrfs/inode.c  |  2 +-
 fs/btrfs/qgroup.c | 12 ++++++------
 fs/btrfs/qgroup.h |  2 +-
 3 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index df1a347c1814..2991ac7142d6 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -8499,7 +8499,7 @@ void btrfs_destroy_inode(struct inode *inode)
 			btrfs_put_ordered_extent(ordered);
 		}
 	}
-	btrfs_qgroup_check_reserved_leak(inode);
+	btrfs_qgroup_check_reserved_leak(BTRFS_I(inode));
 	inode_tree_del(inode);
 	btrfs_drop_extent_cache(BTRFS_I(inode), 0, (u64)-1, 0);
 	btrfs_inode_clear_file_extent_range(BTRFS_I(inode), 0, (u64)-1);
diff --git a/fs/btrfs/qgroup.c b/fs/btrfs/qgroup.c
index e5fab553afb7..453545ea2f41 100644
--- a/fs/btrfs/qgroup.c
+++ b/fs/btrfs/qgroup.c
@@ -3741,7 +3741,7 @@ void btrfs_qgroup_convert_reserved_meta(struct btrfs_root *root, int num_bytes)
  * Check qgroup reserved space leaking, normally at destroy inode
  * time
  */
-void btrfs_qgroup_check_reserved_leak(struct inode *inode)
+void btrfs_qgroup_check_reserved_leak(struct btrfs_inode *inode)
 {
 	struct extent_changeset changeset;
 	struct ulist_node *unode;
@@ -3749,19 +3749,19 @@ void btrfs_qgroup_check_reserved_leak(struct inode *inode)
 	int ret;

 	extent_changeset_init(&changeset);
-	ret = clear_record_extent_bits(&BTRFS_I(inode)->io_tree, 0, (u64)-1,
+	ret = clear_record_extent_bits(&inode->io_tree, 0, (u64)-1,
 			EXTENT_QGROUP_RESERVED, &changeset);

 	WARN_ON(ret < 0);
 	if (WARN_ON(changeset.bytes_changed)) {
 		ULIST_ITER_INIT(&iter);
 		while ((unode = ulist_next(&changeset.range_changed, &iter))) {
-			btrfs_warn(BTRFS_I(inode)->root->fs_info,
+			btrfs_warn(inode->root->fs_info,
 				"leaking qgroup reserved space, ino: %lu, start: %llu, end: %llu",
-				inode->i_ino, unode->val, unode->aux);
+				inode->vfs_inode.i_ino, unode->val, unode->aux);
 		}
-		btrfs_qgroup_free_refroot(BTRFS_I(inode)->root->fs_info,
-				BTRFS_I(inode)->root->root_key.objectid,
+		btrfs_qgroup_free_refroot(inode->root->fs_info,
+				inode->root->root_key.objectid,
 				changeset.bytes_changed, BTRFS_QGROUP_RSV_DATA);

 	}
diff --git a/fs/btrfs/qgroup.h b/fs/btrfs/qgroup.h
index a22a1d3dae25..741d21a4147a 100644
--- a/fs/btrfs/qgroup.h
+++ b/fs/btrfs/qgroup.h
@@ -399,7 +399,7 @@ void btrfs_qgroup_free_meta_all_pertrans(struct btrfs_root *root);
  */
 void btrfs_qgroup_convert_reserved_meta(struct btrfs_root *root, int num_bytes);

-void btrfs_qgroup_check_reserved_leak(struct inode *inode);
+void btrfs_qgroup_check_reserved_leak(struct btrfs_inode *inode);

 /* btrfs_qgroup_swapped_blocks related functions */
 void btrfs_qgroup_init_swapped_blocks(
--
2.17.1


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

* Re: [PATCH 00/46] Trivial BTRFS_I removal
  2020-06-01 15:36 [PATCH 00/46] Trivial BTRFS_I removal Nikolay Borisov
                   ` (45 preceding siblings ...)
  2020-06-01 15:37 ` [PATCH 46/46] btrfs: Make btrfs_qgroup_check_reserved_leak " Nikolay Borisov
@ 2020-06-01 17:20 ` David Sterba
  2020-06-02  9:46 ` Johannes Thumshirn
  47 siblings, 0 replies; 56+ messages in thread
From: David Sterba @ 2020-06-01 17:20 UTC (permalink / raw)
  To: Nikolay Borisov; +Cc: linux-btrfs

On Mon, Jun 01, 2020 at 06:36:58PM +0300, Nikolay Borisov wrote:
> Here are 4 dozen patches that "bubble up" the usage of BTRFS_I from internal
> functions towards the external interfaces. Still far away from a complete
> cleanup but a step in the right direction. The primary goal is to unify the
> internal interfaces by always taking btrfs_inode and only use vfs_inode where
> it makes sense. Also reduce the clutter and line lenghts that BTRFS_I brings.

Looks good on first pass. Please go through the changelogs and reformat
lines that are longer than 74 and fixup various space damage you find on
the way. Thanks.

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

* Re: [PATCH 01/46] btrfs: Make __btrfs_add_ordered_extent take struct btrfs_inode
  2020-06-01 15:36 ` [PATCH 01/46] btrfs: Make __btrfs_add_ordered_extent take struct btrfs_inode Nikolay Borisov
@ 2020-06-02  8:50   ` Johannes Thumshirn
  0 siblings, 0 replies; 56+ messages in thread
From: Johannes Thumshirn @ 2020-06-02  8:50 UTC (permalink / raw)
  To: Nikolay Borisov, linux-btrfs

Looks good,
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>

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

* Re: [PATCH 02/46] btrfs: Make get_extent_allocation_hint take btrfs_inode
  2020-06-01 15:37 ` [PATCH 02/46] btrfs: Make get_extent_allocation_hint take btrfs_inode Nikolay Borisov
@ 2020-06-02  8:54   ` Johannes Thumshirn
  0 siblings, 0 replies; 56+ messages in thread
From: Johannes Thumshirn @ 2020-06-02  8:54 UTC (permalink / raw)
  To: Nikolay Borisov, linux-btrfs

Looks good,
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>

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

* Re: [PATCH 03/46] btrfs: Make btrfs_lookup_ordered_extent take btrfs_inode
  2020-06-01 15:37 ` [PATCH 03/46] btrfs: Make btrfs_lookup_ordered_extent " Nikolay Borisov
@ 2020-06-02  8:56   ` Johannes Thumshirn
  0 siblings, 0 replies; 56+ messages in thread
From: Johannes Thumshirn @ 2020-06-02  8:56 UTC (permalink / raw)
  To: Nikolay Borisov, linux-btrfs

Looks good,
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>

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

* Re: [PATCH 04/46] btrfs: Make btrfs_reloc_clone_csums take btrfs_inode
  2020-06-01 15:37 ` [PATCH 04/46] btrfs: Make btrfs_reloc_clone_csums " Nikolay Borisov
@ 2020-06-02  8:57   ` Johannes Thumshirn
  0 siblings, 0 replies; 56+ messages in thread
From: Johannes Thumshirn @ 2020-06-02  8:57 UTC (permalink / raw)
  To: Nikolay Borisov, linux-btrfs

Looks good,
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>

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

* Re: [PATCH 05/46] btrfs: Make create_io_em take btrfs_inode
  2020-06-01 15:37 ` [PATCH 05/46] btrfs: Make create_io_em " Nikolay Borisov
@ 2020-06-02  8:58   ` Johannes Thumshirn
  0 siblings, 0 replies; 56+ messages in thread
From: Johannes Thumshirn @ 2020-06-02  8:58 UTC (permalink / raw)
  To: Nikolay Borisov, linux-btrfs

Looks good,
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>

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

* Re: [PATCH 20/46] btrfs: Make fallback_to_cow take btrfs_inode
  2020-06-01 15:37 ` [PATCH 20/46] btrfs: Make fallback_to_cow " Nikolay Borisov
@ 2020-06-02  9:23   ` Johannes Thumshirn
  0 siblings, 0 replies; 56+ messages in thread
From: Johannes Thumshirn @ 2020-06-02  9:23 UTC (permalink / raw)
  To: Nikolay Borisov, linux-btrfs

On 01/06/2020 17:38, Nikolay Borisov wrote:
> It really wants btrfs_inode and is prepration to converting run_delalloc_nocow
a preparation (I think)

Otherwise,
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>

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

* Re: [PATCH 00/46] Trivial BTRFS_I removal
  2020-06-01 15:36 [PATCH 00/46] Trivial BTRFS_I removal Nikolay Borisov
                   ` (46 preceding siblings ...)
  2020-06-01 17:20 ` [PATCH 00/46] Trivial BTRFS_I removal David Sterba
@ 2020-06-02  9:46 ` Johannes Thumshirn
  47 siblings, 0 replies; 56+ messages in thread
From: Johannes Thumshirn @ 2020-06-02  9:46 UTC (permalink / raw)
  To: Nikolay Borisov, linux-btrfs

With David's comments worked in
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
for the whole series.

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

* [PATCH 07/46] btrfs: Make btrfs_csum_one_bio takae btrfs_inode
  2020-06-03  5:55 [PATCH v2 " Nikolay Borisov
@ 2020-06-03  5:55 ` Nikolay Borisov
  0 siblings, 0 replies; 56+ messages in thread
From: Nikolay Borisov @ 2020-06-03  5:55 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

Will enable converting btrfs_submit_compressed_write to btrfs_inode more
easily.

Signed-off-by: Nikolay Borisov <nborisov@suse.com>
---
 fs/btrfs/compression.c | 5 +++--
 fs/btrfs/ctree.h       | 4 ++--
 fs/btrfs/file-item.c   | 3 +--
 fs/btrfs/inode.c       | 8 ++++----
 4 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/fs/btrfs/compression.c b/fs/btrfs/compression.c
index c6e648603f85..4f52cd8af517 100644
--- a/fs/btrfs/compression.c
+++ b/fs/btrfs/compression.c
@@ -475,7 +475,8 @@ blk_status_t btrfs_submit_compressed_write(struct inode *inode, u64 start,
 			BUG_ON(ret); /* -ENOMEM */

 			if (!skip_sum) {
-				ret = btrfs_csum_one_bio(inode, bio, start, 1);
+				ret = btrfs_csum_one_bio(BTRFS_I(inode), bio,
+							 start, 1);
 				BUG_ON(ret); /* -ENOMEM */
 			}

@@ -507,7 +508,7 @@ blk_status_t btrfs_submit_compressed_write(struct inode *inode, u64 start,
 	BUG_ON(ret); /* -ENOMEM */

 	if (!skip_sum) {
-		ret = btrfs_csum_one_bio(inode, bio, start, 1);
+		ret = btrfs_csum_one_bio(BTRFS_I(inode), bio, start, 1);
 		BUG_ON(ret); /* -ENOMEM */
 	}

diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h
index 3e8063f9b30a..55add0881615 100644
--- a/fs/btrfs/ctree.h
+++ b/fs/btrfs/ctree.h
@@ -2830,8 +2830,8 @@ int btrfs_lookup_file_extent(struct btrfs_trans_handle *trans,
 int btrfs_csum_file_blocks(struct btrfs_trans_handle *trans,
 			   struct btrfs_root *root,
 			   struct btrfs_ordered_sum *sums);
-blk_status_t btrfs_csum_one_bio(struct inode *inode, struct bio *bio,
-		       u64 file_start, int contig);
+blk_status_t btrfs_csum_one_bio(struct btrfs_inode *inode, struct bio *bio,
+				u64 file_start, int contig);
 int btrfs_lookup_csums_range(struct btrfs_root *root, u64 start, u64 end,
 			     struct list_head *list, int search_commit);
 void btrfs_extent_item_to_extent_map(struct btrfs_inode *inode,
diff --git a/fs/btrfs/file-item.c b/fs/btrfs/file-item.c
index 9d311e834b20..7d5ec71615b8 100644
--- a/fs/btrfs/file-item.c
+++ b/fs/btrfs/file-item.c
@@ -522,10 +522,9 @@ int btrfs_lookup_csums_range(struct btrfs_root *root, u64 start, u64 end,
  *		 means this bio can contains potentially discontigous bio vecs
  *		 so the logical offset of each should be calculated separately.
  */
-blk_status_t btrfs_csum_one_bio(struct inode *vfsinode, struct bio *bio,
+blk_status_t btrfs_csum_one_bio(struct btrfs_inode *inode, struct bio *bio,
 		       u64 file_start, int contig)
 {
-	struct btrfs_inode *inode = BTRFS_I(vfsinode);
 	struct btrfs_fs_info *fs_info = inode->root->fs_info;
 	SHASH_DESC_ON_STACK(shash, fs_info->csum_shash);
 	struct btrfs_ordered_sum *sums;
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 7615b73feb30..d20afd95ab4d 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -2149,7 +2149,7 @@ static blk_status_t btrfs_submit_bio_start(void *private_data, struct bio *bio,
 	struct inode *inode = private_data;
 	blk_status_t ret = 0;

-	ret = btrfs_csum_one_bio(inode, bio, 0, 0);
+	ret = btrfs_csum_one_bio(BTRFS_I(inode), bio, 0, 0);
 	BUG_ON(ret); /* -ENOMEM */
 	return 0;
 }
@@ -2214,7 +2214,7 @@ static blk_status_t btrfs_submit_bio_hook(struct inode *inode, struct bio *bio,
 					  0, inode, btrfs_submit_bio_start);
 		goto out;
 	} else if (!skip_sum) {
-		ret = btrfs_csum_one_bio(inode, bio, 0, 0);
+		ret = btrfs_csum_one_bio(BTRFS_I(inode), bio, 0, 0);
 		if (ret)
 			goto out;
 	}
@@ -7597,7 +7597,7 @@ static blk_status_t btrfs_submit_bio_start_direct_io(void *private_data,
 {
 	struct inode *inode = private_data;
 	blk_status_t ret;
-	ret = btrfs_csum_one_bio(inode, bio, offset, 1);
+	ret = btrfs_csum_one_bio(BTRFS_I(inode), bio, offset, 1);
 	BUG_ON(ret); /* -ENOMEM */
 	return 0;
 }
@@ -7658,7 +7658,7 @@ static inline blk_status_t btrfs_submit_dio_bio(struct bio *bio,
 		 * If we aren't doing async submit, calculate the csum of the
 		 * bio now.
 		 */
-		ret = btrfs_csum_one_bio(inode, bio, file_offset, 1);
+		ret = btrfs_csum_one_bio(BTRFS_I(inode), bio, file_offset, 1);
 		if (ret)
 			goto err;
 	} else {
--
2.17.1


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

end of thread, other threads:[~2020-06-03  5:56 UTC | newest]

Thread overview: 56+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-01 15:36 [PATCH 00/46] Trivial BTRFS_I removal Nikolay Borisov
2020-06-01 15:36 ` [PATCH 01/46] btrfs: Make __btrfs_add_ordered_extent take struct btrfs_inode Nikolay Borisov
2020-06-02  8:50   ` Johannes Thumshirn
2020-06-01 15:37 ` [PATCH 02/46] btrfs: Make get_extent_allocation_hint take btrfs_inode Nikolay Borisov
2020-06-02  8:54   ` Johannes Thumshirn
2020-06-01 15:37 ` [PATCH 03/46] btrfs: Make btrfs_lookup_ordered_extent " Nikolay Borisov
2020-06-02  8:56   ` Johannes Thumshirn
2020-06-01 15:37 ` [PATCH 04/46] btrfs: Make btrfs_reloc_clone_csums " Nikolay Borisov
2020-06-02  8:57   ` Johannes Thumshirn
2020-06-01 15:37 ` [PATCH 05/46] btrfs: Make create_io_em " Nikolay Borisov
2020-06-02  8:58   ` Johannes Thumshirn
2020-06-01 15:37 ` [PATCH 06/46] btrfs: Make extent_clear_unlock_delalloc " Nikolay Borisov
2020-06-01 15:37 ` [PATCH 07/46] btrfs: Make btrfs_csum_one_bio takae btrfs_inode Nikolay Borisov
2020-06-01 15:37 ` [PATCH 08/46] btrfs: Make __btrfs_drop_extents take btrfs_inode Nikolay Borisov
2020-06-01 15:37 ` [PATCH 09/46] btrfs: Make qgroup_free_reserved_data " Nikolay Borisov
2020-06-01 15:37 ` [PATCH 10/46] btrfs: Make __btrfs_qgroup_release_data " Nikolay Borisov
2020-06-01 15:37 ` [PATCH 11/46] btrfs: Make btrfs_qgroup_free_data " Nikolay Borisov
2020-06-01 15:37 ` [PATCH 12/46] btrfs: Make cow_file_range_inline " Nikolay Borisov
2020-06-01 15:37 ` [PATCH 13/46] btrfs: Make btrfs_add_ordered_extent " Nikolay Borisov
2020-06-01 15:37 ` [PATCH 14/46] btrfs: Make cow_file_range " Nikolay Borisov
2020-06-01 15:37 ` [PATCH 15/46] btrfs: Make btrfs_add_ordered_extent_compress " Nikolay Borisov
2020-06-01 15:37 ` [PATCH 16/46] btrfs: Make btrfs_submit_compressed_write " Nikolay Borisov
2020-06-01 15:37 ` [PATCH 17/46] btrfs: Make submit_compressed_extents " Nikolay Borisov
2020-06-01 15:37 ` [PATCH 18/46] btrfs: Make btrfs_qgroup_release_data " Nikolay Borisov
2020-06-01 15:37 ` [PATCH 19/46] btrfs: Make insert_reserved_file_extent " Nikolay Borisov
2020-06-01 15:37 ` [PATCH 20/46] btrfs: Make fallback_to_cow " Nikolay Borisov
2020-06-02  9:23   ` Johannes Thumshirn
2020-06-01 15:37 ` [PATCH 21/46] btrfs: Make run_delalloc_nocow " Nikolay Borisov
2020-06-01 15:37 ` [PATCH 22/46] btrfs: Make cow_file_range_async " Nikolay Borisov
2020-06-01 15:37 ` [PATCH 23/46] btrfs: Make btrfs_dec_test_first_ordered_pending " Nikolay Borisov
2020-06-01 15:37 ` [PATCH 24/46] btrfs: Make __endio_write_update_ordered " Nikolay Borisov
2020-06-01 15:37 ` [PATCH 25/46] btrfs: Make btrfs_cleanup_ordered_extents " Nikolay Borisov
2020-06-01 15:37 ` [PATCH 26/46] btrfs: Make inode_can_compress " Nikolay Borisov
2020-06-01 15:37 ` [PATCH 27/46] btrfs: Make inode_need_compress " Nikolay Borisov
2020-06-01 15:37 ` [PATCH 28/46] btrfs: Make need_force_cow " Nikolay Borisov
2020-06-01 15:37 ` [PATCH 29/46] btrfs: Make btrfs_run_delalloc_range " Nikolay Borisov
2020-06-01 15:37 ` [PATCH 30/46] btrfs: Make btrfs_add_ordered_extent_dio " Nikolay Borisov
2020-06-01 15:37 ` [PATCH 31/46] btrfs: Make btrfs_create_dio_extent " Nikolay Borisov
2020-06-01 15:37 ` [PATCH 32/46] btrfs: Make btrfs_new_extent_direct " Nikolay Borisov
2020-06-01 15:37 ` [PATCH 33/46] btrfs: Make __extent_writepage_io " Nikolay Borisov
2020-06-01 15:37 ` [PATCH 34/46] btrfs: Make writepage_delalloc " Nikolay Borisov
2020-06-01 15:37 ` [PATCH 35/46] btrfs: Make btrfs_set_extent_delalloc " Nikolay Borisov
2020-06-01 15:37 ` [PATCH 36/46] btrfs: Make btrfs_dirty_pages " Nikolay Borisov
2020-06-01 15:37 ` [PATCH 37/46] btrfs: Make btrfs_qgroup_reserve_data " Nikolay Borisov
2020-06-01 15:37 ` [PATCH 38/46] btrfs: Make btrfs_free_reserved_data_space_noquota take btrfs_fs_info Nikolay Borisov
2020-06-01 15:37 ` [PATCH 39/46] btrfs: Make btrfs_free_reserved_data_space take btrfs_inode Nikolay Borisov
2020-06-01 15:37 ` [PATCH 40/46] btrfs: Make btrfs_delalloc_release_space " Nikolay Borisov
2020-06-01 15:37 ` [PATCH 41/46] btrfs: Make btrfs_check_data_free_space " Nikolay Borisov
2020-06-01 15:37 ` [PATCH 42/46] btrfs: Make btrfs_delalloc_reserve_space " Nikolay Borisov
2020-06-01 15:37 ` [PATCH 43/46] btrfs: Remove BTRFS_I calls in btrfs_writepage_fixup_worker Nikolay Borisov
2020-06-01 15:37 ` [PATCH 44/46] btrfs: Make prealloc_file_extent_cluster take btrfs_inode Nikolay Borisov
2020-06-01 15:37 ` [PATCH 45/46] btrfs make btrfs_set_inode_last_trans " Nikolay Borisov
2020-06-01 15:37 ` [PATCH 46/46] btrfs: Make btrfs_qgroup_check_reserved_leak " Nikolay Borisov
2020-06-01 17:20 ` [PATCH 00/46] Trivial BTRFS_I removal David Sterba
2020-06-02  9:46 ` Johannes Thumshirn
2020-06-03  5:55 [PATCH v2 " Nikolay Borisov
2020-06-03  5:55 ` [PATCH 07/46] btrfs: Make btrfs_csum_one_bio takae btrfs_inode Nikolay Borisov

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