Date: Mon, 5 Aug 2002 22:43:18 +0200 (CEST) From: "Martin.Kraemer@fujitsu-siemens.com" <Martin.Kraemer@Fujitsu-Siemens.com> To: FreeBSD-gnats-submit@FreeBSD.org Subject: bin/41350: vnconfig: apparent off-by-one bug Message-ID: <200208052043.g75KhIYp017589@deejai2.mch.fsc.net>
next in thread | raw e-mail | index | archive | help
>Number: 41350 >Category: bin >Synopsis: vnconfig: apparent off-by-one bug >Confidential: no >Severity: critical >Priority: medium >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Mon Aug 05 13:50:01 PDT 2002 >Closed-Date: >Last-Modified: >Originator: Martin.Kraemer@fujitsu-siemens.com >Release: FreeBSD 4.6-STABLE i386 >Organization: Fujitsu-Siemens Computers >Environment: System: FreeBSD deejai2.mch.fsc.net 4.6-STABLE FreeBSD 4.6-STABLE #9: Tue Jul 16 10:46:49 CEST 2002 martin@deejai2.mch.fsc.net:/usr/src/sys/compile/DEEJAI4B i386 >Description: This is a long error report, and I wondered whether I should send it to freebsd-stable@freebsd.org, or send_pr it to the developers directly. Because it is a VERY specific problem, I decided on sending it using send_pr, because freebsd-stable@ is more for the user view. Below please find several mis-features and errors around mount and vnconfig which I found while trying to mount ISO images using vnconfig. I am astonished that I seem to be the first who mentions these problems, because their effect is quite obvious, and has plagued me since FreeBSD-4.5-STABLE some time ago. Only now did I find the time to dig deeper into the strange effects around vnconfig & mount. I am running a 4.6-STABLE, cvsup'ed last in mid-july 2002. I configured my kernel to have 16 vn devices: pseudo-device vn 16 # Vnode driver (for vnconfig command) ######################################################################## *** Suggestion *** It appears that the vnconfig command has support for automatically mounting the configured device. However, this support is currently limited to the "ufs" fstype, because there is no documented method for passing the desired fstype ("-t cd9660") or other options (e.g., "-o ro") to the mount. That makes it impossible to "vnconfig -a -e" a set of ISO images and mount them from vnconfig. Several calls to mount are thus needed to mount the vnconfigured devices after "vnconfig -a". Suggestion: extend the syntax to support not only mountro= but also opt= and fstype= ######################################################################## *** Suggestion *** Subject: Improve output of "vnconfig" When configuring a loopback device, vnconfig prints, e.g., /dev/vn1a: 0 bytes on /home/martin/WWW/FreeBSD-4.6/4.6-disc2.iso The "0 bytes" information is misleading at best, leading to confusion. Probably it was meant for the function to create an image in the swap partition, but it makes no sense for the case where I try and mount a given file as a file system. Suggestion: remove the "XXX bytes" info for existing files. ######################################################################## *** Suggestion *** Subject: Use realpath for "vnconfig" When configuring a loopback device, specifying an image file path which crosses symbolic links, vnconfig should use the realpath(3) of the image file instead of the given path. (IMHO mount should do that too) ######################################################################## *** Suggestion *** Subject: All-or-nothing approach in case of errors When configuring a loopback device using "vnconfig -c -e" to enable additional options given in the vntab lines or on the command line, an error situation does not report which part of the vn configuration failed (the "vnconfig -c" part (configure) or the "vnconfig -e" part (mount)). When used in a script, it is therefore unclear whether _nothing_ has been done by vnconfig, or whether part of the action _was_ executed (and needs to be undone). Suggestion: A better solution would be to have an "all or nothing" approach, i.e, when the "vnconfig -e" (mount) fails, then an implicit equivalent of "vnconfig -u" must internally be executed for the "vnconfig -c" which was already successfully executed, thus guaranteeing that the caller need not undo anything if the invocation failed. ######################################################################## *** Wish *** Subject: Being able to query the vnconfig'ed devices Solaris has a "lofiadm" command which can list the configured loopback devices. FreeBSD seems to have a "write only" configuration: you can configure, but you must remember what you configured, and you cannot query "is /dev/vn13a already configured?" Especially after "vnconfig -a", that is a problem, because if it returns a non-zero exit code, a script cannot know how much of the command succeeded, and which devices are still unassigned. Wish: a "vnconfig -l" to list the configured devices would be nice to have. ######################################################################## *** Error *** Subject: apparent builtin limit of 80 chars for the path length of a mount directory After preparing a (loopback) device using vnconfig, a subsequent mount of the CD image appears to succeed, but the result returned by mount is truncated. I mounted /dev/vn13a on /home/spare1/Debian-3.0/ftp2.de.debian.org/debian-cd/image/3.0_r0/jigdo/i386/CD4 but "mount" prints: /dev/vn13a on /home/spare1/Debian-3.0/ftp2.de.debian.org/debian-cd/image/3.0_r0/jigdo/i386/CD (cd9660, local, read-only) (note the missing "4" in ".../CD4"; BTW: the length is 80-1) (off-by-one error? hitting an unreported internal limit? A mount path should hold at least 1023 characters, or should return ENAMETOOLONG: The mount() function will fail when one of the following occurs: [...] [ENAMETOOLONG] A component of a pathname exceeded 255 characters, or the entire length of a path name exceeded 1023 charac ters. And at least, mount should complain before hitting this limit. In my case, I was unable to umount this directory again!!! Had to reboot...) *** Error *** Subject: off by one error(s) around vnconfig When using "vnconfig -a", the vnconfig command sometimes makes a peculiar error. After mounting the last vn device mentioned in the vntab, a subsequent attempt to mount this device does not actually mount THIS device, but instead mounts the contents of /dev/vn0a (again, so two different mount points now have the same contents). Another error caused presumably by "vnconfig -a" is that the vn0a device (for me at least; probably "the first used vn device" rather than "specifically vn0a") can no longer be unconfigured (although it can still be used and mounted). See below for the error log. When I say "sometimes" a peculiar error, it means that the error depends on the history of "vnconfig -a" commands invoked previously. For instance, after configuring 7 vn devices for the first time, the last one shows the error. When increasing the number to 13, again only the last one is buggy. When reducing the number of vn devices now to 12, these 12 are all behaving correctly (all increase/decrease numbers are meant in conjunction with a "vnconfig -a" command, and a unconfiguration before trying the next test). The script <<testvn>> which I append shows that this error occurs only when using "vnconfig -a", not when using individual calls to vnconfig. The script can be edited to configure the triples <vn_dev>, <iso_file> and <mountro=dir> for testing purposes. The examples are lines taken from my /etc/vntab, but you can substitute other triples for your situation. What the script does: * Using the configured vntab format lines, it first umounts and unconfigures whatever might have been left over from the previous invocation of "testvn". * Using the configured vntab format lines, it then tries to vnconfig and mount all configured image files one-by-one. First, it tries to "vnconfig -c -e" (but that fails because I cannot pass the options "-t cd9660 -o ro" to vnconfig/mount, and the script does an implied "vnconfig -u" -- just in case, see suggestion above). Then it tries to "vnconfig -c" the vn device and mounts it on the mount point found in the vntab triple (currently, "-t cd9660" only). * After a successful mount, the contents of the mount points are listed into a temporary file (ls -l). This file is later compared against the other vn mount points to find the error we are looking for. * Now all vn mounts are umounted again, and their respective vn devices are unconfigured again. This triggers the error message... vnconfig: VNIOCDETACH: Device not configured when trying to unconfigure the vn0a device (which had been umounted two lines before). * The second main part of the script now tries a "vnconfig -a -c" in contrast to the individual "vnconfig -c" lines for each vn device we invoked above. The "vnconfig -a -c" prints an error when trying to configure the last device specified in the vntab: vnconfig: VNIOCATTACH: Device busy and prints its acknowledgement message "/dev/vnXXa: 0 bytes on <imagefile>" for the remaining vn devices. Also, this looks like an off-by-one error. * Now, we loop over the mount points for the vn devices and re-mount them, like in the 1st main part. Then we compare the contents of the mount points with the temporary directory listings we made above (ls -l) and report any differences. In the case of a mismatch, we loop over all the temporary directory listing files to see if what we mounted is the contents of one of the OTHER mount points. If so, we print that. * Finally, all vn mounts are umounted again, and their respective vn devices are unconfigured again, like above. Again, this triggers the error message... vnconfig: VNIOCDETACH: Device not configured when trying to unconfigure the vn0a device (which had been umounted two lines before). In the log file, please look for lines containing "Oops:". I append the script <<testvn>>, then its output <<testvn.log>> --snip--testvn: #!/bin/sh #set -x vntab=vntab.tmp cat >$vntab <<. # Insert the list of vn nodes, ISO images and mount points here: /dev/vn0a /home/com5/martin/WWW/FreeBSD-4.6/4.6-disc1.iso mountro=/home/com5/martin/WWW/FreeBSD-4.6/CD1 /dev/vn1a /home/com5/martin/WWW/FreeBSD-4.6/4.6-disc2.iso mountro=/home/com5/martin/WWW/FreeBSD-4.6/CD2 /dev/vn2a /home/com5/martin/WWW/FreeBSD-4.6/4.6-disc3.iso mountro=/home/com5/martin/WWW/FreeBSD-4.6/CD3 /dev/vn3a /home/com5/martin/WWW/FreeBSD-4.6/4.6-disc4.iso mountro=/home/com5/martin/WWW/FreeBSD-4.6/CD4 /dev/vn4a /home/spare1/ct1.iso mountro=/home/com5/martin/WWW/ct2002/ct1 /dev/vn5a /home/spare1/ct2.iso mountro=/home/com5/martin/WWW/ct2002/ct2 /dev/vn6a /home/spare1/ct2002-01.iso mountro=/home/com5/martin/WWW/ct2002/ctrom1 /dev/vn7a /home/com5/martin/WWW/SuSE-8.0/suse_intel_8.0_prof_cd1.iso mountro=/home/com5/martin/WWW/SuSE-8.0/CD1 /dev/vn8a /home/com5/martin/WWW/SuSE-8.0/suse_intel_8.0_prof_cd2.iso mountro=/home/com5/martin/WWW/SuSE-8.0/CD2 #/dev/vn9a /home/com5/martin/WWW/SuSE-8.0/suse_intel_8.0_prof_cd3.iso mountro=/home/com5/martin/WWW/SuSE-8.0/CD3 #/dev/vn10a /home/com5/martin/WWW/SuSE-8.0/suse_intel_8.0_prof_cd4.iso mountro=/home/com5/martin/WWW/SuSE-8.0/CD4 #/dev/vn11a /home/com5/martin/WWW/SuSE-8.0/suse_intel_8.0_prof_cd5.iso mountro=/home/com5/martin/WWW/SuSE-8.0/CD5 #/dev/vn12a /home/com5/martin/WWW/SuSE-8.0/suse_intel_8.0_prof_cd6.iso mountro=/home/com5/martin/WWW/SuSE-8.0/CD6 #/dev/vn13a /home/com5/martin/WWW/SuSE-8.0/suse_intel_8.0_prof_cd7.iso mountro=/home/com5/martin/WWW/SuSE-8.0/CD7 /dev/vn9a /home/spare1/Debian-3.0/debian-30r0-i386-binary-1.iso mountro=/home/spare1/Debian-3.0/CD1 /dev/vn10a /home/spare1/Debian-3.0/debian-30r0-i386-binary-1_NONUS.iso mountro=/home/spare1/Debian-3.0/CD1_NONUS /dev/vn11a /home/spare1/Debian-3.0/debian-30r0-i386-binary-2.iso mountro=/home/spare1/Debian-3.0/CD2 /dev/vn12a /home/spare1/Debian-3.0/debian-30r0-i386-binary-3.iso mountro=/home/spare1/Debian-3.0/CD3 /dev/vn13a /home/spare1/Debian-3.0/debian-30r0-i386-binary-4.iso mountro=/home/spare1/Debian-3.0/CD4 . Log() { echo >&2 "`basename $0`: $@" } for dir in `grep '^/dev.*mountro=' $vntab | cut -d= -f2` do umount $dir 2>/dev/null && Log "Umounted $dir" done mounted="" # We umounted everything, right? for vn in `grep '^/dev/vn' $vntab | cut -d' ' -f1` do vnconfig -d $vn vnconfig -u $vn 2>/dev/null && Log "Un-vnconfig'ed $vn" vnconfig -u $vn 2>/dev/null && Log "Un-vnconfig'ed $vn" done Log "==================================================" Log "Mounting the VN's one by one" mounted=`grep '^/dev/vn' $vntab | while read line do dev=\`set -- $line; echo $1\` iso=\`set -- $line; echo $2\` mountpt=\`echo $line | cut -d= -f2\` echo "Device $dev from file $iso mount point $mountpt" if vnconfig -v -e $dev $iso mount=$mountpt 2>/dev/null then if mount | grep $dev >/dev/null then Log "vnconfig $dev succeeded in mounting the ISO image" mounted="$dev $mounted" else Log "vnconfig $dev did not mount, yet returned exit code 0" fi else vnconfig -u $dev 2>/dev/null vnconfig -v -e $dev $iso && if mount -t cd9660 $dev $mountpt then # delete lines 1 and 3 # line 1 is "total XXXX" (total size includes "..", so depends on size of mnt point) # line 3 is ".." (depends on mnt point) ls -la $mountpt | sed "1d;3d" >\`basename $dev\`.tmp mounted="$dev $mounted" fi fi Log "" # Verify that nothing has changed: for dev in $mounted do mountpt=\`mount | grep "^$dev on " | cut -d' ' -f3\` ls -la $mountpt | sed "1d;3d" | diff \`basename $dev\`.tmp - || Log "Oops: Mount point $mountpt changed its contents." # Log "Verified $dev" done trap "echo $mounted >&3" 0 done 3>&1 1>&2` Log "==================================================" Log "Cleanup $mounted" for dev in $mounted do if mount | grep "^$dev on" >/dev/null then Log "umounting and unconfiguring $dev" umount $dev || Log "Oops: could not umount $dev" vnconfig -d -u $dev || Log "Oops: could not vnconfig -d -u $dev" else Log "Oops: Expected $dev to be mounted, but it wasn't" fi done Log "==================================================" Log "Try vnconfig -a now" Log "==================================================" vnconfig -a -c -v -f $vntab || Log "Oops: could not vnconfig -a -c -v -f $vntab" mount | grep '^/dev/vn' || Log "Ok, No images are mounted at the moment." Log "After the 'vnconfig -a', try to mount them:" mounted='' #reset mounted=`grep '^/dev/vn' $vntab | while read line do dev=\`set -- $line; echo $1\` iso=\`set -- $line; echo $2\` mountpt=\`echo $line | cut -d= -f2\` echo "Try: mount -t cd9660 $dev $mountpt " if mount -t cd9660 $dev $mountpt then mountpt=\`mount | grep "^$dev on " | cut -d' ' -f3\` if [ _"$mountpt" = _"" ]; then Log "Oops - mount succeeded, but $dev is not mounted !?!?!" fi if ls -la "$mountpt" | sed "1d;3d" | diff \`basename $dev\`.tmp - >/dev/null then Log "Ok: $dev has same contents as in the manual vnconfig." else Log "Oops: contents of $dev $mountpt changed!!!" for chk in $mounted \`grep '^/dev/vn' $vntab | cut -d' ' -f1\` do if [ $dev != $chk ] && ls -la "$mountpt" | sed "1d;3d" | diff \`basename $chk\`.tmp - >/dev/null then Log "Looks like $dev (on $mountpt) shows the contents of $chk !!!" break fi done fi mounted="$dev $mounted" else Log "Oops: could not mount -t cd9660 $dev $mountpt" fi Log "" # Verify that nothing has changed: for dev in $mounted do mountpt=\`mount | grep "^$dev on " | cut -d' ' -f3\` if [ _"$mountpt" != _"" ]; then ls -la $mountpt | sed "1d;3d" | diff \`basename $dev\`.tmp - || Log "Oops: Mount point for $dev changed its contents." else Log "Could not verify $dev - it is not mounted" fi done trap "echo $mounted >&3" 0 done 3>&1 1>&2` Log "==================================================" Log "Cleanup $mounted" for dev in $mounted do if mount | grep "^$dev on" >/dev/null then Log "umounting and unconfiguring $dev" umount $dev || Log "Oops: could not umount $dev" vnconfig -d -u $dev || Log "Oops: could not vnconfig -d -u $dev" else Log "Oops: Expected $dev to be mounted, but it wasn't" fi done Log "==================================================" --snip-- --snip--testvn.log: testvn: ================================================== testvn: Mounting the VN's one by one Device /dev/vn0a from file /home/com5/martin/WWW/FreeBSD-4.6/4.6-disc1.iso mount point /home/com5/martin/WWW/FreeBSD-4.6/CD1 /dev/vn0a: 0 bytes on /home/com5/martin/WWW/FreeBSD-4.6/4.6-disc1.iso /dev/vn0a: 0 bytes on /home/com5/martin/WWW/FreeBSD-4.6/4.6-disc1.iso testvn: Device /dev/vn1a from file /home/com5/martin/WWW/FreeBSD-4.6/4.6-disc2.iso mount point /home/com5/martin/WWW/FreeBSD-4.6/CD2 /dev/vn1a: 0 bytes on /home/com5/martin/WWW/FreeBSD-4.6/4.6-disc2.iso /dev/vn1a: 0 bytes on /home/com5/martin/WWW/FreeBSD-4.6/4.6-disc2.iso testvn: Device /dev/vn2a from file /home/com5/martin/WWW/FreeBSD-4.6/4.6-disc3.iso mount point /home/com5/martin/WWW/FreeBSD-4.6/CD3 /dev/vn2a: 0 bytes on /home/com5/martin/WWW/FreeBSD-4.6/4.6-disc3.iso /dev/vn2a: 0 bytes on /home/com5/martin/WWW/FreeBSD-4.6/4.6-disc3.iso testvn: Device /dev/vn3a from file /home/com5/martin/WWW/FreeBSD-4.6/4.6-disc4.iso mount point /home/com5/martin/WWW/FreeBSD-4.6/CD4 /dev/vn3a: 0 bytes on /home/com5/martin/WWW/FreeBSD-4.6/4.6-disc4.iso /dev/vn3a: 0 bytes on /home/com5/martin/WWW/FreeBSD-4.6/4.6-disc4.iso testvn: Device /dev/vn4a from file /home/spare1/ct1.iso mount point /home/com5/martin/WWW/ct2002/ct1 /dev/vn4a: 0 bytes on /home/spare1/ct1.iso /dev/vn4a: 0 bytes on /home/spare1/ct1.iso testvn: Device /dev/vn5a from file /home/spare1/ct2.iso mount point /home/com5/martin/WWW/ct2002/ct2 /dev/vn5a: 0 bytes on /home/spare1/ct2.iso /dev/vn5a: 0 bytes on /home/spare1/ct2.iso testvn: Device /dev/vn6a from file /home/spare1/ct2002-01.iso mount point /home/com5/martin/WWW/ct2002/ctrom1 /dev/vn6a: 0 bytes on /home/spare1/ct2002-01.iso /dev/vn6a: 0 bytes on /home/spare1/ct2002-01.iso testvn: Device /dev/vn7a from file /home/com5/martin/WWW/SuSE-8.0/suse_intel_8.0_prof_cd1.iso mount point /home/com5/martin/WWW/SuSE-8.0/CD1 /dev/vn7a: 0 bytes on /home/com5/martin/WWW/SuSE-8.0/suse_intel_8.0_prof_cd1.iso /dev/vn7a: 0 bytes on /home/com5/martin/WWW/SuSE-8.0/suse_intel_8.0_prof_cd1.iso testvn: Device /dev/vn8a from file /home/com5/martin/WWW/SuSE-8.0/suse_intel_8.0_prof_cd2.iso mount point /home/com5/martin/WWW/SuSE-8.0/CD2 /dev/vn8a: 0 bytes on /home/com5/martin/WWW/SuSE-8.0/suse_intel_8.0_prof_cd2.iso /dev/vn8a: 0 bytes on /home/com5/martin/WWW/SuSE-8.0/suse_intel_8.0_prof_cd2.iso testvn: Device /dev/vn9a from file /home/spare1/Debian-3.0/debian-30r0-i386-binary-1.iso mount point /home/spare1/Debian-3.0/CD1 /dev/vn9a: 0 bytes on /home/spare1/Debian-3.0/debian-30r0-i386-binary-1.iso /dev/vn9a: 0 bytes on /home/spare1/Debian-3.0/debian-30r0-i386-binary-1.iso testvn: Device /dev/vn10a from file /home/spare1/Debian-3.0/debian-30r0-i386-binary-1_NONUS.iso mount point /home/spare1/Debian-3.0/CD1_NONUS /dev/vn10a: 0 bytes on /home/spare1/Debian-3.0/debian-30r0-i386-binary-1_NONUS.iso /dev/vn10a: 0 bytes on /home/spare1/Debian-3.0/debian-30r0-i386-binary-1_NONUS.iso testvn: Device /dev/vn11a from file /home/spare1/Debian-3.0/debian-30r0-i386-binary-2.iso mount point /home/spare1/Debian-3.0/CD2 /dev/vn11a: 0 bytes on /home/spare1/Debian-3.0/debian-30r0-i386-binary-2.iso /dev/vn11a: 0 bytes on /home/spare1/Debian-3.0/debian-30r0-i386-binary-2.iso testvn: Device /dev/vn12a from file /home/spare1/Debian-3.0/debian-30r0-i386-binary-3.iso mount point /home/spare1/Debian-3.0/CD3 /dev/vn12a: 0 bytes on /home/spare1/Debian-3.0/debian-30r0-i386-binary-3.iso /dev/vn12a: 0 bytes on /home/spare1/Debian-3.0/debian-30r0-i386-binary-3.iso testvn: Device /dev/vn13a from file /home/spare1/Debian-3.0/debian-30r0-i386-binary-4.iso mount point /home/spare1/Debian-3.0/CD4 /dev/vn13a: 0 bytes on /home/spare1/Debian-3.0/debian-30r0-i386-binary-4.iso testvn: testvn: ================================================== testvn: Cleanup /dev/vn13a /dev/vn12a /dev/vn11a /dev/vn10a /dev/vn9a /dev/vn8a /dev/vn7a /dev/vn6a /dev/vn5a /dev/vn4a /dev/vn3a /dev/vn2a /dev/vn1a /dev/vn0a testvn: umounting and unconfiguring /dev/vn13a testvn: umounting and unconfiguring /dev/vn12a testvn: umounting and unconfiguring /dev/vn11a testvn: umounting and unconfiguring /dev/vn10a testvn: umounting and unconfiguring /dev/vn9a testvn: umounting and unconfiguring /dev/vn8a testvn: umounting and unconfiguring /dev/vn7a testvn: umounting and unconfiguring /dev/vn6a testvn: umounting and unconfiguring /dev/vn5a testvn: umounting and unconfiguring /dev/vn4a testvn: umounting and unconfiguring /dev/vn3a testvn: umounting and unconfiguring /dev/vn2a testvn: umounting and unconfiguring /dev/vn1a testvn: umounting and unconfiguring /dev/vn0a vnconfig: VNIOCDETACH: Device not configured testvn: Oops: could not vnconfig -d -u /dev/vn0a testvn: ================================================== testvn: Try vnconfig -a now testvn: ================================================== /dev/vn0a: 0 bytes on /home/com5/martin/WWW/FreeBSD-4.6/4.6-disc1.iso /dev/vn1a: 0 bytes on /home/com5/martin/WWW/FreeBSD-4.6/4.6-disc2.iso /dev/vn2a: 0 bytes on /home/com5/martin/WWW/FreeBSD-4.6/4.6-disc3.iso /dev/vn3a: 0 bytes on /home/com5/martin/WWW/FreeBSD-4.6/4.6-disc4.iso /dev/vn4a: 0 bytes on /home/spare1/ct1.iso /dev/vn5a: 0 bytes on /home/spare1/ct2.iso /dev/vn6a: 0 bytes on /home/spare1/ct2002-01.iso /dev/vn7a: 0 bytes on /home/com5/martin/WWW/SuSE-8.0/suse_intel_8.0_prof_cd1.iso /dev/vn8a: 0 bytes on /home/com5/martin/WWW/SuSE-8.0/suse_intel_8.0_prof_cd2.iso /dev/vn9a: 0 bytes on /home/spare1/Debian-3.0/debian-30r0-i386-binary-1.iso /dev/vn10a: 0 bytes on /home/spare1/Debian-3.0/debian-30r0-i386-binary-1_NONUS.iso /dev/vn11a: 0 bytes on /home/spare1/Debian-3.0/debian-30r0-i386-binary-2.iso /dev/vn12a: 0 bytes on /home/spare1/Debian-3.0/debian-30r0-i386-binary-3.iso vnconfig: VNIOCATTACH: Device busy testvn: Oops: could not vnconfig -a -c -v -f vntab.tmp testvn: Ok, No images are mounted at the moment. testvn: After the 'vnconfig -a', try to mount them: Try: mount -t cd9660 /dev/vn0a /home/com5/martin/WWW/FreeBSD-4.6/CD1 testvn: Ok: /dev/vn0a has same contents as in the manual vnconfig. testvn: Try: mount -t cd9660 /dev/vn1a /home/com5/martin/WWW/FreeBSD-4.6/CD2 testvn: Ok: /dev/vn1a has same contents as in the manual vnconfig. testvn: Try: mount -t cd9660 /dev/vn2a /home/com5/martin/WWW/FreeBSD-4.6/CD3 testvn: Ok: /dev/vn2a has same contents as in the manual vnconfig. testvn: Try: mount -t cd9660 /dev/vn3a /home/com5/martin/WWW/FreeBSD-4.6/CD4 testvn: Ok: /dev/vn3a has same contents as in the manual vnconfig. testvn: Try: mount -t cd9660 /dev/vn4a /home/com5/martin/WWW/ct2002/ct1 testvn: Ok: /dev/vn4a has same contents as in the manual vnconfig. testvn: Try: mount -t cd9660 /dev/vn5a /home/com5/martin/WWW/ct2002/ct2 testvn: Ok: /dev/vn5a has same contents as in the manual vnconfig. testvn: Try: mount -t cd9660 /dev/vn6a /home/com5/martin/WWW/ct2002/ctrom1 testvn: Ok: /dev/vn6a has same contents as in the manual vnconfig. testvn: Try: mount -t cd9660 /dev/vn7a /home/com5/martin/WWW/SuSE-8.0/CD1 testvn: Ok: /dev/vn7a has same contents as in the manual vnconfig. testvn: Try: mount -t cd9660 /dev/vn8a /home/com5/martin/WWW/SuSE-8.0/CD2 testvn: Ok: /dev/vn8a has same contents as in the manual vnconfig. testvn: Try: mount -t cd9660 /dev/vn9a /home/spare1/Debian-3.0/CD1 testvn: Ok: /dev/vn9a has same contents as in the manual vnconfig. testvn: Try: mount -t cd9660 /dev/vn10a /home/spare1/Debian-3.0/CD1_NONUS testvn: Ok: /dev/vn10a has same contents as in the manual vnconfig. testvn: Try: mount -t cd9660 /dev/vn11a /home/spare1/Debian-3.0/CD2 testvn: Ok: /dev/vn11a has same contents as in the manual vnconfig. testvn: Try: mount -t cd9660 /dev/vn12a /home/spare1/Debian-3.0/CD3 testvn: Ok: /dev/vn12a has same contents as in the manual vnconfig. testvn: Try: mount -t cd9660 /dev/vn13a /home/spare1/Debian-3.0/CD4 testvn: Oops: contents of /dev/vn13a /home/spare1/Debian-3.0/CD4 changed!!! testvn: Looks like /dev/vn13a (on /home/spare1/Debian-3.0/CD4) shows the contents of /dev/vn0a !!! testvn: 1,15c1,36 < dr-xr-xr-x 8 root wheel 2048 18 Jul 15:08 . < dr-xr-xr-x 2 root wheel 2048 18 Jul 15:08 .disk < dr-xr-xr-x 2 root wheel 4096 18 Jul 15:08 .xlp < -r--r--r-- 1 root wheel 15111 18 Jul 15:08 README.html < -r--r--r-- 1 root wheel 58004 11 Jul 20:52 README.mirrors.html < -r--r--r-- 1 root wheel 29126 11 Jul 20:52 README.mirrors.txt < -r--r--r-- 1 root wheel 17061 11 Jul 20:52 README.non-US < -r--r--r-- 1 root wheel 10062 18 Jul 15:08 README.txt < -r--r--r-- 1 root wheel 661 18 Jul 16:22 TRANS.TBL < dr-xr-xr-x 2 root wheel 2048 18 Jul 15:08 boot < lr-xr-xr-x 1 root wheel 1 18 Jul 15:08 debian -> . < dr-xr-xr-x 4 root wheel 2048 18 Jul 15:09 dists < -r--r--r-- 1 root wheel 114175 18 Jul 15:32 md5sum.txt < dr-xr-xr-x 2 root wheel 2048 18 Jul 15:08 pics < dr-xr-xr-x 4 root wheel 2048 18 Jul 15:09 pool --- > dr-xr-xr-x 23 root wheel 6144 11 Jun 02:14 . > -r--r--r-- 1 root wheel 4200 11 Jun 01:32 ERRATA.HTM > -r--r--r-- 1 root wheel 2708 11 Jun 01:32 ERRATA.TXT > -r--r--r-- 1 root wheel 111873 11 Jun 01:32 HARDWARE.HTM > -r--r--r-- 1 root wheel 40039 11 Jun 01:32 HARDWARE.TXT > -r--r--r-- 1 root wheel 102691 11 Jun 01:32 INSTALL.HTM > -r--r--r-- 1 root wheel 59121 11 Jun 01:32 INSTALL.TXT > -r--r--r-- 1 root wheel 22502 11 Jun 01:32 README.HTM > -r--r--r-- 1 root wheel 13811 11 Jun 01:32 README.TXT > -r--r--r-- 1 root wheel 52233 11 Jun 01:32 RELNOTES.HTM > -r--r--r-- 1 root wheel 21931 11 Jun 01:32 RELNOTES.TXT > dr-xr-xr-x 2 root wheel 18432 11 Jun 01:32 bin > dr-xr-xr-x 3 root wheel 4096 11 Jun 01:32 boot > dr-xr-xr-x 2 root wheel 4096 11 Jun 01:32 catpages > -r--r--r-- 1 root wheel 25 11 Jun 01:32 cdrom.inf > dr-xr-xr-x 2 root wheel 2048 11 Jun 01:32 compat1x > dr-xr-xr-x 2 root wheel 2048 11 Jun 01:32 compat20 > dr-xr-xr-x 2 root wheel 2048 11 Jun 01:32 compat21 > dr-xr-xr-x 2 root wheel 2048 11 Jun 01:32 compat22 > dr-xr-xr-x 2 root wheel 2048 11 Jun 01:32 compat3x > dr-xr-xr-x 2 root wheel 2048 11 Jun 01:32 compat4x > dr-xr-xr-x 2 root wheel 10240 11 Jun 01:32 crypto > dr-xr-xr-x 2 root wheel 2048 11 Jun 01:32 dict > dr-xr-xr-x 2 root wheel 10240 11 Jun 01:32 doc > -r--r--r-- 1 root wheel 2963 11 Jun 01:32 docbook.css > -r--r--r-- 1 root wheel 83155 11 Jun 16:46 filename.txt > dr-xr-xr-x 2 root wheel 2048 11 Jun 01:32 floppies > dr-xr-xr-x 2 root wheel 4096 11 Jun 01:32 games > dr-xr-xr-x 2 root wheel 2048 11 Jun 01:32 info > -r-xr-xr-x 3 root wheel 3773568 11 Jun 01:14 kernel > dr-xr-xr-x 2 root wheel 6144 11 Jun 01:32 manpages > dr-xr-xr-x 65 root wheel 10240 11 Jun 16:43 packages > dr-xr-xr-x 2 root wheel 2048 11 Jun 01:33 ports > dr-xr-xr-x 2 root wheel 2048 11 Jun 01:32 proflibs > dr-xr-xr-x 2 root wheel 40960 11 Jun 01:32 src > dr-xr-xr-x 4 root wheel 4096 28 Jan 2002 tools testvn: Oops: Mount point for /dev/vn13a changed its contents. testvn: ================================================== testvn: Cleanup /dev/vn13a /dev/vn12a /dev/vn11a /dev/vn10a /dev/vn9a /dev/vn8a /dev/vn7a /dev/vn6a /dev/vn5a /dev/vn4a /dev/vn3a /dev/vn2a /dev/vn1a /dev/vn0a testvn: umounting and unconfiguring /dev/vn13a testvn: umounting and unconfiguring /dev/vn12a testvn: umounting and unconfiguring /dev/vn11a testvn: umounting and unconfiguring /dev/vn10a testvn: umounting and unconfiguring /dev/vn9a testvn: umounting and unconfiguring /dev/vn8a testvn: umounting and unconfiguring /dev/vn7a testvn: umounting and unconfiguring /dev/vn6a testvn: umounting and unconfiguring /dev/vn5a testvn: umounting and unconfiguring /dev/vn4a testvn: umounting and unconfiguring /dev/vn3a testvn: umounting and unconfiguring /dev/vn2a testvn: umounting and unconfiguring /dev/vn1a testvn: umounting and unconfiguring /dev/vn0a vnconfig: VNIOCDETACH: Device not configured testvn: Oops: could not vnconfig -d -u /dev/vn0a testvn: ================================================== --snip-- >How-To-Repeat: See testvn script above >Fix: avoid "vnconfig -a" (not even sure if that cures the problem) >Release-Note: >Audit-Trail: >Unformatted: To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200208052043.g75KhIYp017589>