Skip to contentSkip to conversation

btrfs-check finds file extent holes

DISCUSSION Marc Joliet 1 participant 4 messages Dec 16, 2016 – Dec 19, 2016 Btrfs file system

lore
Share & tools
lore
#0 lore raw

Hello,

After my backup drive displayed a weird issue (programs accessing it suddenly started zombifying, but it worked fine after a reboot), I decided to check the file system. The initial results with btrfs-check's low-memory mode found reference count mismatches, but that seems to have been a false positive, since btrfs-check's normal mode does not find them. Instead, it complains about several file extent holes:

# btrfs check /dev/sdd2       
Checking filesystem on /dev/sdd2
UUID: f97b3cda-15e8-418b-bb9b-235391ef2a38
checking extents
checking free space cache
checking fs roots
root 30634 inode 95066 errors 100, file extent discount
Found file extent holes:
        start: 413696, len: 4096
root 30635 inode 95066 errors 100, file extent discount
Found file extent holes:
        start: 413696, len: 4096
root 30636 inode 95066 errors 100, file extent discount
Found file extent holes:
        start: 413696, len: 4096
root 30657 inode 95066 errors 100, file extent discount
Found file extent holes:
        start: 413696, len: 4096
root 30746 inode 95066 errors 100, file extent discount
Found file extent holes:
        start: 413696, len: 4096
root 30747 inode 95066 errors 100, file extent discount
Found file extent holes:
        start: 413696, len: 4096
root 30764 inode 95066 errors 100, file extent discount
Found file extent holes:
        start: 413696, len: 4096
root 30834 inode 95066 errors 100, file extent discount
Found file extent holes:
        start: 413696, len: 4096
root 30835 inode 95066 errors 100, file extent discount
Found file extent holes:
        start: 413696, len: 4096
root 30915 inode 95066 errors 100, file extent discount
Found file extent holes:
        start: 413696, len: 4096
root 30916 inode 95066 errors 100, file extent discount
Found file extent holes:
        start: 413696, len: 4096
root 30942 inode 95066 errors 100, file extent discount
Found file extent holes:
        start: 413696, len: 4096
root 31038 inode 95066 errors 100, file extent discount
Found file extent holes:
        start: 413696, len: 4096
root 31053 inode 95066 errors 100, file extent discount
Found file extent holes:
        start: 413696, len: 4096
root 31366 inode 95066 errors 100, file extent discount
Found file extent holes:
        start: 413696, len: 4096
root 31367 inode 95066 errors 100, file extent discount
Found file extent holes:
        start: 413696, len: 4096
root 31368 inode 95066 errors 100, file extent discount
Found file extent holes:
        start: 413696, len: 4096
root 31385 inode 95066 errors 100, file extent discount
Found file extent holes:
        start: 413696, len: 4096
root 31425 inode 95066 errors 100, file extent discount
Found file extent holes:
        start: 413696, len: 4096
root 31473 inode 95066 errors 100, file extent discount
Found file extent holes:
        start: 413696, len: 4096
root 31499 inode 95066 errors 100, file extent discount
Found file extent holes:
        start: 413696, len: 4096
root 31554 inode 95066 errors 100, file extent discount
Found file extent holes:
        start: 413696, len: 4096
root 31572 inode 95066 errors 100, file extent discount
Found file extent holes:
        start: 413696, len: 4096
root 31606 inode 95066 errors 100, file extent discount
Found file extent holes:
        start: 413696, len: 4096
root 31653 inode 95066 errors 100, file extent discount
Found file extent holes:
        start: 413696, len: 4096
root 31680 inode 95066 errors 100, file extent discount
Found file extent holes:
        start: 413696, len: 4096

