summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2021-08-26 15:55:06 +0200
committerDan Williams <dan.j.williams@intel.com>2021-08-26 16:52:03 -0700
commit673a0658f6ac359131a881c0dcf1b91c2500ab9c (patch)
tree06b96da7f964db1e4d3f3c7462562fa7f055b281
parent1b7646014e0d838b06be7288e2dec3262948cc56 (diff)
dax: move the dax_read_lock() locking into dax_supported
Move the dax_read_lock/dax_read_unlock pair from the callers into dax_supported to make it a little easier to use. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Dan Williams <dan.j.williams@intel.com> Link: https://lore.kernel.org/r/20210826135510.6293-6-hch@lst.de Signed-off-by: Dan Williams <dan.j.williams@intel.com>
-rw-r--r--drivers/dax/super.c16
-rw-r--r--drivers/md/dm-table.c9
2 files changed, 11 insertions, 14 deletions
diff --git a/drivers/dax/super.c b/drivers/dax/super.c
index e13fde57c33e..0f74f83101ab 100644
--- a/drivers/dax/super.c
+++ b/drivers/dax/super.c
@@ -219,7 +219,6 @@ bool __bdev_dax_supported(struct block_device *bdev, int blocksize)
struct request_queue *q;
char buf[BDEVNAME_SIZE];
bool ret;
- int id;
q = bdev_get_queue(bdev);
if (!q || !blk_queue_dax(q)) {
@@ -235,10 +234,8 @@ bool __bdev_dax_supported(struct block_device *bdev, int blocksize)
return false;
}
- id = dax_read_lock();
ret = dax_supported(dax_dev, bdev, blocksize, 0,
i_size_read(bdev->bd_inode) / 512);
- dax_read_unlock(id);
put_dax(dax_dev);
@@ -356,13 +353,18 @@ EXPORT_SYMBOL_GPL(dax_direct_access);
bool dax_supported(struct dax_device *dax_dev, struct block_device *bdev,
int blocksize, sector_t start, sector_t len)
{
- if (!dax_dev)
- return false;
+ bool ret = false;
+ int id;
- if (!dax_alive(dax_dev))
+ if (!dax_dev)
return false;
- return dax_dev->ops->dax_supported(dax_dev, bdev, blocksize, start, len);
+ id = dax_read_lock();
+ if (dax_alive(dax_dev))
+ ret = dax_dev->ops->dax_supported(dax_dev, bdev, blocksize,
+ start, len);
+ dax_read_unlock(id);
+ return ret;
}
EXPORT_SYMBOL_GPL(dax_supported);
diff --git a/drivers/md/dm-table.c b/drivers/md/dm-table.c
index 0543cdf89e92..b53acca37581 100644
--- a/drivers/md/dm-table.c
+++ b/drivers/md/dm-table.c
@@ -809,14 +809,9 @@ EXPORT_SYMBOL_GPL(dm_table_set_type);
int device_not_dax_capable(struct dm_target *ti, struct dm_dev *dev,
sector_t start, sector_t len, void *data)
{
- int blocksize = *(int *) data, id;
- bool rc;
+ int blocksize = *(int *) data;
- id = dax_read_lock();
- rc = !dax_supported(dev->dax_dev, dev->bdev, blocksize, start, len);
- dax_read_unlock(id);
-
- return rc;
+ return !dax_supported(dev->dax_dev, dev->bdev, blocksize, start, len);
}
/* Check devices support synchronous DAX */