Commit 673a0658 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Dan Williams
Browse files

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: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarDan Williams <dan.j.williams@intel.com>
Link: https://lore.kernel.org/r/20210826135510.6293-6-hch@lst.de


Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
parent 1b764601
Loading
Loading
Loading
Loading
+9 −7
Original line number Diff line number Diff line
@@ -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);

+2 −7
Original line number Diff line number Diff line
@@ -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 */