[Gluster-devel] [PATCH v2] fstests: add GlusterFS support

Niels de Vos ndevos at redhat.com
Tue Mar 21 13:24:27 UTC 2017


On Tue, Mar 21, 2017 at 12:04:05PM +0800, Zorro Lang wrote:
> On Mon, Mar 20, 2017 at 11:45:17PM -0400, Niels de Vos wrote:
> > On Thu, Mar 16, 2017 at 01:28:19PM +0800, Zorro Lang wrote:
> > > Add basic GlusterFS support. Neither new GlusterFS specific tests
> > > nor related patches are included. Only support FSTYP=glusterfs or
> > > check -glusterfs XXX.
> > > 
> > > To test on glusterfs, two gluster volumes and two mountpoint
> > > directories are needed.
> > > 
> > > Signed-off-by: Zorro Lang <zlang at redhat.com>
> > > ---
> > > 
> > > Hi glusterfs developers,
> > > 
> > > Recently some people cares about testing kernel FUSE by running
> > > xfstests. We can't test FUSE independently, we must depend upon
> > > someone real FS base on FUSE, e.g. GlusterFS.
> > > 
> > > This patch only want to run xfstests on glusterfs, but I haven't
> > > made sure if there's no case bugs for glusterfs. I think that's
> > > another problem which I will fix in later patches.
> > > 
> > > At first I prepare two gluster volumes and two directories, then
> > > set into xfstests/local.config.
> > > 
> > > [root at ibm-x3650m4-10 xfstests-dev]# cat local.config
> > > TEST_DIR=/mnt/gluster/test
> > > TEST_DEV=ibm-xxxx-xx.redhat.com:testvol
> > > SCRATCH_MNT=/mnt/gluster/scratch
> > > SCRATCH_DEV=ibm-xxxx-xx.redhat.com:scratchvol
> > > 
> > > (feel free to set MOUNT_OPTIONS, or GLUSTERFS_MOUNT_OPTIONS)
> > > 
> > > Then I ran some generic cases, e.g. g/001 and g/117, one test on
> > > TEST_DEV, and the other run on SCRATCH_DEV:
> > > 
> > > [root at ibm-x3650m4-10 xfstests-dev]# ./check -glusterfs generic/001
> > > FSTYP         -- glusterfs
> > > PLATFORM      -- Linux/x86_64 ibm-x3650m4-10 3.10.0-581.el7.x86_64
> > > MKFS_OPTIONS  -- ibm-x3650m4-10.rhts.eng.pek2.redhat.com:scratchvol
> > > MOUNT_OPTIONS -- -o context=system_u:object_r:nfs_t:s0 ibm-x3650m4-10.rhts.eng.pek2.redhat.com:scratchvol /mnt/gluster/scratch
> > > 
> > > generic/001 9s ... 8s
> > > Ran: generic/001
> > > Passed all 1 tests
> > > 
> > > [root at ibm-x3650m4-10 xfstests-dev]# ./check -glusterfs generic/117
> > > FSTYP         -- glusterfs
> > > PLATFORM      -- Linux/x86_64 ibm-x3650m4-10 3.10.0-581.el7.x86_64
> > > MKFS_OPTIONS  -- ibm-x3650m4-10.rhts.eng.pek2.redhat.com:scratchvol
> > > MOUNT_OPTIONS -- -o context=system_u:object_r:nfs_t:s0 ibm-x3650m4-10.rhts.eng.pek2.redhat.com:scratchvol /mnt/gluster/scratch
> > > 
> > > generic/117 24s ... 24s
> > > Ran: generic/117
> > > Passed all 1 tests
> > > 
> > > The results look good. But there're some cases fails on glusterfs,
> > > I think that's case problem or glusterfs problems. I'll look into
> > > them in the future.
> > > 
> > > I only know how to use "mount -t glusterfs XXXX:vol /mnt", if you
> > > have any other requirements or suggestions, please tell me.
> > > Welcome send more patches to fstests@ mail list:)
> > > 
> > > Thanks,
> > > Zorro
> > > 
> > >  README.config-sections |  7 +++++++
> > >  check                  |  2 ++
> > >  common/config          |  6 ++++++
> > >  common/rc              | 34 ++++++++++++++++++++++++++++++++--
> > >  4 files changed, 47 insertions(+), 2 deletions(-)
> > > 
> > > diff --git a/README.config-sections b/README.config-sections
> > > index df7c929..9133997 100644
> > > --- a/README.config-sections
> > > +++ b/README.config-sections
> > > @@ -121,3 +121,10 @@ TEST_DIR=/mnt/test
> > >  TEST_DEV=192.168.14.1:6789:/
> > >  TEST_FS_MOUNT_OPTS="-o name=admin,secret=AQDuEBtYKEYRINGSECRETriSC8YJGDZsQHcr7g=="
> > >  FSTYP="ceph"
> > > +
> > > +[glusterfs]
> > > +FSTYP=glusterfs
> > > +TEST_DIR=/mnt/gluster/test
> > > +TEST_DEV=192.168.1.1:testvol
> > > +SCRATCH_DIR=/mnt/gluster/scratch
> > > +SCRATCH_DEV=192.168.1.1:scratchvol
> > 
> > We mostly use the format of 192.168.1.1:/testvol, matching the way NFS
> 
> Hi Niels,
> 
> I limit the DEVICE name format should match "\w:\w", when mount -t glusterfs.
> That means there's not "/" beside the ":". Do you think I should change
> this regular expression?

