- 20 7月, 2016 1 次提交
-
-
由 Tom Yan 提交于
`changeable` is the "version" of mode page requested by the user. It will be less confusing/misleading if we do not check it "together" with the setting bits of the drive. Not to mention that we currently have ata_mselect_*() implemented in a way that each of them will serve exclusively a particular bit on each page. The old style will hence make the condition look even more unnecessarily arcane if the ata_msense_*() is reflecting more than one bit. Signed-off-by: NTom Yan <tom.ty89@gmail.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
- 15 7月, 2016 4 次提交
-
-
由 Damien Le Moal 提交于
The reset_all variable name is misleading as this bit is also applicable to open, close, and finish actions. So rename that variable to "all" and remove the unnecessary mask operation that's already done earlier. Signed-off-by: NDamien Le Moal <damien.lemoal@hgst.com> [hch: split from the previous patch] Signed-off-by: NChristoph Hellwig <hch@lst.de> Signed-off-by: NTejun Heo <tj@kernel.org>
-
由 Damien Le Moal 提交于
The subcommand for NCQ NON-DATA must be specified in the feature (low byte), not the high-order count byte. Also make sure to properly cast the all bit to a u16 before shiting it by 8 to avoid undefined behavior. Signed-off-by: NDamien Le Moal <damien.lemoal@hgst.com> [hch: split the original patch into two, updated changelog] Signed-off-by: NChristoph Hellwig <hch@lst.de> Signed-off-by: NTejun Heo <tj@kernel.org>
-
由 Damien Le Moal 提交于
Include reporting options when translating REPORT ZONES commmand to ATA NCQ, and make sure we only look at the actually specified bits in the CDB for the options. Signed-off-by: NDamien Le Moal <damien.lemoal@hgst.com> [hch: update patch description] Signed-off-by: NChristoph Hellwig <hch@lst.de> Signed-off-by: NTejun Heo <tj@kernel.org>
-
由 Hannes Reinecke 提交于
Add a new taskfile protocol ATA_PROT_NCQ_NODATA to handle ATA NCQ NO-DATA commands correctly. And fixup ata_scsi_zbc_out_xlat() to use it. Signed-off-by: NHannes Reinecke <hare@suse.com> Signed-off-by: NChristoph Hellwig <hch@lst.de> Signed-off-by: NTejun Heo <tj@kernel.org>
-
- 14 7月, 2016 1 次提交
-
-
由 Hannes Reinecke 提交于
Use accessor functions instead of the raw value. Signed-off-by: NHannes Reinecke <hare@suse.com> Signed-off-by: NChristoph Hellwig <hch@lst.de> Signed-off-by: NTejun Heo <tj@kernel.org>
-
- 13 7月, 2016 4 次提交
-
-
由 Tom Yan 提交于
Currently libata statically allows only 1-block (512-byte) payload for each TRIM command. Each payload can carry 64 TRIM ranges since each range requires 8 bytes. It is silly to keep doing the calculation (512 / 8) in different places. Hence, define the new ATA_MAX_TRIM_RNUM for the result. Signed-off-by: NTom Yan <tom.ty89@gmail.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
由 Tom Yan 提交于
Currently if a WRITE SAME (16) command is issued to the SATL with "number of blocks" that is larger than the "Maximum write same length" (which is the maximum number of blocks per TRIM command allowed in libata, currently 65535 * 512 / 8 blocks), the SATL will accept the command and translate it to a TRIM command with the upper limit. However, according to SBC (as of sbc4r11.pdf), the "device server" should terminate the command with "Invalid field in CDB" in that case. Signed-off-by: NTom Yan <tom.ty89@gmail.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
由 Tom Yan 提交于
To make it consistent with the recently added ata_mselect_control(). We probably shouldn't have the word "mode" in its name anyway, since that's not the case for other ata_msense_*() / ata_mselect_*() either. Signed-off-by: NTom Yan <tom.ty89@gmail.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
由 Tom Yan 提交于
The bit should always be set to 1 when the requested version of page is "changeable" because we've made it so in ata_mselect_control(). Also, it should always be set to 1 if ATA_DFLAG_D_SENSE is set (when the requested version of page is "current" or "default"). Signed-off-by: NTom Yan <tom.ty89@gmail.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
- 12 7月, 2016 3 次提交
-
-
由 Tom Yan 提交于
The comment suggests we should be having an SPC-3 version descriptor but the 0260h is the code for "SPC-2 (no version claimed)". Correct it to 0300h so that it has the "SPC-3 (no version claimed)" descriptor. Note that we are claiming SPC-3 version compatibility in the VERSION field of the standard INQUIRY data. Therefore, I assume the typo was on the code but not on the comment. Signed-off-by: NTom Yan <tom.ty89@gmail.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
由 Tom Yan 提交于
Avoid performance bottleneck when being SCSI pass-through'd to virtual machines with other OSes (e.g. Windows) via virtio-scsi and scsi-block in qemu. Ref.: https://github.com/YanVugenfirer/kvm-guest-drivers-windows/issues/63Signed-off-by: NTom Yan <tom.ty89@gmail.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
由 Tom Yan 提交于
Commit 856c4663 ("libata: support device-managed ZAC devices") had the line that "bumps" the VERSION field in standard INQUIRY data removed. Add it back and claim SPC-5 version compatibility, which matches with the current version descriptor "SPC-5 (no version claimed)" that is used for ZAC devices. Signed-off-by: NTom Yan <tom.ty89@gmail.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
- 07 7月, 2016 2 次提交
-
-
由 Tom Yan 提交于
It's Command Descriptor Block. Also capitalized it. Signed-off-by: NTom Yan <tom.ty89@gmail.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
由 Tom Yan 提交于
It does not make sense and is confusing to respond with "Invalid field in CDB" while we have no support at all implemented for FORMAT UNIT. It is decent to let it go to the default, which will respond with "Invalid command operation code" instead. Signed-off-by: NTom Yan <tom.ty89@gmail.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
- 10 5月, 2016 7 次提交
-
-
由 Hannes Reinecke 提交于
Byte 69 bits 0:1 in the IDENTIFY DEVICE data indicate a host-aware ZAC device. Host-managed ZAC devices have their own individual signature, and to not set the bits in the IDENTIFY DEVICE data. And whenever we detect a ZAC-compatible device we should be displaying the zoned block characteristics VPD page. Signed-off-by: NHannes Reinecke <hare@suse.de> Signed-off-by: NTejun Heo <tj@kernel.org>
-
由 Hannes Reinecke 提交于
Device-managed ZAC devices just set the zoned capabilities field in INQUIRY byte 69 (cf ACS-4). This corresponds to the 'zoned' field in the block device characteristics VPD page. As this is only defined in SPC-5/SBC-4 we also need to update the supported SCSI version descriptor. Reviewed-by: NShaun Tancheff <shaun.tancheff@seagate.com> Tested-by: NShaun Tancheff <shaun.tancheff@seagate.com> Signed-off-by: NHannes Reinecke <hare@suse.de> Signed-off-by: NTejun Heo <tj@kernel.org>
-
由 Hannes Reinecke 提交于
Add NCQ encapsulation for ZAC MANAGEMENT OUT and evaluate NCQ Non-Data log pages to figure out if NCQ encapsulation is supported. Signed-off-by: NHannes Reinecke <hare@suse.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
由 Hannes Reinecke 提交于
ZAC drives implement a 'ZAC Management Out' command template, which maps onto the ZBC OUT command. Signed-off-by: NHannes Reinecke <hare@suse.de> Signed-off-by: NTejun Heo <tj@kernel.org>
-
由 Hannes Reinecke 提交于
ZAC drives implement a 'ZAC Management In' command template, which maps onto the ZBC IN command. Signed-off-by: NHannes Reinecke <hare@suse.de> Signed-off-by: NTejun Heo <tj@kernel.org>
-
由 Hannes Reinecke 提交于
If a device is disabled after error recovery it doesn't make any sense to generate an ATA sense, but we should rather return a generic sense code indicating the device is gone. Signed-off-by: NHannes Reinecke <hare@suse.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
由 Andy Shevchenko 提交于
Replace custom approach by %*ph specifier to dump small buffers in hex format. Signed-off-by: NAndy Shevchenko <andriy.shevchenko@linux.intel.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
- 14 4月, 2016 1 次提交
-
-
由 Masanari Iida 提交于
This patch fix spelling typos found in Documentation/Docbook/libata.xml. It is because the file was generated from comments in source, I had to fix comments in libata-core.c Signed-off-by: NMasanari Iida <standby24x7@gmail.com> Acked-by: NRandy Dunlap <rdunlap@infradead.org> Signed-off-by: NTejun Heo <tj@kernel.org>
-
- 05 4月, 2016 11 次提交
-
-
由 Hannes Reinecke 提交于
Whenever the sense key is set to 'invalid parameter' we should be filling out the sense-key specific information field in the sense buffer. tj: Added description of @fp for ata_mselect_*(). Signed-off-by: NHannes Reinecke <hare@suse.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
由 Hannes Reinecke 提交于
When generating a sense code of 'Invalid field in CDB' we should be setting the bit pointer where appropriate. Signed-off-by: NHannes Reinecke <hare@suse.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
由 Hannes Reinecke 提交于
If the sense code is 'Invalid field in CDB' we should be setting the field pointer to the offending byte. Signed-off-by: NHannes Reinecke <hare@suse.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
由 Hannes Reinecke 提交于
Implement MODE SELECT for the control mode page to allow the OS to switch to descriptor sense. tj: Dropped s/sb/cmd->sense_buffer/ in ata_gen_ata_sense(). Added @dev description to ata_msense_ctl_mode(). Signed-off-by: NHannes Reinecke <hare@suse.de> Signed-off-by: NTejun Heo <tj@kernel.org>
-
由 Hannes Reinecke 提交于
Generate ATA pass-through sense for both fixed and descriptor format sense. Signed-off-by: NHannes Reinecke <hare@suse.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
由 Hannes Reinecke 提交于
Use ata_scsi_set_sense() throughout to ensure the sense code format is consistent. Signed-off-by: NHannes Reinecke <hare@suse.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
由 Hannes Reinecke 提交于
If NCQ autosense or the sense data reporting feature is enabled the LBA of the offending command should be stored in the sense data 'information' field. tj: s/(u64)-1/U64_MAX/ Signed-off-by: NHannes Reinecke <hare@suse.de> Signed-off-by: NTejun Heo <tj@kernel.org>
-
由 Hannes Reinecke 提交于
Use scsi_set_sense_information() instead of hand-crafted function. Signed-off-by: NHannes Reinecke <hare@suse.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
由 Hannes Reinecke 提交于
Return U64_MAX if ata_tf_read_block() could not decode the LBA address, and do not set the information sense descriptor in ata_gen_ata_sense() in these cases. tj: s/(u64)-1/U64_MAX/ Signed-off-by: NHannes Reinecke <hare@suse.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
由 Hannes Reinecke 提交于
ata_to_sense_error() is called conditionally, so we should be generating a default sense if the condition is not met. Signed-off-by: NHannes Reinecke <hare@suse.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
由 Hannes Reinecke 提交于
Some newer devices support NCQ autosense (cf ACS-4), so we should be using it to retrieve the sense code and speed up recovery. Signed-off-by: NHannes Reinecke <hare@suse.de> Signed-off-by: NTejun Heo <tj@kernel.org>
-
- 19 2月, 2016 1 次提交
-
-
由 Tejun Heo 提交于
ata_scsi_park_show() was pairing spin_lock_irqsave() with spin_unlock_irq(). As the function is always called with irq enabled, it didn't actually break anything. Use spin_lock_irq() instead. Signed-off-by: NTejun Heo <tj@kernel.org> Reported-by: NDan Carpenter <dan.carpenter@oracle.com> Cc: Elias Oltmanns <eo@nebensachen.de>
-
- 11 2月, 2016 1 次提交
-
-
由 Arnd Bergmann 提交于
As reported by Soohoon Lee, the HDIO_GET_32BIT ioctl does not work correctly in compat mode with libata. I have investigated the issue further and found multiple problems that all appeared with the same commit that originally introduced HDIO_GET_32BIT handling in libata back in linux-2.6.8 and presumably also linux-2.4, as the code uses "copy_to_user(arg, &val, 1)" to copy a 'long' variable containing either 0 or 1 to user space. The problems with this are: * On big-endian machines, this will always write a zero because it stores the wrong byte into user space. * In compat mode, the upper three bytes of the variable are updated by the compat_hdio_ioctl() function, but they now contain uninitialized stack data. * The hdparm tool calling this ioctl uses a 'static long' variable to store the result. This means at least the upper bytes are initialized to zero, but calling another ioctl like HDIO_GET_MULTCOUNT would fill them with data that remains stale when the low byte is overwritten. Fortunately libata doesn't implement any of the affected ioctl commands, so this would only happen when we query both an IDE and an ATA device in the same command such as "hdparm -N -c /dev/hda /dev/sda" * The libata code for unknown reasons started using ATA_IOC_GET_IO32 and ATA_IOC_SET_IO32 as aliases for HDIO_GET_32BIT and HDIO_SET_32BIT, while the ioctl commands that were added later use the normal HDIO_* names. This is harmless but rather confusing. This addresses all four issues by changing the code to use put_user() on an 'unsigned long' variable in HDIO_GET_32BIT, like the IDE subsystem does, and by clarifying the names of the ioctl commands. Signed-off-by: NArnd Bergmann <arnd@arndb.de> Reported-by: NSoohoon Lee <Soohoon.Lee@f5.com> Tested-by: NSoohoon Lee <Soohoon.Lee@f5.com> Cc: stable@vger.kernel.org Signed-off-by: NTejun Heo <tj@kernel.org>
-
- 10 11月, 2015 1 次提交
-
-
由 Christoph Hellwig 提交于
This patch changes the !blk-mq path to the same defaults as the blk-mq I/O path by always enabling block tagging, and always using host wide tags. We've had blk-mq available for a few releases so bugs with this mode should have been ironed out, and this ensures we get better coverage of over tagging setup over different configs. Signed-off-by: NChristoph Hellwig <hch@lst.de> Acked-by: NJens Axboe <axboe@kernel.dk> Reviewed-by: NHannes Reinecke <hare@suse.de> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
- 27 10月, 2015 2 次提交
-
-
由 Vinayak Kale 提交于
Enable LBA in taskfile flags for ata_scsi_pass_thru() Signed-off-by: NVinayak Kale <vinayak.kale@seagate.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
由 Vinayak Kale 提交于
This patch is needed to make NCQ commands with FPDMA protocol value (eg READ/WRITE FPDMA) work over SCSI Generic (SG) interface. Signed-off-by: NVinayak Kale <vinayak.kale@seagate.com> Signed-off-by: NTejun Heo <tj@kernel.org>
-
- 13 10月, 2015 1 次提交
-
-
由 Christoph Hellwig 提交于
When calling ->done before releasing resources we could run into a race where the SCSI midlayer sends another command and races with the resources beeing manipulated. For libata this can't currently happen as synchronization happens at a higher level, but I'd still like to fix it to future proof libata and to avoid copy & paste into SCSI drivers where this pattern has led to reproducible crashes. Signed-off-by: NChristoph Hellwig <hch@lst.de> Signed-off-by: NTejun Heo <tj@kernel.org>
-