From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from g4t3427.houston.hp.com ([15.201.208.55]:44161 "EHLO g4t3427.houston.hp.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751623AbcEBPcu (ORCPT ); Mon, 2 May 2016 11:32:50 -0400 Message-ID: <1462202638.27137.9.camel@hpe.com> Subject: Re: [PATCH 1/3] ext4: Add alignment check for DAX mount From: Toshi Kani To: Boaz Harrosh , Christoph Hellwig Cc: dan.j.williams@intel.com, david@fromorbit.com, jack@suse.cz, tytso@mit.edu, adilger.kernel@dilger.ca, ross.zwisler@linux.intel.com, linux-nvdimm@ml01.01.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org Date: Mon, 02 May 2016 09:23:58 -0600 In-Reply-To: <572722A2.4020906@plexistor.com> References: <1461962375-3720-1-git-send-email-toshi.kani@hpe.com> <1461962375-3720-2-git-send-email-toshi.kani@hpe.com> <20160501173115.GA21574@infradead.org> <572722A2.4020906@plexistor.com> Content-Type: text/plain; charset="UTF-8" Mime-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-fsdevel-owner@vger.kernel.org List-ID: 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