blockdev: don't set S_DAX for misaligned partitions
The dax code doesn't currently support misaligned partitions, so disable O_DIRECT via dax until such time as that support materializes. Cc: <stable@vger.kernel.org> Suggested-by: Boaz Harrosh <boaz@plexistor.com> Signed-off-by: Jeff Moyer <jmoyer@redhat.com> Signed-off-by: Dan Williams <dan.j.williams@intel.com>
This commit is contained in:
parent
e94f5a2285
commit
f0b2e563bc
|
@ -1242,6 +1242,13 @@ static int __blkdev_get(struct block_device *bdev, fmode_t mode, int for_part)
|
||||||
goto out_clear;
|
goto out_clear;
|
||||||
}
|
}
|
||||||
bd_set_size(bdev, (loff_t)bdev->bd_part->nr_sects << 9);
|
bd_set_size(bdev, (loff_t)bdev->bd_part->nr_sects << 9);
|
||||||
|
/*
|
||||||
|
* If the partition is not aligned on a page
|
||||||
|
* boundary, we can't do dax I/O to it.
|
||||||
|
*/
|
||||||
|
if ((bdev->bd_part->start_sect % (PAGE_SIZE / 512)) ||
|
||||||
|
(bdev->bd_part->nr_sects % (PAGE_SIZE / 512)))
|
||||||
|
bdev->bd_inode->i_flags &= ~S_DAX;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (bdev->bd_contains == bdev) {
|
if (bdev->bd_contains == bdev) {
|
||||||
|
|
Loading…
Reference in New Issue