Author: ngie
Date: Fri May 19 17:14:29 2017
New Revision: 318546
URL: https://svnweb.freebsd.org/changeset/base/318546

Log:
  sys/fs/tmpfs/vnd_test: make md(4) allocation dynamic
  
  The previous logic was flawed in the sense that it assumed that /dev/md3
  was always available. This was a caveat I noted in r306038, that I hadn't
  gotten around to solving before now.
  
  Cache the device for the mountpoint after executing mdmfs, then use the
  cached value in basic_cleanup(..) when unmounting/disconnecting the md(4)
  device.
  
  Apply sed expressions to use reuse logic in the NetBSD code that could
  also be applied to FreeBSD, just with different tools.
  
  Differential Revision:        D10766
  MFC after:    1 week
  Reviewed by:  bdrewery
  Sponsored by: Dell EMC Isilon

Modified:
  head/contrib/netbsd-tests/fs/tmpfs/t_vnd.sh
  head/tests/sys/fs/tmpfs/Makefile

Modified: head/contrib/netbsd-tests/fs/tmpfs/t_vnd.sh
==============================================================================
--- head/contrib/netbsd-tests/fs/tmpfs/t_vnd.sh Fri May 19 17:04:01 2017        
(r318545)
+++ head/contrib/netbsd-tests/fs/tmpfs/t_vnd.sh Fri May 19 17:14:29 2017        
(r318546)
@@ -28,6 +28,10 @@
 # Verifies that vnd works with files stored in tmpfs.
 #
 
+# Begin FreeBSD
+MD_DEVICE_FILE=md.device
+# End FreeBSD
+
 atf_test_case basic cleanup
 basic_head() {
        atf_set "descr" "Verifies that vnd works with files stored in tmpfs"
@@ -41,7 +45,10 @@ basic_body() {
        # Begin FreeBSD
        if true; then
                atf_check -s eq:0 -o empty -e empty mkdir mnt
-               atf_check -s eq:0 -o empty -e empty mdmfs -F disk.img md3 mnt
+               atf_check -s eq:0 -o empty -e empty mdmfs -F disk.img md mnt
+               md_dev=$(df mnt | awk 'NR != 1 { print $1 }' | xargs basename)
+               atf_check test -c /dev/$md_dev # Sanity check
+               echo -n $md_dev > $TMPDIR/$MD_DEVICE_FILE
        else
        # End FreeBSD
        atf_check -s eq:0 -o empty -e empty vndconfig /dev/vnd3 disk.img
@@ -67,31 +74,23 @@ basic_body() {
        done
 
        atf_check -s eq:0 -o empty -e empty umount mnt
-       # Begin FreeBSD
-       if true; then
-               atf_check -s eq:0 -o empty -e empty mdconfig -d -u 3
-       else
-       # End FreeBSD
        atf_check -s eq:0 -o empty -e empty vndconfig -u /dev/vnd3
-       # Begin FreeBSD
-       fi
-       # End FreeBSD
 
        test_unmount
        touch done
 }
 basic_cleanup() {
+       # Begin FreeBSD
+       if md_dev=$(cat $TMPDIR/$MD_DEVICE_FILE); then
+               echo "Will try disconnecting $md_dev"
+       else
+               echo "$MD_DEVICE_FILE doesn't exist in $TMPDIR; returning early"
+               return 0
+       fi
+       # End FreeBSD
        if [ ! -f done ]; then
                umount mnt 2>/dev/null 1>&2
-               # Begin FreeBSD
-               if true; then
-                       [ ! -c /dev/md3 ] || mdconfig -d -u 3
-               else
-               # End FreeBSD
                vndconfig -u /dev/vnd3 2>/dev/null 1>&2
-               # Begin FreeBSD
-               fi
-               # End FreeBSD
        fi
 }
 

Modified: head/tests/sys/fs/tmpfs/Makefile
==============================================================================
--- head/tests/sys/fs/tmpfs/Makefile    Fri May 19 17:04:01 2017        
(r318545)
+++ head/tests/sys/fs/tmpfs/Makefile    Fri May 19 17:14:29 2017        
(r318546)
@@ -54,6 +54,9 @@ ATF_TESTS_SH_SED_mount_test=          \
 ATF_TESTS_SH_SED_readdir_test=         -e 's,mknod fifo p,mkfifo fifo,g'
 ATF_TESTS_SH_SED_sizes_test=           -e 's,-o -s,-o size=,g'
 ATF_TESTS_SH_SED_statvfs_test=         -e 's,-o -s,-o size=,g'
+ATF_TESTS_SH_SED_vnd_test=             \
+                                       -e 's,vndconfig -u /dev/vnd3,mdconfig 
-d -u $$md_dev,g' \
+                                       -e 's,/dev/vnd3,/dev/$$md_dev,g'
 ATF_TESTS_SH_SED_vnode_leak_test=      -e 's,-o -s,-o size=,g'
 
 .include <netbsd-tests.test.mk>
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to