fs: btrfs: fix btrfs methods return values on failure
authorMarek Behún <marek.behun@nic.cz>
Thu, 2 May 2019 13:28:43 +0000 (15:28 +0200)
committerTom Rini <trini@konsulko.com>
Fri, 3 May 2019 11:30:31 +0000 (07:30 -0400)
The btrfs implementation methods .ls(), .size() and .read() returns 1 on
failure, but the command handlers expect values <0 on failure.

For example if given a nonexistent path, the load command currently
returns success, and hush scripting does not work.

Fix this by setting return values of these methods to -1 instead of 1 on
failure.

Signed-off-by: Marek Behún <marek.behun@nic.cz>
fs/btrfs/btrfs.c

index 6f35854823efbec0f2a1d97cf06e7420d88e3c23..cb7e18274221463528149ea9ad4c7569e2c21031 100644 (file)
@@ -119,17 +119,17 @@ int btrfs_ls(const char *path)
 
        if (inr == -1ULL) {
                printf("Cannot lookup path %s\n", path);
-               return 1;
+               return -1;
        }
 
        if (type != BTRFS_FT_DIR) {
                printf("Not a directory: %s\n", path);
-               return 1;
+               return -1;
        }
 
        if (btrfs_readdir(&root, inr, readdir_callback)) {
                printf("An error occured while listing directory %s\n", path);
-               return 1;
+               return -1;
        }
 
        return 0;
@@ -158,12 +158,12 @@ int btrfs_size(const char *file, loff_t *size)
 
        if (inr == -1ULL) {
                printf("Cannot lookup file %s\n", file);
-               return 1;
+               return -1;
        }
 
        if (type != BTRFS_FT_REG_FILE) {
                printf("Not a regular file: %s\n", file);
-               return 1;
+               return -1;
        }
 
        *size = inode.size;
@@ -183,12 +183,12 @@ int btrfs_read(const char *file, void *buf, loff_t offset, loff_t len,
 
        if (inr == -1ULL) {
                printf("Cannot lookup file %s\n", file);
-               return 1;
+               return -1;
        }
 
        if (type != BTRFS_FT_REG_FILE) {
                printf("Not a regular file: %s\n", file);
-               return 1;
+               return -1;
        }
 
        if (!len)
@@ -200,7 +200,7 @@ int btrfs_read(const char *file, void *buf, loff_t offset, loff_t len,
        rd = btrfs_file_read(&root, inr, offset, len, buf);
        if (rd == -1ULL) {
                printf("An error occured while reading file %s\n", file);
-               return 1;
+               return -1;
        }
 
        *actread = rd;