@@ -33,6 +33,7 @@
#include "commands.h"
#include "btrfs-list.h"
#include "utils.h"
+#include "btrfslabel.h"
static const char * const subvolume_cmd_group_usage[] = {
"btrfs subvolume <command> <args>",
@@ -700,6 +701,41 @@ static int cmd_find_new(int argc, char **argv)
return 0;
}
+static const char * const cmd_subvol_label_usage[] = {
+ "btrfs subvolume label <path> [label]",
+ "Show or set label for the subvol or snapshot",
+ NULL
+};
+
+static int cmd_subvol_label(int argc, char **argv)
+{
+ struct stat st;
+ char label[BTRFS_SUBVOL_LABEL_SIZE+1];
+ int ret;
+
+ if (check_argc_min(argc, 2) || check_argc_max(argc, 3))
+ usage(cmd_subvol_label_usage);
+
+ if (stat(argv[1], &st) < 0) {
+ fprintf(stderr, "Error: %s\n",strerror(errno));
+ return -errno;
+ }
+ if (!S_ISDIR(st.st_mode)) {
+ fprintf(stderr, "Error: Not a dir\n");
+ return -1;
+ }
+ if (argc > 2)
+ return set_subvol_label(argv[1], argv[2]);
+ else {
+ ret = get_subvol_label(argv[1], label);
+ if (ret)
+ return ret;
+ label[BTRFS_SUBVOL_LABEL_SIZE]=0;
+ printf("%s\n",label);
+ }
+ return 0;
+}
+
const struct cmd_group subvolume_cmd_group = {
subvolume_cmd_group_usage, NULL, {
{ "create", cmd_subvol_create, cmd_subvol_create_usage, NULL, 0 },
@@ -711,6 +747,7 @@ const struct cmd_group subvolume_cmd_group = {
{ "set-default", cmd_subvol_set_default,
cmd_subvol_set_default_usage, NULL, 0 },
{ "find-new", cmd_find_new, cmd_find_new_usage, NULL, 0 },
+ { "label", cmd_subvol_label, cmd_subvol_label_usage, NULL, 0 },
{ 0, 0, 0, 0, 0 }
}
};
@@ -17,6 +17,8 @@ btrfs \- control a btrfs filesystem
.PP
\fBbtrfs\fP \fBsubvolume get-default\fP\fI <path>\fP
.PP
+\fBbtrfs\fP \fBsubvolume label\fP\fI <path> [label]\fP
+.PP
\fBbtrfs\fP \fBfilesystem defragment\fP -c[zlib|lzo] [-l \fIlen\fR] \
[-s \fIstart\fR] [-t \fIsize\fR] -[vf] <\fIfile\fR>|<\fIdir\fR> \
[<\fIfile\fR>|<\fIdir\fR>...]
@@ -160,6 +162,10 @@ Get the default subvolume of the filesystem \fI<path>\fR. The output format
is similar to \fBsubvolume list\fR command.
.TP
+\fBsubvolume label\fR\fI <path> [label]\fR
+Show or set \fI[label]\fR for the subvolume or the snapshot \fI<path>\fR.
+.TP
+
\fBfilesystem defragment\fP -c[zlib|lzo] [-l \fIlen\fR] [-s \fIstart\fR] \
[-t \fIsize\fR] -[vf] <\fIfile\fR>|<\fIdir\fR> [<\fIfile\fR>|<\fIdir\fR>...]