Matt Jacob ed744c4e51 Some fixes to handle fixed mode and variable mode more sensibly- and also
incorporate some notion of which revision the device is. If it's < SCSI2, for
example, READ BLOCK LIMITS is not a MANDATORY command.

At any rate, the initial state is to try and read block limits to get a notion
of the smallest and largest record size as well as the granularity. However,
this doesn't mean that the device should actually *in* fixed block mode should
the max && min  be equal... *That* choice is (for now) determined by whether
the device comes up with a blocksize of nonzero. If so, then it's a fixed block
preferred device, otherwise not (this will change again soon).

When actually doing I/O, and you're in fixed length mode, the block count is
*not* the byte count divided by the minimum block size- it's the byte count
divided by the current blocksize (or use shift/mask shortcuts if that worked
out...).

Then when you *change* the blocksize via an ioctl, make sure this actually
propagates to the stored notion of blocksize (and update the shift/mask
shortcuts).

Misc Other:
	When doing a mode select, only use the SCSI_SAME_DENSITY (0x7f) code if
the device is >= SCSI2- otherwise just use the saved density code.

	Recover from the ripple of ILLEGAL REQUEST not being 'retried' in that
RESERVE/RELEASE is not a mandatory command for < SCSI2 (so ignore it if it
fails).
1998-12-11 07:19:36 +00:00
..
1998-09-15 06:33:23 +00:00
1998-09-15 06:33:23 +00:00
1998-09-15 06:33:23 +00:00
1998-09-15 06:33:23 +00:00
1998-09-15 06:33:23 +00:00
1998-09-15 06:33:23 +00:00
1998-09-15 06:33:23 +00:00
1998-09-15 06:33:23 +00:00
1998-09-15 06:33:23 +00:00
1998-09-15 06:33:23 +00:00
1998-09-22 04:53:23 +00:00
1998-09-15 06:33:23 +00:00