diff options
author | Christoph Hellwig <hch@lst.de> | 2008-11-05 16:54:41 +0300 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2008-12-04 12:22:56 +0300 |
commit | ebbefc011e56bd85b4745d01e5b8d7d05d95ed5d (patch) | |
tree | 72fbb3af072efa57f4d0562b3be512edf280fcf7 /fs/block_dev.c | |
parent | 1c925604e1038c7c65b91a92d14dc972b3a70a97 (diff) | |
download | linux-ebbefc011e56bd85b4745d01e5b8d7d05d95ed5d.tar.xz |
[PATCH] clean up blkdev_get a little bit
The way the bd_claim for the FMODE_EXCL case is implemented is rather
confusing. Clean it up to the most logical style.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/block_dev.c')
-rw-r--r-- | fs/block_dev.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/fs/block_dev.c b/fs/block_dev.c index db831efbdbbd..7c727523bc54 100644 --- a/fs/block_dev.c +++ b/fs/block_dev.c @@ -1135,12 +1135,15 @@ static int blkdev_open(struct inode * inode, struct file * filp) if (res) return res; - if (!(filp->f_mode & FMODE_EXCL)) - return 0; + if (filp->f_mode & FMODE_EXCL) { + res = bd_claim(bdev, filp); + if (res) + goto out_blkdev_put; + } - if (!(res = bd_claim(bdev, filp))) - return 0; + return 0; + out_blkdev_put: blkdev_put(bdev, filp->f_mode); return res; } |