Hey.

I just repeatedly did the following twice on a ~8GB USB stick, under
Debian sid (ergo kernel 4.2.0-1-amd64, btrfsprogs 4.2.2-1).

First, created some GPT on the stick:
Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048         1048575   511.0 MiB   EF02  BIOS boot partition
   2         1048576         3145727   1024.0 MiB  8300  Linux filesystem
   3         3145728         4194303   512.0 MiB   8300  Linux filesystem
   4         4194304         6291455   1024.0 MiB  8300  Linux filesystem
   5         6291456        15687644   4.5 GiB     8300  Linux filesystem


Then filesystems:
root@heisenberg:~# mkfs.btrfs --nodiscard --label boot-main /dev/sdb2 
btrfs-progs v4.2.2
See http://btrfs.wiki.kernel.org for more information.

Label:              boot-main
UUID:               150ee9fb-c650-4b5b-8f64-606e589e429a
Node size:          16384
Sector size:        4096
Filesystem size:    1.00GiB
Block group profiles:
  Data:             single            8.00MiB
  Metadata:         DUP              59.19MiB
  System:           DUP              12.00MiB
SSD detected:       no
Incompat features:  extref, skinny-metadata
Number of devices:  1
Devices:
   ID        SIZE  PATH
    1     1.00GiB  /dev/sdb2

root@heisenberg:~# mkfs.btrfs --nodiscard --label boot-data /dev/sdb3
btrfs-progs v4.2.2
See http://btrfs.wiki.kernel.org for more information.

Label:              boot-data
UUID:               b1c1fc77-c965-4f0c-a2b5-44a301fd8772
Node size:          16384
Sector size:        4096
Filesystem size:    1.00GiB
Block group profiles:
  Data:             single            8.00MiB
  Metadata:         DUP              59.19MiB
  System:           DUP              12.00MiB
SSD detected:       no
Incompat features:  extref, skinny-metadata
Number of devices:  1
Devices:
   ID        SIZE  PATH
    1     1.00GiB  /dev/sdb3

root@heisenberg:~# mkfs.btrfs --nodiscard --label boot-archive
/dev/sdb4
btrfs-progs v4.2.2
See http://btrfs.wiki.kernel.org for more information.

Label:              boot-archive
UUID:               a063cf3b-0322-4ec7-a8c1-2dabecad9f57
Node size:          16384
Sector size:        4096
Filesystem size:    1.00GiB
Block group profiles:
  Data:             single            8.00MiB
  Metadata:         DUP              59.19MiB
  System:           DUP              12.00MiB
SSD detected:       no
Incompat features:  extref, skinny-metadata
Number of devices:  1
Devices:
   ID        SIZE  PATH
    1     1.00GiB  /dev/sdb4

root@heisenberg:~# mkfs.btrfs --nodiscard --label boot-rescue /dev/sdb5
btrfs-progs v4.2.2
See http://btrfs.wiki.kernel.org for more information.

Label:              boot-rescue
UUID:               104b7bc3-3b8c-4a08-b0a6-9172ed664e68
Node size:          16384
Sector size:        4096
Filesystem size:    3.98GiB
Block group profiles:
  Data:             single            8.00MiB
  Metadata:         DUP             211.75MiB
  System:           DUP              12.00MiB
SSD detected:       no
Incompat features:  extref, skinny-metadata
Number of devices:  1
Devices:
   ID        SIZE  PATH
    1     3.98GiB  /dev/sdb5



No errors in the kernel log.



Then I got usage info:
root@heisenberg:/data/SSS/boot# btrfs filesystem usage data/
Overall:
    Device size:                   1.00GiB
    Device allocated:            126.38MiB
    Device unallocated:          897.62MiB
    Device missing:                  0.00B
    Used:                        256.00KiB
    Free (estimated):            905.62MiB      (min: 456.81MiB)
    Data ratio:                       1.00
    Metadata ratio:                   2.00
    Global reserve:               16.00MiB      (used: 0.00B)

Data,single: Size:8.00MiB, Used:0.00B
   /dev/sdb3       8.00MiB

Metadata,DUP: Size:51.19MiB, Used:112.00KiB
   /dev/sdb3     102.38MiB

System,DUP: Size:8.00MiB, Used:16.00KiB
   /dev/sdb3      16.00MiB

Unallocated:
   /dev/sdb3     897.62MiB
