View Incident:
http://co-op.engr.sgi.com/BugWorks/code/bwxquery.cgi?search=Search&wlong=1&view_type=Bug&wi=802318
Submitter : tes Submitter Domain : engr
Assigned Engineer : tes Assigned Domain : engr
Assigned Group : xfs-linux Category : software
Customer Reported : F Priority : 3
Project : xfs-linux Status : open
Description :
A QA test revealed that xfsdump using the default
drive_scsitape strategy cannot do multiple dumps
to a tape.
The problem stems from a different behaviour between
the Linux scsi tape driver and the IRIX one.
In IRIX, the drive can be position to the left of the
file mark after a bsf or to the right of a file mark
after a fsf, and it will report a status of MT_FMK.
However, in Linux, if one does a bsf to the left of the
file mark, it does not set the status of MT_FMK (or GMT_EOF).
This is confirmed with mt(1) and author of driver.
The xfsdump code does a bsf after skipping over the 1st dump's
media files. After the bsf, it does a check to ensure
it is at a filemark and this fails with:
encountered media error attempting BSF
There is no way for verification of being to the left of a
filemark after a BSF in Linux, so the fix is to remove
this check. As far as I can tell, it is just being paranoid.
This status checking would not happen in the minrmt (-m)
case for xfsdump.
Post script:
------------
Having a further look at the code in dump:
16:14 tes@snort 21> grep do_bsf *.c
content.c: rval = ( * dop->do_bsf )( drivep, 0,
&status );
content.c: rval = ( * dop->do_bsf )( drivep, 0,
&status );
drive_minrmt.c:static intgen_t do_bsf( drive_t *, intgen_t , intgen_t *);
drive_minrmt.c: do_bsf, /* do_bsf */
drive_minrmt.c:do_bsf( drive_t *drivep, intgen_t count, intgen_t *statp )
drive_scsitape.c:static intgen_t do_bsf( drive_t *, intgen_t , intgen_t *);
drive_scsitape.c: do_bsf, /* do_bsf */
drive_scsitape.c:do_bsf( drive_t *drivep, intgen_t count, intgen_t *statp )
It appears to only every do a "do_bsf(count = 0)"
which translates to: bsf 1, fsf 1
I can't really see that it is achieving a whole lot !
The only other place where we don't use 0 as the count
is in dump/scan which is not exported in IRIX and hasn't
been ported to Linux. Hmmmmm.
|