From: Srinivas Eeda Date: Sat, 16 Aug 2014 17:04:57 +0000 (-0700) Subject: oracleasm: claim FMODE_EXCL access on disk during asm_open X-Git-Tag: v4.1.12-92~323^2~8 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=3e2fe7d8cbffecf967498686917dd1876cc9893f;p=users%2Fjedix%2Flinux-maple.git oracleasm: claim FMODE_EXCL access on disk during asm_open Orabug: 19454829 asm_open_disk should take exclusive access on asm disk during open to prevent it from getting deleted while in use. Signed-off-by: Srinivas Eeda Signed-off-by: Guangyu Sun Signed-off-by: Martin K. Petersen --- diff --git a/drivers/block/oracleasm/driver.c b/drivers/block/oracleasm/driver.c index f56799333ca7..5c9e86dd0613 100644 --- a/drivers/block/oracleasm/driver.c +++ b/drivers/block/oracleasm/driver.c @@ -333,7 +333,7 @@ static void asmdisk_evict_inode(struct inode *inode) mlog(ML_DISK, "Releasing disk 0x%p (bdev 0x%p, dev %X)\n", d, d->d_bdev, d->d_bdev->bd_dev); - blkdev_put(d->d_bdev, FMODE_WRITE | FMODE_READ); + blkdev_put(d->d_bdev, FMODE_WRITE | FMODE_READ | FMODE_EXCL); d->d_bdev = NULL; } @@ -720,7 +720,7 @@ static int asm_open_disk(struct file *file, struct block_device *bdev) mlog_entry("(0x%p, 0x%p)\n", file, bdev); - ret = blkdev_get(bdev, FMODE_WRITE | FMODE_READ, inode->i_sb); + ret = blkdev_get(bdev, FMODE_WRITE | FMODE_READ | FMODE_EXCL, inode->i_sb); if (ret) goto out; @@ -772,7 +772,7 @@ static int asm_open_disk(struct file *file, struct block_device *bdev) mlog(ML_DISK, "Open of disk 0x%p (bdev 0x%p, dev %X)\n", d, d->d_bdev, d->d_bdev->bd_dev); - blkdev_put(bdev, FMODE_WRITE | FMODE_READ); + blkdev_put(bdev, FMODE_WRITE | FMODE_READ | FMODE_EXCL); } h->h_disk = d; @@ -793,7 +793,7 @@ out_head: kfree(h); out_get: - blkdev_put(bdev, FMODE_WRITE | FMODE_READ); + blkdev_put(bdev, FMODE_WRITE | FMODE_READ | FMODE_EXCL); out: mlog_exit(ret);