From b099a98ecdc54285cb1f0e02b821a470e280101f Mon Sep 17 00:00:00 2001 From: Al Viro Date: Sun, 9 Aug 2009 01:58:52 +0400 Subject: [PATCH] --- yaml --- r: 177395 b: refs/heads/master c: 306bb73d12f13684ffcd735838c3e6f7515ab626 h: refs/heads/master i: 177393: 65c310dccf2653f815cd633afed1bfc684a7b643 177391: 9502b0502b1d3c75fe7de950fff3cb7a97e39437 v: v3 --- [refs] | 2 +- trunk/drivers/staging/dst/dcore.c | 46 ++++--------------------------- 2 files changed, 6 insertions(+), 42 deletions(-) diff --git a/[refs] b/[refs] index ac4ff308840c..14cc7e9ea080 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 6de88d72927dc85297b3075024487313c4ba3a2e +refs/heads/master: 306bb73d12f13684ffcd735838c3e6f7515ab626 diff --git a/trunk/drivers/staging/dst/dcore.c b/trunk/drivers/staging/dst/dcore.c index fd5bd0ea1e0d..c83ca7e3d048 100644 --- a/trunk/drivers/staging/dst/dcore.c +++ b/trunk/drivers/staging/dst/dcore.c @@ -403,7 +403,7 @@ static void dst_node_cleanup(struct dst_node *n) 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); @@ -463,37 +463,6 @@ void dst_node_put(struct dst_node *n) } } -/* - * 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 @@ -503,17 +472,12 @@ static int dst_setup_export(struct dst_node *n, struct dst_ctl *ctl, 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 @@ static int dst_setup_export(struct dst_node *n, struct dst_ctl *ctl, 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;