[PATCH] nbd: show nbd client pid in sysfs

From: Paul Clements
Date: Tue Dec 05 2006 - 21:13:52 EST


This simple patch allows nbd to expose the nbd-client daemon's PID in /sys/block/nbd<x>/pid. This is helpful for tracking connection status of a device and for determining which nbd devices are currently in use.

Tested against 2.6.19.

Thanks,
Paul
--- ./drivers/block/nbd.c Wed Nov 29 16:57:37 2006
+++ ./drivers/block/nbd.c Tue Nov 28 16:09:31 2006
@@ -355,14 +389,30 @@ harderror:
return NULL;
}

+static ssize_t pid_show(struct gendisk *disk, char *page)
+{
+ return sprintf(page, "%ld\n",
+ (long) ((struct nbd_device *)disk->private_data)->pid);
+}
+
+static struct disk_attribute pid_attr = {
+ .attr = { .name = "pid", .mode = S_IRUGO },
+ .show = pid_show,
+};
+
static void nbd_do_it(struct nbd_device *lo)
{
struct request *req;

BUG_ON(lo->magic != LO_MAGIC);

+ lo->pid = current->pid;
+ sysfs_create_file(&lo->disk->kobj, &pid_attr.attr);
+
while ((req = nbd_read_stat(lo)) != NULL)
nbd_end_request(req);
+
+ sysfs_remove_file(&lo->disk->kobj, &pid_attr.attr);
return;
}

--- ./include/linux/nbd.h Wed Nov 29 16:57:37 2006
+++ ./include/linux/nbd.h Mon Dec 4 23:28:30 2006
@@ -64,6 +64,7 @@ struct nbd_device {
struct gendisk *disk;
int blksize;
u64 bytesize;
+ pid_t pid; /* pid of nbd-client, if attached */
};

#endif