@@ -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
530494err_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