Thread (64 messages) 64 messages, 7 authors, 2016-09-22

Re: BTRFS constantly reports "No space left on device" even with a huge unallocated space

From: Jeff Mahoney <hidden>
Date: 2016-09-08 23:02:29

On 9/8/16 2:49 PM, Jeff Mahoney wrote:
On 9/8/16 2:24 PM, Ronan Arraes Jardim Chagas wrote:
quoted
Hi all!

Em Seg, 2016-09-05 às 16:49 +0800, Qu Wenruo escreveu:
quoted
Just like what Wang has mentioned, would you please paste all the
output 
of the contents of /sys/fs/btrfs/<your fs uuid>/allocation?

It's recommended to use "grep . -IR <path>" to get all the data as
it 
will show the file name.
So, one more time, I see the problem. This time I was just using
Firefox and I cannot recover using `btrfs balance`. I think that, one
more time, I will need to reboot this machine. This problem is really
causing me a lot of troubles :(
I have a hunch the list is about to be flooded with similar reports if
we don't find this one before 4.8.

commit d555b6c380c644af63dbdaa7cc14bba041a4e4dd
Author: Josef Bacik [off-list ref]
Date:   Fri Mar 25 13:25:51 2016 -0400

    Btrfs: warn_on for unaccounted spaces

This commit isn't the source of the bug, but it's making it a lot more
noisy.  I spent a few hours last night trying to track down why xfstests
was throwing these warnings and I was able to reproduce them at least as
far back as 4.4-vanilla with -oenospc_debug enabled.

Speaking of which, can you turn on mounting with -oenospc_debug if you
haven't already?

In my case, space_info->bytes_may_use was getting accounted incorrectly.

I am able to reproduce that even with the following commit:
commit 18513091af9483ba84328d42092bd4d42a3c958f
Author: Wang Xiaoguang [off-list ref]
Date:   Mon Jul 25 15:51:40 2016 +0800

    btrfs: update btrfs_space_info's bytes_may_use timely
And the btrfs_free_reserved_data_space_noquota WARN_ON I was seeing is
fixed by:

commit ed7a6948394305b810d0c6203268648715e5006f
Author: Wang Xiaoguang [off-list ref]
Date:   Fri Aug 26 11:33:14 2016 +0800

    btrfs: do not decrease bytes_may_use when replaying extents

... which shouldn't change anything for your issue, unfortunately.

I still see these:
WARNING: CPU: 2 PID: 8166 at ../fs/btrfs/extent-tree.c:9582
btrfs_free_block_groups+0x2a8/0x400 [btrfs]()
Modules linked in: loop dm_flakey af_packet iscsi_ibft iscsi_boot_sysfs
msr ext4 crc16 mbcache jbd2 ipmi_ssif dm_mod igb ptp pps_core
acpi_cpufreq tpm_infineon kvm_amd ipmi_si kvm dca pcspkr ipmi_msghandler
8250_fintek sp5100_tco fjes irqbypass i2c_piix4 shpchp processor button
amd64_edac_mod edac_mce_amd edac_core k10temp btrfs xor raid6_pq sd_mod
ata_generic mgag200 i2c_algo_bit drm_kms_helper syscopyarea sysfillrect
ohci_pci sysimgblt ehci_pci serio_raw ohci_hcd fb_sys_fops pata_atiixp
ehci_hcd ttm ahci libahci drm usbcore libata usb_common sg scsi_mod autofs4
CPU: 2 PID: 8166 Comm: umount Tainted: G        W
4.4.19-11.g81405db-vanilla #1
Hardware name: HP ProLiant DL165 G7, BIOS O37 10/17/2012
 0000000000000000 ffff880230317d10 ffffffff813170ec 0000000000000000
 ffffffffa0472528 ffff880230317d48 ffffffff8107d816 0000000000000000
 ffff88009ab03600 ffff8800ba106288 ffff8800ab75a000 ffff8800ba106200
Call Trace:
 [<ffffffff813170ec>] dump_stack+0x63/0x87
 [<ffffffff8107d816>] warn_slowpath_common+0x86/0xc0
 [<ffffffff8107d90a>] warn_slowpath_null+0x1a/0x20
 [<ffffffffa03de3a8>] btrfs_free_block_groups+0x2a8/0x400 [btrfs]
 [<ffffffffa03ef24b>] close_ctree+0x15b/0x330 [btrfs]
 [<ffffffffa03bfeb9>] btrfs_put_super+0x19/0x20 [btrfs]
 [<ffffffff811fe5bf>] generic_shutdown_super+0x6f/0x100
 [<ffffffff811fe662>] kill_anon_super+0x12/0x20
 [<ffffffffa03c4fa8>] btrfs_kill_super+0x18/0x120 [btrfs]
 [<ffffffff811fe003>] deactivate_locked_super+0x43/0x70
 [<ffffffff811fe076>] deactivate_super+0x46/0x60
 [<ffffffff81219dcf>] cleanup_mnt+0x3f/0x80
 [<ffffffff81219e62>] __cleanup_mnt+0x12/0x20
 [<ffffffff81099fb6>] task_work_run+0x86/0xb0
 [<ffffffff81078806>] exit_to_usermode_loop+0x73/0xa2
 [<ffffffff81003b2d>] syscall_return_slowpath+0x8d/0xa0
 [<ffffffff815f928c>] int_ret_from_sys_call+0x25/0x8f
---[ end trace 09a0cc2892b6305c ]---
BTRFS: space_info 1 has 7946240 free, is not full
BTRFS: space_info total=8388608, used=442368, pinned=0, reserved=0,
may_use=4096, readonly=0

... where the value of may_use varies.

-Jeff
quoted
grep . -IR /sys/fs/btrfs/e9efaa0c-d477-4249-830f-
ee5956768b29/allocation
allocation/data/flags:1
allocation/data/bytes_pinned:0
allocation/data/bytes_may_use:0
allocation/data/total_bytes_pinned:202973265920
That adds up to ~ 189 GB.  total_bytes is only about 42 GB.
quoted
allocation/data/bytes_reserved:0
allocation/data/bytes_used:45623730176
allocation/data/single/used_bytes:45623730176
allocation/data/single/total_bytes:46179287040
allocation/data/total_bytes:46179287040
allocation/data/disk_total:46179287040
allocation/data/disk_used:45623730176
allocation/metadata/dup/used_bytes:1120698368
allocation/metadata/dup/total_bytes:6979321856
allocation/metadata/flags:4
allocation/metadata/bytes_pinned:0
allocation/metadata/bytes_may_use:88521768960
allocation/metadata/total_bytes_pinned:-44285952
... well that's certainly interesting.  It looks like we'll need to see
how that happened.  It seems like we've messed up at least that portion
of accounting.

-Jeff
quoted
allocation/metadata/bytes_reserved:0
allocation/metadata/bytes_used:1120698368
allocation/metadata/total_bytes:6979321856
allocation/metadata/disk_total:13958643712
allocation/metadata/disk_used:2241396736
allocation/global_rsv_size:385875968
allocation/global_rsv_reserved:385875968
allocation/system/dup/used_bytes:16384
allocation/system/dup/total_bytes:33554432
allocation/system/flags:2
allocation/system/bytes_pinned:0
allocation/system/bytes_may_use:0
allocation/system/total_bytes_pinned:0
allocation/system/bytes_reserved:0
allocation/system/bytes_used:16384
allocation/system/total_bytes:33554432
allocation/system/disk_total:67108864
allocation/system/disk_used:32768

Additional information:

btrfs fi usage /
Overall:
    Device size:		   1.26TiB
    Device allocated:		  56.07GiB
    Device unallocated:		   1.20TiB
    Device missing:		     0.00B
    Used:			  44.58GiB
    Free (estimated):		   1.20TiB	(min: 616.41GiB)
    Data ratio:			      1.00
    Metadata ratio:		      2.00
    Global reserve:		 368.00MiB	(used: 0.00B)

Data,single: Size:43.01GiB, Used:42.49GiB
   /dev/sda6	  43.01GiB

Metadata,DUP: Size:6.50GiB, Used:1.04GiB
   /dev/sda6	  13.00GiB

System,DUP: Size:32.00MiB, Used:16.00KiB
   /dev/sda6	  64.00MiB

Unallocated:
   /dev/sda6	   1.20TiB

Can anyone help me?

Best regards,
Ronan Arraes

-- 
Jeff Mahoney
SUSE Labs

Attachments

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help