(The check is still not done, it's been running for about 24 hours now.)

Is this something that btrfs-check can safely repair, or that is perhaps even harmless?

% uname -a
Linux thetick 4.8.14-gentoo #1 SMP PREEMPT Sun Dec 11 17:09:09 CET 2016 x86_64 AMD Athlon(tm) 64 X2 Dual Core Processor 4200+ AuthenticAMD GNU/Linux % /sbin/btrfs --version
btrfs-progs v4.8.5

I can't show any other output because btrfs-check is still running. I can only say that the file system is 1TB large and about 88% full (fuller than normal, which is about 85%).

Greetings

Signature · 4 lines
Marc Joliet
--
"People who think they know everything really annoy those of us who know we
don't" - Bjarne Stroustrup
#1 lore raw

OK, btrfs-check finished about an hour after I sent this, here's the complete output:

# btrfs check /dev/sdd2       
Checking filesystem on /dev/sdd2
UUID: f97b3cda-15e8-418b-bb9b-235391ef2a38
checking extents
checking free space cache
checking fs roots
root 30634 inode 95066 errors 100, file extent discount
Found file extent holes:
        start: 413696, len: 4096
root 30635 inode 95066 errors 100, file extent discount
Found file extent holes:
        start: 413696, len: 4096
root 30636 inode 95066 errors 100, file extent discount
Found file extent holes:
        start: 413696, len: 4096
root 30657 inode 95066 errors 100, file extent discount
Found file extent holes:
        start: 413696, len: 4096
root 30746 inode 95066 errors 100, file extent discount
Found file extent holes:
        start: 413696, len: 4096
root 30747 inode 95066 errors 100, file extent discount
Found file extent holes:
        start: 413696, len: 4096
root 30764 inode 95066 errors 100, file extent discount
Found file extent holes:
        start: 413696, len: 4096
root 30834 inode 95066 errors 100, file extent discount
Found file extent holes:
        start: 413696, len: 4096
root 30835 inode 95066 errors 100, file extent discount
Found file extent holes:
        start: 413696, len: 4096
root 30915 inode 95066 errors 100, file extent discount
Found file extent holes:
        start: 413696, len: 4096
root 30916 inode 95066 errors 100, file extent discount
Found file extent holes:
        start: 413696, len: 4096
root 30942 inode 95066 errors 100, file extent discount
Found file extent holes:
        start: 413696, len: 4096
root 31038 inode 95066 errors 100, file extent discount
Found file extent holes:
        start: 413696, len: 4096
root 31053 inode 95066 errors 100, file extent discount
Found file extent holes:
        start: 413696, len: 4096
root 31366 inode 95066 errors 100, file extent discount
Found file extent holes:
        start: 413696, len: 4096
root 31367 inode 95066 errors 100, file extent discount
Found file extent holes:
        start: 413696, len: 4096
root 31368 inode 95066 errors 100, file extent discount
Found file extent holes:
        start: 413696, len: 4096
root 31385 inode 95066 errors 100, file extent discount
Found file extent holes:
        start: 413696, len: 4096
root 31425 inode 95066 errors 100, file extent discount
Found file extent holes:
        start: 413696, len: 4096
root 31473 inode 95066 errors 100, file extent discount
Found file extent holes:
        start: 413696, len: 4096
root 31499 inode 95066 errors 100, file extent discount
Found file extent holes:
        start: 413696, len: 4096
root 31554 inode 95066 errors 100, file extent discount
Found file extent holes:
        start: 413696, len: 4096
root 31572 inode 95066 errors 100, file extent discount
Found file extent holes:
        start: 413696, len: 4096
root 31606 inode 95066 errors 100, file extent discount
Found file extent holes:
        start: 413696, len: 4096
root 31653 inode 95066 errors 100, file extent discount
Found file extent holes:
        start: 413696, len: 4096
root 31680 inode 95066 errors 100, file extent discount
Found file extent holes:
        start: 413696, len: 4096
found 904425616176 bytes used err is 1
total csum bytes: 873691128
total tree bytes: 11120295936
total fs tree bytes: 8620965888
total extent tree bytes: 1368756224
btree space waste bytes: 2415249740
file data blocks allocated: 19427350777856
 referenced 1003936649216

Greetings

Signature · 4 lines
Marc Joliet
--
"People who think they know everything really annoy those of us who know we
don't" - Bjarne Stroustrup
#2 lore raw
In reply to Marc Joliet
Quoted 2 lines · On Saturday 17 December 2016 00:18:13 Marc Joliet wrote:

Is this something that btrfs-check can safely repair, or that is perhaps even harmless?

Never mind, I just found that this has been repairable since btrfs-progs 3.19.

Greetings

Signature · 4 lines
Marc Joliet
--
"People who think they know everything really annoy those of us who know we
don't" - Bjarne Stroustrup
#3 lore raw
In reply to Marc Joliet
Quoted 3 lines · On Saturday 17 December 2016 00:18:13 Marc Joliet wrote:

The initial results with btrfs-check's low-memory mode found reference count mismatches, but that seems to have been a false positive, since btrfs-check's normal mode does not find them.

FWIW, just in case this wasn't known yet (I know lowmem mode is still considered experimental), here is the lowmem output from three runs, in order. (I don't have the exact dates, but the FS was mounted in-between each run over the course of about 24 hours.)