root@heisenberg:/data/SSS/boot# btrfs filesystem usage main/
Overall:
    Device size:                   1.00GiB
    Device allocated:            126.38MiB
    Device unallocated:          897.62MiB
    Device missing:                  0.00B
    Used:                        256.00KiB
    Free (estimated):            905.62MiB      (min: 456.81MiB)
    Data ratio:                       1.00
    Metadata ratio:                   2.00
    Global reserve:               16.00MiB      (used: 0.00B)

Data,single: Size:8.00MiB, Used:0.00B
   /dev/sdb2       8.00MiB

Metadata,DUP: Size:51.19MiB, Used:112.00KiB
   /dev/sdb2     102.38MiB

System,DUP: Size:8.00MiB, Used:16.00KiB
   /dev/sdb2      16.00MiB

Unallocated:
   /dev/sdb2     897.62MiB
root@heisenberg:/data/SSS/boot# btrfs filesystem usage rescue/
Overall:
    Device size:                   3.98GiB
    Device allocated:            431.50MiB
    Device unallocated:            3.56GiB
    Device missing:                  0.00B
    Used:                        320.00KiB
    Free (estimated):              3.57GiB      (min: 1.79GiB)
    Data ratio:                       1.00
    Metadata ratio:                   2.00
    Global reserve:               16.00MiB      (used: 0.00B)

Data,single: Size:8.00MiB, Used:64.00KiB
   /dev/sdb5       8.00MiB

Metadata,DUP: Size:203.75MiB, Used:112.00KiB
   /dev/sdb5     407.50MiB

System,DUP: Size:8.00MiB, Used:16.00KiB
   /dev/sdb5      16.00MiB

Unallocated:
   /dev/sdb5       3.56GiB



Still all fine.

Now I write to one of the filesystems (main at first, that still works)
but then when I cp -a from another btrfs to data:
cp: error writing ‘data/SHA512-sums.OLD’: No space left on device
cp: failed to extend ‘data/SHA512-sums.OLD’: No space left on device
cp: error writing ‘data/SHA512-sums’: No space left on device
cp: failed to extend ‘data/SHA512-sums’: No space left on device

(these files are just a few bytes large)
On the target fs, they're there but all 0 bytes large.

(btw: I've aliased cp to cp --reflink=auto


When I now repeat the usage info:
root@heisenberg:/data/SSS/boot# btrfs filesystem usage data
Overall:
    Device size:                   1.00GiB
    Device allocated:            118.38MiB
    Device unallocated:          905.62MiB
    Device missing:                  0.00B
    Used:                        256.00KiB
    Free (estimated):              8.00EiB      (min: 8.00EiB)
    Data ratio:                       -nan
    Metadata ratio:                   2.00
    Global reserve:               16.00MiB      (used: 0.00B)

Metadata,DUP: Size:51.19MiB, Used:112.00KiB
   /dev/sdc3     102.38MiB

System,DUP: Size:8.00MiB, Used:16.00KiB
   /dev/sdc3      16.00MiB

Unallocated:
   /dev/sdc3     905.62MiB

It get's bogus... at least the Free space shows 8 EiB (if wishes were
horses)...

Still no error in kernel logs:
 3401.934514] BTRFS: device label boot-rescue devid 1 transid 8
/dev/sdc5
[ 3401.985858] BTRFS: device label boot-main devid 1 transid 8
/dev/sdc2
[ 3401.988601] BTRFS: device label boot-data devid 1 transid 9
/dev/sdc3
[ 3401.997370] BTRFS: device label boot-archive devid 1 transid 9
/dev/sdc4
[ 3403.721091] BTRFS info (device sdc3): disk space caching is enabled
[ 3403.721098] BTRFS: has skinny extents
[ 3413.964033] BTRFS info (device sdb3): disk space caching is enabled
[ 3413.964042] BTRFS: has skinny extents
[ 3522.902309] BTRFS info (device sdb3): disk space caching is enabled
[ 3522.902314] BTRFS: has skinny extents
[ 3525.055653] BTRFS info (device sdc3): disk space caching is enabled
[ 3525.055659] BTRFS: has skinny extents


btrfs check doesn't show errors either.


After a balance, i can copy again, even though the usage still shows 8
EiB for a while...


Anyway how can it happen, that on a fresh btrfs with no files at all a
balance is necessary?
Or is there some deeper corruption going on here?


Thanks,
Chris.

Attachment: smime.p7s
Description: S/MIME cryptographic signature

Reply via email to