* [PATCH 01/12] btrfs: Make inode_tree_del take btrfs_inode
2020-08-31 11:42 [PATCH 00/12] Another batch of inode vs btrfs_inode cleanups Nikolay Borisov
@ 2020-08-31 11:42 ` Nikolay Borisov
2020-08-31 12:03 ` Johannes Thumshirn
2020-08-31 11:42 ` [PATCH 02/12] btrfs: Make btrfs_lookup_first_ordered_extent " Nikolay Borisov
` (12 subsequent siblings)
13 siblings, 1 reply; 27+ messages in thread
From: Nikolay Borisov @ 2020-08-31 11:42 UTC (permalink / raw)
To: linux-btrfs; +Cc: Nikolay Borisov
Signed-off-by: Nikolay Borisov <nborisov@suse.com>
---
fs/btrfs/inode.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index ab84202cd456..c59615efab9e 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -5289,15 +5289,15 @@ static void inode_tree_add(struct inode *inode)
spin_unlock(&root->inode_lock);
}
-static void inode_tree_del(struct inode *inode)
+static void inode_tree_del(struct btrfs_inode *inode)
{
- struct btrfs_root *root = BTRFS_I(inode)->root;
+ struct btrfs_root *root = inode->root;
int empty = 0;
spin_lock(&root->inode_lock);
- if (!RB_EMPTY_NODE(&BTRFS_I(inode)->rb_node)) {
- rb_erase(&BTRFS_I(inode)->rb_node, &root->inode_tree);
- RB_CLEAR_NODE(&BTRFS_I(inode)->rb_node);
+ if (!RB_EMPTY_NODE(&inode->rb_node)) {
+ rb_erase(&inode->rb_node, &root->inode_tree);
+ RB_CLEAR_NODE(&inode->rb_node);
empty = RB_EMPTY_ROOT(&root->inode_tree);
}
spin_unlock(&root->inode_lock);
@@ -8613,7 +8613,7 @@ void btrfs_destroy_inode(struct inode *inode)
}
}
btrfs_qgroup_check_reserved_leak(BTRFS_I(inode));
- inode_tree_del(inode);
+ inode_tree_del(BTRFS_I(inode));
btrfs_drop_extent_cache(BTRFS_I(inode), 0, (u64)-1, 0);
btrfs_inode_clear_file_extent_range(BTRFS_I(inode), 0, (u64)-1);
btrfs_put_root(BTRFS_I(inode)->root);
--
2.17.1
^ permalink raw reply related [flat|nested] 27+ messages in thread* [PATCH 02/12] btrfs: Make btrfs_lookup_first_ordered_extent take btrfs_inode
2020-08-31 11:42 [PATCH 00/12] Another batch of inode vs btrfs_inode cleanups Nikolay Borisov
2020-08-31 11:42 ` [PATCH 01/12] btrfs: Make inode_tree_del take btrfs_inode Nikolay Borisov
@ 2020-08-31 11:42 ` Nikolay Borisov
2020-08-31 12:09 ` Johannes Thumshirn
2020-08-31 11:42 ` [PATCH 03/12] btrfs: Make ordered extent tracepoint " Nikolay Borisov
` (11 subsequent siblings)
13 siblings, 1 reply; 27+ messages in thread
From: Nikolay Borisov @ 2020-08-31 11:42 UTC (permalink / raw)
To: linux-btrfs; +Cc: Nikolay Borisov
Signed-off-by: Nikolay Borisov <nborisov@suse.com>
---
fs/btrfs/file.c | 6 ++++--
fs/btrfs/inode.c | 3 ++-
fs/btrfs/ordered-data.c | 6 +++---
fs/btrfs/ordered-data.h | 2 +-
4 files changed, 10 insertions(+), 7 deletions(-)
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c
index b62679382799..8a3bf5fec655 100644
--- a/fs/btrfs/file.c
+++ b/fs/btrfs/file.c
@@ -2508,7 +2508,8 @@ static int btrfs_punch_hole_lock_range(struct inode *inode,
lock_extent_bits(&BTRFS_I(inode)->io_tree, lockstart, lockend,
cached_state);
- ordered = btrfs_lookup_first_ordered_extent(inode, lockend);
+ ordered = btrfs_lookup_first_ordered_extent(BTRFS_I(inode),
+ lockend);
/*
* We need to make sure we have no ordered extents in this range
@@ -3367,7 +3368,8 @@ static long btrfs_fallocate(struct file *file, int mode,
*/
lock_extent_bits(&BTRFS_I(inode)->io_tree, alloc_start,
locked_end, &cached_state);
- ordered = btrfs_lookup_first_ordered_extent(inode, locked_end);
+ ordered = btrfs_lookup_first_ordered_extent(BTRFS_I(inode),
+ locked_end);
if (ordered &&
ordered->file_offset + ordered->num_bytes > alloc_start &&
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index c59615efab9e..74321962cd0f 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -8600,7 +8600,8 @@ void btrfs_destroy_inode(struct inode *inode)
return;
while (1) {
- ordered = btrfs_lookup_first_ordered_extent(inode, (u64)-1);
+ ordered = btrfs_lookup_first_ordered_extent(BTRFS_I(inode),
+ (u64)-1);
if (!ordered)
break;
else {
diff --git a/fs/btrfs/ordered-data.c b/fs/btrfs/ordered-data.c
index 4732c5b89460..5a7e9c5872d3 100644
--- a/fs/btrfs/ordered-data.c
+++ b/fs/btrfs/ordered-data.c
@@ -710,7 +710,7 @@ int btrfs_wait_ordered_range(struct inode *inode, u64 start, u64 len)
end = orig_end;
while (1) {
- ordered = btrfs_lookup_first_ordered_extent(inode, end);
+ ordered = btrfs_lookup_first_ordered_extent(BTRFS_I(inode), end);
if (!ordered)
break;
if (ordered->file_offset > orig_end) {
@@ -838,13 +838,13 @@ void btrfs_get_ordered_extents_for_logging(struct btrfs_inode *inode,
* if none is found
*/
struct btrfs_ordered_extent *
-btrfs_lookup_first_ordered_extent(struct inode *inode, u64 file_offset)
+btrfs_lookup_first_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)
diff --git a/fs/btrfs/ordered-data.h b/fs/btrfs/ordered-data.h
index 644258a7dfb1..b287a2a403e6 100644
--- a/fs/btrfs/ordered-data.h
+++ b/fs/btrfs/ordered-data.h
@@ -178,7 +178,7 @@ void btrfs_start_ordered_extent(struct inode *inode,
struct btrfs_ordered_extent *entry, int wait);
int btrfs_wait_ordered_range(struct inode *inode, u64 start, u64 len);
struct btrfs_ordered_extent *
-btrfs_lookup_first_ordered_extent(struct inode * inode, u64 file_offset);
+btrfs_lookup_first_ordered_extent(struct btrfs_inode *inode, u64 file_offset);
struct btrfs_ordered_extent *btrfs_lookup_ordered_range(
struct btrfs_inode *inode,
u64 file_offset,
--
2.17.1
^ permalink raw reply related [flat|nested] 27+ messages in thread* [PATCH 03/12] btrfs: Make ordered extent tracepoint take btrfs_inode
2020-08-31 11:42 [PATCH 00/12] Another batch of inode vs btrfs_inode cleanups Nikolay Borisov
2020-08-31 11:42 ` [PATCH 01/12] btrfs: Make inode_tree_del take btrfs_inode Nikolay Borisov
2020-08-31 11:42 ` [PATCH 02/12] btrfs: Make btrfs_lookup_first_ordered_extent " Nikolay Borisov
@ 2020-08-31 11:42 ` Nikolay Borisov
2020-08-31 12:14 ` Johannes Thumshirn
2020-08-31 11:42 ` [PATCH 04/12] btrfs: Make btrfs_dec_test_ordered_pending " Nikolay Borisov
` (10 subsequent siblings)
13 siblings, 1 reply; 27+ messages in thread
From: Nikolay Borisov @ 2020-08-31 11:42 UTC (permalink / raw)
To: linux-btrfs; +Cc: Nikolay Borisov
Signed-off-by: Nikolay Borisov <nborisov@suse.com>
---
fs/btrfs/ordered-data.c | 8 ++++----
include/trace/events/btrfs.h | 17 ++++++++---------
2 files changed, 12 insertions(+), 13 deletions(-)
diff --git a/fs/btrfs/ordered-data.c b/fs/btrfs/ordered-data.c
index 5a7e9c5872d3..369ddad30d9c 100644
--- a/fs/btrfs/ordered-data.c
+++ b/fs/btrfs/ordered-data.c
@@ -217,7 +217,7 @@ static int __btrfs_add_ordered_extent(struct btrfs_inode *inode, u64 file_offset
INIT_LIST_HEAD(&entry->work_list);
init_completion(&entry->completion);
- trace_btrfs_ordered_extent_add(&inode->vfs_inode, entry);
+ trace_btrfs_ordered_extent_add(inode, entry);
spin_lock_irq(&tree->lock);
node = tree_insert(&tree->tree, file_offset,
@@ -442,7 +442,7 @@ void btrfs_put_ordered_extent(struct btrfs_ordered_extent *entry)
struct list_head *cur;
struct btrfs_ordered_sum *sum;
- trace_btrfs_ordered_extent_put(entry->inode, entry);
+ trace_btrfs_ordered_extent_put(BTRFS_I(entry->inode), entry);
if (refcount_dec_and_test(&entry->refs)) {
ASSERT(list_empty(&entry->root_extent_list));
@@ -528,7 +528,7 @@ void btrfs_remove_ordered_extent(struct inode *inode,
list_del_init(&entry->root_extent_list);
root->nr_ordered_extents--;
- trace_btrfs_ordered_extent_remove(inode, entry);
+ trace_btrfs_ordered_extent_remove(BTRFS_I(inode), entry);
if (!root->nr_ordered_extents) {
spin_lock(&fs_info->ordered_root_lock);
@@ -658,7 +658,7 @@ void btrfs_start_ordered_extent(struct inode *inode,
u64 start = entry->file_offset;
u64 end = start + entry->num_bytes - 1;
- trace_btrfs_ordered_extent_start(inode, entry);
+ trace_btrfs_ordered_extent_start(BTRFS_I(inode), entry);
/*
* pages in the range can be dirty, clean or writeback. We
diff --git a/include/trace/events/btrfs.h b/include/trace/events/btrfs.h
index 34baf3290b89..fec0a5bcf481 100644
--- a/include/trace/events/btrfs.h
+++ b/include/trace/events/btrfs.h
@@ -510,7 +510,7 @@ DEFINE_EVENT(
DECLARE_EVENT_CLASS(btrfs__ordered_extent,
- TP_PROTO(const struct inode *inode,
+ TP_PROTO(const struct btrfs_inode *inode,
const struct btrfs_ordered_extent *ordered),
TP_ARGS(inode, ordered),
@@ -529,8 +529,8 @@ DECLARE_EVENT_CLASS(btrfs__ordered_extent,
__field( u64, truncated_len )
),
- TP_fast_assign_btrfs(btrfs_sb(inode->i_sb),
- __entry->ino = btrfs_ino(BTRFS_I(inode));
+ TP_fast_assign_btrfs(inode->root->fs_info,
+ __entry->ino = btrfs_ino(inode);
__entry->file_offset = ordered->file_offset;
__entry->start = ordered->disk_bytenr;
__entry->len = ordered->num_bytes;
@@ -539,8 +539,7 @@ DECLARE_EVENT_CLASS(btrfs__ordered_extent,
__entry->flags = ordered->flags;
__entry->compress_type = ordered->compress_type;
__entry->refs = refcount_read(&ordered->refs);
- __entry->root_objectid =
- BTRFS_I(inode)->root->root_key.objectid;
+ __entry->root_objectid = inode->root->root_key.objectid;
__entry->truncated_len = ordered->truncated_len;
),
@@ -563,7 +562,7 @@ DECLARE_EVENT_CLASS(btrfs__ordered_extent,
DEFINE_EVENT(btrfs__ordered_extent, btrfs_ordered_extent_add,
- TP_PROTO(const struct inode *inode,
+ TP_PROTO(const struct btrfs_inode *inode,
const struct btrfs_ordered_extent *ordered),
TP_ARGS(inode, ordered)
@@ -571,7 +570,7 @@ DEFINE_EVENT(btrfs__ordered_extent, btrfs_ordered_extent_add,
DEFINE_EVENT(btrfs__ordered_extent, btrfs_ordered_extent_remove,
- TP_PROTO(const struct inode *inode,
+ TP_PROTO(const struct btrfs_inode *inode,
const struct btrfs_ordered_extent *ordered),
TP_ARGS(inode, ordered)
@@ -579,7 +578,7 @@ DEFINE_EVENT(btrfs__ordered_extent, btrfs_ordered_extent_remove,
DEFINE_EVENT(btrfs__ordered_extent, btrfs_ordered_extent_start,
- TP_PROTO(const struct inode *inode,
+ TP_PROTO(const struct btrfs_inode *inode,
const struct btrfs_ordered_extent *ordered),
TP_ARGS(inode, ordered)
@@ -587,7 +586,7 @@ DEFINE_EVENT(btrfs__ordered_extent, btrfs_ordered_extent_start,
DEFINE_EVENT(btrfs__ordered_extent, btrfs_ordered_extent_put,
- TP_PROTO(const struct inode *inode,
+ TP_PROTO(const struct btrfs_inode *inode,
const struct btrfs_ordered_extent *ordered),
TP_ARGS(inode, ordered)
--
2.17.1
^ permalink raw reply related [flat|nested] 27+ messages in thread* [PATCH 04/12] btrfs: Make btrfs_dec_test_ordered_pending take btrfs_inode
2020-08-31 11:42 [PATCH 00/12] Another batch of inode vs btrfs_inode cleanups Nikolay Borisov
` (2 preceding siblings ...)
2020-08-31 11:42 ` [PATCH 03/12] btrfs: Make ordered extent tracepoint " Nikolay Borisov
@ 2020-08-31 11:42 ` Nikolay Borisov
2020-08-31 12:19 ` Johannes Thumshirn
2020-08-31 11:42 ` [PATCH 05/12] btrfs: Convert btrfs_inode_sectorsize to " Nikolay Borisov
` (9 subsequent siblings)
13 siblings, 1 reply; 27+ messages in thread
From: Nikolay Borisov @ 2020-08-31 11:42 UTC (permalink / raw)
To: linux-btrfs; +Cc: Nikolay Borisov
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 74321962cd0f..41e56ccf691d 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -2765,8 +2765,8 @@ void btrfs_writepage_endio_finish_ordered(struct page *page, u64 start,
trace_btrfs_writepage_end_io_hook(page, start, end, uptodate);
ClearPagePrivate2(page);
- if (!btrfs_dec_test_ordered_pending(inode, &ordered_extent, start,
- end - start + 1, uptodate))
+ if (!btrfs_dec_test_ordered_pending(BTRFS_I(inode), &ordered_extent,
+ start, end - start + 1, uptodate))
return;
if (btrfs_is_free_space_inode(BTRFS_I(inode)))
@@ -8112,8 +8112,8 @@ static void btrfs_invalidatepage(struct page *page, unsigned int offset,
ordered->truncated_len = new_len;
spin_unlock_irq(&tree->lock);
- if (btrfs_dec_test_ordered_pending(inode, &ordered,
- start,
+ if (btrfs_dec_test_ordered_pending(BTRFS_I(inode),
+ &ordered, start,
end - start + 1, 1))
btrfs_finish_ordered_io(ordered);
}
diff --git a/fs/btrfs/ordered-data.c b/fs/btrfs/ordered-data.c
index 369ddad30d9c..168a5edd939d 100644
--- a/fs/btrfs/ordered-data.c
+++ b/fs/btrfs/ordered-data.c
@@ -378,17 +378,16 @@ int btrfs_dec_test_first_ordered_pending(struct btrfs_inode *inode,
* test_and_set_bit on a flag in the struct btrfs_ordered_extent is used
* to make sure this function only returns 1 once for a given ordered extent.
*/
-int btrfs_dec_test_ordered_pending(struct inode *inode,
+int btrfs_dec_test_ordered_pending(struct btrfs_inode *inode,
struct btrfs_ordered_extent **cached,
u64 file_offset, u64 io_size, int uptodate)
{
- struct btrfs_ordered_inode_tree *tree;
+ struct btrfs_ordered_inode_tree *tree = &inode->ordered_tree;
struct rb_node *node;
struct btrfs_ordered_extent *entry = NULL;
unsigned long flags;
int ret;
- tree = &BTRFS_I(inode)->ordered_tree;
spin_lock_irqsave(&tree->lock, flags);
if (cached && *cached) {
entry = *cached;
@@ -409,7 +408,7 @@ int btrfs_dec_test_ordered_pending(struct inode *inode,
}
if (io_size > entry->bytes_left) {
- btrfs_crit(BTRFS_I(inode)->root->fs_info,
+ btrfs_crit(inode->root->fs_info,
"bad ordered accounting left %llu size %llu",
entry->bytes_left, io_size);
}
diff --git a/fs/btrfs/ordered-data.h b/fs/btrfs/ordered-data.h
index b287a2a403e6..1610195c6097 100644
--- a/fs/btrfs/ordered-data.h
+++ b/fs/btrfs/ordered-data.h
@@ -153,7 +153,7 @@ btrfs_ordered_inode_tree_init(struct btrfs_ordered_inode_tree *t)
void btrfs_put_ordered_extent(struct btrfs_ordered_extent *entry);
void btrfs_remove_ordered_extent(struct inode *inode,
struct btrfs_ordered_extent *entry);
-int btrfs_dec_test_ordered_pending(struct inode *inode,
+int btrfs_dec_test_ordered_pending(struct btrfs_inode *inode,
struct btrfs_ordered_extent **cached,
u64 file_offset, u64 io_size, int uptodate);
int btrfs_dec_test_first_ordered_pending(struct btrfs_inode *inode,
--
2.17.1
^ permalink raw reply related [flat|nested] 27+ messages in thread* [PATCH 05/12] btrfs: Convert btrfs_inode_sectorsize to take btrfs_inode
2020-08-31 11:42 [PATCH 00/12] Another batch of inode vs btrfs_inode cleanups Nikolay Borisov
` (3 preceding siblings ...)
2020-08-31 11:42 ` [PATCH 04/12] btrfs: Make btrfs_dec_test_ordered_pending " Nikolay Borisov
@ 2020-08-31 11:42 ` Nikolay Borisov
2020-08-31 12:20 ` Johannes Thumshirn
2020-08-31 11:42 ` [PATCH 06/12] btrfs: Make btrfs_invalidatepage work on btrfs_inode Nikolay Borisov
` (8 subsequent siblings)
13 siblings, 1 reply; 27+ messages in thread
From: Nikolay Borisov @ 2020-08-31 11:42 UTC (permalink / raw)
To: linux-btrfs; +Cc: Nikolay Borisov
It's counterinutitive to have a function named btrfs_inode_xxx which
takes a generic inode. Also move the function to btrfs_inode.h so othat
it has access to the definition of struct btrfs_inode.
Signed-off-by: Nikolay Borisov <nborisov@suse.com>
---
fs/btrfs/btrfs_inode.h | 5 +++++
fs/btrfs/ctree.h | 4 ----
fs/btrfs/extent_io.c | 6 +++---
fs/btrfs/file.c | 10 +++++-----
fs/btrfs/ordered-data.c | 2 +-
fs/btrfs/reflink.c | 2 +-
6 files changed, 15 insertions(+), 14 deletions(-)
diff --git a/fs/btrfs/btrfs_inode.h b/fs/btrfs/btrfs_inode.h
index 00f7831d0902..6fdb46d58299 100644
--- a/fs/btrfs/btrfs_inode.h
+++ b/fs/btrfs/btrfs_inode.h
@@ -217,6 +217,11 @@ struct btrfs_inode {
struct inode vfs_inode;
};
+static inline u32 btrfs_inode_sectorsize(const struct btrfs_inode *inode)
+{
+ return inode->root->fs_info->sectorsize;
+}
+
static inline struct btrfs_inode *BTRFS_I(const struct inode *inode)
{
return container_of(inode, struct btrfs_inode, vfs_inode);
diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h
index f9d4e0958e2e..4e5441e02498 100644
--- a/fs/btrfs/ctree.h
+++ b/fs/btrfs/ctree.h
@@ -1196,10 +1196,6 @@ struct btrfs_file_private {
void *filldir_buf;
};
-static inline u32 btrfs_inode_sectorsize(const struct inode *inode)
-{
- return btrfs_sb(inode->i_sb)->sectorsize;
-}
static inline u32 BTRFS_LEAF_DATA_SIZE(const struct btrfs_fs_info *info)
{
diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c
index a28d442d65b5..3b8df647c0dc 100644
--- a/fs/btrfs/extent_io.c
+++ b/fs/btrfs/extent_io.c
@@ -4555,7 +4555,7 @@ int try_release_extent_mapping(struct page *page, gfp_t mask)
static struct extent_map *get_extent_skip_holes(struct inode *inode,
u64 offset, u64 last)
{
- u64 sectorsize = btrfs_inode_sectorsize(inode);
+ u64 sectorsize = btrfs_inode_sectorsize(BTRFS_I(inode));
struct extent_map *em;
u64 len;
@@ -4736,8 +4736,8 @@ int extent_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo,
goto out_free_ulist;
}
- start = round_down(start, btrfs_inode_sectorsize(inode));
- len = round_up(max, btrfs_inode_sectorsize(inode)) - start;
+ start = round_down(start, btrfs_inode_sectorsize(BTRFS_I(inode)));
+ len = round_up(max, btrfs_inode_sectorsize(BTRFS_I(inode))) - start;
/*
* lookup the last file extent. We're not using i_size here
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c
index 8a3bf5fec655..09f21ea64ecb 100644
--- a/fs/btrfs/file.c
+++ b/fs/btrfs/file.c
@@ -2868,9 +2868,9 @@ static int btrfs_punch_hole(struct inode *inode, loff_t offset, loff_t len)
goto out_only_mutex;
}
- lockstart = round_up(offset, btrfs_inode_sectorsize(inode));
+ lockstart = round_up(offset, btrfs_inode_sectorsize(BTRFS_I(inode)));
lockend = round_down(offset + len,
- btrfs_inode_sectorsize(inode)) - 1;
+ btrfs_inode_sectorsize(BTRFS_I(inode))) - 1;
same_block = (BTRFS_BYTES_TO_BLKS(fs_info, offset))
== (BTRFS_BYTES_TO_BLKS(fs_info, offset + len - 1));
/*
@@ -3075,7 +3075,7 @@ enum {
static int btrfs_zero_range_check_range_boundary(struct inode *inode,
u64 offset)
{
- const u64 sectorsize = btrfs_inode_sectorsize(inode);
+ const u64 sectorsize = btrfs_inode_sectorsize(BTRFS_I(inode));
struct extent_map *em;
int ret;
@@ -3105,7 +3105,7 @@ static int btrfs_zero_range(struct inode *inode,
struct extent_changeset *data_reserved = NULL;
int ret;
u64 alloc_hint = 0;
- const u64 sectorsize = btrfs_inode_sectorsize(inode);
+ const u64 sectorsize = btrfs_inode_sectorsize(BTRFS_I(inode));
u64 alloc_start = round_down(offset, sectorsize);
u64 alloc_end = round_up(offset + len, sectorsize);
u64 bytes_to_reserve = 0;
@@ -3286,7 +3286,7 @@ static long btrfs_fallocate(struct file *file, int mode,
u64 locked_end;
u64 actual_end = 0;
struct extent_map *em;
- int blocksize = btrfs_inode_sectorsize(inode);
+ int blocksize = btrfs_inode_sectorsize(BTRFS_I(inode));
int ret;
alloc_start = round_down(offset, blocksize);
diff --git a/fs/btrfs/ordered-data.c b/fs/btrfs/ordered-data.c
index 168a5edd939d..d39a0fe4c463 100644
--- a/fs/btrfs/ordered-data.c
+++ b/fs/btrfs/ordered-data.c
@@ -870,7 +870,7 @@ int btrfs_find_ordered_sum(struct inode *inode, u64 offset, u64 disk_bytenr,
struct btrfs_ordered_inode_tree *tree = &BTRFS_I(inode)->ordered_tree;
unsigned long num_sectors;
unsigned long i;
- u32 sectorsize = btrfs_inode_sectorsize(inode);
+ u32 sectorsize = btrfs_inode_sectorsize(BTRFS_I(inode));
const u16 csum_size = btrfs_super_csum_size(fs_info->super_copy);
int index = 0;
diff --git a/fs/btrfs/reflink.c b/fs/btrfs/reflink.c
index 5cd02514cf4d..7126f94cf216 100644
--- a/fs/btrfs/reflink.c
+++ b/fs/btrfs/reflink.c
@@ -52,7 +52,7 @@ static int copy_inline_to_page(struct inode *inode,
const u64 datal,
const u8 comp_type)
{
- const u64 block_size = btrfs_inode_sectorsize(inode);
+ const u64 block_size = btrfs_inode_sectorsize(BTRFS_I(inode));
const u64 range_end = file_offset + block_size - 1;
const size_t inline_size = size - btrfs_file_extent_calc_inline_size(0);
char *data_start = inline_data + btrfs_file_extent_calc_inline_size(0);
--
2.17.1
^ permalink raw reply related [flat|nested] 27+ messages in thread* [PATCH 06/12] btrfs: Make btrfs_invalidatepage work on btrfs_inode
2020-08-31 11:42 [PATCH 00/12] Another batch of inode vs btrfs_inode cleanups Nikolay Borisov
` (4 preceding siblings ...)
2020-08-31 11:42 ` [PATCH 05/12] btrfs: Convert btrfs_inode_sectorsize to " Nikolay Borisov
@ 2020-08-31 11:42 ` Nikolay Borisov
2020-08-31 13:24 ` Johannes Thumshirn
2020-08-31 11:42 ` [PATCH 07/12] btrfs: Make btrfs_writepage_endio_finish_ordered btrfs_inode-centric Nikolay Borisov
` (7 subsequent siblings)
13 siblings, 1 reply; 27+ messages in thread
From: Nikolay Borisov @ 2020-08-31 11:42 UTC (permalink / raw)
To: linux-btrfs; +Cc: Nikolay Borisov
Signed-off-by: Nikolay Borisov <nborisov@suse.com>
---
fs/btrfs/inode.c | 18 ++++++++----------
1 file changed, 8 insertions(+), 10 deletions(-)
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 41e56ccf691d..0621fbbd08be 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -8052,15 +8052,15 @@ static int btrfs_migratepage(struct address_space *mapping,
static void btrfs_invalidatepage(struct page *page, unsigned int offset,
unsigned int length)
{
- struct inode *inode = page->mapping->host;
- struct extent_io_tree *tree;
+ struct btrfs_inode *inode = BTRFS_I(page->mapping->host);
+ struct extent_io_tree *tree = &inode->io_tree;
struct btrfs_ordered_extent *ordered;
struct extent_state *cached_state = NULL;
u64 page_start = page_offset(page);
u64 page_end = page_start + PAGE_SIZE - 1;
u64 start;
u64 end;
- int inode_evicting = inode->i_state & I_FREEING;
+ int inode_evicting = inode->vfs_inode.i_state & I_FREEING;
/*
* we have the page locked, so new writeback can't start,
@@ -8071,7 +8071,6 @@ static void btrfs_invalidatepage(struct page *page, unsigned int offset,
*/
wait_on_page_writeback(page);
- tree = &BTRFS_I(inode)->io_tree;
if (offset) {
btrfs_releasepage(page, GFP_NOFS);
return;
@@ -8081,8 +8080,7 @@ static void btrfs_invalidatepage(struct page *page, unsigned int offset,
lock_extent_bits(tree, page_start, page_end, &cached_state);
again:
start = page_start;
- ordered = btrfs_lookup_ordered_range(BTRFS_I(inode), start,
- page_end - start + 1);
+ ordered = btrfs_lookup_ordered_range(inode, start, page_end - start + 1);
if (ordered) {
end = min(page_end,
ordered->file_offset + ordered->num_bytes - 1);
@@ -8103,7 +8101,7 @@ static void btrfs_invalidatepage(struct page *page, unsigned int offset,
struct btrfs_ordered_inode_tree *tree;
u64 new_len;
- tree = &BTRFS_I(inode)->ordered_tree;
+ tree = &inode->ordered_tree;
spin_lock_irq(&tree->lock);
set_bit(BTRFS_ORDERED_TRUNCATED, &ordered->flags);
@@ -8112,8 +8110,8 @@ static void btrfs_invalidatepage(struct page *page, unsigned int offset,
ordered->truncated_len = new_len;
spin_unlock_irq(&tree->lock);
- if (btrfs_dec_test_ordered_pending(BTRFS_I(inode),
- &ordered, start,
+ if (btrfs_dec_test_ordered_pending(inode, &ordered,
+ start,
end - start + 1, 1))
btrfs_finish_ordered_io(ordered);
}
@@ -8142,7 +8140,7 @@ static void btrfs_invalidatepage(struct page *page, unsigned int offset,
* bit of its io_tree, and free the qgroup reserved data space.
* Since the IO will never happen for this page.
*/
- btrfs_qgroup_free_data(BTRFS_I(inode), NULL, page_start, PAGE_SIZE);
+ btrfs_qgroup_free_data(inode, NULL, page_start, PAGE_SIZE);
if (!inode_evicting) {
clear_extent_bit(tree, page_start, page_end, EXTENT_LOCKED |
EXTENT_DELALLOC | EXTENT_DELALLOC_NEW |
--
2.17.1
^ permalink raw reply related [flat|nested] 27+ messages in thread* [PATCH 07/12] btrfs: Make btrfs_writepage_endio_finish_ordered btrfs_inode-centric
2020-08-31 11:42 [PATCH 00/12] Another batch of inode vs btrfs_inode cleanups Nikolay Borisov
` (5 preceding siblings ...)
2020-08-31 11:42 ` [PATCH 06/12] btrfs: Make btrfs_invalidatepage work on btrfs_inode Nikolay Borisov
@ 2020-08-31 11:42 ` Nikolay Borisov
2020-08-31 12:23 ` Johannes Thumshirn
2020-08-31 11:42 ` [PATCH 08/12] btrfs: Make get_extent_skip_holes take btrfs_inode Nikolay Borisov
` (6 subsequent siblings)
13 siblings, 1 reply; 27+ messages in thread
From: Nikolay Borisov @ 2020-08-31 11:42 UTC (permalink / raw)
To: linux-btrfs; +Cc: Nikolay Borisov
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 0621fbbd08be..663551993ca5 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -2757,19 +2757,19 @@ static void finish_ordered_fn(struct btrfs_work *work)
void btrfs_writepage_endio_finish_ordered(struct page *page, u64 start,
u64 end, int uptodate)
{
- struct inode *inode = page->mapping->host;
- struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
+ struct btrfs_inode *inode = BTRFS_I(page->mapping->host);
+ struct btrfs_fs_info *fs_info = inode->root->fs_info;
struct btrfs_ordered_extent *ordered_extent = NULL;
struct btrfs_workqueue *wq;
trace_btrfs_writepage_end_io_hook(page, start, end, uptodate);
ClearPagePrivate2(page);
- if (!btrfs_dec_test_ordered_pending(BTRFS_I(inode), &ordered_extent,
- start, end - start + 1, uptodate))
+ if (!btrfs_dec_test_ordered_pending(inode, &ordered_extent, start,
+ end - start + 1, uptodate))
return;
- 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;
--
2.17.1
^ permalink raw reply related [flat|nested] 27+ messages in thread* [PATCH 08/12] btrfs: Make get_extent_skip_holes take btrfs_inode
2020-08-31 11:42 [PATCH 00/12] Another batch of inode vs btrfs_inode cleanups Nikolay Borisov
` (6 preceding siblings ...)
2020-08-31 11:42 ` [PATCH 07/12] btrfs: Make btrfs_writepage_endio_finish_ordered btrfs_inode-centric Nikolay Borisov
@ 2020-08-31 11:42 ` Nikolay Borisov
2020-08-31 12:26 ` Johannes Thumshirn
2020-08-31 11:42 ` [PATCH 09/12] btrfs: Make btrfs_find_ordered_sum " Nikolay Borisov
` (5 subsequent siblings)
13 siblings, 1 reply; 27+ messages in thread
From: Nikolay Borisov @ 2020-08-31 11:42 UTC (permalink / raw)
To: linux-btrfs; +Cc: Nikolay Borisov
Signed-off-by: Nikolay Borisov <nborisov@suse.com>
---
fs/btrfs/extent_io.c | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c
index 3b8df647c0dc..efe6b0cbc435 100644
--- a/fs/btrfs/extent_io.c
+++ b/fs/btrfs/extent_io.c
@@ -4552,10 +4552,10 @@ int try_release_extent_mapping(struct page *page, gfp_t mask)
* helper function for fiemap, which doesn't want to see any holes.
* This maps until we find something past 'last'
*/
-static struct extent_map *get_extent_skip_holes(struct inode *inode,
+static struct extent_map *get_extent_skip_holes(struct btrfs_inode *inode,
u64 offset, u64 last)
{
- u64 sectorsize = btrfs_inode_sectorsize(BTRFS_I(inode));
+ u64 sectorsize = btrfs_inode_sectorsize(inode);
struct extent_map *em;
u64 len;
@@ -4567,7 +4567,7 @@ static struct extent_map *get_extent_skip_holes(struct inode *inode,
if (len == 0)
break;
len = ALIGN(len, sectorsize);
- em = btrfs_get_extent_fiemap(BTRFS_I(inode), offset, len);
+ em = btrfs_get_extent_fiemap(inode, offset, len);
if (IS_ERR_OR_NULL(em))
return em;
@@ -4787,7 +4787,7 @@ int extent_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo,
lock_extent_bits(&BTRFS_I(inode)->io_tree, start, start + len - 1,
&cached_state);
- em = get_extent_skip_holes(inode, start, last_for_get_extent);
+ em = get_extent_skip_holes(BTRFS_I(inode), start, last_for_get_extent);
if (!em)
goto out;
if (IS_ERR(em)) {
@@ -4876,7 +4876,8 @@ int extent_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo,
}
/* now scan forward to see if this is really the last extent. */
- em = get_extent_skip_holes(inode, off, last_for_get_extent);
+ em = get_extent_skip_holes(BTRFS_I(inode), off,
+ last_for_get_extent);
if (IS_ERR(em)) {
ret = PTR_ERR(em);
goto out;
--
2.17.1
^ permalink raw reply related [flat|nested] 27+ messages in thread* [PATCH 09/12] btrfs: Make btrfs_find_ordered_sum take btrfs_inode
2020-08-31 11:42 [PATCH 00/12] Another batch of inode vs btrfs_inode cleanups Nikolay Borisov
` (7 preceding siblings ...)
2020-08-31 11:42 ` [PATCH 08/12] btrfs: Make get_extent_skip_holes take btrfs_inode Nikolay Borisov
@ 2020-08-31 11:42 ` Nikolay Borisov
2020-08-31 13:14 ` Johannes Thumshirn
2020-08-31 11:42 ` [PATCH 10/12] btrfs: Make copy_inline_to_page " Nikolay Borisov
` (4 subsequent siblings)
13 siblings, 1 reply; 27+ messages in thread
From: Nikolay Borisov @ 2020-08-31 11:42 UTC (permalink / raw)
To: linux-btrfs; +Cc: Nikolay Borisov
Signed-off-by: Nikolay Borisov <nborisov@suse.com>
---
fs/btrfs/file-item.c | 4 ++--
fs/btrfs/ordered-data.c | 19 +++++++++----------
fs/btrfs/ordered-data.h | 4 ++--
3 files changed, 13 insertions(+), 14 deletions(-)
diff --git a/fs/btrfs/file-item.c b/fs/btrfs/file-item.c
index 7d5ec71615b8..8f4f2bd6d9b9 100644
--- a/fs/btrfs/file-item.c
+++ b/fs/btrfs/file-item.c
@@ -318,8 +318,8 @@ blk_status_t btrfs_lookup_bio_sums(struct inode *inode, struct bio *bio,
if (page_offsets)
offset = page_offset(bvec.bv_page) + bvec.bv_offset;
- count = btrfs_find_ordered_sum(inode, offset, disk_bytenr,
- csum, nblocks);
+ count = btrfs_find_ordered_sum(BTRFS_I(inode), offset,
+ disk_bytenr, csum, nblocks);
if (count)
goto found;
diff --git a/fs/btrfs/ordered-data.c b/fs/btrfs/ordered-data.c
index d39a0fe4c463..c8a13d143877 100644
--- a/fs/btrfs/ordered-data.c
+++ b/fs/btrfs/ordered-data.c
@@ -861,20 +861,21 @@ btrfs_lookup_first_ordered_extent(struct btrfs_inode *inode, u64 file_offset)
* try to find a checksum. This is used because we allow pages to
* be reclaimed before their checksum is actually put into the btree
*/
-int btrfs_find_ordered_sum(struct inode *inode, u64 offset, u64 disk_bytenr,
- u8 *sum, int len)
+int btrfs_find_ordered_sum(struct btrfs_inode *inode, u64 offset,
+ u64 disk_bytenr, u8 *sum, int 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 *ordered_sum;
struct btrfs_ordered_extent *ordered;
- struct btrfs_ordered_inode_tree *tree = &BTRFS_I(inode)->ordered_tree;
+ struct btrfs_ordered_inode_tree *tree = &inode->ordered_tree;
unsigned long num_sectors;
unsigned long i;
- u32 sectorsize = btrfs_inode_sectorsize(BTRFS_I(inode));
+ u32 sectorsize = btrfs_inode_sectorsize(inode);
+ const u8 blocksize_bits = inode->vfs_inode.i_sb->s_blocksize_bits;
const u16 csum_size = btrfs_super_csum_size(fs_info->super_copy);
int index = 0;
- ordered = btrfs_lookup_ordered_extent(BTRFS_I(inode), offset);
+ ordered = btrfs_lookup_ordered_extent(inode, offset);
if (!ordered)
return 0;
@@ -882,10 +883,8 @@ int btrfs_find_ordered_sum(struct inode *inode, u64 offset, u64 disk_bytenr,
list_for_each_entry_reverse(ordered_sum, &ordered->list, list) {
if (disk_bytenr >= ordered_sum->bytenr &&
disk_bytenr < ordered_sum->bytenr + ordered_sum->len) {
- i = (disk_bytenr - ordered_sum->bytenr) >>
- inode->i_sb->s_blocksize_bits;
- num_sectors = ordered_sum->len >>
- inode->i_sb->s_blocksize_bits;
+ i = (disk_bytenr - ordered_sum->bytenr) >> blocksize_bits;
+ num_sectors = ordered_sum->len >> blocksize_bits;
num_sectors = min_t(int, len - index, num_sectors - i);
memcpy(sum + index, ordered_sum->sums + i * csum_size,
num_sectors * csum_size);
diff --git a/fs/btrfs/ordered-data.h b/fs/btrfs/ordered-data.h
index 1610195c6097..6a1d5bf5aee3 100644
--- a/fs/btrfs/ordered-data.h
+++ b/fs/btrfs/ordered-data.h
@@ -185,8 +185,8 @@ struct btrfs_ordered_extent *btrfs_lookup_ordered_range(
u64 len);
void btrfs_get_ordered_extents_for_logging(struct btrfs_inode *inode,
struct list_head *list);
-int btrfs_find_ordered_sum(struct inode *inode, u64 offset, u64 disk_bytenr,
- u8 *sum, int len);
+int btrfs_find_ordered_sum(struct btrfs_inode *inode, u64 offset,
+ u64 disk_bytenr, u8 *sum, int len);
u64 btrfs_wait_ordered_extents(struct btrfs_root *root, u64 nr,
const u64 range_start, const u64 range_len);
void btrfs_wait_ordered_roots(struct btrfs_fs_info *fs_info, u64 nr,
--
2.17.1
^ permalink raw reply related [flat|nested] 27+ messages in thread* [PATCH 10/12] btrfs: Make copy_inline_to_page take btrfs_inode
2020-08-31 11:42 [PATCH 00/12] Another batch of inode vs btrfs_inode cleanups Nikolay Borisov
` (8 preceding siblings ...)
2020-08-31 11:42 ` [PATCH 09/12] btrfs: Make btrfs_find_ordered_sum " Nikolay Borisov
@ 2020-08-31 11:42 ` Nikolay Borisov
2020-08-31 13:18 ` Johannes Thumshirn
2020-08-31 11:42 ` [PATCH 11/12] btrfs: Make btrfs_zero_range_check_range_boundary " Nikolay Borisov
` (3 subsequent siblings)
13 siblings, 1 reply; 27+ messages in thread
From: Nikolay Borisov @ 2020-08-31 11:42 UTC (permalink / raw)
To: linux-btrfs; +Cc: Nikolay Borisov
Signed-off-by: Nikolay Borisov <nborisov@suse.com>
---
fs/btrfs/reflink.c | 38 +++++++++++++++++++-------------------
1 file changed, 19 insertions(+), 19 deletions(-)
diff --git a/fs/btrfs/reflink.c b/fs/btrfs/reflink.c
index 7126f94cf216..2461be6ccb6f 100644
--- a/fs/btrfs/reflink.c
+++ b/fs/btrfs/reflink.c
@@ -45,19 +45,20 @@ static int clone_finish_inode_update(struct btrfs_trans_handle *trans,
return ret;
}
-static int copy_inline_to_page(struct inode *inode,
+static int copy_inline_to_page(struct btrfs_inode *inode,
const u64 file_offset,
char *inline_data,
const u64 size,
const u64 datal,
const u8 comp_type)
{
- const u64 block_size = btrfs_inode_sectorsize(BTRFS_I(inode));
+ const u64 block_size = btrfs_inode_sectorsize(inode);
const u64 range_end = file_offset + block_size - 1;
const size_t inline_size = size - btrfs_file_extent_calc_inline_size(0);
char *data_start = inline_data + btrfs_file_extent_calc_inline_size(0);
struct extent_changeset *data_reserved = NULL;
struct page *page = NULL;
+ struct address_space *mapping = inode->vfs_inode.i_mapping;
int ret;
ASSERT(IS_ALIGNED(file_offset, block_size));
@@ -68,24 +69,23 @@ 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(BTRFS_I(inode), &data_reserved,
- file_offset, block_size);
+ ret = btrfs_delalloc_reserve_space(inode, &data_reserved, file_offset,
+ block_size);
if (ret)
goto out;
- page = find_or_create_page(inode->i_mapping, file_offset >> PAGE_SHIFT,
- btrfs_alloc_write_mask(inode->i_mapping));
+ page = find_or_create_page(mapping, file_offset >> PAGE_SHIFT,
+ btrfs_alloc_write_mask(mapping));
if (!page) {
ret = -ENOMEM;
goto out_unlock;
}
set_page_extent_mapped(page);
- clear_extent_bit(&BTRFS_I(inode)->io_tree, file_offset, range_end,
+ clear_extent_bit(&inode->io_tree, file_offset, range_end,
EXTENT_DELALLOC | EXTENT_DO_ACCOUNTING | EXTENT_DEFRAG,
0, 0, NULL);
- ret = btrfs_set_extent_delalloc(BTRFS_I(inode), file_offset, range_end,
- 0, NULL);
+ ret = btrfs_set_extent_delalloc(inode, file_offset, range_end, 0, NULL);
if (ret)
goto out_unlock;
@@ -134,9 +134,9 @@ static int copy_inline_to_page(struct inode *inode,
put_page(page);
}
if (ret)
- btrfs_delalloc_release_space(BTRFS_I(inode), data_reserved,
- file_offset, block_size, true);
- btrfs_delalloc_release_extents(BTRFS_I(inode), block_size);
+ btrfs_delalloc_release_space(inode, data_reserved, file_offset,
+ block_size, true);
+ btrfs_delalloc_release_extents(inode, block_size);
out:
extent_changeset_free(data_reserved);
@@ -167,8 +167,8 @@ static int clone_copy_inline_extent(struct inode *dst,
struct btrfs_key key;
if (new_key->offset > 0) {
- ret = copy_inline_to_page(dst, new_key->offset, inline_data,
- size, datal, comp_type);
+ ret = copy_inline_to_page(BTRFS_I(dst), new_key->offset,
+ inline_data, size, datal, comp_type);
goto out;
}
@@ -194,7 +194,7 @@ static int clone_copy_inline_extent(struct inode *dst,
* inline extent's data to the page.
*/
ASSERT(key.offset > 0);
- ret = copy_inline_to_page(dst, new_key->offset,
+ ret = copy_inline_to_page(BTRFS_I(dst), new_key->offset,
inline_data, size, datal,
comp_type);
goto out;
@@ -213,8 +213,8 @@ static int clone_copy_inline_extent(struct inode *dst,
BTRFS_FILE_EXTENT_INLINE)
goto copy_inline_extent;
- ret = copy_inline_to_page(dst, new_key->offset, inline_data,
- size, datal, comp_type);
+ ret = copy_inline_to_page(BTRFS_I(dst), new_key->offset,
+ inline_data, size, datal, comp_type);
goto out;
}
@@ -231,8 +231,8 @@ static int clone_copy_inline_extent(struct inode *dst,
* clone. Deal with all these cases by copying the inline extent
* data into the respective page at the destination inode.
*/
- ret = copy_inline_to_page(dst, new_key->offset, inline_data,
- size, datal, comp_type);
+ ret = copy_inline_to_page(BTRFS_I(dst), new_key->offset,
+ inline_data, size, datal, comp_type);
goto out;
}
--
2.17.1
^ permalink raw reply related [flat|nested] 27+ messages in thread* [PATCH 11/12] btrfs: Make btrfs_zero_range_check_range_boundary take btrfs_inode
2020-08-31 11:42 [PATCH 00/12] Another batch of inode vs btrfs_inode cleanups Nikolay Borisov
` (9 preceding siblings ...)
2020-08-31 11:42 ` [PATCH 10/12] btrfs: Make copy_inline_to_page " Nikolay Borisov
@ 2020-08-31 11:42 ` Nikolay Borisov
2020-08-31 13:20 ` Johannes Thumshirn
2020-08-31 11:42 ` [PATCH 12/12] btrfs: Make extent_fiemap take btrfs_iode Nikolay Borisov
` (2 subsequent siblings)
13 siblings, 1 reply; 27+ messages in thread
From: Nikolay Borisov @ 2020-08-31 11:42 UTC (permalink / raw)
To: linux-btrfs; +Cc: Nikolay Borisov
Signed-off-by: Nikolay Borisov <nborisov@suse.com>
---
fs/btrfs/file.c | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c
index 09f21ea64ecb..2cacb4424cd4 100644
--- a/fs/btrfs/file.c
+++ b/fs/btrfs/file.c
@@ -3072,15 +3072,15 @@ enum {
RANGE_BOUNDARY_HOLE,
};
-static int btrfs_zero_range_check_range_boundary(struct inode *inode,
+static int btrfs_zero_range_check_range_boundary(struct btrfs_inode *inode,
u64 offset)
{
- const u64 sectorsize = btrfs_inode_sectorsize(BTRFS_I(inode));
+ const u64 sectorsize = btrfs_inode_sectorsize(inode);
struct extent_map *em;
int ret;
offset = round_down(offset, sectorsize);
- em = btrfs_get_extent(BTRFS_I(inode), NULL, 0, offset, sectorsize);
+ em = btrfs_get_extent(inode, NULL, 0, offset, sectorsize);
if (IS_ERR(em))
return PTR_ERR(em);
@@ -3195,7 +3195,8 @@ static int btrfs_zero_range(struct inode *inode,
* to cover them.
*/
if (!IS_ALIGNED(offset, sectorsize)) {
- ret = btrfs_zero_range_check_range_boundary(inode, offset);
+ ret = btrfs_zero_range_check_range_boundary(BTRFS_I(inode),
+ offset);
if (ret < 0)
goto out;
if (ret == RANGE_BOUNDARY_HOLE) {
@@ -3211,7 +3212,7 @@ static int btrfs_zero_range(struct inode *inode,
}
if (!IS_ALIGNED(offset + len, sectorsize)) {
- ret = btrfs_zero_range_check_range_boundary(inode,
+ ret = btrfs_zero_range_check_range_boundary(BTRFS_I(inode),
offset + len);
if (ret < 0)
goto out;
--
2.17.1
^ permalink raw reply related [flat|nested] 27+ messages in thread* [PATCH 12/12] btrfs: Make extent_fiemap take btrfs_iode
2020-08-31 11:42 [PATCH 00/12] Another batch of inode vs btrfs_inode cleanups Nikolay Borisov
` (10 preceding siblings ...)
2020-08-31 11:42 ` [PATCH 11/12] btrfs: Make btrfs_zero_range_check_range_boundary " Nikolay Borisov
@ 2020-08-31 11:42 ` Nikolay Borisov
2020-08-31 13:21 ` Johannes Thumshirn
2020-08-31 15:43 ` [PATCH 00/12] Another batch of inode vs btrfs_inode cleanups Josef Bacik
2020-09-01 14:13 ` David Sterba
13 siblings, 1 reply; 27+ messages in thread
From: Nikolay Borisov @ 2020-08-31 11:42 UTC (permalink / raw)
To: linux-btrfs; +Cc: Nikolay Borisov
Signed-off-by: Nikolay Borisov <nborisov@suse.com>
---
fs/btrfs/extent_io.c | 28 +++++++++++++---------------
fs/btrfs/extent_io.h | 2 +-
fs/btrfs/inode.c | 2 +-
3 files changed, 15 insertions(+), 17 deletions(-)
diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c
index efe6b0cbc435..09a1a9b3f351 100644
--- a/fs/btrfs/extent_io.c
+++ b/fs/btrfs/extent_io.c
@@ -4696,7 +4696,7 @@ static int emit_last_fiemap_cache(struct fiemap_extent_info *fieinfo,
return ret;
}
-int extent_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo,
+int extent_fiemap(struct btrfs_inode *inode, struct fiemap_extent_info *fieinfo,
u64 start, u64 len)
{
int ret = 0;
@@ -4707,12 +4707,12 @@ int extent_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo,
u64 last;
u64 last_for_get_extent = 0;
u64 disko = 0;
- u64 isize = i_size_read(inode);
+ u64 isize = i_size_read(&inode->vfs_inode);
struct btrfs_key found_key;
struct extent_map *em = NULL;
struct extent_state *cached_state = NULL;
struct btrfs_path *path;
- struct btrfs_root *root = BTRFS_I(inode)->root;
+ struct btrfs_root *root = inode->root;
struct fiemap_cache cache = { 0 };
struct ulist *roots;
struct ulist *tmp_ulist;
@@ -4736,15 +4736,15 @@ int extent_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo,
goto out_free_ulist;
}
- start = round_down(start, btrfs_inode_sectorsize(BTRFS_I(inode)));
- len = round_up(max, btrfs_inode_sectorsize(BTRFS_I(inode))) - start;
+ start = round_down(start, btrfs_inode_sectorsize(inode));
+ len = round_up(max, btrfs_inode_sectorsize(inode)) - start;
/*
* lookup the last file extent. We're not using i_size here
* because there might be preallocation past i_size
*/
- ret = btrfs_lookup_file_extent(NULL, root, path,
- btrfs_ino(BTRFS_I(inode)), -1, 0);
+ ret = btrfs_lookup_file_extent(NULL, root, path, btrfs_ino(inode), -1,
+ 0);
if (ret < 0) {
goto out_free_ulist;
} else {
@@ -4758,7 +4758,7 @@ int extent_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo,
found_type = found_key.type;
/* No extents, but there might be delalloc bits */
- if (found_key.objectid != btrfs_ino(BTRFS_I(inode)) ||
+ if (found_key.objectid != btrfs_ino(inode) ||
found_type != BTRFS_EXTENT_DATA_KEY) {
/* have to trust i_size as the end */
last = (u64)-1;
@@ -4784,10 +4784,10 @@ int extent_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo,
last_for_get_extent = isize;
}
- lock_extent_bits(&BTRFS_I(inode)->io_tree, start, start + len - 1,
+ lock_extent_bits(&inode->io_tree, start, start + len - 1,
&cached_state);
- em = get_extent_skip_holes(BTRFS_I(inode), start, last_for_get_extent);
+ em = get_extent_skip_holes(inode, start, last_for_get_extent);
if (!em)
goto out;
if (IS_ERR(em)) {
@@ -4853,8 +4853,7 @@ int extent_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo,
* then we're just getting a count and we can skip the
* lookup stuff.
*/
- ret = btrfs_check_shared(root,
- btrfs_ino(BTRFS_I(inode)),
+ ret = btrfs_check_shared(root, btrfs_ino(inode),
bytenr, roots, tmp_ulist);
if (ret < 0)
goto out_free;
@@ -4876,8 +4875,7 @@ int extent_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo,
}
/* now scan forward to see if this is really the last extent. */
- em = get_extent_skip_holes(BTRFS_I(inode), off,
- last_for_get_extent);
+ em = get_extent_skip_holes(inode, off, last_for_get_extent);
if (IS_ERR(em)) {
ret = PTR_ERR(em);
goto out;
@@ -4899,7 +4897,7 @@ int extent_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo,
ret = emit_last_fiemap_cache(fieinfo, &cache);
free_extent_map(em);
out:
- unlock_extent_cached(&BTRFS_I(inode)->io_tree, start, start + len - 1,
+ unlock_extent_cached(&inode->io_tree, start, start + len - 1,
&cached_state);
out_free_ulist:
diff --git a/fs/btrfs/extent_io.h b/fs/btrfs/extent_io.h
index 68f431ebf65c..c2864a9e7670 100644
--- a/fs/btrfs/extent_io.h
+++ b/fs/btrfs/extent_io.h
@@ -204,7 +204,7 @@ int extent_writepages(struct address_space *mapping,
int btree_write_cache_pages(struct address_space *mapping,
struct writeback_control *wbc);
void extent_readahead(struct readahead_control *rac);
-int extent_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo,
+int extent_fiemap(struct btrfs_inode *inode, struct fiemap_extent_info *fieinfo,
u64 start, u64 len);
void set_page_extent_mapped(struct page *page);
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 663551993ca5..e584fd93872b 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -7963,7 +7963,7 @@ static int btrfs_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo,
if (ret)
return ret;
- return extent_fiemap(inode, fieinfo, start, len);
+ return extent_fiemap(BTRFS_I(inode), fieinfo, start, len);
}
int btrfs_readpage(struct file *file, struct page *page)
--
2.17.1
^ permalink raw reply related [flat|nested] 27+ messages in thread* Re: [PATCH 00/12] Another batch of inode vs btrfs_inode cleanups
2020-08-31 11:42 [PATCH 00/12] Another batch of inode vs btrfs_inode cleanups Nikolay Borisov
` (11 preceding siblings ...)
2020-08-31 11:42 ` [PATCH 12/12] btrfs: Make extent_fiemap take btrfs_iode Nikolay Borisov
@ 2020-08-31 15:43 ` Josef Bacik
2020-09-01 14:13 ` David Sterba
13 siblings, 0 replies; 27+ messages in thread
From: Josef Bacik @ 2020-08-31 15:43 UTC (permalink / raw)
To: Nikolay Borisov, linux-btrfs
On 8/31/20 7:42 AM, Nikolay Borisov wrote:
> Here is the latest batch of inode vs btrfs_inode of interface cleanups for
> internal btrfs functions.
>
> Nikolay Borisov (12):
> btrfs: Make inode_tree_del take btrfs_inode
> btrfs: Make btrfs_lookup_first_ordered_extent take btrfs_inode
> btrfs: Make ordered extent tracepoint take btrfs_inode
> btrfs: Make btrfs_dec_test_ordered_pending take btrfs_inode
> btrfs: Convert btrfs_inode_sectorsize to take btrfs_inode
> btrfs: Make btrfs_invalidatepage work on btrfs_inode
> btrfs: Make btrfs_writepage_endio_finish_ordered btrfs_inode-centric
> btrfs: Make get_extent_skip_holes take btrfs_inode
> btrfs: Make btrfs_find_ordered_sum take btrfs_inode
> btrfs: Make copy_inline_to_page take btrfs_inode
> btrfs: Make btrfs_zero_range_check_range_boundary take btrfs_inode
> btrfs: Make extent_fiemap take btrfs_iode
>
Applied and built against misc-next, spot checked everything, you can add
Reviewed-by: Josef Bacik <josef@toxicpanda.com>
to the whole series, thanks,
Josef
^ permalink raw reply [flat|nested] 27+ messages in thread* Re: [PATCH 00/12] Another batch of inode vs btrfs_inode cleanups
2020-08-31 11:42 [PATCH 00/12] Another batch of inode vs btrfs_inode cleanups Nikolay Borisov
` (12 preceding siblings ...)
2020-08-31 15:43 ` [PATCH 00/12] Another batch of inode vs btrfs_inode cleanups Josef Bacik
@ 2020-09-01 14:13 ` David Sterba
13 siblings, 0 replies; 27+ messages in thread
From: David Sterba @ 2020-09-01 14:13 UTC (permalink / raw)
To: Nikolay Borisov; +Cc: linux-btrfs
On Mon, Aug 31, 2020 at 02:42:37PM +0300, Nikolay Borisov wrote:
> Here is the latest batch of inode vs btrfs_inode of interface cleanups for
> internal btrfs functions.
>
> Nikolay Borisov (12):
> btrfs: Make inode_tree_del take btrfs_inode
> btrfs: Make btrfs_lookup_first_ordered_extent take btrfs_inode
> btrfs: Make ordered extent tracepoint take btrfs_inode
> btrfs: Make btrfs_dec_test_ordered_pending take btrfs_inode
> btrfs: Convert btrfs_inode_sectorsize to take btrfs_inode
> btrfs: Make btrfs_invalidatepage work on btrfs_inode
> btrfs: Make btrfs_writepage_endio_finish_ordered btrfs_inode-centric
> btrfs: Make get_extent_skip_holes take btrfs_inode
> btrfs: Make btrfs_find_ordered_sum take btrfs_inode
> btrfs: Make copy_inline_to_page take btrfs_inode
> btrfs: Make btrfs_zero_range_check_range_boundary take btrfs_inode
> btrfs: Make extent_fiemap take btrfs_iode
Added to misc-next, thanks. How many to go?
^ permalink raw reply [flat|nested] 27+ messages in thread