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
1 changed files with 7 additions and 0 deletions
|
@ -1242,6 +1242,13 @@ static int __blkdev_get(struct block_device *bdev, fmode_t mode, int for_part)
|
|||
goto out_clear;
|
||||
}
|
||||
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 {
|
||||
if (bdev->bd_contains == bdev) {
|
||||
|
|
Loading…
Reference in a new issue