Skip to contentSkip to conversation

R: default subvolume abilities/restrictions

DISCUSSION [email protected] 5 participants 11 messages May 19, 2010 – Jun 29, 2010 Btrfs file system

lore
Share & tools
lore
#0 lore raw

Hi Anthony,

I think that for you may be interested to read this thread

http://kerneltrap.org/mailarchive/linux-btrfs/2009/11/20/6588643/thread

and to read a my blog about this argument

http://kreijack.blogspot.com/2010/01/linux-btrfs-example-of-layout.html

Regards
Goffredo

Quoted 47 lines

----Messaggio originale----
Da: [email protected]
Data: 19/05/2010 8.50
A: <[email protected]>
Ogg: default subvolume abilities/restrictions

hi,

i'm working on an initrd hook
[http://aur.archlinux.org/packages.php?ID=33376] to support non-volatile system rollbacks (promoting a temporary rollback snapshot to the new active/default). when the system is installed to the default/"." subvolume (as many users probably initially do), it is more difficult/messier to manage system state; there are empty folders in each "child" snapshot where a subvolume used to exist (this seems like BUG to me, dir should not exist?) in the default subvolume. these grow/vary with time. to work around this and for cleaner implementation, i'll intend to permanently boot a named subvolume [__active] (though its contents may be swapped out). ultimately, i have to tell the user to manually remove the old junk (/usr, /etc, /var, etc...) from the default subvolume (since its really in the /__active subvolume)

moving along to a question... can the default subvolume be swapped/removed/renamed/popped/shifted?

what would have been useful, would be the ability to generate an empty, parent subvolume to _contain_ the current one, and rename it to __active. btrfs gives rise to a "subroot" structure; the structure beneath the root.

is something like this possible or can be added?

an alternative idea i had was "promoting" a subvolume to be the new root, and anything "above" the new root is lost/forgotten. then i could create the subroot structure in a subvol, snapshot the default subvol to where i want it, and promote the subvol to be the new root. like a permanent pivot_root/chroot.

great stuff,

C Anthony
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

#1 lore raw

Re: default subvolume abilities/restrictions

Quoted 4 lines · On Wed, May 19, 2010 at 6:56 AM, [email protected] <[email protected]> wrote:

Hi Anthony,

I think that for you may be interested to read this thread

Quoted 8 lines

http://kerneltrap.org/mailarchive/linux-btrfs/2009/11/20/6588643/thread

and to read a my blog about this argument

http://kreijack.blogspot.com/2010/01/linux-btrfs-example-of-layout.html

Regards
Goffredo

thanks for the pointers, however the thread doesn't really offer a solution or an indication of whether this will/can be possible :-(, and your blog basically comes to the same conclusion that i already agree with; the system should be installed into a subvolume from day
1. i could be mistaken here, but in my experience, you cannot remove a subvolume that has another subvolume within it. thus, setting a new default subvolume doesn't actually change the heirarchy of subvolumes, and since the original default subvol (.) contains all other subvolumes, it still cannot be removed, as it's the ultimate parent subvolume (even though it's not necessarily the default anymore). is this correct?

i need a way, programmatically and safely, to "move" the users installation from the original subvolume into an isolated subvolume called __active (what you called "rootfs" in you thread/blog), or to generate a new, empty default/root subvolume and place the current default subvol (.) _into_ it... how can this be done? until i figure this out i have to tell the user to manually remove the stagnant files from the dot (.) subvolume (usr/etc/lib...), since i don't think my users would appreciate me issuing an "rm -rf" against their system.

any other ideas/input?

C Anthony

ps. a recursive snapshotting tool could be useful too (if / and /home were both subvols, the tool would create both when / was snapped, instead of /home being an empty folder in the snapshot).

#2 lore raw

Re: default subvolume abilities/restrictions

Quoted 1 line · C Anthony Risinger

On Wed, May 19, 2010 at 6:56 AM, [email protected] <[email protected]>

Quoted 13 lines · wrote:
Quoted 4 lines

Hi Anthony,

I think that for you may be interested to read this thread

Quoted 8 lines

http://kerneltrap.org/mailarchive/linux-btrfs/2009/11/20/6588643/thread

and to read a my blog about this argument

http://kreijack.blogspot.com/2010/01/linux-btrfs-example-of-layout.html

Regards
Goffredo

Quoted 11 lines

thanks for the pointers, however the thread doesn't really offer a solution or an indication of whether this will/can be possible :-(, and your blog basically comes to the same conclusion that i already agree with; the system should be installed into a subvolume from day
1. i could be mistaken here, but in my experience, you cannot remove a subvolume that has another subvolume within it. thus, setting a new default subvolume doesn't actually change the heirarchy of subvolumes, and since the original default subvol (.) contains all other subvolumes, it still cannot be removed, as it's the ultimate parent subvolume (even though it's not necessarily the default anymore). is this correct?

On the basis of my experiences I agree with you. I think that it was not a good design to link the subvolumes to directory entries. I prefer that the subvolumes live in a different namespace, and it were mounted when required.

Quoted 10 lines

i need a way, programmatically and safely, to "move" the users installation from the original subvolume into an isolated subvolume called __active (what you called "rootfs" in you thread/blog), or to generate a new, empty default/root subvolume and place the current default subvol (.) _into_ it... how can this be done? until i figure this out i have to tell the user to manually remove the stagnant files from the dot (.) subvolume (usr/etc/lib...), since i don't think my users would appreciate me issuing an "rm -rf" against their system.

any other ideas/input?

I am not sure to have understood well. But a possible solution may be to
- snapshot the default subvolume to a rootfs.
- boot in the rootfs subvolume
- mount the default subvol (mount -o subvol=default /dev/sdX /mnt/default)
- remove (carefully) the file under the default subvolume except the subvolume(s) (something like rm --one-file-system /mnt/default/).

Quoted 15 lines

C Anthony

ps. a recursive snapshotting tool could be useful too (if / and /home were both subvols, the tool would create both when / was snapped, instead of /home being an empty folder in the snapshot).

--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

Signature · 2 lines
gpg key@ keyserver.linux.it: Goffredo Baroncelli (ghigo) <[email protected]>
Key fingerprint = 4769 7E51 5293 D36C 814E  C054 BF04 F161 3DC5 0512
#3 lore raw

Re: default subvolume abilities/restrictions

In reply to C Anthony Risinger
Quoted 5 lines · On Wed, May 19, 2010 at 9:01 AM, C Anthony Risinger <[email protected]> = wrote:

..........
i need a way, programmatically and safely, to "move" the users installation from the original subvolume into an isolated subvolume
..........
or to generate a new, empty default/root subvolume and place the curr=

ent

Quoted 1 line

default subvol (.) _into_ it... =A0how can this be done?

can any devs out there make this happen? note, what i'm looking for is _not_ setting the default subvolume to be mounted, but actually moving/renaming the default (.) subvolume itself. essentially, can we get a command to do this:

# btrfs subvolume create new_root
# mv . new_root/old_root

that unsurprisingly fails with:

mv: cannot move .' to new_root/old_root': Device or resource busy

could we extend btrfs-progs tools to allow something like this? does the on disk format support _moving_ the default subvol? this operation is critical to "upgrade" a user who has installed their system into the default subvol, as most naturally would. clean rollback systems/structures depend on the user having his system installed to an isolated subvol, NOT the default.

what sayith you?

thanks,
C Anthony

additionally, is anything like the following on a TODO list anywhere? thanks again.

Quoted 3 lines

ps. a recursive snapshotting tool could be useful too (if / and /home were both subvols, the tool would create both when / was snapped, instead of /home being an empty folder in the snapshot [BUG?]).

--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" = in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

#4 lore raw

Re: default subvolume abilities/restrictions

Quoted 7 lines · On Sat, Jun 12, 2010 at 12:24 AM, C Anthony Risinger <[email protected]>= wrote:
Quoted 5 lines · On Wed, May 19, 2010 at 9:01 AM, C Anthony Risinger <[email protected]= wrote:

..........
i need a way, programmatically and safely, to "move" the users installation from the original subvolume into an isolated subvolume
..........
or to generate a new, empty default/root subvolume and place the cur=

rent

Quoted 3 lines
Quoted 1 line

default subvol (.) _into_ it... =A0how can this be done?

can any devs out there make this happen? =A0note, what i'm looking fo=

r

Quoted 2 lines

is _not_ setting the default subvolume to be mounted, but actually moving/renaming the default (.) subvolume itself. =A0essentially, can=

we

Quoted 10 lines

get a command to do this:

# btrfs subvolume create new_root
# mv . new_root/old_root

that unsurprisingly fails with:

mv: cannot move .' to new_root/old_root': Device or resource busy

could we extend btrfs-progs tools to allow something like this? =A0do=

es

Quoted 7 lines

the on disk format support _moving_ the default subvol? =A0this operation is critical to "upgrade" a user who has installed their system into the default subvol, as most naturally would. =A0clean rollback systems/structures depend on the user having his system installed to an isolated subvol, NOT the default.

what sayith you?

i might even try to implement this myself...

can i at least get confirmation that the above is possible?

all i want to do is create a new/empty subvol, put the old top-level subvol inside it, and make the empty subvol the new root. this lets me put a users installation INTO a subvol even though they originally installed the system into the root subvol.

guidance please? chris? :-)

thanks,
C Anthony
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" = in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

#5 lore raw

Re: default subvolume abilities/restrictions

Quoted 4 lines · C Anthony Risinger
Quoted 2 lines
# btrfs subvolume create new_root
# mv . new_root/old_root

can i at least get confirmation that the above is possible?

I've had no problem with

  # btrfs subvolume snapshot . new_root
  # mkdir old_root
  # mv * old_root
  # rm -rf old_root

Make sure the 'mv' fails fo move new_root, and I'd look at the new_root before removing everything.

David

#6 lore raw

Re: default subvolume abilities/restrictions

Quoted 14 lines · David Brown
Quoted 4 lines · C Anthony Risinger
Quoted 2 lines
# btrfs subvolume create new_root
# mv . new_root/old_root

can i at least get confirmation that the above is possible?

I've had no problem with

=A0# btrfs subvolume snapshot . new_root
=A0# mkdir old_root
=A0# mv * old_root
=A0# rm -rf old_root

Quoted 4 lines

Make sure the 'mv' fails fo move new_root, and I'd look at the new_root before removing everything.

David

heh, yeah i as i was writing the last email i realized that all i really wanted was to:

# mv * new_root

for some reason i was convinced that i must snapshot the old_root (.) to new_root... and then remove the erroneous stuff from old_root (.). thus a way to "parent" the default subvol (old_root/.) seemed a better solution...

but alas, a snapshot isn't necessary. i can create an empty subvol "new_root", and then "mv * new_root".

i don't know how that escaped me :-), sorry for all the noise. however, there probably is a legitimate use case for wanting to replace the default subvolume, but this isn't it.

C Anthony
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" = in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

#7 lore raw

Re: default subvolume abilities/restrictions

Quoted 1 line · On Sat, Jun 12, 2010 at 8:06 PM, C Anthony Risinger <[email protected]> = wrote:

On Sat, Jun 12, 2010 at 7:22 PM, David Brown <[email protected]> wrote=

:

Quoted 19 lines
Quoted 14 lines · C Anthony Risinger
Quoted 5 lines
Quoted 3 lines
# btrfs subvolume create new_root
# mv . new_root/old_root

can i at least get confirmation that the above is possible?

I've had no problem with

=A0# btrfs subvolume snapshot . new_root
=A0# mkdir old_root
=A0# mv * old_root
=A0# rm -rf old_root

Quoted 4 lines

Make sure the 'mv' fails fo move new_root, and I'd look at the new_root before removing everything.

David

Quoted 8 lines

heh, yeah i as i was writing the last email i realized that all i really wanted was to:

# mv * new_root

for some reason i was convinced that i must snapshot the old_root (.) to new_root... and then remove the erroneous stuff from old_root (.). thus a way to "parent" the default subvol (old_root/.) seemed a bette=

r

Quoted 10 lines

solution...

but alas, a snapshot isn't necessary. =A0i can create an empty subvol "new_root", and then "mv * new_root".

i don't know how that escaped me :-), sorry for all the noise. however, there probably is a legitimate use case for wanting to replace the default subvolume, but this isn't it.

C Anthony

ok i take it all back, i DO need this...

i rewrote my initramfs hook to do the following operations:

# btrfs subvolume create /new_root
# mv /* /new_root

instead of what i had:

# btrfs subvolume snapshot / /new_root

and it resulted in scarily COPYING my entire system... several gigs worth... to the newly created subvolume, which took forever, and grinded on my HD for awhile. i don't know how long because i went to bed.

this is why i need a way to "parent" the default subvolume.

a snapshot is nice and quick, but it leaves / full of erroneous folders (dev/etc/usr/lib), an entire system, that will no longer be used. this space will in time become dead wasted space unless my users manually "rm -rf" themselves.

so... any input on this? how can i effectively, and efficiently, move a users installation into a dedicated subvolume, when they have already installed into the default subvolume?

i think the best way is what i originally suggested; make an empty subvolume the new top-level subvol, and place the old top-level subvol INTO it with a new name.

thoughts?

C Anthony
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" = in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

#8 lore raw

Re: default subvolume abilities/restrictions

Quoted 3 lines · On Sun, Jun 13, 2010 at 12:47 PM, C Anthony Risinger <[email protected]>= wrote:
Quoted 1 line · On Sat, Jun 12, 2010 at 8:06 PM, C Anthony Risinger <[email protected]= wrote:

On Sat, Jun 12, 2010 at 7:22 PM, David Brown <[email protected]> wrot=

e:

Quoted 17 lines
Quoted 17 lines
Quoted 17 lines · C Anthony Risinger
Quoted 5 lines
Quoted 3 lines
# btrfs subvolume create new_root
# mv . new_root/old_root

can i at least get confirmation that the above is possible?

I've had no problem with

=A0# btrfs subvolume snapshot . new_root
=A0# mkdir old_root
=A0# mv * old_root
=A0# rm -rf old_root

Make sure the 'mv' fails fo move new_root, and I'd look at the new_root before removing everything.

Quoted 8 lines
Quoted 8 lines
Quoted 1 line

David

heh, yeah i as i was writing the last email i realized that all i really wanted was to:

# mv * new_root

for some reason i was convinced that i must snapshot the old_root (.=

)

Quoted 1 line
Quoted 1 line

to new_root... and then remove the erroneous stuff from old_root (.)=

=2E

Quoted 1 line
Quoted 1 line

thus a way to "parent" the default subvol (old_root/.) seemed a bett=

er

Quoted 3 lines
Quoted 3 lines

solution...

but alas, a snapshot isn't necessary. =A0i can create an empty subvo=

l

Quoted 15 lines
Quoted 7 lines

"new_root", and then "mv * new_root".

i don't know how that escaped me :-), sorry for all the noise. however, there probably is a legitimate use case for wanting to replace the default subvolume, but this isn't it.

C Anthony

ok i take it all back, i DO need this...

i rewrote my initramfs hook to do the following operations:

# btrfs subvolume create /new_root
# mv /* /new_root
Quoted 7 lines

instead of what i had:

# btrfs subvolume snapshot / /new_root

and it resulted in scarily COPYING my entire system... several gigs worth... to the newly created subvolume, which took forever, and grinded on my HD for awhile. =A0i don't know how long because i went =

to

Quoted 10 lines

bed.

this is why i need a way to "parent" the default subvolume.

a snapshot is nice and quick, but it leaves / full of erroneous folders (dev/etc/usr/lib), an entire system, that will no longer be used. =A0this space will in time become dead wasted space unless my users manually "rm -rf" themselves.

so... any input on this? =A0how can i effectively, and efficiently, m=

ove

Quoted 5 lines

a users installation into a dedicated subvolume, when they have already installed into the default subvolume?

i think the best way is what i originally suggested; make an empty subvolume the new top-level subvol, and place the old top-level subvo=

l

Quoted 3 lines

INTO it with a new name.

thoughts?

can i get a little feedback on this problem? i choke slightly when telling users the only way to clean their old / is by rm -rf'ing everything....

i need the ability to "move" the default subvolume into a new, empty subvolume. the empty subvolume then becomes the new default.

the end result is moving the users installation into a dedicated subvolume, cleanly and efficiently, so the system can do other things with the "subroot" structure.

the way i am doing it now is snapshotting the users / to /__active... however, the side effect is an entire system worth of files that will in time become dead space.

moving the users install via "mv" into an empty subvol does not work. everything is actually copied =3D slow,slow,slow.

ideas??? how can i "parent" the default subvol with an empty subvol? this seems a legitimate operation.

thanks,
C Anthony
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" = in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

#9 lore raw

Re: default subvolume abilities/restrictions

Quoted 1 line · On Friday 18 June 2010 23:01:37 C Anthony Risinger wrote:

On Sun, Jun 13, 2010 at 12:47 PM, C Anthony Risinger <[email protected]=

e>=20

Quoted 1 line · wrote:
Quoted 1 line

On Sat, Jun 12, 2010 at 8:06 PM, C Anthony Risinger <anthony@extof.=

me>=20

Quoted 1 line · wrote:
Quoted 1 line
Quoted 1 line

On Sat, Jun 12, 2010 at 7:22 PM, David Brown <[email protected]> wr=

ote:

Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

On Sat, Jun 12, 2010 at 06:06:23PM -0500, C Anthony Risinger wrot=

e:

Quoted 16 lines
Quoted 16 lines
Quoted 16 lines
Quoted 16 lines
Quoted 4 lines
Quoted 2 lines
# btrfs subvolume create new_root
# mv . new_root/old_root

=20
can i at least get confirmation that the above is possible?

=20
I've had no problem with
=20

 # btrfs subvolume snapshot . new_root
 # mkdir old_root
 # mv * old_root
 # rm -rf old_root
=20
Make sure the 'mv' fails fo move new_root, and I'd look at the
new_root before removing everything.
=20
David
Quoted 7 lines
Quoted 7 lines
Quoted 7 lines

=20
heh, yeah i as i was writing the last email i realized that all i really wanted was to:
=20

# mv * new_root
=20
for some reason i was convinced that i must snapshot the old_root =

(.)

Quoted 1 line
Quoted 1 line
Quoted 1 line

to new_root... and then remove the erroneous stuff from old_root (=

=2E).

Quoted 1 line
Quoted 1 line
Quoted 1 line

thus a way to "parent" the default subvol (old_root/.) seemed a be=

tter

Quoted 3 lines
Quoted 3 lines
Quoted 3 lines

solution...
=20
but alas, a snapshot isn't necessary. i can create an empty subvo=

l

Quoted 7 lines
Quoted 7 lines
Quoted 7 lines

"new_root", and then "mv * new_root".
=20
i don't know how that escaped me :-), sorry for all the noise. however, there probably is a legitimate use case for wanting to replace the default subvolume, but this isn't it.
=20
C Anthony

Quoted 15 lines
Quoted 5 lines

=20
ok i take it all back, i DO need this...
=20
i rewrote my initramfs hook to do the following operations:
=20

Quoted 10 lines
# btrfs subvolume create /new_root
# mv /* /new_root
=20
instead of what i had:
=20
# btrfs subvolume snapshot / /new_root
=20
and it resulted in scarily COPYING my entire system... several gigs
worth... to the newly created subvolume, which took forever, and
grinded on my HD for awhile.  i don't know how long because i went =

to

Quoted 10 lines
Quoted 10 lines

bed.
=20
this is why i need a way to "parent" the default subvolume. =20
a snapshot is nice and quick, but it leaves / full of erroneous folders (dev/etc/usr/lib), an entire system, that will no longer be used. this space will in time become dead wasted space unless my users manually "rm -rf" themselves.
=20
so... any input on this? how can i effectively, and efficiently, m=

ove

Quoted 5 lines
Quoted 5 lines

a users installation into a dedicated subvolume, when they have already installed into the default subvolume?
=20
i think the best way is what i originally suggested; make an empty subvolume the new top-level subvol, and place the old top-level sub=

vol

Quoted 13 lines
Quoted 3 lines

INTO it with a new name.
=20
thoughts?

=20
can i get a little feedback on this problem? i choke slightly when telling users the only way to clean their old / is by rm -rf'ing everything....
=20
i need the ability to "move" the default subvolume into a new, empty subvolume. the empty subvolume then becomes the new default. =20
the end result is moving the users installation into a dedicated subvolume, cleanly and efficiently, so the system can do other things

Quoted 8 lines

with the "subroot" structure.
=20
the way i am doing it now is snapshotting the users / to /__active... however, the side effect is an entire system worth of files that will in time become dead space.
=20
moving the users install via "mv" into an empty subvol does not work. everything is actually copied =3D slow,slow,slow.

I don't have a btrfs file system on hand to actually try it, but did yo= u try=20
copying using "cp --reflink=3Dalways"?

Quoted 7 lines

=20
ideas??? how can i "parent" the default subvol with an empty subvol? this seems a legitimate operation.

=20
thanks,
C Anthony

--=20
Hubert Kario
QBS - Quality Business Software
02-656 Warszawa, ul. Ksawer=F3w 30/85
tel. +48 (22) 646-61-51, 646-74-24
www.qbs.com.pl
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" = in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

#10 lore raw

Re: default subvolume abilities/restrictions

Quoted 2 lines · Hubert Kario
Quoted 1 line · On Friday 18 June 2010 23:01:37 C Anthony Risinger wrote:

On Sun, Jun 13, 2010 at 12:47 PM, C Anthony Risinger <anthony@extof=

=2Eme>=20

Quoted 2 lines
Quoted 1 line · wrote:
Quoted 1 line

On Sat, Jun 12, 2010 at 8:06 PM, C Anthony Risinger <anthony@exto=

f.me>=20

Quoted 2 lines
Quoted 1 line · wrote:
Quoted 1 line
Quoted 1 line

On Sat, Jun 12, 2010 at 7:22 PM, David Brown <[email protected]> =

Quoted 1 line · wrote:
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

On Sat, Jun 12, 2010 at 06:06:23PM -0500, C Anthony Risinger wr=

ote:

Quoted 16 lines
Quoted 16 lines
Quoted 16 lines
Quoted 16 lines
Quoted 16 lines
Quoted 4 lines
Quoted 2 lines
# btrfs subvolume create new_root
# mv . new_root/old_root

=20
can i at least get confirmation that the above is possible?

=20
I've had no problem with
=20

 # btrfs subvolume snapshot . new_root
 # mkdir old_root
 # mv * old_root
 # rm -rf old_root
=20
Make sure the 'mv' fails fo move new_root, and I'd look at the
new_root before removing everything.
=20
David
Quoted 2 lines
Quoted 2 lines
Quoted 2 lines
Quoted 2 lines

=20
heh, yeah i as i was writing the last email i realized that all =

i

Quoted 5 lines
Quoted 5 lines
Quoted 5 lines
Quoted 5 lines

really wanted was to:
=20

# mv * new_root
=20
for some reason i was convinced that i must snapshot the old_roo=

t (.)

Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

to new_root... and then remove the erroneous stuff from old_root=

(.).

Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

thus a way to "parent" the default subvol (old_root/.) seemed a =

better

Quoted 3 lines
Quoted 3 lines
Quoted 3 lines
Quoted 3 lines

solution...
=20
but alas, a snapshot isn't necessary. i can create an empty sub=

vol

Quoted 7 lines
Quoted 7 lines
Quoted 7 lines
Quoted 7 lines

"new_root", and then "mv * new_root".
=20
i don't know how that escaped me :-), sorry for all the noise. however, there probably is a legitimate use case for wanting to replace the default subvolume, but this isn't it.
=20
C Anthony

Quoted 13 lines
Quoted 5 lines
Quoted 5 lines

=20
ok i take it all back, i DO need this...
=20
i rewrote my initramfs hook to do the following operations:
=20

Quoted 8 lines
Quoted 8 lines
# btrfs subvolume create /new_root
# mv /* /new_root
=20
instead of what i had:
=20
# btrfs subvolume snapshot / /new_root
=20
and it resulted in scarily COPYING my entire system... several gi=

gs

Quoted 2 lines
Quoted 2 lines
Quoted 2 lines

worth... to the newly created subvolume, which took forever, and grinded on my HD for awhile. i don't know how long because i wen=

t to

Quoted 6 lines
Quoted 6 lines
Quoted 6 lines

bed.
=20
this is why i need a way to "parent" the default subvolume. =20
a snapshot is nice and quick, but it leaves / full of erroneous folders (dev/etc/usr/lib), an entire system, that will no longer =

be

Quoted 4 lines
Quoted 4 lines
Quoted 4 lines

used. this space will in time become dead wasted space unless my users manually "rm -rf" themselves.
=20
so... any input on this? how can i effectively, and efficiently,=

move

Quoted 4 lines
Quoted 4 lines
Quoted 4 lines

a users installation into a dedicated subvolume, when they have already installed into the default subvolume?
=20
i think the best way is what i originally suggested; make an empt=

y

Quoted 1 line
Quoted 1 line
Quoted 1 line

subvolume the new top-level subvol, and place the old top-level s=

ubvol

Quoted 9 lines
Quoted 9 lines
Quoted 3 lines

INTO it with a new name.
=20
thoughts?

=20
can i get a little feedback on this problem? i choke slightly when telling users the only way to clean their old / is by rm -rf'ing everything....
=20
i need the ability to "move" the default subvolume into a new, empt=

y

Quoted 4 lines
Quoted 4 lines

subvolume. the empty subvolume then becomes the new default. =20
the end result is moving the users installation into a dedicated subvolume, cleanly and efficiently, so the system can do other thin=

gs

Quoted 3 lines
Quoted 3 lines

with the "subroot" structure.
=20
the way i am doing it now is snapshotting the users / to /__active.=

=2E.

Quoted 1 line
Quoted 1 line

however, the side effect is an entire system worth of files that wi=

ll

Quoted 3 lines
Quoted 3 lines

in time become dead space.
=20
moving the users install via "mv" into an empty subvol does not wor=

k.

Quoted 3 lines
Quoted 1 line

everything is actually copied =3D slow,slow,slow.

=20
I don't have a btrfs file system on hand to actually try it, but did =

you try=20

Quoted 1 line

copying using "cp --reflink=3Dalways"?

This should work for the files but not for the directories.

The real problem is that the "." (default) subvolume is a special case=20 subvolume. It is difficult to drop because all subvolumes depend by its= =2E

The 'mv' command permits to move the subvolumes between subvolumes, but=
if you=20
want to be capable to move all subvolumes, the "." (default) subvolumes=
has to=20
be mounted.

It was created the "set-default" command to change the "default" subvol= ume.=20
But it didn't solve all the problem.

I am not an expert of the internal of btrfs, but I am still convinced t= hat the=20
subvolumes have to live in a different name-space, and them have to be = mounted=20
_only_ by "mount -o subvol=3D<name>...".

IMHO for now the best thing to do, is always create the root filesystem=
in a=20
non-default subvolume, and use the "." (default) subvolume _only_ to ma= nage=20
the subvolumes.

To move the default subvolume, the best thing to do it is to clone and = then=20
remove the original file.

Quoted 3 lines

=20

Quoted 2 lines

=20
ideas??? how can i "parent" the default subvol with an empty subvo=

l?

Quoted 9 lines
Quoted 1 line

this seems a legitimate operation.

=20

Quoted 3 lines

=20
thanks,
C Anthony

=20

Quoted 8 lines

--=20
Hubert Kario
QBS - Quality Business Software
02-656 Warszawa, ul. Ksawer=F3w 30/85
tel. +48 (22) 646-61-51, 646-74-24
www.qbs.com.pl
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs=

" in

Quoted 3 lines

the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
=20

--=20
gpg key@ keyserver.linux.it: Goffredo Baroncelli (ghigo) <kreijackATinw= ind.it>
Key fingerprint =3D 4769 7E51 5293 D36C 814E C054 BF04 F161 3DC5 0512 --
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" = in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html