On 2020/3/10 上午10:02, Martin Raiber wrote: > On 10.03.2020 02:41 Qu Wenruo wrote: >> >> On 2020/3/10 上午8:05, Martin Raiber wrote: >>> Hi, >>> >>> I get a enospc to remount-ro with 5.4.21. Details: >> Sorry, the attached dmesg doesn't contain the transaction abort message. >> >> It only has the flooded ENOSPC from enospc_debug option. > > This isn't it? > > [76641.627535] BTRFS: error (device dm-0) in btrfs_drop_snapshot:5419: > errno=-28 No space left > [76641.627549] BTRFS info (device dm-0): forced readonly > [...] Sorry, forgot it's not calling btrfs_abort_transaction() but btrfs_handle_fs_error(), thus no backtrace. Then it's too many pinned bytes from dropped snapshot caused the problem. And since we're holding one transaction without ending it, it prevents ticketed space system to flush and free space. It looks like the check in should_end_transaction() is not good enough. Maybe Josef and Nikolay could have some better ideas on this? Thanks, Qu > >> >> Thanks, >> Qu >>> Linux 5.4.21 #1 SMP Fri Feb 21 03:20:26 CET 2020 x86_64 GNU/Linux >>> >>> btrfs fi usage /media/btrfs (after remount-ro) >>> Overall: >>> Device size: 511.99GiB >>> Device allocated: 511.99GiB >>> Device unallocated: 0.00B >>> Device missing: 0.00B >>> Used: 443.68GiB >>> Free (estimated): 54.94GiB (min: 54.94GiB) >>> Data ratio: 1.00 >>> Metadata ratio: 1.00 >>> Global reserve: 512.00MiB (used: 0.00B) >>> >>> Data,single: Size:490.98GiB, Used:436.04GiB (88.81%) >>> /dev/mapper/LUKS-RC-cd46b6b4909845918eaa285c532476dc 490.98GiB >>> >>> Metadata,single: Size:21.01GiB, Used:7.65GiB (36.40%) >>> /dev/mapper/LUKS-RC-cd46b6b4909845918eaa285c532476dc 21.01GiB >>> >>> System,single: Size:4.00MiB, Used:80.00KiB (1.95%) >>> /dev/mapper/LUKS-RC-cd46b6b4909845918eaa285c532476dc 4.00MiB >>> >>> Unallocated: >>> /dev/mapper/LUKS-RC-cd46b6b4909845918eaa285c532476dc 0.00B >>> >>> Mount options: >>> /dev/mapper/LUKS-RC-cd46b6b4909845918eaa285c532476dc on /media/btrfs >>> type btrfs >>> (ro,noatime,compress-force=zstd:3,nossd,space_cache=v2,enospc_debug,skip_balance,metadata_ratio=8,subvolid=5,subvol=/) >>> >>> btrfs fi df /media/btrfs >>> Data, single: total=490.98GiB, used=436.04GiB >>> System, single: total=4.00MiB, used=80.00KiB >>> Metadata, single: total=21.01GiB, used=7.65GiB >>> GlobalReserve, single: total=512.00MiB, used=0.00B >>> >>> dmesg attached. >>> >
