aboutsummaryrefslogtreecommitdiffstats
path: root/linux-2.6-xen-sparse
diff options
context:
space:
mode:
authorkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>2006-03-13 15:06:58 +0100
committerkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>2006-03-13 15:06:58 +0100
commit4e2080291801fe3fb4c9851ef6ef9fe6b014c717 (patch)
tree25f7d233dfaae2d59fdfacc27dbdb4ff8849b875 /linux-2.6-xen-sparse
parent1094009e12733acd885be0734bdd7324c3123711 (diff)
downloadxen-4e2080291801fe3fb4c9851ef6ef9fe6b014c717.tar.gz
xen-4e2080291801fe3fb4c9851ef6ef9fe6b014c717.tar.bz2
xen-4e2080291801fe3fb4c9851ef6ef9fe6b014c717.zip
Clean up block-device hotplug routines in xenlinux.
Signed-off-by: Keir Fraser <keir@xensource.com>
Diffstat (limited to 'linux-2.6-xen-sparse')
-rw-r--r--linux-2.6-xen-sparse/drivers/xen/blkfront/blkfront.c6
-rw-r--r--linux-2.6-xen-sparse/drivers/xen/blkfront/vbd.c21
2 files changed, 13 insertions, 14 deletions
diff --git a/linux-2.6-xen-sparse/drivers/xen/blkfront/blkfront.c b/linux-2.6-xen-sparse/drivers/xen/blkfront/blkfront.c
index c8c9decc38..5c73634c83 100644
--- a/linux-2.6-xen-sparse/drivers/xen/blkfront/blkfront.c
+++ b/linux-2.6-xen-sparse/drivers/xen/blkfront/blkfront.c
@@ -352,11 +352,7 @@ static void blkfront_closing(struct xenbus_device *dev)
DPRINTK("blkfront_closing: %s removed\n", dev->nodename);
- if (info->mi) {
- DPRINTK("Calling xlvbd_del\n");
- xlvbd_del(info);
- info->mi = NULL;
- }
+ xlvbd_del(info);
xenbus_switch_state(dev, XBT_NULL, XenbusStateClosed);
}
diff --git a/linux-2.6-xen-sparse/drivers/xen/blkfront/vbd.c b/linux-2.6-xen-sparse/drivers/xen/blkfront/vbd.c
index d97f798e6f..b092a569ae 100644
--- a/linux-2.6-xen-sparse/drivers/xen/blkfront/vbd.c
+++ b/linux-2.6-xen-sparse/drivers/xen/blkfront/vbd.c
@@ -216,6 +216,10 @@ xlvbd_alloc_gendisk(int minor, blkif_sector_t capacity, int vdevice,
int nr_minors = 1;
int err = -ENODEV;
+ BUG_ON(info->gd != NULL);
+ BUG_ON(info->mi != NULL);
+ BUG_ON(info->rq != NULL);
+
mi = xlbd_get_major_info(vdevice);
if (mi == NULL)
goto out;
@@ -268,6 +272,7 @@ xlvbd_alloc_gendisk(int minor, blkif_sector_t capacity, int vdevice,
out:
if (mi)
xlbd_put_major_info(mi);
+ info->mi = NULL;
return err;
}
@@ -294,22 +299,20 @@ xlvbd_add(blkif_sector_t capacity, int vdevice, u16 vdisk_info,
void
xlvbd_del(struct blkfront_info *info)
{
- struct block_device *bd;
-
- bd = bdget(info->dev);
- if (bd == NULL)
- return;
-
- if (info->gd == NULL)
+ if (info->mi == NULL)
return;
+ BUG_ON(info->gd == NULL);
del_gendisk(info->gd);
put_disk(info->gd);
+ info->gd = NULL;
+
xlbd_put_major_info(info->mi);
info->mi = NULL;
- blk_cleanup_queue(info->rq);
- bdput(bd);
+ BUG_ON(info->rq == NULL);
+ blk_cleanup_queue(info->rq);
+ info->rq = NULL;
}
/*