Fix for device name detection
authorJean Wolter <jean@sec.t-labs.tu-berlin.de>
Wed, 2 May 2012 14:46:34 +0000 (16:46 +0200)
committerWouter Verhelst <w@uter.be>
Wed, 2 May 2012 14:46:34 +0000 (16:46 +0200)
Our nbd devices end up in /dev/block/nbd*. check_conn() tries to
derive the path to the pid file under /sys/block/<nbd device>/pid by
stripping a leading /dev/ path prefix. In our case it ends up with
/sys/block/block/<nbd device>/pid and is unable to locate the pid file.
The attached patch nbd-client-devname.patch uses

        if( (p=strrchr(devname, '/')) ) {
                devname=p+1;
        }

to derive the name of the device.

nbd-client.c

index 6b25086d30e8ab5b16fee1e4a23ab9a7083843ca..c69ea2cfa5fa570aa9d83c994fbf7740992a4cc5 100644 (file)
@@ -52,8 +52,8 @@ int check_conn(char* devname, int do_print) {
        int fd;
        int len;
 
-       if(!strncmp(devname, "/dev/", 5)) {
-               devname+=5;
+       if( (p=strrchr(devname, '/')) ) {
+               devname=p+1;
        }
        if((p=strchr(devname, 'p'))) {
                /* We can't do checks on partitions. */