All of lore.kernel.org
 help / color / mirror / Atom feed
From: Goffredo Baroncelli <kreijack@gmail.com>
To: linux-btrfs@vger.kernel.org
Subject: [PATCH] Improve the btrfsctl help
Date: Sun, 13 Dec 2009 19:50:03 +0100	[thread overview]
Message-ID: <200912131950.09622.kreijack@libero.it> (raw)
In-Reply-To: <200912131239.06192.kreijack@libero.it>

[-- Attachment #1: Type: Text/Plain, Size: 7586 bytes --]

Hi all,

another update:
- improved the help 
- better check of the number of the parameter
- added useful info about the '-r' command
- update the man page also

comments are welcome.

BR
Goffredo


--
diff --git a/btrfsctl.c b/btrfsctl.c
index 66c4e89..dd0de48 100644
--- a/btrfsctl.c
+++ b/btrfsctl.c
@@ -45,17 +45,21 @@ static inline int ioctl(int fd, int define, void *arg) { return 0; }
 
 static void print_usage(void)
 {
-	printf("usage: btrfsctl [ -d file|dir] [ -s snap_name subvol|tree ]\n");
-	printf("                [-r size] [-A device] [-a] [-c] [-D dir .]\n");
-	printf("\t-d filename: defragments one file\n");
-	printf("\t-d directory: defragments the entire Btree\n");
-	printf("\t-s snap_name dir: creates a new snapshot of dir\n");
-	printf("\t-S subvol_name dir: creates a new subvolume\n");
-	printf("\t-r [+-]size[gkm]: resize the FS by size amount\n");
-	printf("\t-A device: scans the device file for a Btrfs filesystem\n");
-	printf("\t-a: scans all devices for Btrfs filesystems\n");
-	printf("\t-c: forces a single FS sync\n");
-	printf("\t-D: delete snapshot\n");
+	printf("usage: btrfsctl [-d file|directory] [-s snap_name subvol]\n");
+	printf("                [-S vol_name directory] [-a] [-r size tree]\n");
+	printf("                [-A device] [-c tree] [-D name directory]\n");
+	printf("\t-d filename: defragments one file.\n");
+	printf("\t-d directory: defragments the entire Btree.\n");
+	printf("\t-s snap_name subvol: creates a new snapshot of subvol.\n");
+	printf("\t-S subvol_name directory: creates a new subvolume in directory.\n");
+	printf("\t-a: scans all devices for Btrfs filesystems.\n");
+	printf("\t-r [revid:][+-]size[kmg] tree\n");
+	printf("\t               resize the FS by size amount (pass 'max'\n");
+	printf("\t               to resize up to device size).'revid' is\n");
+	printf("\t               the device-id to resize: default is 1.\n");
+	printf("\t-A device: scans the device file for a Btrfs filesystem.\n");
+	printf("\t-c tree: forces a single FS sync.\n");
+	printf("\t-D name directory: delete a snapshot or subvolume in directory.\n");
 	printf("%s\n", BTRFS_BUILD_VERSION);
 	exit(1);
 }
@@ -110,7 +114,7 @@ int main(int ac, char **av)
 	for (i = 1; i < ac; i++) {
 		if (strcmp(av[i], "-s") == 0) {
 			if (i + 1 >= ac - 1) {
-				fprintf(stderr, "-s requires an arg");
+				fprintf(stderr, "-s requires two args\n");
 				print_usage();
 			}
 			fullpath = av[i + 1];
@@ -137,14 +141,14 @@ int main(int ac, char **av)
 			command = BTRFS_IOC_SNAP_CREATE;
 		} else if (strcmp(av[i], "-S") == 0) {
 			if (i + 1 >= ac - 1) {
-				fprintf(stderr, "-S requires an arg");
+				fprintf(stderr, "-S requires two args\n");
 				print_usage();
 			}
 			name = av[i + 1];
 			len = strlen(name);
 			if (len == 0 || len >= BTRFS_VOL_NAME_MAX) {
 				fprintf(stderr,
-				     "snapshot name zero length or too long\n");
+				     "volume name zero length or too long\n");
 				exit(1);
 			}
 			if (strchr(name, '/')) {
@@ -160,15 +164,16 @@ int main(int ac, char **av)
 			}
 			command = BTRFS_IOC_DEFRAG;
 		} else if (strcmp(av[i], "-D") == 0) {
-			if (i >= ac - 1) {
-				fprintf(stderr, "-D requires an arg\n");
+			if (i + 1 >= ac - 1) {
+				fprintf(stderr, "-D requires two args\n");
 				print_usage();
 			}
 			command = BTRFS_IOC_SNAP_DESTROY;
 			name = av[i + 1];
 			len = strlen(name);
 			if (len == 0 || len >= BTRFS_VOL_NAME_MAX) {
-				fprintf(stderr, "-D size too long\n");
+				fprintf(stderr,
+				      "volume name zero length or too long\n");
 				exit(1);
 			}
 		} else if (strcmp(av[i], "-A") == 0) {
@@ -178,18 +183,23 @@ int main(int ac, char **av)
 			}
 			command = BTRFS_IOC_SCAN_DEV;
 		} else if (strcmp(av[i], "-r") == 0) {
-			if (i >= ac - 1) {
-				fprintf(stderr, "-r requires an arg\n");
+			if (i+1 >= ac - 1) {
+				fprintf(stderr, "-r requires two args\n");
 				print_usage();
 			}
 			name = av[i + 1];
 			len = strlen(name);
 			if (len == 0 || len >= BTRFS_VOL_NAME_MAX) {
-				fprintf(stderr, "-r size too long\n");
+				fprintf(stderr,
+				     "-r argument zero length or too long\n");
 				exit(1);
 			}
 			command = BTRFS_IOC_RESIZE;
 		} else if (strcmp(av[i], "-c") == 0) {
+			if (i >= ac - 1) {
+				fprintf(stderr, "-c requires an arg\n");
+				print_usage();
+			}
 			command = BTRFS_IOC_SYNC;
 		}
 	}
diff --git a/man/btrfsctl.8.in b/man/btrfsctl.8.in
index c2d4488..b645429 100644
--- a/man/btrfsctl.8.in
+++ b/man/btrfsctl.8.in
@@ -4,12 +4,13 @@ btrfsctl \- control a btrfs filesystem
 .SH SYNOPSIS
 .B btrfsctl
 [ \fB\-d\fP\fI file|directory \fP ]
-[ \fB\-s\fP\fI snapshot-name directory\fP ]
+[ \fB\-s\fP\fI snapshot-name subvolume\fP ]
 [ \fB \-S\fP\fI subvolume-name directory\fP ]
-[ \fB \-r\fP\fI [+-]size\fP ]
+[ \fB \-r\fP\fI [devid:][+-]size[kmg]\fP tree]
 [ \fB \-A\fP\fI device\fP ]
 [ \fB \-a\fP ]
-[ \fB \-c\fP ]
+[ \fB \-c\fP tree]
+[ \fB \-D\fP\fI subvolume-name directory\fP ]
 .SH DESCRIPTION
 .B btrfsctl
 is used to control the filesystem and the files and directories stored. It is the tool to 
create a new snapshot for the filesystem.
@@ -18,14 +19,21 @@ is used to control the filesystem and the files and directories stored. 
It is th
 \fB\-d\fR \fIfile|directory\fR
 Defragment a file or a directory. If the argument is a directory, the entire b-tree under 
the directory is defragged.
 .TP
-\fB\-s\fR \fIsnapshot-name directory\fR
-Creates a new \fIsnapshot\fP of the \fIdirectory\fP specified.
+\fB\-s\fR \fIsnapshot-name subvolume\fR
+Creates a new \fIsnapshot\fP of the \fIsubvolume\fP specified. In the
+\fIsnapshot-name\fP may be specify the path where the snapshot will be placed.
+\fIsubvolume\fP may be specified with any file or directory of the subvolume.
 .TP
 \fB\-S\fR \fIsubvolume-name directory\fR
-Creates a new subvolume.
+Creates a new \fIsubvolume\fP in the \fIdirectory\fP specified.
 .TP
-\fB\-r\fR \fI[+|-]size\fR
-Resizes the filesystem with the \fIsize\fP specified. If the value is preceded with a 
signed symbol, the filesystem is resized with respect to the current filesystem size. 
\fIsize\fP can be suffixed by k,m or g to represent kilobytes, megabytes, or gigabytes 
respectively.
+\fB\-r\fR \fI[devid:][+|-]size[kmg] tree\fR
+Resizes the filesystem with the \fIsize\fP specified. If the value is preceded
+with a signed symbol, the filesystem is resized with respect to the current
+filesystem size. \fIsize\fP can be suffixed by k,m or g to represent kilobytes,
+megabytes, or gigabytes respectively. For a multi-device filesystem the
+\fIdevid\fP parameter specify which device has to be resize (default 1).
+\fItree\fP may be any element of the filesystem involved.
 .TP
 \fB\-A\fR \fIdevice\fR
 Scans the \fIdevice\fR for btrfs filesystem.
@@ -33,8 +41,12 @@ Scans the \fIdevice\fR for btrfs filesystem.
 \fB\-a\fR
 Scans all devices present in the system for btrfs filesystem.
 .TP
-\fB\-c\fR
-Forces a filesystem sync.
+\fB\-c\fR \fItree\fR
+Forces a filesystem sync. \fItree\fP may be any element of the filesystem
+involved.
+.TP
+\fB\-D\fR \fIsubvolume-name directory\fR
+Delete a subvolume in the directory specified.
 .SH AVAILABILITY
 .B btrfsctl
 is part of btrfs-progs. Btrfs is currently under heavy development,

-- 
gpg key@ keyserver.linux.it: Goffredo Baroncelli (ghigo) <kreijackATinwind.it>
Key fingerprint = 4769 7E51 5293 D36C 814E  C054 BF04 F161 3DC5 0512

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

      reply	other threads:[~2009-12-13 18:50 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-12-12 15:39 [PATCH][TRIVIAL] Improve the btrfsctl help Goffredo Baroncelli
2009-12-13  8:05 ` sniper
2009-12-13 11:38   ` Goffredo Baroncelli
2009-12-13 18:50     ` Goffredo Baroncelli [this message]

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=200912131950.09622.kreijack@libero.it \
    --to=kreijack@gmail.com \
    --cc=linux-btrfs@vger.kernel.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.