From 92650778d437fb309b170c175f0c83099555dde2 Mon Sep 17 00:00:00 2001 From: Paul Clements Date: Wed, 6 Dec 2006 20:40:53 -0800 Subject: [PATCH] --- yaml --- r: 42966 b: refs/heads/master c: 6b39bb6548d60b9a18826134b5ccd5c3cef85fe2 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/block/nbd.c | 16 ++++++++++++++++ trunk/include/linux/nbd.h | 1 + 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 819111cef5a5..d78d51dcff9f 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 792908225064b1d841a8990b9d1d1cfc4e0e5bb2 +refs/heads/master: 6b39bb6548d60b9a18826134b5ccd5c3cef85fe2 diff --git a/trunk/drivers/block/nbd.c b/trunk/drivers/block/nbd.c index 9d1035e8d9d8..7bf2cfbd6285 100644 --- a/trunk/drivers/block/nbd.c +++ b/trunk/drivers/block/nbd.c @@ -355,14 +355,30 @@ static struct request *nbd_read_stat(struct nbd_device *lo) 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; } diff --git a/trunk/include/linux/nbd.h b/trunk/include/linux/nbd.h index d6b6dc09ad97..0f3e69302540 100644 --- a/trunk/include/linux/nbd.h +++ b/trunk/include/linux/nbd.h @@ -64,6 +64,7 @@ struct nbd_device { struct gendisk *disk; int blksize; u64 bytesize; + pid_t pid; /* pid of nbd-client, if attached */ }; #endif