Re: [PATCH] 2 of 2 - Allow O_EXCL on a block device to claim exclusive use.

From: Christoph Hellwig
Date: Mon Aug 11 2003 - 02:26:46 EST


On Mon, Aug 11, 2003 at 12:35:57PM +1000, NeilBrown wrote:
> diff ./fs/block_dev.c~current~ ./fs/block_dev.c
> --- ./fs/block_dev.c~current~ 2003-08-11 09:01:38.000000000 +1000
> +++ ./fs/block_dev.c 2003-08-11 09:01:41.000000000 +1000
> @@ -643,6 +643,7 @@ int blkdev_get(struct block_device *bdev
> int blkdev_open(struct inode * inode, struct file * filp)
> {
> struct block_device *bdev;
> + int res;
>
> /*
> * Preserve backwards compatibility and allow large file access
> @@ -655,7 +656,18 @@ int blkdev_open(struct inode * inode, st
> bd_acquire(inode);
> bdev = inode->i_bdev;
>
> - return do_open(bdev, inode, filp);
> + res = do_open(bdev, inode, filp);
> + if (res)
> + return res;
> +
> + if (!(filp->f_flags & O_EXCL) )
> + return 0;
> +
> + if (!(res = bd_claim(bdev, filp)))
> + return 0;
> +
> + blkdev_put(bdev, BDEV_FILE);
> + return res;

Shouldn't you claim it before opening. Also what is the desired
behaviour when opening partitions vs whole device with O_EXCL?

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/