Hi Brett,
I meant the section in ststart1 where error is set to zero followed by
goto out inf the fixed blocksize part.
on that path the biodone() would be missing - just something I noticed
when looking at the code.
/*
* only FIXEDBLOCK devices have pending I/O or space operations.
*/
if (st->flags & ST_FIXEDBLOCKS) {
/*
* If we are at a filemark but have not reported it yet
* then we should report it now
*/
if (st->flags & ST_AT_FILEMARK) {
if ((bp->b_flags & B_READ) == B_WRITE) {
/*
* Handling of ST_AT_FILEMARK in
* st_space will fill in the right file
* mark count.
* Back up over filemark
*/
if (st_space(st, 0, SP_FILEMARKS, 0)) {
error = EIO;
goto out;
}
} else {
bp->b_resid = bp->b_bcount;
error = 0;
st->flags &= ~ST_AT_FILEMARK;
>>>>>> /* XXX missing a biodone() here? */
goto out;
}
}
}
Frank
On 06/10/21 08:42, Brett Lymn wrote:
Hi Frank,
On Thu, Jun 10, 2021 at 07:45:25AM +0200, Frank Kardel wrote:
Could you check whether my suspicion that biodone() may be missing the
ststart1 function in the
It is missing there but is called in ststart if the error is != 0 after
the ststart1 call. I was going to update the ststart function to do
something very close to what you have done.
I have not tested the patch as my machine with the tapes is remote and has
no remote console
and I don't want to brick that while being off-site.
That's ok - I can test here without harming anything, the machine the
tape drive is attached to has to be booted to windows for $WORK during
the day so my testing window is limited :)