From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Mason Subject: Re: [PATCH 0/2 V2] btrfs: a new tool to manage a btrfs filesystem Date: Thu, 18 Feb 2010 11:58:41 -0500 Message-ID: <20100218165841.GO10559@think> References: <201002172102.17816.kreijack@libero.it> <93cdabd21002171535w55ad862fpd5ea845117cdcb85@mail.gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Cc: Goffredo Baroncelli , linux-btrfs@vger.kernel.org, Thomas Kupper , "Dipl.-Ing. Michael Niederle" , rk To: Mike Fedyk Return-path: In-Reply-To: <93cdabd21002171535w55ad862fpd5ea845117cdcb85@mail.gmail.com> List-ID: I do like the subcommand method, more details below. On Wed, Feb 17, 2010 at 03:35:26PM -0800, Mike Fedyk wrote: > I think he need some command hierarchy here. >=20 > On Wed, Feb 17, 2010 at 12:02 PM, Goffredo Baroncelli > wrote: > > OPTIONS > > =C2=A0 =C2=A0 =C2=A0 snapshot|-s [/] > > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Create a writeble s= napshot of the subvolume =C2=A0 =C2=A0with =C2=A0the > > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0name =C2=A0 =C2= =A0in the directory. If is not a sub=E2=80=90 > > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0volume, btrfs retur= ns an error. >=20 > This should be "btrfs subvolume snapshot [/]". > It only works on subvolumes. If we can type subvol instead of subvolume I like it. Basically the perl/python arg parsing system where any short form of the command that uniquely matches it is allowed. We keep the long forms but allow the user to pick a shorter form if it isn't ambiguous. >=20 > > > > > > =C2=A0 =C2=A0 =C2=A0 delete|-D > > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Delete the subvolum= e . If is not =C2=A0a =C2=A0sub=E2=80=90 > > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0volume, btrfs retur= ns an error. > > >=20 > This becomes: >=20 > btrfs subvolume delete subvol del (same as above). >=20 > This works with snapshots as well. >=20 > > > > =C2=A0 =C2=A0 =C2=A0 subvolume|-c [/] > > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Create =C2=A0a =C2=A0= subvolume =C2=A0in =C2=A0 (or in the current directory if > > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 is not passe= d). >=20 > btrfs subvolume create [/] >=20 > > > > > > =C2=A0 =C2=A0 =C2=A0 defrag|-f | [|...] > > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Defragment files an= d/or directories. >=20 > This will defrag individual files? Does it defrag a directory tree? > Does it defrag a subvolume? Does it defrag a pool? =46or now lets change this to only do files. That's the only thing the tool supports today. >=20 > > > > > > =C2=A0 =C2=A0 =C2=A0 scan|-n [ [..]] > > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Scan devices for a = btrfs filesystem. If no devices =C2=A0are =C2=A0passed, > > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0btrfs scans all the= block devices. >=20 > btrfs pool scan [ [..]] Instead of btrfs pool, please use btrfs dev >=20 > > > > > > =C2=A0 =C2=A0 =C2=A0 fssync|-y > > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Force a sync for th= e filesystem identified by . > > >=20 > Does it sync a pool or subvolume? Assuming it works against > subvolumes, it would be: >=20 > btrfs subvolume sync >=20 > > > > > > =C2=A0 =C2=A0 =C2=A0 resize|-z [+/-][gkm]|max > > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Resize a file syste= m identified by . =C2=A0The parameter > > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0specifies the new s= ize of the filesystem. =C2=A0If the prefix + or =C2=A0- > > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0is =C2=A0present =C2= =A0the =C2=A0size is increased or decreased by the quantity > > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0. =C2=A0If no= units are =C2=A0specified, =C2=A0the =C2=A0unit =C2=A0of =C2=A0the =C2= =A0 > > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0parameter =C2=A0is = =C2=A0the =C2=A0byte. =C2=A0Optionally, the size parameter may be > > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0suffixed by one of = the following =C2=A0the =C2=A0units =C2=A0designators: =C2=A0'K', > > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0'M', or 'G', kiloby= tes, megabytes, or gigabytes, respectively. > > > > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0If =C2=A0'max' =C2=A0= is =C2=A0passed, =C2=A0the filesystem will occupy all available > > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0space on the volume= (s). > > > > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0The resize command = does not manipulate the =C2=A0size =C2=A0of =C2=A0underlying > > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0partitions. =C2=A0 = If =C2=A0you =C2=A0wish =C2=A0to enlarge/reduce a filesystem, you > > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0must make sure you = can expand/reduce the size of =C2=A0the =C2=A0partition > > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0also. > > >=20 > This works with physical devices, not a pool or subvolume. I get the > name "physical volume" from lvm. Also I think it should resize to ma= x > without arguments, in order to do that, the size argument would need > to be the last argument. We don't have physical volumes and logical volumes the way lvm does, so I'd like to avoid the pvolume theme. >=20 > It becomes: >=20 > btrfs pvolume resize [+/-][gkm]|max >=20 > Or: >=20 > btrfs pvolume resize [[+/-][gkm]] btrfs dev resize >=20 > > > > =C2=A0 =C2=A0 =C2=A0 show|-l [|