btrfs-progs: allow "no" to disable compression for convenience
authorSatoru Takeuchi <satoru.takeuchi@gmail.com>
Sat, 14 Oct 2017 12:54:54 +0000 (21:54 +0900)
committerDavid Sterba <dsterba@suse.com>
Tue, 14 Nov 2017 14:59:00 +0000 (15:59 +0100)
It's messy to use "" to disable compression. Introduce the new value "no"
which can also be used for this purpose.

Signed-off-by: Satoru Takeuchi <satoru.takeuchi@gmail.com>
[ coding style fixes ]
Signed-off-by: David Sterba <dsterba@suse.com>
Documentation/btrfs-property.asciidoc
props.c

index 7ed6a7d..97b90d6 100644 (file)
@@ -43,7 +43,7 @@ read-only flag of subvolume: true or false
 label::::
 label of device
 compression::::
-compression setting for an inode: lzo, zlib, zstd, or "" (empty string)
+compression setting for an inode: lzo, zlib, zstd, no, or "" (empty string). Both no and "" are for disabling compression.
 
 *list* [-t <type>] <object>::
 Lists available properties with their descriptions for the given object.
diff --git a/props.c b/props.c
index a7e3e96..94b43b4 100644 (file)
--- a/props.c
+++ b/props.c
@@ -142,10 +142,13 @@ static int prop_compression(enum prop_object_type type,
        memcpy(xattr_name + XATTR_BTRFS_PREFIX_LEN, name, strlen(name));
        xattr_name[XATTR_BTRFS_PREFIX_LEN + strlen(name)] = '\0';
 
-       if (value)
+       if (value) {
+               if (strcmp(value, "no") == 0)
+                       value = "";
                sret = fsetxattr(fd, xattr_name, value, strlen(value), 0);
-       else
+       } else {
                sret = fgetxattr(fd, xattr_name, NULL, 0);
+       }
        if (sret < 0) {
                ret = -errno;
                if (ret != -ENOATTR)