Sergei Shtylyov wrote:
This is generally a bad practice to guess protocol based on opcode.
What if the code will have to handle a vendor unique command (or some
other command not yet known to it but known to issuer)?
Agreed -- we simply cannot rely on guessing protocol from opcode, we
MUST
Albert Lee wrote:
Alan Cox wrote:
ata_scsi_pass_thru() is not executed at ioctl submission time (block
queue submission time), but rather immediately before it is issued to
the drive. At that point you know the bus is idle, all other commands
have finished executing, and dev->multi_count is
Albert Lee wrote:
..
It looks like the ATA passthru commands contain more information than
what libata needs to execute a command.
e.g. protocol number:
libata could possibly infer the protocol from the command opcode.
e.g. multi_count:
libata caches dev->multi_count. Passing multi_co
Alan Cox wrote:
>>ata_scsi_pass_thru() is not executed at ioctl submission time (block
>>queue submission time), but rather immediately before it is issued to
>>the drive. At that point you know the bus is idle, all other commands
>>have finished executing, and dev->multi_count is fresh not sta
> ata_scsi_pass_thru() is not executed at ioctl submission time (block
> queue submission time), but rather immediately before it is issued to
> the drive. At that point you know the bus is idle, all other commands
> have finished executing, and dev->multi_count is fresh not stale. The
> code
Alan Cox wrote:
+ if (multi_count != dev->multi_count)
+ ata_dev_printk(dev, KERN_WARNING,
+ "invalid multi_count %u ignored\n",
+ multi_count);
+ }
What limits log spamming here ?
> >> + if (multi_count != dev->multi_count)
> >> + ata_dev_printk(dev, KERN_WARNING,
> >> + "invalid multi_count %u ignored\n",
> >> + multi_count);
> >> + }
> >
> > What limits log spamming here ?
>
> Inte
Alan Cox wrote:
+ if (is_multi_taskfile(tf)) {
+ unsigned int multi_count = 1 << (cdb[1] >> 5);
+
+ /* compare the passed through multi_count
+* with the cached multi_count of libata
+*/
+ if (multi_count != dev->mult
> + if (is_multi_taskfile(tf)) {
> + unsigned int multi_count = 1 << (cdb[1] >> 5);
> +
> + /* compare the passed through multi_count
> + * with the cached multi_count of libata
> + */
> + if (multi_count != dev->multi_count)
> +
9 matches
Mail list logo