fix the crap in dst/dcore

* don't reinvent the wheels, please - open_bdev_exclusive() is there
  for purpose
* both open_by_devnum() and open_bdev_exclusive() return ERR_PTR(...)
  upon error, not NULL

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
diff --git a/drivers/staging/dst/dcore.c b/drivers/staging/dst/dcore.c
index fd5bd0e..c83ca7e 100644
--- a/drivers/staging/dst/dcore.c
+++ b/drivers/staging/dst/dcore.c
@@ -403,7 +403,7 @@
 
 	if (n->bdev) {
 		sync_blockdev(n->bdev);
-		blkdev_put(n->bdev, FMODE_READ|FMODE_WRITE);
+		close_bdev_exclusive(n->bdev, FMODE_READ|FMODE_WRITE);
 	}
 
 	dst_state_lock(st);
@@ -464,37 +464,6 @@
 }
 
 /*
- * This function finds devices major/minor numbers for given pathname.
- */
-static int dst_lookup_device(const char *path, dev_t *dev)
-{
-	int err;
-	struct nameidata nd;
-	struct inode *inode;
-
-	err = path_lookup(path, LOOKUP_FOLLOW, &nd);
-	if (err)
-		return err;
-
-	inode = nd.path.dentry->d_inode;
-	if (!inode) {
-		err = -ENOENT;
-		goto out;
-	}
-
-	if (!S_ISBLK(inode->i_mode)) {
-		err = -ENOTBLK;
-		goto out;
-	}
-
-	*dev = inode->i_rdev;
-
-out:
-	path_put(&nd.path);
-	return err;
-}
-
-/*
  * Setting up export device: lookup by the name, get its size
  * and setup listening socket, which will accept clients, which
  * will submit IO for given storage.
@@ -503,17 +472,12 @@
 		struct dst_export_ctl *le)
 {
 	int err;
-	dev_t dev = 0; /* gcc likes to scream here */
 
 	snprintf(n->info->local, sizeof(n->info->local), "%s", le->device);
 
-	err = dst_lookup_device(le->device, &dev);
-	if (err)
-		return err;
-
-	n->bdev = open_by_devnum(dev, FMODE_READ|FMODE_WRITE);
-	if (!n->bdev)
-		return -ENODEV;
+	n->bdev = open_bdev_exclusive(le->device, FMODE_READ|FMODE_WRITE, NULL);
+	if (IS_ERR(n->bdev))
+		return PTR_ERR(n->bdev);
 
 	if (n->size != 0)
 		n->size = min_t(loff_t, n->bdev->bd_inode->i_size, n->size);
@@ -528,7 +492,7 @@
 	return 0;
 
 err_out_cleanup:
-	blkdev_put(n->bdev, FMODE_READ|FMODE_WRITE);
+	close_bdev_exclusive(n->bdev, FMODE_READ|FMODE_WRITE);
 	n->bdev = NULL;
 
 	return err;