Skip to content

Commit 306bb73

Browse files
author
Al Viro
committed
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>
1 parent 6de88d7 commit 306bb73

1 file changed

Lines changed: 5 additions & 41 deletions

File tree

drivers/staging/dst/dcore.c

Lines changed: 5 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -403,7 +403,7 @@ static void dst_node_cleanup(struct dst_node *n)
403403

404404
if (n->bdev) {
405405
sync_blockdev(n->bdev);
406-
blkdev_put(n->bdev, FMODE_READ|FMODE_WRITE);
406+
close_bdev_exclusive(n->bdev, FMODE_READ|FMODE_WRITE);
407407
}
408408

409409
dst_state_lock(st);
@@ -463,37 +463,6 @@ void dst_node_put(struct dst_node *n)
463463
}
464464
}
465465

466-
/*
467-
* This function finds devices major/minor numbers for given pathname.
468-
*/
469-
static int dst_lookup_device(const char *path, dev_t *dev)
470-
{
471-
int err;
472-
struct nameidata nd;
473-
struct inode *inode;
474-
475-
err = path_lookup(path, LOOKUP_FOLLOW, &nd);
476-
if (err)
477-
return err;
478-
479-
inode = nd.path.dentry->d_inode;
480-
if (!inode) {
481-
err = -ENOENT;
482-
goto out;
483-
}
484-
485-
if (!S_ISBLK(inode->i_mode)) {
486-
err = -ENOTBLK;
487-
goto out;
488-
}
489-
490-
*dev = inode->i_rdev;
491-
492-
out:
493-
path_put(&nd.path);
494-
return err;
495-
}
496-
497466
/*
498467
* Setting up export device: lookup by the name, get its size
499468
* and setup listening socket, which will accept clients, which
@@ -503,17 +472,12 @@ static int dst_setup_export(struct dst_node *n, struct dst_ctl *ctl,
503472
struct dst_export_ctl *le)
504473
{
505474
int err;
506-
dev_t dev = 0; /* gcc likes to scream here */
507475

508476
snprintf(n->info->local, sizeof(n->info->local), "%s", le->device);
509477

510-
err = dst_lookup_device(le->device, &dev);
511-
if (err)
512-
return err;
513-
514-
n->bdev = open_by_devnum(dev, FMODE_READ|FMODE_WRITE);
515-
if (!n->bdev)
516-
return -ENODEV;
478+
n->bdev = open_bdev_exclusive(le->device, FMODE_READ|FMODE_WRITE, NULL);
479+
if (IS_ERR(n->bdev))
480+
return PTR_ERR(n->bdev);
517481

518482
if (n->size != 0)
519483
n->size = min_t(loff_t, n->bdev->bd_inode->i_size, n->size);
@@ -528,7 +492,7 @@ static int dst_setup_export(struct dst_node *n, struct dst_ctl *ctl,
528492
return 0;
529493

530494
err_out_cleanup:
531-
blkdev_put(n->bdev, FMODE_READ|FMODE_WRITE);
495+
close_bdev_exclusive(n->bdev, FMODE_READ|FMODE_WRITE);
532496
n->bdev = NULL;
533497

534498
return err;

0 commit comments

Comments
 (0)