*BSD News Article 69026


Return to BSD News archive

Newsgroups: comp.bugs.2bsd
Path: euryale.cc.adfa.oz.au!newshost.anu.edu.au!harbinger.cc.monash.edu.au!news.uwa.edu.au!disco.iinet.net.au!news.uoregon.edu!vixen.cso.uiuc.edu!howland.reston.ans.net!swrinde!newsfeed.internetmci.com!in2.uu.net!news.new-york.net!wlbr!moe!sms
From: sms@moe.2bsd.com (Steven M. Schultz)
Subject: TMSCP tape mispositioning via 'mt -f ... rewind' (#321)
Organization: 2BSD, Simi Valley CA USA
Message-ID: <DrqJxB.H53@moe.2bsd.com>
Date: Tue, 21 May 1996 03:19:59 GMT
Lines: 92

Subject: TMSCP tape mispositioning via 'mt -f ... rewind' (#321)
Index:	sys/pdpuba/tmscp.c 2.11BSD

Description:
	When mt(1) is used to rewind a TMSCP tape device the tape positions
	to the end of the first file.

Repeat-By:
	Create two tape files on a tape and then explicitly rewind the tape:

		tar -cf /dev/nrmt0 /unix
		tar -cf /dev/nrmt0 /unix
		mt -f /dev/rmt0 rewind

	The tape does indeed rewind but then:

		Note that the tape moves forward one file.

Fix:
	It's a one line fix which clears the count of records to space
	forward.  The TMSCP protocol apparently doesn't ignore the 'number of
	tapemarks to skip' parameter when doing a rewind - the rewind is done
	and then the skip parameter is used.  This behavior was accidentally
	introduced when the TMSCP driver was rewritten a couple months ago.

	Thanks again to Terry for complaining about the problem and providing
	a machine for testing (spc11c got dizzy that night;-))

	To install this fix cut where indicated saving to a file (/tmp/321).
	Then:

		patch -p0 < /tmp/321

	If you have TMSCP (TK50, TU81, etc) drives present in the system:

		cd /sys/YOUR_KERNEL
		make
		make install
		reboot

	You may also wish to recompile the GENERIC kernel and keep it around
	as /genunix in case of emergencies:

		cd /sys/GENERIC
		make
		install -c -m 744 -o root -g kmem unix /genunix

	This and previous updates to 2.11BSD are available via anonymous FTP
	to either FTP.IIPO.GTEGSC.COM or FTP.2BSD.COM in the directory 
	/pub/2.11BSD.

------------------------------cut here-------------------------
*** /sys/pdpuba/tmscp.c.old	Tue May 14 22:53:23 1996
--- /sys/pdpuba/tmscp.c	Fri May 17 22:36:05 1996
***************
*** 1,6 ****
  #define	TMSDEBUG	1
  
! /*	@(#)tmscp.c	1.6 (2.11BSD GTE) 1996/5/14 */
  
  #if	!defined(lint) && defined(DOSCCS)
  static	char	*sccsid = "@(#)tmscp.c	1.24	(ULTRIX)	1/21/86";
--- 1,6 ----
  #define	TMSDEBUG	1
  
! /*	@(#)tmscp.c	1.7 (2.11BSD GTE) 1996/5/17 */
  
  #if	!defined(lint) && defined(DOSCCS)
  static	char	*sccsid = "@(#)tmscp.c	1.24	(ULTRIX)	1/21/86";
***************
*** 991,996 ****
--- 991,997 ----
  				i = M_MD_REWND;
  			else
  				i = M_MD_REWND | M_MD_IMMED;
+ 			bp->b_bcount = 0;	/* XXX */
  			tms_repos_st(mp, sc, i);
  			break;
  		case TMS_OFFL:
*** /VERSION.old	Thu May 16 20:00:42 1996
--- /VERSION	Mon May 20 19:50:04 1996
***************
*** 1,4 ****
! Current Patch Level: 320
  
  2.11 BSD
  ============
--- 1,4 ----
! Current Patch Level: 321
  
  2.11 BSD
  ============