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 theIt 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 :)