Skip to content

Commit c4f6ba0

Browse files
committed
btrfs: use folio_end() where appropriate
Simplify folio_pos() + folio_size() and use the new helper. Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com> Signed-off-by: David Sterba <dsterba@suse.com>
1 parent 94fe021 commit c4f6ba0

File tree

7 files changed

+25
-32
lines changed

7 files changed

+25
-32
lines changed

fs/btrfs/compression.h

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
#include <linux/wait.h>
1414
#include <linux/pagemap.h>
1515
#include "bio.h"
16+
#include "fs.h"
1617
#include "messages.h"
1718

1819
struct address_space;
@@ -77,12 +78,10 @@ struct compressed_bio {
7778
/* @range_end must be exclusive. */
7879
static inline u32 btrfs_calc_input_length(struct folio *folio, u64 range_end, u64 cur)
7980
{
80-
const u64 folio_end = folio_pos(folio) + folio_size(folio);
81-
8281
/* @cur must be inside the folio. */
8382
ASSERT(folio_pos(folio) <= cur);
84-
ASSERT(cur < folio_end);
85-
return min(range_end, folio_end) - cur;
83+
ASSERT(cur < folio_end(folio));
84+
return min(range_end, folio_end(folio)) - cur;
8685
}
8786

8887
int __init btrfs_init_compress(void);

fs/btrfs/defrag.c

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -886,7 +886,7 @@ static struct folio *defrag_prepare_one_folio(struct btrfs_inode *inode, pgoff_t
886886
}
887887

888888
lock_start = folio_pos(folio);
889-
lock_end = folio_pos(folio) + folio_size(folio) - 1;
889+
lock_end = folio_end(folio) - 1;
890890
/* Wait for any existing ordered extent in the range */
891891
while (1) {
892892
struct btrfs_ordered_extent *ordered;
@@ -1178,8 +1178,7 @@ static int defrag_one_locked_target(struct btrfs_inode *inode,
11781178

11791179
if (!folio)
11801180
break;
1181-
if (start >= folio_pos(folio) + folio_size(folio) ||
1182-
start + len <= folio_pos(folio))
1181+
if (start >= folio_end(folio) || start + len <= folio_pos(folio))
11831182
continue;
11841183
btrfs_folio_clamp_clear_checked(fs_info, folio, start, len);
11851184
btrfs_folio_clamp_set_dirty(fs_info, folio, start, len);
@@ -1220,7 +1219,7 @@ static int defrag_one_range(struct btrfs_inode *inode, u64 start, u32 len,
12201219
folios[i] = NULL;
12211220
goto free_folios;
12221221
}
1223-
cur = folio_pos(folios[i]) + folio_size(folios[i]);
1222+
cur = folio_end(folios[i]);
12241223
}
12251224
for (int i = 0; i < nr_pages; i++) {
12261225
if (!folios[i])

fs/btrfs/extent_io.c

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -266,8 +266,7 @@ static noinline int lock_delalloc_folios(struct inode *inode,
266266
goto out;
267267
}
268268
range_start = max_t(u64, folio_pos(folio), start);
269-
range_len = min_t(u64, folio_pos(folio) + folio_size(folio),
270-
end + 1) - range_start;
269+
range_len = min_t(u64, folio_end(folio), end + 1) - range_start;
271270
btrfs_folio_set_lock(fs_info, folio, range_start, range_len);
272271

273272
processed_end = range_start + range_len - 1;
@@ -321,7 +320,7 @@ noinline_for_stack bool find_lock_delalloc_range(struct inode *inode,
321320
ASSERT(orig_end > orig_start);
322321

323322
/* The range should at least cover part of the folio */
324-
ASSERT(!(orig_start >= folio_pos(locked_folio) + folio_size(locked_folio) ||
323+
ASSERT(!(orig_start >= folio_end(locked_folio) ||
325324
orig_end <= folio_pos(locked_folio)));
326325
again:
327326
/* step one, find a bunch of delalloc bytes starting at start */
@@ -419,7 +418,7 @@ static void end_folio_read(struct folio *folio, bool uptodate, u64 start, u32 le
419418
struct btrfs_fs_info *fs_info = folio_to_fs_info(folio);
420419

421420
ASSERT(folio_pos(folio) <= start &&
422-
start + len <= folio_pos(folio) + folio_size(folio));
421+
start + len <= folio_end(folio));
423422

424423
if (uptodate && btrfs_verify_folio(folio, start, len))
425424
btrfs_folio_set_uptodate(fs_info, folio, start, len);
@@ -1086,7 +1085,7 @@ static bool can_skip_one_ordered_range(struct btrfs_inode *inode,
10861085
* finished our folio read and unlocked the folio.
10871086
*/
10881087
if (btrfs_folio_test_dirty(fs_info, folio, cur, blocksize)) {
1089-
u64 range_len = min(folio_pos(folio) + folio_size(folio),
1088+
u64 range_len = min(folio_end(folio),
10901089
ordered->file_offset + ordered->num_bytes) - cur;
10911090

10921091
ret = true;
@@ -1108,7 +1107,7 @@ static bool can_skip_one_ordered_range(struct btrfs_inode *inode,
11081107
* So we return true and update @next_ret to the OE/folio boundary.
11091108
*/
11101109
if (btrfs_folio_test_uptodate(fs_info, folio, cur, blocksize)) {
1111-
u64 range_len = min(folio_pos(folio) + folio_size(folio),
1110+
u64 range_len = min(folio_end(folio),
11121111
ordered->file_offset + ordered->num_bytes) - cur;
11131112

11141113
/*
@@ -2085,7 +2084,7 @@ static noinline_for_stack void write_one_eb(struct extent_buffer *eb,
20852084
for (int i = 0; i < num_extent_folios(eb); i++) {
20862085
struct folio *folio = eb->folios[i];
20872086
u64 range_start = max_t(u64, eb->start, folio_pos(folio));
2088-
u32 range_len = min_t(u64, folio_pos(folio) + folio_size(folio),
2087+
u32 range_len = min_t(u64, folio_end(folio),
20892088
eb->start + eb->len) - range_start;
20902089

20912090
folio_lock(folio);
@@ -2489,7 +2488,7 @@ void extent_write_locked_range(struct inode *inode, const struct folio *locked_f
24892488
continue;
24902489
}
24912490

2492-
cur_end = min_t(u64, folio_pos(folio) + folio_size(folio) - 1, end);
2491+
cur_end = min_t(u64, folio_end(folio) - 1, end);
24932492
cur_len = cur_end + 1 - cur;
24942493

24952494
ASSERT(folio_test_locked(folio));
@@ -3729,7 +3728,7 @@ int read_extent_buffer_pages_nowait(struct extent_buffer *eb, int mirror_num,
37293728
for (int i = 0; i < num_extent_folios(eb); i++) {
37303729
struct folio *folio = eb->folios[i];
37313730
u64 range_start = max_t(u64, eb->start, folio_pos(folio));
3732-
u32 range_len = min_t(u64, folio_pos(folio) + folio_size(folio),
3731+
u32 range_len = min_t(u64, folio_end(folio),
37333732
eb->start + eb->len) - range_start;
37343733

37353734
bio_add_folio_nofail(&bbio->bio, folio, range_len,

fs/btrfs/file.c

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,7 @@ int btrfs_dirty_folio(struct btrfs_inode *inode, struct folio *folio, loff_t pos
8989
num_bytes = round_up(write_bytes + pos - start_pos,
9090
fs_info->sectorsize);
9191
ASSERT(num_bytes <= U32_MAX);
92-
ASSERT(folio_pos(folio) <= pos &&
93-
folio_pos(folio) + folio_size(folio) >= pos + write_bytes);
92+
ASSERT(folio_pos(folio) <= pos && folio_end(folio) >= pos + write_bytes);
9493

9594
end_of_last_block = start_pos + num_bytes - 1;
9695

@@ -801,7 +800,7 @@ static int prepare_uptodate_folio(struct inode *inode, struct folio *folio, u64
801800
u64 len)
802801
{
803802
u64 clamp_start = max_t(u64, pos, folio_pos(folio));
804-
u64 clamp_end = min_t(u64, pos + len, folio_pos(folio) + folio_size(folio));
803+
u64 clamp_end = min_t(u64, pos + len, folio_end(folio));
805804
const u32 blocksize = inode_to_fs_info(inode)->sectorsize;
806805
int ret = 0;
807806

@@ -1233,8 +1232,8 @@ static int copy_one_range(struct btrfs_inode *inode, struct iov_iter *iter,
12331232
* The reserved range goes beyond the current folio, shrink the reserved
12341233
* space to the folio boundary.
12351234
*/
1236-
if (reserved_start + reserved_len > folio_pos(folio) + folio_size(folio)) {
1237-
const u64 last_block = folio_pos(folio) + folio_size(folio);
1235+
if (reserved_start + reserved_len > folio_end(folio)) {
1236+
const u64 last_block = folio_end(folio);
12381237

12391238
shrink_reserved_space(inode, *data_reserved, reserved_start,
12401239
reserved_len, last_block - reserved_start,

fs/btrfs/inode.c

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2328,8 +2328,7 @@ int btrfs_run_delalloc_range(struct btrfs_inode *inode, struct folio *locked_fol
23282328
* The range must cover part of the @locked_folio, or a return of 1
23292329
* can confuse the caller.
23302330
*/
2331-
ASSERT(!(end <= folio_pos(locked_folio) ||
2332-
start >= folio_pos(locked_folio) + folio_size(locked_folio)));
2331+
ASSERT(!(end <= folio_pos(locked_folio) || start >= folio_end(locked_folio)));
23332332

23342333
if (should_nocow(inode, start, end)) {
23352334
ret = run_delalloc_nocow(inode, locked_folio, start, end);
@@ -2737,7 +2736,7 @@ static void btrfs_writepage_fixup_worker(struct btrfs_work *work)
27372736
struct btrfs_inode *inode = fixup->inode;
27382737
struct btrfs_fs_info *fs_info = inode->root->fs_info;
27392738
u64 page_start = folio_pos(folio);
2740-
u64 page_end = folio_pos(folio) + folio_size(folio) - 1;
2739+
u64 page_end = folio_end(folio) - 1;
27412740
int ret = 0;
27422741
bool free_delalloc_space = true;
27432742

@@ -4819,7 +4818,7 @@ static int truncate_block_zero_beyond_eof(struct btrfs_inode *inode, u64 start)
48194818
*/
48204819

48214820
zero_start = max_t(u64, folio_pos(folio), start);
4822-
zero_end = folio_pos(folio) + folio_size(folio);
4821+
zero_end = folio_end(folio);
48234822
folio_zero_range(folio, zero_start - folio_pos(folio),
48244823
zero_end - zero_start);
48254824

@@ -4999,8 +4998,7 @@ int btrfs_truncate_block(struct btrfs_inode *inode, u64 offset, u64 start, u64 e
49994998
* not reach disk, it still affects our page caches.
50004999
*/
50015000
zero_start = max_t(u64, folio_pos(folio), start);
5002-
zero_end = min_t(u64, folio_pos(folio) + folio_size(folio) - 1,
5003-
end);
5001+
zero_end = min_t(u64, folio_end(folio) - 1, end);
50045002
} else {
50055003
zero_start = max_t(u64, block_start, start);
50065004
zero_end = min_t(u64, block_end, end);

fs/btrfs/ordered-data.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -359,7 +359,7 @@ static bool can_finish_ordered_extent(struct btrfs_ordered_extent *ordered,
359359
if (folio) {
360360
ASSERT(folio->mapping);
361361
ASSERT(folio_pos(folio) <= file_offset);
362-
ASSERT(file_offset + len <= folio_pos(folio) + folio_size(folio));
362+
ASSERT(file_offset + len <= folio_end(folio));
363363

364364
/*
365365
* Ordered flag indicates whether we still have

fs/btrfs/subpage.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ static void btrfs_subpage_assert(const struct btrfs_fs_info *fs_info,
187187
*/
188188
if (folio->mapping)
189189
ASSERT(folio_pos(folio) <= start &&
190-
start + len <= folio_pos(folio) + folio_size(folio));
190+
start + len <= folio_end(folio));
191191
}
192192

193193
#define subpage_calc_start_bit(fs_info, folio, name, start, len) \
@@ -216,8 +216,7 @@ static void btrfs_subpage_clamp_range(struct folio *folio, u64 *start, u32 *len)
216216
if (folio_pos(folio) >= orig_start + orig_len)
217217
*len = 0;
218218
else
219-
*len = min_t(u64, folio_pos(folio) + folio_size(folio),
220-
orig_start + orig_len) - *start;
219+
*len = min_t(u64, folio_end(folio), orig_start + orig_len) - *start;
221220
}
222221

223222
static bool btrfs_subpage_end_and_test_lock(const struct btrfs_fs_info *fs_info,

0 commit comments

Comments
 (0)