On Wed, Jul 15, 2020 at 08:56:31AM -0700, Darrick J. Wong wrote: > On Wed, Jul 15, 2020 at 01:55:14PM +0800, Xiao Yang wrote: > > On 2020/7/15 12:15, Ira Weiny wrote: > > > On Wed, Jul 15, 2020 at 11:19:58AM +0800, Xiao Yang wrote: > > > > On 2020/7/15 9:59, Ira Weiny wrote: > > > > > On Tue, Jul 14, 2020 at 05:40:03PM +0800, Xiao Yang wrote: > > > > > > 1) _require_scratch_dax_mountopt() checks both old and new DAX mount option > > > > > > 2) _require_dax_iflag() checks FS_XFLAG_DAX > > > > > > > > > > > > Signed-off-by: Xiao Yang<yangx.jy@xxxxxxxxxxxxxx> > > > > > Reviewed-by: Ira Weiny<ira.weiny@xxxxxxxxx> > > > > Hi Ira, > > > > > > > > Do you want to check if invalid parameter is passed to > > > > _require_scratch_dax_mountopt? Thought > > > > I think it is not necessary(user should pass correct parament). > > > > Like this: > > > > [ "$mountopt" != "dax" ]&& [ "$mountopt" != "dax=always" ]&& _notrun > > > > "$mountopt is invalid" > > > I thought this patch was just checking if the filesystem/device supported DAX > > > such that DAX tests could run using either old _or_ new dax support... > > > But after thinking about it I think we need something more complicated. > > > > > > Something like: > > > > > > if ('-o dax=inode') > > > // FS is DAX with per file support (ie ext4 || XFS kernel>= 5.8) > > Hi Ira, > > > > dax=inode/dax=never cannot check if underlying device supports dax, so I > > perfer to use dax=always > > For example: > > XFS: > > # mount -o dax=inode /dev/sda8 /mnt/xfstests/test/ > > # mount | grep sda8 > > /dev/sda8 on /mnt/xfstests/test type xfs > > (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota) > > ... > > # mount -o dax=always /dev/sda8 /mnt/xfstests/test/ > > # mount | grep sda8 > > /dev/sda8 on /mnt/xfstests/test type xfs > > (rw,relatime,seclabel,attr2,dax=never,inode64,logbufs=8,logbsize=32k,noquota) > > > > EXT4: > > # mount -o dax=inode /dev/sda8 /mnt/xfstests/test/ > > # mount | grep sda8 > > /dev/sda8 on /mnt/xfstests/test type ext4 (rw,relatime,seclabel,dax=inode) > > ... > > # mount -o dax=always /dev/sda8 /mnt/xfstests/test/ > > mount: /mnt/xfstests/test: wrong fs type, bad option, bad superblock on > > /dev/sda8, missing codepage or helper program, or other error. > > # dmesg | grep DAX > > [597988.165120] EXT4-fs (sda8): DAX unsupported by block device. > > > > If we want to test new dax(i.e. dax=inode, dax=always or dax=never), so pass > > "dax=always" to _require_scratch_dax_mountopt > > If we want to test old dax or new dax=always(either of them), so pass "dax" > > to _require_scratch_dax_mountopt > > That does seem like the only way to figure out if a fs/device > combination supports dax. > > The valid arguments to the _require_scratch_dax* helpers are worth > mentioning in a comment above the function, but I suspect that adding > validation code is probably overkill. Ok yes I see it now. You are both correct. I think a comment which indicates that one should pads '-o dax' to check for 'old support' vs '-o dax=always' for 'new support' and the test chooses which option to pass (based on the support it needs) to _require_scratch_dax_mountopt()... Sorry I was not completely following before! Ira