diff --git a/[refs] b/[refs] index 922dc5ab982b..d1f847a9e638 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: fa1bd3591a669b92b635dbdb11d1a32a5630821b +refs/heads/master: acfca3c622a009fb62b566604452ab9fb3a11019 diff --git a/trunk/drivers/block/xen-blkfront.c b/trunk/drivers/block/xen-blkfront.c index 715de7d8ce01..9c5a25a462e6 100644 --- a/trunk/drivers/block/xen-blkfront.c +++ b/trunk/drivers/block/xen-blkfront.c @@ -1168,9 +1168,6 @@ static int blkif_open(struct block_device *bdev, fmode_t mode) mutex_unlock(&info->mutex); - if (!err) - ++info->users; - out: unlock_kernel(); return err; @@ -1183,12 +1180,13 @@ static int blkif_release(struct gendisk *disk, fmode_t mode) struct xenbus_device *xbdev; lock_kernel(); - if (--info->users) - goto out; bdev = bdget_disk(disk, 0); bdput(bdev); + if (bdev->bd_openers) + goto out; + /* * Check if we have been instructed to close. We will have * deferred this request, because the bdev was still open. @@ -1212,7 +1210,6 @@ static int blkif_release(struct gendisk *disk, fmode_t mode) kfree(info); } -out: unlock_kernel(); return 0; }