Calling btrfsctl results in this message when module btrfs.ko is not loaded: root@asus:/root# btrfsctl -A /dev/sda ioctl:: Bad file descriptor An strace shows that actually opening of /dev/btrfs-control failed. open("/dev/btrfs-control", O_RDWR) = -1 ENOENT (No such file or directory) ioctl(4294967295, 0x50009404, 0x7fff11fb76b0) = -1 EBADF (Bad file descriptor) The attached patch (against btrfsctl 0.18) terminates btrfsctl if /dev/btrfs-control cannot be opened. The output with applied patch: root@asus:/root# btrfsctl -A /dev/sda failed to open /dev/btrfs-control Regards, Peter.
On Sun, 2009-01-18 at 14:40 +0100, Peter Klotz wrote:> Calling btrfsctl results in this message when module btrfs.ko is not loaded: > > root@asus:/root# btrfsctl -A /dev/sda > ioctl:: Bad file descriptor..> The output with applied patch: > > root@asus:/root# btrfsctl -A /dev/sda > failed to open /dev/btrfs-controlIt would probably be better to use perror() instead of fprintf, in order to give the actual error message. I often find it useful to know why the device failed to open - is it missing, permission issues? I''ve updated the patch: diff --git a/btrfsctl.c b/btrfsctl.c index e049799..df1a165 100644 --- a/btrfsctl.c +++ b/btrfsctl.c @@ -189,6 +189,10 @@ int main(int ac, char **av) if (command == BTRFS_IOC_SCAN_DEV) { fd = open("/dev/btrfs-control", O_RDWR); + if (fd < 0) { + perror("failed to open /dev/btrfs-control"); + exit(1); + } name = fname; } else { fd = open_file_or_dir(fname); -- Calvin Walton <calvin.walton@gmail.com> -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Sun, 2009-01-18 at 09:12 -0500, Calvin Walton wrote:> On Sun, 2009-01-18 at 14:40 +0100, Peter Klotz wrote: > > Calling btrfsctl results in this message when module btrfs.ko is not loaded: > > > > root@asus:/root# btrfsctl -A /dev/sda > > ioctl:: Bad file descriptor > .. > > The output with applied patch: > > > > root@asus:/root# btrfsctl -A /dev/sda > > failed to open /dev/btrfs-control > > It would probably be better to use perror() instead of fprintf, in order > to give the actual error message. I often find it useful to know why the > device failed to open - is it missing, permission issues? I''ve updated > the patch: >Thanks -chris -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html