Skip to content

Commit e315143

Browse files
committed
btrfs: make a few more ASSERTs verbose
We have support for optional string to be printed in ASSERT() (added in 19468a6 ("btrfs: enhance ASSERT() to take optional format string")), it's not yet everywhere it could be so add a few more files. Signed-off-by: David Sterba <dsterba@suse.com>
1 parent 8650910 commit e315143

File tree

7 files changed

+119
-64
lines changed

7 files changed

+119
-64
lines changed

fs/btrfs/scrub.c

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -964,8 +964,9 @@ static void scrub_stripe_submit_repair_read(struct scrub_stripe *stripe,
964964
const unsigned long old_error_bitmap = scrub_bitmap_read_error(stripe);
965965
int i;
966966

967-
ASSERT(stripe->mirror_num >= 1);
968-
ASSERT(atomic_read(&stripe->pending_io) == 0);
967+
ASSERT(stripe->mirror_num >= 1, "stripe->mirror_num=%d", stripe->mirror_num);
968+
ASSERT(atomic_read(&stripe->pending_io) == 0,
969+
"atomic_read(&stripe->pending_io)=%d", atomic_read(&stripe->pending_io));
969970

970971
for_each_set_bit(i, &old_error_bitmap, stripe->nr_sectors) {
971972
/* The current sector cannot be merged, submit the bio. */
@@ -1028,7 +1029,7 @@ static void scrub_stripe_report_errors(struct scrub_ctx *sctx,
10281029
int ret;
10291030

10301031
/* For scrub, our mirror_num should always start at 1. */
1031-
ASSERT(stripe->mirror_num >= 1);
1032+
ASSERT(stripe->mirror_num >= 1, "stripe->mirror_num=%d", stripe->mirror_num);
10321033
ret = btrfs_map_block(fs_info, BTRFS_MAP_GET_READ_MIRRORS,
10331034
stripe->logical, &mapped_len, &bioc,
10341035
NULL, NULL);
@@ -1168,7 +1169,7 @@ static void scrub_stripe_read_repair_worker(struct work_struct *work)
11681169
int mirror;
11691170
int i;
11701171

1171-
ASSERT(stripe->mirror_num > 0);
1172+
ASSERT(stripe->mirror_num >= 1, "stripe->mirror_num=%d", stripe->mirror_num);
11721173

11731174
wait_scrub_stripe_io(stripe);
11741175
scrub_verify_one_stripe(stripe, scrub_bitmap_read_has_extent(stripe));
@@ -1484,7 +1485,7 @@ static int compare_extent_item_range(struct btrfs_path *path,
14841485

14851486
btrfs_item_key_to_cpu(path->nodes[0], &key, path->slots[0]);
14861487
ASSERT(key.type == BTRFS_EXTENT_ITEM_KEY ||
1487-
key.type == BTRFS_METADATA_ITEM_KEY);
1488+
key.type == BTRFS_METADATA_ITEM_KEY, "key.type=%u", key.type);
14881489
if (key.type == BTRFS_METADATA_ITEM_KEY)
14891490
len = fs_info->nodesize;
14901491
else
@@ -1589,7 +1590,7 @@ static void get_extent_info(struct btrfs_path *path, u64 *extent_start_ret,
15891590

15901591
btrfs_item_key_to_cpu(path->nodes[0], &key, path->slots[0]);
15911592
ASSERT(key.type == BTRFS_METADATA_ITEM_KEY ||
1592-
key.type == BTRFS_EXTENT_ITEM_KEY);
1593+
key.type == BTRFS_EXTENT_ITEM_KEY, "key.type=%u", key.type);
15931594
*extent_start_ret = key.objectid;
15941595
if (key.type == BTRFS_METADATA_ITEM_KEY)
15951596
*size_ret = path->nodes[0]->fs_info->nodesize;
@@ -1687,7 +1688,9 @@ static int scrub_find_fill_first_stripe(struct btrfs_block_group *bg,
16871688
scrub_stripe_reset_bitmaps(stripe);
16881689

16891690
/* The range must be inside the bg. */
1690-
ASSERT(logical_start >= bg->start && logical_end <= bg->start + bg->length);
1691+
ASSERT(logical_start >= bg->start && logical_end <= bg->start + bg->length,
1692+
"bg->start=%llu logical_start=%llu logical_end=%llu end=%llu",
1693+
bg->start, logical_start, logical_end, bg->start + bg->length);
16911694

16921695
ret = find_first_extent_item(extent_root, extent_path, logical_start,
16931696
logical_len);

fs/btrfs/space-info.c

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ static u64 calc_chunk_size(const struct btrfs_fs_info *fs_info, u64 flags)
211211
if (btrfs_is_zoned(fs_info))
212212
return fs_info->zone_size;
213213

214-
ASSERT(flags & BTRFS_BLOCK_GROUP_TYPE_MASK);
214+
ASSERT(flags & BTRFS_BLOCK_GROUP_TYPE_MASK, "flags=%llu", flags);
215215

216216
if (flags & BTRFS_BLOCK_GROUP_DATA)
217217
return BTRFS_MAX_DATA_CHUNK_SIZE;
@@ -262,8 +262,9 @@ static int create_space_info_sub_group(struct btrfs_space_info *parent, u64 flag
262262
struct btrfs_space_info *sub_group;
263263
int ret;
264264

265-
ASSERT(parent->subgroup_id == BTRFS_SUB_GROUP_PRIMARY);
266-
ASSERT(id != BTRFS_SUB_GROUP_PRIMARY);
265+
ASSERT(parent->subgroup_id == BTRFS_SUB_GROUP_PRIMARY,
266+
"parent->subgroup_id=%d", parent->subgroup_id);
267+
ASSERT(id != BTRFS_SUB_GROUP_PRIMARY, "id=%d", id);
267268

268269
sub_group = kzalloc(sizeof(*sub_group), GFP_NOFS);
269270
if (!sub_group)
@@ -531,7 +532,9 @@ static void remove_ticket(struct btrfs_space_info *space_info,
531532

532533
if (!list_empty(&ticket->list)) {
533534
list_del_init(&ticket->list);
534-
ASSERT(space_info->reclaim_size >= ticket->bytes);
535+
ASSERT(space_info->reclaim_size >= ticket->bytes,
536+
"space_info->reclaim_size=%llu ticket->bytes=%llu",
537+
space_info->reclaim_size, ticket->bytes);
535538
space_info->reclaim_size -= ticket->bytes;
536539
}
537540

@@ -1671,7 +1674,7 @@ static int handle_reserve_ticket(struct btrfs_space_info *space_info,
16711674
priority_reclaim_data_space(space_info, ticket);
16721675
break;
16731676
default:
1674-
ASSERT(0);
1677+
ASSERT(0, "flush=%d", flush);
16751678
break;
16761679
}
16771680

@@ -1683,7 +1686,8 @@ static int handle_reserve_ticket(struct btrfs_space_info *space_info,
16831686
* releasing reserved space (if an error happens the expectation is that
16841687
* space wasn't reserved at all).
16851688
*/
1686-
ASSERT(!(ticket->bytes == 0 && ticket->error));
1689+
ASSERT(!(ticket->bytes == 0 && ticket->error),
1690+
"ticket->bytes=%llu ticket->error=%d", ticket->bytes, ticket->error);
16871691
trace_btrfs_reserve_ticket(space_info->fs_info, space_info->flags,
16881692
orig_bytes, start_ns, flush, ticket->error);
16891693
return ret;
@@ -1758,7 +1762,7 @@ static int reserve_bytes(struct btrfs_space_info *space_info, u64 orig_bytes,
17581762
int ret = -ENOSPC;
17591763
bool pending_tickets;
17601764

1761-
ASSERT(orig_bytes);
1765+
ASSERT(orig_bytes, "orig_bytes=%llu", orig_bytes);
17621766
/*
17631767
* If have a transaction handle (current->journal_info != NULL), then
17641768
* the flush method can not be neither BTRFS_RESERVE_FLUSH_ALL* nor
@@ -1767,9 +1771,9 @@ static int reserve_bytes(struct btrfs_space_info *space_info, u64 orig_bytes,
17671771
*/
17681772
if (current->journal_info) {
17691773
/* One assert per line for easier debugging. */
1770-
ASSERT(flush != BTRFS_RESERVE_FLUSH_ALL);
1771-
ASSERT(flush != BTRFS_RESERVE_FLUSH_ALL_STEAL);
1772-
ASSERT(flush != BTRFS_RESERVE_FLUSH_EVICT);
1774+
ASSERT(flush != BTRFS_RESERVE_FLUSH_ALL, "flush=%d", flush);
1775+
ASSERT(flush != BTRFS_RESERVE_FLUSH_ALL_STEAL, "flush=%d", flush);
1776+
ASSERT(flush != BTRFS_RESERVE_FLUSH_EVICT, "flush=%d", flush);
17731777
}
17741778

17751779
if (flush == BTRFS_RESERVE_FLUSH_DATA)
@@ -1930,8 +1934,10 @@ int btrfs_reserve_data_bytes(struct btrfs_space_info *space_info, u64 bytes,
19301934

19311935
ASSERT(flush == BTRFS_RESERVE_FLUSH_DATA ||
19321936
flush == BTRFS_RESERVE_FLUSH_FREE_SPACE_INODE ||
1933-
flush == BTRFS_RESERVE_NO_FLUSH);
1934-
ASSERT(!current->journal_info || flush != BTRFS_RESERVE_FLUSH_DATA);
1937+
flush == BTRFS_RESERVE_NO_FLUSH, "flush=%d", flush);
1938+
ASSERT(!current->journal_info || flush != BTRFS_RESERVE_FLUSH_DATA,
1939+
"current->journal_info=0x%lx flush=%d",
1940+
(unsigned long)current->journal_info, flush);
19351941

19361942
ret = reserve_bytes(space_info, bytes, flush);
19371943
if (ret == -ENOSPC) {

fs/btrfs/subpage.c

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ static void btrfs_subpage_assert(const struct btrfs_fs_info *fs_info,
180180
/* Basic checks */
181181
ASSERT(folio_test_private(folio) && folio_get_private(folio));
182182
ASSERT(IS_ALIGNED(start, fs_info->sectorsize) &&
183-
IS_ALIGNED(len, fs_info->sectorsize));
183+
IS_ALIGNED(len, fs_info->sectorsize), "start=%llu len=%u", start, len);
184184
/*
185185
* The range check only works for mapped page, we can still have
186186
* unmapped page like dummy extent buffer pages.
@@ -249,7 +249,9 @@ static bool btrfs_subpage_end_and_test_lock(const struct btrfs_fs_info *fs_info,
249249
clear_bit(bit, bfs->bitmaps);
250250
cleared++;
251251
}
252-
ASSERT(atomic_read(&bfs->nr_locked) >= cleared);
252+
ASSERT(atomic_read(&bfs->nr_locked) >= cleared,
253+
"atomic_read(&bfs->nr_locked)=%d cleared=%d",
254+
atomic_read(&bfs->nr_locked), cleared);
253255
last = atomic_sub_and_test(cleared, &bfs->nr_locked);
254256
spin_unlock_irqrestore(&bfs->lock, flags);
255257
return last;
@@ -328,7 +330,9 @@ void btrfs_folio_end_lock_bitmap(const struct btrfs_fs_info *fs_info,
328330
if (test_and_clear_bit(bit + start_bit, bfs->bitmaps))
329331
cleared++;
330332
}
331-
ASSERT(atomic_read(&bfs->nr_locked) >= cleared);
333+
ASSERT(atomic_read(&bfs->nr_locked) >= cleared,
334+
"atomic_read(&bfs->nr_locked)=%d cleared=%d",
335+
atomic_read(&bfs->nr_locked), cleared);
332336
last = atomic_sub_and_test(cleared, &bfs->nr_locked);
333337
spin_unlock_irqrestore(&bfs->lock, flags);
334338
if (last)

fs/btrfs/transaction.c

Lines changed: 29 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,8 @@ static noinline void switch_commit_roots(struct btrfs_trans_handle *trans)
186186
* At this point no one can be using this transaction to modify any tree
187187
* and no one can start another transaction to modify any tree either.
188188
*/
189-
ASSERT(cur_trans->state == TRANS_STATE_COMMIT_DOING);
189+
ASSERT(cur_trans->state == TRANS_STATE_COMMIT_DOING,
190+
"cur_trans->state=%d", cur_trans->state);
190191

191192
down_write(&fs_info->commit_root_sem);
192193

@@ -1025,13 +1026,18 @@ static void btrfs_trans_release_metadata(struct btrfs_trans_handle *trans)
10251026
struct btrfs_fs_info *fs_info = trans->fs_info;
10261027

10271028
if (!trans->block_rsv) {
1028-
ASSERT(!trans->bytes_reserved);
1029-
ASSERT(!trans->delayed_refs_bytes_reserved);
1029+
ASSERT(trans->bytes_reserved == 0,
1030+
"trans->bytes_reserved=%llu", trans->bytes_reserved);
1031+
ASSERT(trans->delayed_refs_bytes_reserved == 0,
1032+
"trans->delayed_refs_bytes_reserved=%llu",
1033+
trans->delayed_refs_bytes_reserved);
10301034
return;
10311035
}
10321036

10331037
if (!trans->bytes_reserved) {
1034-
ASSERT(!trans->delayed_refs_bytes_reserved);
1038+
ASSERT(trans->delayed_refs_bytes_reserved == 0,
1039+
"trans->delayed_refs_bytes_reserved=%llu",
1040+
trans->delayed_refs_bytes_reserved);
10351041
return;
10361042
}
10371043

@@ -1230,7 +1236,8 @@ int btrfs_wait_tree_log_extents(struct btrfs_root *log_root, int mark)
12301236
bool errors = false;
12311237
int ret;
12321238

1233-
ASSERT(btrfs_root_id(log_root) == BTRFS_TREE_LOG_OBJECTID);
1239+
ASSERT(btrfs_root_id(log_root) == BTRFS_TREE_LOG_OBJECTID,
1240+
"root_id(log_root)=%llu", btrfs_root_id(log_root));
12341241

12351242
ret = __btrfs_wait_marked_extents(fs_info, dirty_pages);
12361243
if ((mark & EXTENT_DIRTY_LOG1) &&
@@ -1335,7 +1342,8 @@ static noinline int commit_cowonly_roots(struct btrfs_trans_handle *trans)
13351342
* At this point no one can be using this transaction to modify any tree
13361343
* and no one can start another transaction to modify any tree either.
13371344
*/
1338-
ASSERT(trans->transaction->state == TRANS_STATE_COMMIT_DOING);
1345+
ASSERT(trans->transaction->state == TRANS_STATE_COMMIT_DOING,
1346+
"trans->transaction->state=%d", trans->transaction->state);
13391347

13401348
eb = btrfs_lock_root_node(fs_info->tree_root);
13411349
ret = btrfs_cow_block(trans, fs_info->tree_root, eb, NULL,
@@ -1469,7 +1477,8 @@ static noinline int commit_fs_roots(struct btrfs_trans_handle *trans)
14691477
* At this point no one can be using this transaction to modify any tree
14701478
* and no one can start another transaction to modify any tree either.
14711479
*/
1472-
ASSERT(trans->transaction->state == TRANS_STATE_COMMIT_DOING);
1480+
ASSERT(trans->transaction->state == TRANS_STATE_COMMIT_DOING,
1481+
"trans->transaction->state=%d", trans->transaction->state);
14731482

14741483
spin_lock(&fs_info->fs_roots_radix_lock);
14751484
while (1) {
@@ -1487,9 +1496,15 @@ static noinline int commit_fs_roots(struct btrfs_trans_handle *trans)
14871496
* At this point we can neither have tasks logging inodes
14881497
* from a root nor trying to commit a log tree.
14891498
*/
1490-
ASSERT(atomic_read(&root->log_writers) == 0);
1491-
ASSERT(atomic_read(&root->log_commit[0]) == 0);
1492-
ASSERT(atomic_read(&root->log_commit[1]) == 0);
1499+
ASSERT(atomic_read(&root->log_writers) == 0,
1500+
"atomic_read(&root->log_writers)=%d",
1501+
atomic_read(&root->log_writers));
1502+
ASSERT(atomic_read(&root->log_commit[0]) == 0,
1503+
"atomic_read(&root->log_commit[0])=%d",
1504+
atomic_read(&root->log_commit[0]));
1505+
ASSERT(atomic_read(&root->log_commit[1]) == 0,
1506+
"atomic_read(&root->log_commit[1])=%d",
1507+
atomic_read(&root->log_commit[1]));
14931508

14941509
radix_tree_tag_clear(&fs_info->fs_roots_radix,
14951510
(unsigned long)btrfs_root_id(root),
@@ -2158,7 +2173,8 @@ static void add_pending_snapshot(struct btrfs_trans_handle *trans)
21582173
return;
21592174

21602175
lockdep_assert_held(&trans->fs_info->trans_lock);
2161-
ASSERT(cur_trans->state >= TRANS_STATE_COMMIT_PREP);
2176+
ASSERT(cur_trans->state >= TRANS_STATE_COMMIT_PREP,
2177+
"cur_trans->state=%d", cur_trans->state);
21622178

21632179
list_add(&trans->pending_snapshot->list, &cur_trans->pending_snapshots);
21642180
}
@@ -2185,7 +2201,8 @@ int btrfs_commit_transaction(struct btrfs_trans_handle *trans)
21852201
struct btrfs_transaction *prev_trans = NULL;
21862202
int ret;
21872203

2188-
ASSERT(refcount_read(&trans->use_count) == 1);
2204+
ASSERT(refcount_read(&trans->use_count) == 1,
2205+
"refcount_read(&trans->use_count)=%d", refcount_read(&trans->use_count));
21892206
btrfs_trans_state_lockdep_acquire(fs_info, BTRFS_LOCKDEP_TRANS_COMMIT_PREP);
21902207

21912208
clear_bit(BTRFS_FS_NEED_TRANS_COMMIT, &fs_info->flags);

fs/btrfs/tree-checker.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ static bool check_prev_ino(struct extent_buffer *leaf,
186186
key->type == BTRFS_INODE_EXTREF_KEY ||
187187
key->type == BTRFS_DIR_INDEX_KEY ||
188188
key->type == BTRFS_DIR_ITEM_KEY ||
189-
key->type == BTRFS_EXTENT_DATA_KEY);
189+
key->type == BTRFS_EXTENT_DATA_KEY, "key->type=%u", key->type);
190190

191191
/*
192192
* Only subvolume trees along with their reloc trees need this check.

0 commit comments

Comments
 (0)