Yes, it would be good to have an optional "/" after the ":". It is not
required, but would probably help when someone runs the tests with the
"hostname:/volume" device format.

> I think you only use "192.168.1.1:/testvol", when you do mount -t nfs,
> right?

Yes, I am pretty sure NFS expects the "/" after the ":". This counts for
any NFS servers that use Gluster on the backend as well.

Thanks,
Niels


> Thanks,
> Zorro
> 
> > mounts an export. That is not required though, and the notation used
> > here is valid as well.
> > 
> > Looks good to me - once the SCRATCH_DIR/MNT error has been corrected.
> > 
> > Reviewed-by: Niels de Vos <ndevos at redhat.com>
> > 
> > 
> > > diff --git a/check b/check
> > > index c2c22e2..2fcf385 100755
> > > --- a/check
> > > +++ b/check
> > > @@ -65,6 +65,7 @@ usage()
> > >  
> > >  check options
> > >      -nfs                test NFS
> > > +    -glusterfs                test GlusterFS
> > >      -cifs               test CIFS
> > >      -overlay		test overlay
> > >      -tmpfs              test TMPFS
> > > @@ -260,6 +261,7 @@ while [ $# -gt 0 ]; do
> > >  	-\? | -h | --help) usage ;;
> > >  
> > >  	-nfs)		FSTYP=nfs ;;
> > > +	-glusterfs)	FSTYP=glusterfs ;;
> > >  	-cifs)		FSTYP=cifs ;;
> > >  	-overlay)	FSTYP=overlay; export OVERLAY=true ;;
> > >  	-tmpfs)		FSTYP=tmpfs ;;
> > > diff --git a/common/config b/common/config
> > > index 0c7335a..1ee16f7 100644
> > > --- a/common/config
> > > +++ b/common/config
> > > @@ -301,6 +301,9 @@ _mount_opts()
> > >  	ceph)
> > >  		export MOUNT_OPTIONS=$CEPHFS_MOUNT_OPTIONS
> > >  		;;
> > > +	glusterfs)
> > > +		export MOUNT_OPTIONS=$GLUSTERFS_MOUNT_OPTIONS
> > > +		;;
> > >  	overlay)
> > >  		export MOUNT_OPTIONS=$OVERLAY_MOUNT_OPTIONS
> > >  		;;
> > > @@ -341,6 +344,9 @@ _test_mount_opts()
> > >  	ceph)
> > >  		export TEST_FS_MOUNT_OPTS=$CEPHFS_MOUNT_OPTIONS
> > >  		;;
> > > +	glusterfs)
> > > +		export TEST_FS_MOUNT_OPTS=$GLUSTERFS_MOUNT_OPTIONS
> > > +		;;
> > >  	*)
> > >  		;;
> > >  	esac
> > > diff --git a/common/rc b/common/rc
> > > index d53f679..7185c3f 100644
> > > --- a/common/rc
> > > +++ b/common/rc
> > > @@ -167,6 +167,8 @@ case "$FSTYP" in
> > >  	 ;;
> > >      ceph)
> > >  	 ;;
> > > +    glusterfs)
> > > +	 ;;
> > >      overlay)
> > >  	 ;;
> > >      reiser4)
> > > @@ -706,6 +708,9 @@ _test_mkfs()
> > >      ceph)
> > >  	# do nothing for ceph
> > >  	;;
> > > +    glusterfs)
> > > +	# do nothing for glusterfs
> > > +	;;
> > >      overlay)
> > >  	# do nothing for overlay
> > >  	;;
> > > @@ -788,7 +793,7 @@ _scratch_mkfs()
> > >  	local mkfs_status
> > >  
> > >  	case $FSTYP in
> > > -	nfs*|cifs|ceph|overlay)
> > > +	nfs*|cifs|ceph|overlay|glusterfs)
> > >  		# unable to re-create this fstyp, just remove all files in
> > >  		# $SCRATCH_MNT to avoid EEXIST caused by the leftover files
> > >  		# created in previous runs
> > > @@ -1307,7 +1312,8 @@ _fs_type()
> > >      # Fix the filesystem type up here so that the callers don't
> > >      # have to bother with this quirk.
> > >      #
> > > -    _df_device $1 | $AWK_PROG '{ print $2 }' | sed -e 's/nfs4/nfs/'
> > > +    _df_device $1 | $AWK_PROG '{ print $2 }' | \
> > > +        sed -e 's/nfs4/nfs/' -e 's/fuse.glusterfs/glusterfs/'
> > >  }
> > >  
> > >  # return the FS mount options of a mounted device
> > > @@ -1489,6 +1495,15 @@ _check_mounted_on()
> > >  _require_scratch_nocheck()
> > >  {
> > >      case "$FSTYP" in
> > > +	glusterfs)
> > > +		echo $SCRATCH_DEV | grep -q "\w:\w" > /dev/null 2>&1
> > > +		if [ -z "$SCRATCH_DEV" -o "$?" != "0" ]; then
> > > +			_notrun "this test requires a valid \$SCRATCH_DEV"
> > > +		fi
> > > +		if [ ! -d "$SCRATCH_MNT" ]; then
> > > +			_notrun "this test requires a valid \$SCRATCH_MNT"
> > > +		fi
> > > +		;;
> > >  	nfs*|ceph)
> > >  		echo $SCRATCH_DEV | grep -q ":/" > /dev/null 2>&1
> > >  		if [ -z "$SCRATCH_DEV" -o "$?" != "0" ]; then
> > > @@ -1568,6 +1583,15 @@ _require_scratch()
> > >  _require_test()
> > >  {
> > >      case "$FSTYP" in
> > > +	glusterfs)
> > > +		echo $TEST_DEV | grep -q "\w:\w" > /dev/null 2>&1
> > > +		if [ -z "$TEST_DEV" -o "$?" != "0" ]; then
> > > +			_notrun "this test requires a valid \$TEST_DEV"
> > > +		fi
> > > +		if [ ! -d "$TEST_DIR" ]; then
> > > +			_notrun "this test requires a valid \$TEST_DIR"
> > > +		fi
> > > +		;;
> > >  	nfs*|ceph)
> > >  		echo $TEST_DEV | grep -q ":/" > /dev/null 2>&1
> > >  		if [ -z "$TEST_DEV" -o "$?" != "0" ]; then
> > > @@ -2421,6 +2445,9 @@ _check_test_fs()
> > >      ceph)
> > >  	# no way to check consistency for CephFS
> > >  	;;
> > > +    glusterfs)
> > > +	# no way to check consistency for GlusterFS
> > > +	;;
> > >      overlay)
> > >  	# no way to check consistency for overlay
> > >  	;;
> > > @@ -2468,6 +2495,9 @@ _check_scratch_fs()
> > >      ceph)
> > >  	# no way to check consistency for CephFS
> > >  	;;
> > > +    glusterfs)
> > > +	# no way to check consistency for GlusterFS
> > > +	;;
> > >      overlay)
> > >  	# no way to check consistency for overlay
> > >  	;;
> > > -- 
> > > 2.7.4
> > > 
> > > _______________________________________________
> > > Gluster-devel mailing list
> > > Gluster-devel at gluster.org
> > > http://lists.gluster.org/mailman/listinfo/gluster-devel


More information about the Gluster-devel mailing list