Linux Btrfs filesystem development
 help / color / mirror / Atom feed
From: Qu Wenruo <quwenruo.btrfs@gmx.com>
To: Paul Graff <pj.world@gmx.com>, linux-btrfs@vger.kernel.org
Subject: Re: Stuck subvolume removal:
Date: Sat, 15 Nov 2025 06:25:29 +1030	[thread overview]
Message-ID: <0ed6fdf0-842a-4641-90e4-5239b5049e4b@gmx.com> (raw)
In-Reply-To: <01f8b560-fb57-4861-8382-141c39655478@gmx.com>



在 2025/11/15 06:08, Paul Graff 写道:
> 
> 
> On 11/13/25 4:54 PM, Qu Wenruo wrote:
>>
>>
>> 在 2025/11/14 09:10, Paul Graff 写道:
>>> Hi, currently there is a dropped subvolume error when running a full 
>>> balance on a single SSD.
>>>
>>> |:~> sudo btrfs balance start / WARNING: Full balance without filters 
>>> requested. This operation is very intense and takes potentially very 
>>> long. It is recommended to use the balance filters to narrow down the 
>>> scope of balance. Use 'btrfs balance start --full-balance' option to 
>>> skip this warning. The operation will start in 10 seconds. Use Ctrl-C 
>>> to stop it. 10 9 8 7 6 5 4 3 2 1 Starting balance without any 
>>> filters. ERROR: error during balancing '/': Structure needs cleaning 
>>> There may be more info in syslog - try dmesg | tail hightower- 
>>> i5-6600k:~> dmesg | tail [38576.407681] [ T29728] BTRFS info (device 
>>> dm-2): found 37170 extents, stage: update data pointers 
>>> [38584.873805] [ T29728] BTRFS info (device dm-2): relocating block 
>>> group 64891125760 flags data [38607.693519] [ T29728] BTRFS info 
>>> (device dm-2): found 33194 extents, stage: move data extents 
>>> [38641.574032] [ T29728] BTRFS info (device dm-2): found 33194 
>>> extents, stage: update data pointers [38649.812477] [ T29728] BTRFS 
>>> info (device dm-2): relocating block group 62710087680 flags data 
>>> [38662.710999] [ T29728] BTRFS info (device dm-2): found 43884 
>>> extents, stage: move data extents [38696.292982] [ T29728] BTRFS info 
>>> (device dm-2): found 43884 extents, stage: update data pointers 
>>> [38708.587669] [ T29728] BTRFS info (device dm-2): relocating block 
>>> group 60294168576 flags metadata|dup [38714.889735] [ T29728] BTRFS 
>>> error (device dm-2): cannot relocate partially dropped subvolume 490, 
>>> drop progress key (853588 108 0) [38723.736887] [ T29728] BTRFS info 
>>> (device dm-2): balance: ended with status: -117 hightower-i5-6600k:~>|
>>
>> The format is a mess.
> My apologies for the disastrous output format above.
>> Please provide a proper formatted dmesg instead.
> 
> :~> sudo dmesg | tail
> 
> [sudo] password for root:
> 
> [44928.672213] [ T96240] BTRFS info (device dm-2): found 55680 extents, 
> stage: update data pointers
> 
> [44937.810972] [ T96240] BTRFS info (device dm-2): found 4 extents, 
> stage: update data pointers
> 
> [44938.590658] [ T96240] BTRFS info (device dm-2): relocating block 
> group 60294168576 flags metadata|dup
> 
> [44945.516661] [ T96240] BTRFS error (device dm-2): cannot relocate 
> partially dropped subvolume 490, drop progress key (853588 108 0)
> 
> [44955.995468] [ T96240] BTRFS info (device dm-2): balance: ended with 
> status: -117
> 
> :~>
> 
> 
>>
>> Along with the kernel version.
> Most current openSUSE Rescue system CD used for btrfs check, uname -a > 
> 6.17.7-1
>>
>> The relocation is rejected because there is a half-dropped subvolume, 
>> which is not that common.
>> It maybe a problem with the fs that there are some ghost subvolumes 
>> that are never dropped.
>>
>> There used to be kernel bug that can lead to such ghost subvolumes, 
>> IIRC the latest btrfs check can detect it.
>>
>> So please also provide the output of "btrfs check --readonly" of the 
>> unmounted fs.
> 
> :~ # btrfs check --readonly --progress /dev/mapper/system-root
> 
> Opening filesystem to check...
> 
> Checking filesystem on /dev/mapper/system-root
> 
> UUID: 605560ad-fe93-4d09-8760-df0725b43ee1
> 
> [1/8] checking log skipped (none written)
> 
> [1/7] checking root items (0:00:14 elapsed, 5328460 items checked)
> 
> [2/7] checking extents (0:01:01 elapsed, 984830 items checked)
> 
> [3/7] checking free space cache (0:00:12 elapsed, 471 items checked)
> 
> [4/7] checking fs roots (0:04:32 elapsed, 910644 items checked)
> 
> [5/7] checking csums (without verifying data) (0:00:12 elapsed, 895024 
> items checked)
> 
> fs tree 490 missing orphan item (0:00:00 elapsed, 94 items checked)

