# HG changeset patch
# User Jake Wires <jwires@xxxxxxxxxxxxx>
# Date 1168397804 28800
# Node ID e66f047bc97e9121bdbd873f61feb37da469c2ba
# Parent b61be7771104597b14a991f852799d0bc3d8e1b4
[BLKTAP/BLKBACK] name blktap/blkback kernel threads as "domid.virtual_devname"
Signed-off-by: Jake Wires <jwires@xxxxxxxxxxxxx>
---
linux-2.6-xen-sparse/drivers/xen/blkback/xenbus.c | 32 +++++++++++++++++++---
linux-2.6-xen-sparse/drivers/xen/blktap/xenbus.c | 32 +++++++++++++++++++---
2 files changed, 56 insertions(+), 8 deletions(-)
diff -r b61be7771104 -r e66f047bc97e
linux-2.6-xen-sparse/drivers/xen/blkback/xenbus.c
--- a/linux-2.6-xen-sparse/drivers/xen/blkback/xenbus.c Wed Jan 10 17:56:54
2007 +0000
+++ b/linux-2.6-xen-sparse/drivers/xen/blkback/xenbus.c Tue Jan 09 18:56:44
2007 -0800
@@ -42,9 +42,30 @@ static void backend_changed(struct xenbu
static void backend_changed(struct xenbus_watch *, const char **,
unsigned int);
+static int blkback_name(blkif_t *blkif, char *buf)
+{
+ char *devpath, *devname;
+ struct xenbus_device *dev = blkif->be->dev;
+
+ devpath = xenbus_read(XBT_NIL, dev->nodename, "dev", NULL);
+ if (IS_ERR(devpath))
+ return PTR_ERR(devpath);
+
+ if ((devname = strstr(devpath, "/dev/")) != NULL)
+ devname += strlen("/dev/");
+ else
+ devname = devpath;
+
+ snprintf(buf, TASK_COMM_LEN, "blkback.%d.%s", blkif->domid, devname);
+ kfree(devpath);
+
+ return 0;
+}
+
static void update_blkif_status(blkif_t *blkif)
{
int err;
+ char name[TASK_COMM_LEN];
/* Not ready to connect? */
if (!blkif->irq || !blkif->vbd.bdev)
@@ -59,10 +80,13 @@ static void update_blkif_status(blkif_t
if (blkif->be->dev->state != XenbusStateConnected)
return;
- blkif->xenblkd = kthread_run(blkif_schedule, blkif,
- "xvd %d %02x:%02x",
- blkif->domid,
- blkif->be->major, blkif->be->minor);
+ err = blkback_name(blkif, name);
+ if (err) {
+ xenbus_dev_error(blkif->be->dev, err, "get blkback dev name");
+ return;
+ }
+
+ blkif->xenblkd = kthread_run(blkif_schedule, blkif, name);
if (IS_ERR(blkif->xenblkd)) {
err = PTR_ERR(blkif->xenblkd);
blkif->xenblkd = NULL;
diff -r b61be7771104 -r e66f047bc97e
linux-2.6-xen-sparse/drivers/xen/blktap/xenbus.c
--- a/linux-2.6-xen-sparse/drivers/xen/blktap/xenbus.c Wed Jan 10 17:56:54
2007 +0000
+++ b/linux-2.6-xen-sparse/drivers/xen/blktap/xenbus.c Tue Jan 09 18:56:44
2007 -0800
@@ -92,9 +92,30 @@ static long get_id(const char *str)
return simple_strtol(num, NULL, 10);
}
+static int blktap_name(blkif_t *blkif, char *buf)
+{
+ char *devpath, *devname;
+ struct xenbus_device *dev = blkif->be->dev;
+
+ devpath = xenbus_read(XBT_NIL, dev->nodename, "dev", NULL);
+ if (IS_ERR(devpath))
+ return PTR_ERR(devpath);
+
+ if ((devname = strstr(devpath, "/dev/")) != NULL)
+ devname += strlen("/dev/");
+ else
+ devname = devpath;
+
+ snprintf(buf, TASK_COMM_LEN, "blktap.%d.%s", blkif->domid, devname);
+ kfree(devpath);
+
+ return 0;
+}
+
static void tap_update_blkif_status(blkif_t *blkif)
{
int err;
+ char name[TASK_COMM_LEN];
/* Not ready to connect? */
if(!blkif->irq || !blkif->sectors) {
@@ -110,10 +131,13 @@ static void tap_update_blkif_status(blki
if (blkif->be->dev->state != XenbusStateConnected)
return;
- blkif->xenblkd = kthread_run(tap_blkif_schedule, blkif,
- "xvd %d",
- blkif->domid);
-
+ err = blktap_name(blkif, name);
+ if (err) {
+ xenbus_dev_error(blkif->be->dev, err, "get blktap dev name");
+ return;
+ }
+
+ blkif->xenblkd = kthread_run(tap_blkif_schedule, blkif, name);
if (IS_ERR(blkif->xenblkd)) {
err = PTR_ERR(blkif->xenblkd);
blkif->xenblkd = NULL;
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|