@@ -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;
}
}
@@ -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