On 02/11/2020 20:02, Josef Bacik wrote: > No it should return nr == 1 in the single case. This maps physical address to a > logical address in the block group, so it could be multiple, but if that bytenr > falls inside the block group it'll return with something set. Hence my > confusion. OK so from my debugging [1] it looks like we're hitting the !in_range() continue case in __btrfs_rmap_block()'s loop. But I'll need to defer to Naohiro to answer this question. [1]: mount -t btrfs /dev/nullb0 /mnt/test [ 2.189080] BTRFS error (device nullb0): exclude_super_stripes: calling btrfs_rmap_block() for bytenr: 65536 [ 2.191168] BTRFS error (device nullb0): __btrfs_rmap_block: !in_range(65536, 536870912, 268435456) [ 2.193068] BTRFS error (device nullb0): __btrfs_rmap_block: nr: 0, *naddrs: 0 [ 2.194603] BTRFS error (device nullb0): exclude_super_stripes: nr: 0 [ 2.195973] BTRFS error (device nullb0): exclude_super_stripes: calling btrfs_rmap_block() for bytenr: 67108864 [ 2.197378] BTRFS error (device nullb0): __btrfs_rmap_block: !in_range(67108864, 536870912, 268435456) [ 2.198382] BTRFS error (device nullb0): __btrfs_rmap_block: nr: 0, *naddrs: 0 [ 2.199160] BTRFS error (device nullb0): exclude_super_stripes: nr: 0 [ 2.199871] BTRFS error (device nullb0): exclude_super_stripes: calling btrfs_rmap_block() for bytenr: 274877906944 [ 2.201030] BTRFS error (device nullb0): __btrfs_rmap_block: !in_range(274877906944, 536870912, 268435456) [ 2.202088] BTRFS error (device nullb0): __btrfs_rmap_block: nr: 0, *naddrs: 0 [ 2.202864] BTRFS error (device nullb0): exclude_super_stripes: nr: 0 [ 2.203549] BTRFS error (device nullb0): exclude_super_stripes: calling btrfs_rmap_block() for bytenr: 65536 [ 2.204621] BTRFS error (device nullb0): __btrfs_rmap_block: !in_range(65536, 805306368, 268435456) [ 2.205590] BTRFS error (device nullb0): __btrfs_rmap_block: nr: 0, *naddrs: 0 [ 2.206394] BTRFS error (device nullb0): exclude_super_stripes: nr: 0 [ 2.207078] BTRFS error (device nullb0): exclude_super_stripes: calling btrfs_rmap_block() for bytenr: 67108864 [ 2.208131] BTRFS error (device nullb0): __btrfs_rmap_block: !in_range(67108864, 805306368, 268435456) [ 2.209111] BTRFS error (device nullb0): __btrfs_rmap_block: nr: 0, *naddrs: 0 [ 2.209885] BTRFS error (device nullb0): exclude_super_stripes: nr: 0 [ 2.210540] BTRFS error (device nullb0): exclude_super_stripes: calling btrfs_rmap_block() for bytenr: 274877906944 [ 2.211595] BTRFS error (device nullb0): __btrfs_rmap_block: !in_range(274877906944, 805306368, 268435456) [ 2.212620] BTRFS error (device nullb0): __btrfs_rmap_block: nr: 0, *naddrs: 0 [ 2.213388] BTRFS error (device nullb0): exclude_super_stripes: nr: 0 [ 2.214076] BTRFS error (device nullb0): exclude_super_stripes: calling btrfs_rmap_block() for bytenr: 65536 [ 2.215079] BTRFS error (device nullb0): __btrfs_rmap_block: !in_range(65536, 1073741824, 268435456) [ 2.216039] BTRFS error (device nullb0): __btrfs_rmap_block: nr: 0, *naddrs: 0 [ 2.216801] BTRFS error (device nullb0): exclude_super_stripes: nr: 0 [ 2.217491] BTRFS error (device nullb0): exclude_super_stripes: calling btrfs_rmap_block() for bytenr: 67108864 [ 2.218548] BTRFS error (device nullb0): __btrfs_rmap_block: !in_range(67108864, 1073741824, 268435456) [ 2.219537] BTRFS error (device nullb0): __btrfs_rmap_block: nr: 0, *naddrs: 0 [ 2.220322] BTRFS error (device nullb0): exclude_super_stripes: nr: 0 [ 2.221020] BTRFS error (device nullb0): exclude_super_stripes: calling btrfs_rmap_block() for bytenr: 274877906944 [ 2.222150] BTRFS error (device nullb0): __btrfs_rmap_block: !in_range(274877906944, 1073741824, 268435456) [ 2.223165] BTRFS error (device nullb0): __btrfs_rmap_block: nr: 0, *naddrs: 0 [ 2.223945] BTRFS error (device nullb0): exclude_super_stripes: nr: 0