# btrfs check --mode lowmem /dev/sdb2                                                                                                                                                                                                                  
Checking filesystem on /dev/sdb2
UUID: f97b3cda-15e8-418b-bb9b-235391ef2a38
checking extents
ERROR: extent[3839195598848, 20480] referencer count mismatch (root: 31589, 
owner: 2688918, offset: 4927488) wanted: 3, have: 4
ERROR: extent[3839195598848, 20480] referencer count mismatch (root: 31614, 
owner: 2688918, offset: 4927488) wanted: 3, have: 4
ERROR: extent[3839195598848, 20480] referencer count mismatch (root: 31422, 
owner: 2688918, offset: 4927488) wanted: 2, have: 4
ERROR: extent[3840794644480, 655360] referencer count mismatch (root: 31422, 
owner: 494683, offset: 734683136) wanted: 6, have: 11
ERROR: extent[3840794644480, 655360] referencer count mismatch (root: 31579, 
owner: 494683, offset: 734683136) wanted: 2, have: 7
^C
# btrfs check --mode lowmem /dev/sdb2                                                                                                                                                                                                                  
[6/1151]
Checking filesystem on /dev/sdb2
UUID: f97b3cda-15e8-418b-bb9b-235391ef2a38
checking extents
ERROR: extent[3839195598848, 20480] referencer count mismatch (root: 31614, 
owner: 2688918, offset: 4927488) wanted: 3, have: 4
ERROR: extent[3839195598848, 20480] referencer count mismatch (root: 31422, 
owner: 2688918, offset: 4927488) wanted: 2, have: 4
ERROR: extent[3840794644480, 655360] referencer count mismatch (root: 31422, 
owner: 494683, offset: 734683136) wanted: 6, have: 11
ERROR: extent[3840794644480, 655360] referencer count mismatch (root: 31579, 
owner: 494683, offset: 734683136) wanted: 2, have: 7
ERROR: extent[3853952757760, 4096] referencer count mismatch (root: 31614, 
owner: 2688918, offset: 4935680) wanted: 1, have: 2
ERROR: extent[3855013117952, 32768] referencer count mismatch (root: 30188, 
owner: 494681, offset: 32219136) wanted: 1, have: 2
ERROR: extent[3855013117952, 32768] referencer count mismatch (root: 30819, 
owner: 494681, offset: 32219136) wanted: 1, have: 2
ERROR: extent[3855013117952, 32768] referencer count mismatch (root: 28250, 
owner: 494681, offset: 32219136) wanted: 1, have: 2
ERROR: extent[3855013117952, 32768] referencer count mismatch (root: 29175, 
owner: 494681, offset: 32219136) wanted: 1, have: 2
ERROR: extent[3855015211008, 57344] referencer count mismatch (root: 31614, 
owner: 494681, offset: 32366592) wanted: 1, have: 2
ERROR: extent[3855015211008, 57344] referencer count mismatch (root: 31538, 
owner: 494681, offset: 32366592) wanted: 1, have: 2
ERROR: extent[3855015211008, 57344] referencer count mismatch (root: 31579, 
owner: 494681, offset: 32366592) wanted: 1, have: 2
ERROR: extent[3855015211008, 57344] referencer count mismatch (root: 31466, 
owner: 494681, offset: 32366592) wanted: 1, have: 2
ERROR: extent[3855015211008, 57344] referencer count mismatch (root: 31540, 
owner: 494681, offset: 32366592) wanted: 1, have: 2
ERROR: extent[3856459112448, 770048] referencer count mismatch (root: 30819, 
owner: 494683, offset: 1430528000) wanted: 1, have: 10
ERROR: extent[3856582701056, 4096] referencer count mismatch (root: 31572, 
owner: 195432, offset: 83841024) wanted: 1, have: 0
ERROR: extent[3857416364032, 98304] referencer count mismatch (root: 31614, 
owner: 494683, offset: 735207424) wanted: 2, have: 3
ERROR: extent[3857416364032, 98304] referencer count mismatch (root: 31624, 
owner: 494683, offset: 735207424) wanted: 1, have: 3
ERROR: extent[3857658413056, 65536] referencer count mismatch (root: 29175, 
owner: 2261987, offset: 474120192) wanted: 1, have: 2
ERROR: extent[3861689466880, 40960] referencer count mismatch (root: 31383, 
owner: 1277577, offset: 12189696) wanted: 1, have: 2
ERROR: extent[3861689995264, 40960] referencer count mismatch (root: 31383, 
owner: 1277577, offset: 12320768) wanted: 1, have: 2
ERROR: extent[3861694464000, 32768] referencer count mismatch (root: 30904, 
owner: 1277577, offset: 4980736) wanted: 3, have: 10
ERROR: extent[3861694464000, 32768] referencer count mismatch (root: 30937, 
owner: 1277577, offset: 4980736) wanted: 3, have: 10
ERROR: extent[3861694464000, 32768] referencer count mismatch (root: 31570, 
owner: 1277577, offset: 4980736) wanted: 3, have: 10
ERROR: extent[3861694464000, 32768] referencer count mismatch (root: 31569, 
owner: 1277577, offset: 4980736) wanted: 3, have: 10
ERROR: extent[3861694464000, 32768] referencer count mismatch (root: 30910, 
owner: 1277577, offset: 4980736) wanted: 3, have: 10
ERROR: extent[3861694464000, 32768] referencer count mismatch (root: 30824, 
owner: 1277577, offset: 4980736) wanted: 3, have: 10
ERROR: extent[3861694464000, 32768] referencer count mismatch (root: 31044, 
owner: 1277577, offset: 4980736) wanted: 3, have: 10
ERROR: extent[3861694464000, 32768] referencer count mismatch (root: 31048, 
owner: 1277577, offset: 4980736) wanted: 3, have: 10
ERROR: extent[3861694464000, 32768] referencer count mismatch (root: 31363, 
owner: 1277577, offset: 4980736) wanted: 3, have: 10
ERROR: extent[3861698289664, 45056] referencer count mismatch (root: 30824, 
owner: 1277577, offset: 12845056) wanted: 3, have: 5
ERROR: extent[3861700083712, 40960] referencer count mismatch (root: 30824, 
owner: 1277577, offset: 13107200) wanted: 2, have: 3
ERROR: extent[3861711024128, 40960] referencer count mismatch (root: 30653, 
owner: 1277577, offset: 4063232) wanted: 4, have: 7
ERROR: extent[3861711024128, 40960] referencer count mismatch (root: 30629, 
owner: 1277577, offset: 4063232) wanted: 3, have: 7
ERROR: extent[3861711593472, 45056] referencer count mismatch (root: 30653, 
owner: 1277577, offset: 2228224) wanted: 1, have: 2
ERROR: extent[3861717663744, 49152] referencer count mismatch (root: 31570, 
owner: 1277577, offset: 3145728) wanted: 2, have: 4
ERROR: extent[3861717663744, 49152] referencer count mismatch (root: 31569, 
owner: 1277577, offset: 3145728) wanted: 2, have: 4
ERROR: extent[3861718708224, 45056] referencer count mismatch (root: 30653, 
owner: 1277577, offset: 3538944) wanted: 1, have: 8
ERROR: extent[3861719072768, 45056] referencer count mismatch (root: 30653, 
owner: 1277577, offset: 3801088) wanted: 5, have: 6
ERROR: extent[3861719748608, 45056] referencer count mismatch (root: 31570, 
owner: 1277577, offset: 4325376) wanted: 2, have: 7
ERROR: extent[3861719748608, 45056] referencer count mismatch (root: 31569, 
owner: 1277577, offset: 4325376) wanted: 2, have: 7
ERROR: extent[3861721608192, 40960] referencer count mismatch (root: 31570, 
owner: 1277577, offset: 4849664) wanted: 7, have: 8
ERROR: extent[3861721608192, 40960] referencer count mismatch (root: 31569, 
owner: 1277577, offset: 4849664) wanted: 7, have: 8
ERROR: extent[3861742219264, 40960] referencer count mismatch (root: 30904, 
owner: 1277577, offset: 5373952) wanted: 8, have: 10
ERROR: extent[3861742219264, 40960] referencer count mismatch (root: 30937, 
owner: 1277577, offset: 5373952) wanted: 8, have: 10
ERROR: extent[3861742219264, 40960] referencer count mismatch (root: 31570, 
owner: 1277577, offset: 5373952) wanted: 8, have: 10
ERROR: extent[3861742219264, 40960] referencer count mismatch (root: 31569, 
owner: 1277577, offset: 5373952) wanted: 8, have: 10
ERROR: extent[3861742219264, 40960] referencer count mismatch (root: 30910, 
owner: 1277577, offset: 5373952) wanted: 8, have: 10
ERROR: extent[3861742219264, 40960] referencer count mismatch (root: 30824, 
owner: 1277577, offset: 5373952) wanted: 8, have: 10
ERROR: extent[3861742219264, 40960] referencer count mismatch (root: 31044, 
owner: 1277577, offset: 5373952) wanted: 8, have: 10
ERROR: extent[3861742219264, 40960] referencer count mismatch (root: 31048, 
owner: 1277577, offset: 5373952) wanted: 8, have: 10
ERROR: extent[3861742219264, 40960] referencer count mismatch (root: 31363, 
owner: 1277577, offset: 5373952) wanted: 8, have: 10
ERROR: extent[3861811728384, 65536] referencer count mismatch (root: 30188, 
owner: 494681, offset: 51904512) wanted: 2, have: 3
ERROR: extent[3861811728384, 65536] referencer count mismatch (root: 31113, 
owner: 494681, offset: 51904512) wanted: 2, have: 3
ERROR: extent[3861849968640, 45056] referencer count mismatch (root: 30653, 
owner: 1277577, offset: 6160384) wanted: 5, have: 7
ERROR: extent[3861947879424, 49152] referencer count mismatch (root: 31660, 
owner: 494681, offset: 63864832) wanted: 1, have: 2
ERROR: extent[3861947879424, 49152] referencer count mismatch (root: 31579, 
owner: 494681, offset: 63864832) wanted: 1, have: 2
ERROR: extent[3861947879424, 49152] referencer count mismatch (root: 29175, 
owner: 494681, offset: 63864832) wanted: 1, have: 2
ERROR: extent[3862172643328, 49152] referencer count mismatch (root: 28250, 
owner: 494681, offset: 79257600) wanted: 1, have: 2
ERROR: extent[3862172643328, 49152] referencer count mismatch (root: 31422, 
owner: 494681, offset: 79257600) wanted: 1, have: 2
ERROR: extent[3862172643328, 49152] referencer count mismatch (root: 31113, 
owner: 494681, offset: 79257600) wanted: 1, have: 2
ERROR: extent[3862177021952, 40960] referencer count mismatch (root: 31614, 
owner: 494681, offset: 81608704) wanted: 1, have: 2
ERROR: extent[3862177021952, 40960] referencer count mismatch (root: 31579, 
owner: 494681, offset: 81608704) wanted: 1, have: 2
ERROR: extent[3862177021952, 40960] referencer count mismatch (root: 31466, 
owner: 494681, offset: 81608704) wanted: 1, have: 2
ERROR: extent[3862177816576, 32768] referencer count mismatch (root: 31422, 
owner: 494681, offset: 82059264) wanted: 1, have: 2
ERROR: extent[3862177816576, 32768] referencer count mismatch (root: 31113, 
owner: 494681, offset: 82059264) wanted: 1, have: 2
ERROR: extent[3862969823232, 28672] referencer count mismatch (root: 31510, 
owner: 213766, offset: 5021696) wanted: 1, have: 0
ERROR: extent[3863189831680, 155648] referencer count mismatch (root: 29175, 
owner: 494683, offset: 1419395072) wanted: 1, have: 6
^C
# btrfs check --mode lowmem /dev/sdb2                                                                                                                                                                                                                          
Checking filesystem on /dev/sdb2
UUID: f97b3cda-15e8-418b-bb9b-235391ef2a38
checking extents
ERROR: extent[3839195598848, 20480] referencer count mismatch (root: 31614, 
owner: 2688918, offset: 4927488) wanted: 3, have: 4
ERROR: extent[3839195598848, 20480] referencer count mismatch (root: 31707, 
owner: 2688918, offset: 4927488) wanted: 3, have: 4
ERROR: extent[3839195598848, 20480] referencer count mismatch (root: 31422, 
owner: 2688918, offset: 4927488) wanted: 2, have: 4
ERROR: extent[3840794644480, 655360] referencer count mismatch (root: 31422, 
owner: 494683, offset: 734683136) wanted: 6, have: 11
ERROR: extent[3840794644480, 655360] referencer count mismatch (root: 31579, 
owner: 494683, offset: 734683136) wanted: 2, have: 7
ERROR: extent[3853952757760, 4096] referencer count mismatch (root: 31614, 
owner: 2688918, offset: 4935680) wanted: 1, have: 2
ERROR: extent[3853952757760, 4096] referencer count mismatch (root: 31707, 
owner: 2688918, offset: 4935680) wanted: 1, have: 2
ERROR: extent[3855013117952, 32768] referencer count mismatch (root: 30188, 
owner: 494681, offset: 32219136) wanted: 1, have: 2
ERROR: extent[3855013117952, 32768] referencer count mismatch (root: 30819, 
owner: 494681, offset: 32219136) wanted: 1, have: 2
ERROR: extent[3855013117952, 32768] referencer count mismatch (root: 28250, 
owner: 494681, offset: 32219136) wanted: 1, have: 2
ERROR: extent[3855013117952, 32768] referencer count mismatch (root: 29175, 
owner: 494681, offset: 32219136) wanted: 1, have: 2
ERROR: extent[3855015211008, 57344] referencer count mismatch (root: 31614, 
owner: 494681, offset: 32366592) wanted: 1, have: 2
ERROR: extent[3855015211008, 57344] referencer count mismatch (root: 31538, 
owner: 494681, offset: 32366592) wanted: 1, have: 2
ERROR: extent[3855015211008, 57344] referencer count mismatch (root: 31684, 
owner: 494681, offset: 32366592) wanted: 1, have: 2
ERROR: extent[3855015211008, 57344] referencer count mismatch (root: 31579, 
owner: 494681, offset: 32366592) wanted: 1, have: 2
ERROR: extent[3855015211008, 57344] referencer count mismatch (root: 31697, 
owner: 494681, offset: 32366592) wanted: 1, have: 2
ERROR: extent[3855015211008, 57344] referencer count mismatch (root: 31466, 
owner: 494681, offset: 32366592) wanted: 1, have: 2
ERROR: extent[3855015211008, 57344] referencer count mismatch (root: 31540, 
owner: 494681, offset: 32366592) wanted: 1, have: 2
ERROR: extent[3856388816896, 20480] referencer count mismatch (root: 31697, 
owner: 2688944, offset: 74829824) wanted: 1, have: 0
ERROR: extent[3856388816896, 20480] referencer count mismatch (root: 31714, 
owner: 2688944, offset: 74829824) wanted: 1, have: 0
ERROR: extent[3856459112448, 770048] referencer count mismatch (root: 30819, 
owner: 494683, offset: 1430528000) wanted: 1, have: 10
ERROR: extent[3856582701056, 4096] referencer count mismatch (root: 31572, 
owner: 195432, offset: 83841024) wanted: 1, have: 0
^C
Signature · 4 lines
Marc Joliet
--
"People who think they know everything really annoy those of us who know we
don't" - Bjarne Stroustrup