blkfront: Klog the unclean release path
authorDaniel Stodden <daniel.stodden@citrix.com>
Sat, 7 Aug 2010 16:51:21 +0000 (18:51 +0200)
committerJens Axboe <jaxboe@fusionio.com>
Sat, 7 Aug 2010 16:51:21 +0000 (18:51 +0200)
Signed-off-by: Daniel Stodden <daniel.stodden@citrix.com>
Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
drivers/block/xen-blkfront.c

index b01167b6207a046fed4f6606ace6a87dfc8c2f49..c6727b5cefd6f255a57f09e68d58fce64c18a75d 100644 (file)
@@ -1120,6 +1120,10 @@ static int blkfront_remove(struct xenbus_device *xbdev)
        mutex_lock(&bdev->bd_mutex);
        info = disk->private_data;
 
+       dev_warn(disk_to_dev(disk),
+                "%s was hot-unplugged, %d stale handles\n",
+                xbdev->nodename, bdev->bd_openers);
+
        if (info && !bdev->bd_openers) {
                xlvbd_release_gendisk(info);
                disk->private_data = NULL;
@@ -1191,6 +1195,7 @@ static int blkif_release(struct gendisk *disk, fmode_t mode)
 
        if (xbdev && xbdev->state == XenbusStateClosing) {
                /* pending switch to state closed */
+               dev_info(disk_to_dev(bdev->bd_disk), "releasing disk\n");
                xlvbd_release_gendisk(info);
                xenbus_frontend_closed(info->xbdev);
        }
@@ -1199,6 +1204,7 @@ static int blkif_release(struct gendisk *disk, fmode_t mode)
 
        if (!xbdev) {
                /* sudden device removal */
+               dev_info(disk_to_dev(bdev->bd_disk), "releasing disk\n");
                xlvbd_release_gendisk(info);
                disk->private_data = NULL;
                kfree(info);