On Mon, 2016-05-02 at 12:49 +0300, Boaz Harrosh wrote: > On 05/01/2016 08:31 PM, Christoph Hellwig wrote: > > > > On Fri, Apr 29, 2016 at 02:39:33PM -0600, Toshi Kani wrote: > > > > > > diff --git a/fs/ext4/super.c b/fs/ext4/super.c > > > index 304c712..90a8670 100644 > > > --- a/fs/ext4/super.c > > > +++ b/fs/ext4/super.c > > > @@ -3421,6 +3421,12 @@ static int ext4_fill_super(struct super_block > > > *sb, void *data, int silent) > > > "error: unsupported > > > blocksize for dax"); > > > goto failed_mount; > > > } > > > + if (sb->s_bdev->bd_part->start_sect % (PAGE_SIZE / > > > 512) || > > > + sb->s_bdev->bd_part->nr_sects % (PAGE_SIZE / > > > 512)) { > > > + ext4_msg(sb, KERN_ERR, > > > + "error: unaligned partition > > > for dax"); > > > + goto failed_mount; > > > + } > > > if (!sb->s_bdev->bd_disk->fops->direct_access) { > > > ext4_msg(sb, KERN_ERR, > > > "error: device does not > > > support dax"); > > > > Factor your new checks and the ->direct_access into a new helper. It > > should take the block device as file systems might have multiple > > underlying devices. > > This already exists as part of bdev_direct_access() > > All the code needs to do is call bdev_direct_access() on sector ZERO and > see if it is successful. If the alignment is broken it will fail. > > Infact the FS does not even need the second if (!...bd_disk->fops- > >direct_access) check either because it is also done inside > bdev_direct_access(). The only check needed is calling > bdev_direct_access() and the generic layer does all the > checks needed already. Sounds good. I will call bdev_direct_access() for this check. I assume we do not need to check the alignment of 'bd_part->nr_sects' since the rest of unaligned sectors will be ignored with block size 4KB. Thanks! -Toshi -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html