|
@@ -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) {
|