block: simplify the block device claiming interface
[linux-2.6-microblaze.git] / drivers / block / loop.c
index c0df88b..d643c67 100644 (file)
@@ -1069,7 +1069,6 @@ static int loop_configure(struct loop_device *lo, fmode_t mode,
        struct file     *file;
        struct inode    *inode;
        struct address_space *mapping;
        struct file     *file;
        struct inode    *inode;
        struct address_space *mapping;
-       struct block_device *claimed_bdev = NULL;
        int             error;
        loff_t          size;
        bool            partscan;
        int             error;
        loff_t          size;
        bool            partscan;
@@ -1088,8 +1087,7 @@ static int loop_configure(struct loop_device *lo, fmode_t mode,
         * here to avoid changing device under exclusive owner.
         */
        if (!(mode & FMODE_EXCL)) {
         * here to avoid changing device under exclusive owner.
         */
        if (!(mode & FMODE_EXCL)) {
-               claimed_bdev = bdev_whole(bdev);
-               error = bd_prepare_to_claim(bdev, claimed_bdev, loop_configure);
+               error = bd_prepare_to_claim(bdev, loop_configure);
                if (error)
                        goto out_putf;
        }
                if (error)
                        goto out_putf;
        }
@@ -1176,15 +1174,15 @@ static int loop_configure(struct loop_device *lo, fmode_t mode,
        mutex_unlock(&loop_ctl_mutex);
        if (partscan)
                loop_reread_partitions(lo, bdev);
        mutex_unlock(&loop_ctl_mutex);
        if (partscan)
                loop_reread_partitions(lo, bdev);
-       if (claimed_bdev)
-               bd_abort_claiming(bdev, claimed_bdev, loop_configure);
+       if (!(mode & FMODE_EXCL))
+               bd_abort_claiming(bdev, loop_configure);
        return 0;
 
 out_unlock:
        mutex_unlock(&loop_ctl_mutex);
 out_bdev:
        return 0;
 
 out_unlock:
        mutex_unlock(&loop_ctl_mutex);
 out_bdev:
-       if (claimed_bdev)
-               bd_abort_claiming(bdev, claimed_bdev, loop_configure);
+       if (!(mode & FMODE_EXCL))
+               bd_abort_claiming(bdev, loop_configure);
 out_putf:
        fput(file);
 out:
 out_putf:
        fput(file);
 out: