Skip to content
Permalink
Browse files

What's going on here?

-# ./btrfstune -x /dev/xvdb
btrfs_reserve_extent search_start 0 data 52
find_free_extent search_start 0 search_end 18446744073709551615
num_bytes 16384
find_free_extent search_start 0 (check_failed)
find_free_extent new_group search_start 65996496830464
find_free_extent search_start 0 (check_failed)
find_free_extent new_group search_start 65996496830464
find_free_extent search_start 0 (check_failed)
find_free_extent new_group search_start 65996496830464
find_free_extent error -28
btrfs_reserve_extent: find_free_extent ret is -28
extent-tree.c:2694: btrfs_reserve_extent: Assertion `ret` failed.
./btrfstune(btrfs_reserve_extent+0xbdc)[0x419441]
./btrfstune(btrfs_alloc_free_block+0x50)[0x4195e0]
./btrfstune(__btrfs_cow_block+0x19d)[0x408dab]
./btrfstune(btrfs_cow_block+0xec)[0x409805]
./btrfstune[0x40efc0]
./btrfstune(btrfs_commit_transaction+0xec)[0x410c25]
./btrfstune(main+0x55f)[0x438e71]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0)[0x7f13e244b700]
./btrfstune(_start+0x29)[0x407c29]
  • Loading branch information
knorrie committed Sep 12, 2016
1 parent 2b7c507 commit 80f931627983d52d8a438e00140ae63d98abf74b
Showing with 9 additions and 0 deletions.
  1. +3 −0 btrfstune.c
  2. +6 −0 extent-tree.c
@@ -64,8 +64,11 @@ static int update_seeding_flag(struct btrfs_root *root, int set_flag)
fprintf(stderr, "Warning: Seeding flag cleared.\n");
}

fprintf(stderr, "now at btrfs_start_transaction\n");
trans = btrfs_start_transaction(root, 1);
fprintf(stderr, "now at btrfs_set_super_flags\n");
btrfs_set_super_flags(disk_super, super_flags);
fprintf(stderr, "now at btrfs_commit_transaction\n");
ret = btrfs_commit_transaction(trans, root);

return ret;
@@ -2529,6 +2529,7 @@ static int noinline find_free_extent(struct btrfs_trans_handle *trans,
int data)
{
int ret;
fprintf(stderr, "find_free_extent search_start %llu search_end %llu num_bytes %llu\n", search_start, search_end, num_bytes);
u64 orig_search_start = search_start;
struct btrfs_root * root = orig_root->fs_info->extent_root;
struct btrfs_fs_info *info = root->fs_info;
@@ -2558,6 +2559,7 @@ static int noinline find_free_extent(struct btrfs_trans_handle *trans,

check_failed:
search_start = stripe_align(root, search_start);
fprintf(stderr, "find_free_extent search_start %llu (check_failed)\n", search_start);
if (!block_group) {
block_group = btrfs_lookup_first_block_group(info,
search_start);
@@ -2619,6 +2621,7 @@ static int noinline find_free_extent(struct btrfs_trans_handle *trans,
return 0;

new_group:
fprintf(stderr, "find_free_extent new_group search_start %llu \n", search_start);
block_group = btrfs_lookup_first_block_group(info, search_start);
if (!block_group) {
search_start = orig_search_start;
@@ -2639,6 +2642,7 @@ static int noinline find_free_extent(struct btrfs_trans_handle *trans,
goto check_failed;

error:
fprintf(stderr, "find_free_extent error %d\n", ret);
return ret;
}

@@ -2681,10 +2685,12 @@ int btrfs_reserve_extent(struct btrfs_trans_handle *trans,
}

WARN_ON(num_bytes < root->sectorsize);
fprintf(stderr, "btrfs_reserve_extent search_start %llu data %d\n", search_start, data);
ret = find_free_extent(trans, root, num_bytes, empty_size,
search_start, search_end, hint_byte, ins,
trans->alloc_exclude_start,
trans->alloc_exclude_nr, data);
fprintf(stderr, "btrfs_reserve_extent: find_free_extent ret is %d\n", ret);
BUG_ON(ret);
clear_extent_dirty(&root->fs_info->free_space_cache,
ins->objectid, ins->objectid + ins->offset - 1,

0 comments on commit 80f9316

Please sign in to comment.
You can’t perform that action at this time.