Btrfs-progs: bugfix for scrubbing single devices
authorArne Jansen <sensille@gmx.net>
Tue, 29 Nov 2011 07:40:28 +0000 (08:40 +0100)
committerDavid Sterba <dsterba@suse.cz>
Fri, 18 Jan 2013 17:26:27 +0000 (18:26 +0100)
Scrub can be invoked to scrub only a single device of a (mounted) filesystem.
The code determines whether the given path is a mountpoint of a filesystem
by issueing a btrfs-specific ioctl to it. Only in case of EINVAL it assumed
it may be a device, all other errnos just caused it fail, but some devices
(correctly) return ENOTTY. This patch adds this to the error check.

Signed-off-by: Arne Jansen <sensille@gmx.net>
cmds-scrub.c

index b864b2b..b188996 100644 (file)
@@ -1002,7 +1002,7 @@ static int scrub_fs_info(char *path,
        }
 
        ret = ioctl(fd, BTRFS_IOC_FS_INFO, fi_args);
-       if (ret && errno == EINVAL) {
+       if (ret && (errno == EINVAL || errno == ENOTTY)) {
                /* path is no mounted btrfs. try if it's a device */
                ret = check_mounted_where(fd, path, mp, sizeof(mp),
                                                &fs_devices_mnt);