So indeed your fs has a half dropped ghost subvolume, most likely caused 
by some older kernels.

Unfortunately btrfs-progs doesn't have the ability to repair it yet, 
I'll craft a branch of btrfs-progs with the repair ability soon.

Meanwhile please prepare an environment to compile btrfs-progs.

Thanks,
Qu

> 
> [6/7] checking root refs (0:00:01 elapsed, 94 items checked)
> 
> ERROR: errors found in root refs
> 
> found 496776130741 bytes used, error(s) found
> 
> total csum bytes: 465839608
> 
> total tree bytes: 16133832704
> 
> total fs tree bytes: 14983905280
> 
> total extent tree bytes: 624771072
> 
> btree space waste bytes: 3613129770
> 
> file data blocks allocated: 1062495817728
> 
> referenced 976540409856
> 
> :~ #
> 
> 
>>
>> Thanks,
>> Qu
>>
> -Greatest Hopes
> Paul
>>>
>>> After passing,
>>>
>>> |:~> sudo btrfs subvolume sync / [sudo] password for root: hightower- 
>>> i5-6600k:~> |
>>>
>>> the command returned to prompt very, very quickly.
>>>
>>> A second balance attempt results with the following output:
>>>
>>> |:~> sudo btrfs balance start / WARNING: Full balance without filters 
>>> requested. This operation is very intense and takes potentially very 
>>> long. It is recommended to use the balance filters to narrow down the 
>>> scope of balance. Use 'btrfs balance start --full-balance' option to 
>>> skip this warning. The operation will start in 10 seconds. Use Ctrl-C 
>>> to stop it. 10 9 8 7 6 5 4 3 2 1 Starting balance without any 
>>> filters. ERROR: error during balancing '/': Structure needs cleaning 
>>> There may be more info in syslog - try dmesg | tail hightower- 
>>> i5-6600k:~> |
>>>
>>> |:~> dmesg | tail [93689.781162] [ T69656] BTRFS info (device dm-2): 
>>> found 16 extents, stage: update data pointers [93690.667290] 
>>> [ T69656] BTRFS info (device dm-2): relocating block group 
>>> 1495819878400 flags data [93703.323923] [ T69656] BTRFS info (device 
>>> dm-2): found 33 extents, stage: move data extents [93705.575991] 
>>> [ T69656] BTRFS info (device dm-2): found 33 extents, stage: update 
>>> data pointers [93706.769453] [ T69656] BTRFS info (device dm-2): 
>>> relocating block group 1494746136576 flags data [93725.570642] 
>>> [ T69656] BTRFS info (device dm-2): found 39 extents, stage: move 
>>> data extents [93727.449779] [ T69656] BTRFS info (device dm-2): found 
>>> 39 extents, stage: update data pointers [93728.465650] [ T69656] 
>>> BTRFS info (device dm-2): relocating block group 60294168576 flags 
>>> metadata|dup [93736.722689] [ T69656] BTRFS error (device dm-2): 
>>> cannot relocate partially dropped subvolume 490, drop progress key 
>>> (853588 108 0) [93750.594559] [ T69656] BTRFS info (device dm-2): 
>>> balance: ended with status: -117 hightower- i5-6600k:~> |
>>>
>>> Please see the following referenced, prior posting for stuck 
>>> subvolume removal similarity. https://lore.kernel.org/linux- 
>>> btrfs/9f936d59- d782-1f48-bbb7-dd1c8dae2615@gmail.com/
>>>
>>> Is there a patch for btrfsprogs? If so can the patch be merged?|
>>> |
>>>
>>> What are your thoughts on this?
>>>
>>>
>>>
>>>
>>>
>>
> 


  reply	other threads:[~2025-11-14 19:55 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-11-13 22:40 Stuck subvolume removal: Paul Graff
2025-11-13 22:54 ` Qu Wenruo
2025-11-14 19:38   ` Paul Graff
2025-11-14 19:55     ` Qu Wenruo [this message]
2026-01-28  8:42       ` Paul Graff
2026-01-28  8:49         ` Qu Wenruo
2026-03-01 15:47           ` Paul Graff

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=0ed6fdf0-842a-4641-90e4-5239b5049e4b@gmx.com \
    --to=quwenruo.btrfs@gmx.com \
    --cc=linux-btrfs@vger.kernel.org \
    --cc=pj.world@gmx.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox