* Why we always balance system chunk alone with metadata?
@ 2016-03-16 2:48 Qu Wenruo
2016-03-17 8:09 ` Duncan
0 siblings, 1 reply; 2+ messages in thread
From: Qu Wenruo @ 2016-03-16 2:48 UTC (permalink / raw)
To: btrfs
Hi,
During debugging a bug related to balancing metadata chunk, we found
that if we specify -m option for "btrfs balance", it will always balance
system chunk too.
cmds-balance.c:
---
/*
* allow -s only under --force, otherwise do with system chunks
* the same thing we were ordered to do with meta chunks
*/
if (args.flags & BTRFS_BALANCE_SYSTEM) {
if (!force) {
error(
"Refusing to explicitly operate on system
chunks.\n"
"Pass --force if you really want to do that.");
return 1;
}
} else if (args.flags & BTRFS_BALANCE_METADATA) {
args.flags |= BTRFS_BALANCE_SYSTEM; <<< Here
memcpy(&args.sys, &args.meta,
sizeof(struct btrfs_balance_args));
}
---
I'm curious why we always bind system chunk to metadata balance?
Is there any special reason?
The patch introducing such behavior is dated back to 2012, and this
makes us unable to do metadata *only* balance.
Any idea?
Thanks,
Qu
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: Why we always balance system chunk alone with metadata?
2016-03-16 2:48 Why we always balance system chunk alone with metadata? Qu Wenruo
@ 2016-03-17 8:09 ` Duncan
0 siblings, 0 replies; 2+ messages in thread
From: Duncan @ 2016-03-17 8:09 UTC (permalink / raw)
To: linux-btrfs
Qu Wenruo posted on Wed, 16 Mar 2016 10:48:48 +0800 as excerpted:
> Hi,
>
> During debugging a bug related to balancing metadata chunk, we found
> that if we specify -m option for "btrfs balance", it will always balance
> system chunk too.
>
> cmds-balance.c:
> ---
> /*
> * allow -s only under --force, otherwise do with system chunks
> * the same thing we were ordered to do with meta chunks */
> if (args.flags & BTRFS_BALANCE_SYSTEM) {
> if (!force) {
> error(
> "Refusing to explicitly operate on system
> chunks.\n"
> "Pass --force if you really want to do
> that.");
> return 1;
> }
> } else if (args.flags & BTRFS_BALANCE_METADATA) {
> args.flags |= BTRFS_BALANCE_SYSTEM; <<< Here
> memcpy(&args.sys, &args.meta,
> sizeof(struct btrfs_balance_args));
> }
> ---
>
> I'm curious why we always bind system chunk to metadata balance?
>
> Is there any special reason?
> The patch introducing such behavior is dated back to 2012, and this
> makes us unable to do metadata *only* balance.
I always understood it as a convenient simplification for the sake of the
user, for whom tracking data and metadata separately is already a major
complication over what they're dealing with on most filesystems.
But I also wondered why there was no parallel to the -s system option for
metadata ONLY, perhaps requiring --force just as the -s option does.
The --force requirement for -s /does/ encourage people not to touch it at
all, separately, and there could be very good reasons to normally treat
system as metadata and process them as a combined unit, but even then, it
seems very odd to me to expose -s on its own, even if --force is
required, and not a parallel, say -M, for metadata-only, again, possibly
only if --force is used as well.
--
Duncan - List replies preferred. No HTML msgs.
"Every nonfree program has a lord, a master --
and if you use the program, he is your master." Richard Stallman
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2016-03-17 8:09 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-03-16 2:48 Why we always balance system chunk alone with metadata? Qu Wenruo
2016-03-17 8:09 ` Duncan
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).