-
Notifications
You must be signed in to change notification settings - Fork 145
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
sync src/ata_id/ata_id.c #201
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Kasijjuf
reviewed
Sep 21, 2021
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This change appears unrelated to the systemd commit referenced to in the commit message. Please clarify.
You are right, the proper one is 402fecff19d42bb06caed1a3a32262c18087b7f1 |
Fixed, I haven't seen such a small patch with such a huge commit message... |
Original revisions of the SAT (SCSI-ATA Translation) specification required that all sense data be reported in Descriptor Format (72h). Later revisions specifcally allow and account for sense data being reported in Fixed Format (70h). The current code checks for a Descriptor Format sense structure (0x72), then looks specifically at the first byte of the first descriptor for the ATA specific code 0x9, cross referencing it with the first byte which is just a length field 0x0c (as a sanity check). In the Fixed Format case(0x70), we can fall back to using the top-level SCSI Sense data for the Additional Sense code (0x0) and then the Additional Sense Code Qualifier (0x1d), That identifies that the sense data is of the format associated with: `ATA PASS THROUGH INFORMATION AVAILABLE`. This fallback mechanism retains support for SATLs compliant with ANSI INCITS 431-2007, and enables support for Fixed Format Sense data enabled by SATLs with later revisions. Glad to do so. This patch allows ata_id to export attributes correctly. I believe that any drive can potentially return information in this format on any SATL using the libata-scsi (the Linux builtin SATL), but in this particular case, it appears it is the SATL itself. Attaching the disk to the AHCI con troller changes the behavior impacted here. (Not entirely surprisingly, SATLs are are pretty inconsistent). Test: This case specifically is an LSI SATL. I'll illustrate that without the patch, ata_id does not return any output for a valid SATA drive but after the patch does. 1. Verify the device is ATA, by looking at the vpd page specific to ATA drives ``` root@machine:~# sg_vpd -p ai /dev/sdn ATA information VPD page: SAT Vendor identification: LSI SAT Product identification: LSI SATL SAT Product revision level: 0008 Device signature indicates SATA transport ATA command IDENTIFY DEVICE response summary: model: HGST HUH728080ALE604 serial number: ZZZZH3VX firmware revision: A4GNW7J0 ``` 2. Look at what udev thinks of the disk, it says ID_BUS=scsi ATA information says ID_MODEL should be HGST_HUH728080ALE604 udev says it is HGST_HUH728080AL (Missing E604, 4 bytes), and no ATA attributes are populated. ``` root@machine:~# udevadm info -q all /dev/sdn P: /devices/pci0000:00/0000:00:03.0/0000:05:00.0/host2/port-2:0/expander-2:0/port-2:0:11/end_device-2:0:11/target2:0:11/2:0:11:0/block/sdn N: sdn S: disk/by-id/scsi-35000cca23be1dc3c S: disk/by-id/wwn-0x5000cca23be1dc3c S: disk/by-path/pci-0000:05:00.0-sas-exp0x500605b0000272bf-phy11-lun-0 E: DEVLINKS=/dev/disk/by-id/wwn-0x5000cca23be1dc3c /dev/disk/by-id/scsi-35000cca23be1dc3c /dev/disk/by-path/pci-0000:05:00.0-sas-exp0x500605b0000272bf-phy11-lun-0 E: DEVNAME=/dev/sdn E: DEVPATH=/devices/pci0000:00/0000:00:03.0/0000:05:00.0/host2/port-2:0/expander-2:0/port-2:0:11/end_device-2:0:11/target2:0:11/2:0:11:0/block/sdn E: DEVTYPE=disk E: ID_BUS=scsi E: ID_MODEL=HGST_HUH728080AL E: ID_MODEL_ENC=HGST\x20HUH728080AL E: ID_PATH=pci-0000:05:00.0-sas-exp0x500605b0000272bf-phy11-lun-0 E: ID_PATH_TAG=pci-0000_05_00_0-sas-exp0x500605b0000272bf-phy11-lun-0 E: ID_REVISION=W7J0 E: ID_SCSI=1 E: ID_SCSI_SERIAL=ZZZZH3VX E: ID_SERIAL=35000cca23be1dc3c E: ID_SERIAL_SHORT=5000cca23be1dc3c E: ID_TYPE=disk E: ID_VENDOR=ATA E: ID_VENDOR_ENC=ATA\x20\x20\x20\x20\x20 E: ID_WWN=0x5000cca23be1dc3c E: ID_WWN_WITH_EXTENSION=0x5000cca23be1dc3c E: MAJOR=8 E: MINOR=208 E: SUBSYSTEM=block E: TAGS=:systemd: ``` 3. Run ata_id (unpatched) (Outputs nothing, RC=2) ``` root@machine:~# strace -e ioctl /lib/udev/ata_id /dev/sdn -x ioctl(3, SG_IO, {'Q', BSG_PROTOCOL_SCSI, BSG_SUB_PROTOCOL_SCSI_CMD, request[6]=[12, 00, 00, 00, 24, 00], request_tag=0, request_attr=0, request_priority=0, request_extra=0, max_response_len=32, dout_iovec_count=0, dout_xfer_len=0, din_iovec_count=0, din_xfer_len=36, timeout=30000, flags=0, usr_ptr=0, spare_in=0, dout[0]=NULL}) = -1 EINVAL (Invalid argument) ioctl(3, SG_IO, {'S', SG_DXFER_FROM_DEV, cmd[6]=[12, 00, 00, 00, 24, 00], mx_sb_len=32, iovec_count=0, dxfer_len=36, timeout=30000, flags=0, data[36]=[00, 00, 06, 12, 45, 00, 00, 02, 41, 54, 41, 20, 20, 20, 20, 20, 48, 47, 53, 54, 20, 48, 55, 48, 37, 32, 38, 30, 38, 30, 41, 4c, ...], status=00, masked_status=00, sb[0]=[], host_status=0, driver_status=0, resid=0, duration=1, info=0}) = 0 ioctl(3, SG_IO, {'Q', BSG_PROTOCOL_SCSI, BSG_SUB_PROTOCOL_SCSI_CMD, request[12]=[a1, 08, 2e, 00, 01, 00, 00, 00, 00, ec, 00, 00], request_tag=0, request_attr=0, request_priority=0, request_extra=0, max_response_len=32, dout_iovec_count=0, dout_xfer_len=0, din_iovec_count=0, din_xfer_len=512, timeout=30000, flags=0, usr_ptr=0, spare_in=0, dout[0]=NULL}) = -1 EINVAL (Invalid argument) ioctl(3, SG_IO, {'S', SG_DXFER_FROM_DEV, cmd[12]=[a1, 08, 2e, 00, 01, 00, 00, 00, 00, ec, 00, 00], mx_sb_len=32, iovec_count=0, dxfer_len=512, timeout=30000, flags=0, data[0]=[], status=02, masked_status=01, sb[18]=[70, 00, 01, 00, 00, 00, 00, 0a, 00, 00, 00, 00, 00, 1d, 00, 00, 00, 00], host_status=0, driver_status=0x8, resid=512, duration=0, info=0x1}) = 0 ioctl(3, HDIO_GET_IDENTITY, 0x7ffe408f7590) = -1 EINVAL (Invalid argument) +++ exited with 2 +++ ``` Sense buffers visible with the strace: `sb[18]=[70, 00, 01, 00, 00, 00, 00, 0a, 00, 00, 00, 00, 00, 1d, 00, 00, 00, 00]` is the important bit, see 70, 0a and 1d bytes 4. Run patched version: model is HGST_HUH728080ALE604 as expected, ATA attributes are correctly populated. ``` root@machine:~# ./ata_id /dev/sdn -x ID_ATA=1 ID_TYPE=disk ID_BUS=ata ID_MODEL=HGST_HUH728080ALE604 ID_MODEL_ENC=HGST\x20HUH728080ALE604\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20 ID_REVISION=A4GNW7J0 ID_SERIAL=HGST_HUH728080ALE604_ZZZZH3VX ID_SERIAL_SHORT=ZZZZH3VX ID_ATA_WRITE_CACHE=1 ID_ATA_WRITE_CACHE_ENABLED=1 ID_ATA_FEATURE_SET_HPA=1 ID_ATA_FEATURE_SET_HPA_ENABLED=1 ID_ATA_FEATURE_SET_PM=1 ID_ATA_FEATURE_SET_PM_ENABLED=1 ID_ATA_FEATURE_SET_SECURITY=1 ID_ATA_FEATURE_SET_SECURITY_ENABLED=0 ID_ATA_FEATURE_SET_SECURITY_ERASE_UNIT_MIN=66522 ID_ATA_FEATURE_SET_SMART=1 ID_ATA_FEATURE_SET_SMART_ENABLED=1 ID_ATA_FEATURE_SET_PUIS=1 ID_ATA_FEATURE_SET_PUIS_ENABLED=0 ID_ATA_FEATURE_SET_APM=1 ID_ATA_FEATURE_SET_APM_ENABLED=1 ID_ATA_FEATURE_SET_APM_CURRENT_VALUE=254 ID_ATA_DOWNLOAD_MICROCODE=1 ID_ATA_SATA=1 ID_ATA_SATA_SIGNAL_RATE_GEN2=1 ID_ATA_SATA_SIGNAL_RATE_GEN1=1 ID_ATA_ROTATION_RATE_RPM=7200 ID_WWN=0x5000cca23be1dc3c ID_WWN_WITH_EXTENSION=0x5000cca23be1dc3c ``` 5. Drop it in place and verify: we see that ata_id does work. ``` root@hw1-b01left-2212a:~# udevadm test /block/sdn <truncated> GROUP 6 /lib/udev/rules.d/50-udev-default.rules:55 IMPORT 'ata_id --export /dev/sdn' /lib/udev/rules.d/60-persistent-storage.rules:33 starting 'ata_id --export /dev/sdn' 'ata_id --export /dev/sdn'(out) 'ID_ATA=1' 'ata_id --export /dev/sdn'(out) 'ID_TYPE=disk' 'ata_id --export /dev/sdn'(out) 'ID_BUS=ata' 'ata_id --export /dev/sdn'(out) 'ID_MODEL=HGST_HUH728080ALE604' 'ata_id --export /dev/sdn'(out) 'ID_MODEL_ENC=HGST\x20HUH728080ALE604\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20' 'ata_id --export /dev/sdn'(out) 'ID_REVISION=A4GNW7J0' 'ata_id --export /dev/sdn'(out) 'ID_SERIAL=HGST_HUH728080ALE604_ZZZZH3VX' 'ata_id --export /dev/sdn'(out) 'ID_SERIAL_SHORT=ZZZZH3VX' 'ata_id --export /dev/sdn'(out) 'ID_ATA_WRITE_CACHE=1' 'ata_id --export /dev/sdn'(out) 'ID_ATA_WRITE_CACHE_ENABLED=1' 'ata_id --export /dev/sdn'(out) 'ID_ATA_FEATURE_SET_HPA=1' 'ata_id --export /dev/sdn'(out) 'ID_ATA_FEATURE_SET_HPA_ENABLED=1' 'ata_id --export /dev/sdn'(out) 'ID_ATA_FEATURE_SET_PM=1' 'ata_id --export /dev/sdn'(out) 'ID_ATA_FEATURE_SET_PM_ENABLED=1' 'ata_id --export /dev/sdn'(out) 'ID_ATA_FEATURE_SET_SECURITY=1' 'ata_id --export /dev/sdn'(out) 'ID_ATA_FEATURE_SET_SECURITY_ENABLED=0' 'ata_id --export /dev/sdn'(out) 'ID_ATA_FEATURE_SET_SECURITY_ERASE_UNIT_MIN=66522' 'ata_id --export /dev/sdn'(out) 'ID_ATA_FEATURE_SET_SMART=1' 'ata_id --export /dev/sdn'(out) 'ID_ATA_FEATURE_SET_SMART_ENABLED=1' 'ata_id --export /dev/sdn'(out) 'ID_ATA_FEATURE_SET_PUIS=1' 'ata_id --export /dev/sdn'(out) 'ID_ATA_FEATURE_SET_PUIS_ENABLED=0' 'ata_id --export /dev/sdn'(out) 'ID_ATA_FEATURE_SET_APM=1' 'ata_id --export /dev/sdn'(out) 'ID_ATA_FEATURE_SET_APM_ENABLED=1' 'ata_id --export /dev/sdn'(out) 'ID_ATA_FEATURE_SET_APM_CURRENT_VALUE=254' 'ata_id --export /dev/sdn'(out) 'ID_ATA_DOWNLOAD_MICROCODE=1' 'ata_id --export /dev/sdn'(out) 'ID_ATA_SATA=1' 'ata_id --export /dev/sdn'(out) 'ID_ATA_SATA_SIGNAL_RATE_GEN2=1' 'ata_id --export /dev/sdn'(out) 'ID_ATA_SATA_SIGNAL_RATE_GEN1=1' 'ata_id --export /dev/sdn'(out) 'ID_ATA_ROTATION_RATE_RPM=7200' 'ata_id --export /dev/sdn'(out) 'ID_WWN=0x5000cca23be1dc3c' 'ata_id --export /dev/sdn'(out) 'ID_WWN_WITH_EXTENSION=0x5000cca23be1dc3c' Process 'ata_id --export /dev/sdn' succeeded. LINK 'disk/by-id/ata-HGST_HUH728080ALE604_ZZZZH3VX' /lib/udev/rules.d/60-persistent-storage.rules:47 IMPORT builtin 'path_id' /lib/udev/rules.d/60-persistent-storage.rules:65 LINK 'disk/by-path/pci-0000:05:00.0-sas-exp0x500605b0000272bf-phy11-lun-0' /lib/udev/rules.d/60-persistent-storage.rules:66 IMPORT builtin 'blkid' /lib/udev/rules.d/60-persistent-storage.rules:81 probe /dev/sdn raid offset=0 LINK 'disk/by-id/wwn-0x5000cca23be1dc3c' /lib/udev/rules.d/60-persistent-storage.rules:88 RUN '/usr/lib/python-dsnet-appliance/hotplug disk udev-disk-add' /etc/udev/rules.d/99-appliance-hotplug.rules:1 update old name, '/dev/disk/by-id/scsi-35000cca23be1dc3c' no longer belonging to '/devices/pci0000:00/0000:00:03.0/0000:05:00.0/host2/port-2:0/expander-2:0/port-2:0:11/end_device-2:0:11/target2:0:11/2:0:11:0/block/sdn' no reference left, remove '/dev/disk/by-id/scsi-35000cca23be1dc3c' handling device node '/dev/sdn', devnum=b8:208, mode=0660, uid=0, gid=6 preserve permissions /dev/sdn, 060660, uid=0, gid=6 preserve already existing symlink '/dev/block/8:208' to '../sdn' creating link '/dev/disk/by-id/ata-HGST_HUH728080ALE604_ZZZZH3VX' to '/dev/sdn' creating symlink '/dev/disk/by-id/ata-HGST_HUH728080ALE604_ZZZZH3VX' to '../../sdn' found 'b8:208' claiming '/run/udev/links/\x2fdisk\x2fby-id\x2fwwn-0x5000cca23be1dc3c' creating link '/dev/disk/by-id/wwn-0x5000cca23be1dc3c' to '/dev/sdn' preserve already existing symlink '/dev/disk/by-id/wwn-0x5000cca23be1dc3c' to '../../sdn' found 'b8:208' claiming '/run/udev/links/\x2fdisk\x2fby-path\x2fpci-0000:05:00.0-sas-exp0x500605b0000272bf-phy11-lun-0' creating link '/dev/disk/by-path/pci-0000:05:00.0-sas-exp0x500605b0000272bf-phy11-lun-0' to '/dev/sdn' preserve already existing symlink '/dev/disk/by-path/pci-0000:05:00.0-sas-exp0x500605b0000272bf-phy11-lun-0' to '../../sdn' created db file '/run/udev/data/b8:208' for '/devices/pci0000:00/0000:00:03.0/0000:05:00.0/host2/port-2:0/expander-2:0/port-2:0:11/end_device-2:0:11/target2:0:11/2:0:11:0/block/sdn' ACTION=add DEVLINKS=/dev/disk/by-path/pci-0000:05:00.0-sas-exp0x500605b0000272bf-phy11-lun-0 /dev/disk/by-id/ata-HGST_HUH728080ALE604_ZZZZH3VX /dev/disk/by-id/wwn-0x5000cca23be1dc3c DEVNAME=/dev/sdn DEVPATH=/devices/pci0000:00/0000:00:03.0/0000:05:00.0/host2/port-2:0/expander-2:0/port-2:0:11/end_device-2:0:11/target2:0:11/2:0:11:0/block/sdn DEVTYPE=disk ID_ATA=1 ID_ATA_DOWNLOAD_MICROCODE=1 ID_ATA_FEATURE_SET_APM=1 ID_ATA_FEATURE_SET_APM_CURRENT_VALUE=254 ID_ATA_FEATURE_SET_APM_ENABLED=1 ID_ATA_FEATURE_SET_HPA=1 ID_ATA_FEATURE_SET_HPA_ENABLED=1 ID_ATA_FEATURE_SET_PM=1 ID_ATA_FEATURE_SET_PM_ENABLED=1 ID_ATA_FEATURE_SET_PUIS=1 ID_ATA_FEATURE_SET_PUIS_ENABLED=0 ID_ATA_FEATURE_SET_SECURITY=1 ID_ATA_FEATURE_SET_SECURITY_ENABLED=0 ID_ATA_FEATURE_SET_SECURITY_ERASE_UNIT_MIN=66522 ID_ATA_FEATURE_SET_SMART=1 ID_ATA_FEATURE_SET_SMART_ENABLED=1 ID_ATA_ROTATION_RATE_RPM=7200 ID_ATA_SATA=1 ID_ATA_SATA_SIGNAL_RATE_GEN1=1 ID_ATA_SATA_SIGNAL_RATE_GEN2=1 ID_ATA_WRITE_CACHE=1 ID_ATA_WRITE_CACHE_ENABLED=1 ID_BUS=ata ID_MODEL=HGST_HUH728080ALE604 ID_MODEL_ENC=HGST\x20HUH728080ALE604\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20 ID_PATH=pci-0000:05:00.0-sas-exp0x500605b0000272bf-phy11-lun-0 ID_PATH_TAG=pci-0000_05_00_0-sas-exp0x500605b0000272bf-phy11-lun-0 ID_REVISION=A4GNW7J0 ID_SERIAL=HGST_HUH728080ALE604_ZZZZH3VX ID_SERIAL_SHORT=ZZZZH3VX ID_TYPE=disk ID_WWN=0x5000cca23be1dc3c ID_WWN_WITH_EXTENSION=0x5000cca23be1dc3c MAJOR=8 MINOR=208 SUBSYSTEM=block TAGS=:systemd: USEC_INITIALIZED=6055690 run: '/usr/lib/python-dsnet-appliance/hotplug disk udev-disk-add' Unload module index Unloaded link configuration context. ``` 6. Query just to double check: (ID_BUS=ata, model correct, etc). ``` root@machine:~# udevadm info /dev/sdn P: /devices/pci0000:00/0000:00:03.0/0000:05:00.0/host2/port-2:0/expander-2:0/port-2:0:11/end_device-2:0:11/target2:0:11/2:0:11:0/block/sdn N: sdn S: disk/by-id/ata-HGST_HUH728080ALE604_ZZZZH3VX S: disk/by-id/wwn-0x5000cca23be1dc3c S: disk/by-path/pci-0000:05:00.0-sas-exp0x500605b0000272bf-phy11-lun-0 E: DEVLINKS=/dev/disk/by-id/wwn-0x5000cca23be1dc3c /dev/disk/by-path/pci-0000:05:00.0-sas-exp0x500605b0000272bf-phy11-lun-0 /dev/disk/by-id/ata-HGST_HUH728080ALE604_ZZZZH3VX E: DEVNAME=/dev/sdn E: DEVPATH=/devices/pci0000:00/0000:00:03.0/0000:05:00.0/host2/port-2:0/expander-2:0/port-2:0:11/end_device-2:0:11/target2:0:11/2:0:11:0/block/sdn E: DEVTYPE=disk E: ID_ATA=1 E: ID_ATA_DOWNLOAD_MICROCODE=1 E: ID_ATA_FEATURE_SET_APM=1 E: ID_ATA_FEATURE_SET_APM_CURRENT_VALUE=254 E: ID_ATA_FEATURE_SET_APM_ENABLED=1 E: ID_ATA_FEATURE_SET_HPA=1 E: ID_ATA_FEATURE_SET_HPA_ENABLED=1 E: ID_ATA_FEATURE_SET_PM=1 E: ID_ATA_FEATURE_SET_PM_ENABLED=1 E: ID_ATA_FEATURE_SET_PUIS=1 E: ID_ATA_FEATURE_SET_PUIS_ENABLED=0 E: ID_ATA_FEATURE_SET_SECURITY=1 E: ID_ATA_FEATURE_SET_SECURITY_ENABLED=0 E: ID_ATA_FEATURE_SET_SECURITY_ERASE_UNIT_MIN=66522 E: ID_ATA_FEATURE_SET_SMART=1 E: ID_ATA_FEATURE_SET_SMART_ENABLED=1 E: ID_ATA_ROTATION_RATE_RPM=7200 E: ID_ATA_SATA=1 E: ID_ATA_SATA_SIGNAL_RATE_GEN1=1 E: ID_ATA_SATA_SIGNAL_RATE_GEN2=1 E: ID_ATA_WRITE_CACHE=1 E: ID_ATA_WRITE_CACHE_ENABLED=1 E: ID_BUS=ata E: ID_MODEL=HGST_HUH728080ALE604 E: ID_MODEL_ENC=HGST\x20HUH728080ALE604\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20 E: ID_PATH=pci-0000:05:00.0-sas-exp0x500605b0000272bf-phy11-lun-0 E: ID_PATH_TAG=pci-0000_05_00_0-sas-exp0x500605b0000272bf-phy11-lun-0 E: ID_REVISION=A4GNW7J0 E: ID_SERIAL=HGST_HUH728080ALE604_ZZZZH3VX E: ID_SERIAL_SHORT=ZZZZH3VX E: ID_TYPE=disk E: ID_WWN=0x5000cca23be1dc3c E: ID_WWN_WITH_EXTENSION=0x5000cca23be1dc3c E: MAJOR=8 E: MINOR=208 E: SUBSYSTEM=block E: TAGS=:systemd: E: USEC_INITIALIZED=6055690 ``` If I install the same disk into a machine using an ATA driver, this behavior changes: ``` root@machine2:~# sg_vpd -p ai /dev/sdb ATA information VPD page: SAT Vendor identification: linux SAT Product identification: libata SAT Product revision level: 3.00 Device signature indicates SATA transport ATA command IDENTIFY DEVICE response summary: model: HGST HUH728080ALE604 serial number: ZZZZH3VX firmware revision: A4GNW7J0 root@machine-2:~# /lib/udev/ata_id -x /dev/sdb ID_ATA=1 ID_TYPE=disk ID_BUS=ata ID_MODEL=HGST_HUH728080ALE604 ID_MODEL_ENC=HGST\x20HUH728080ALE604\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20 ID_REVISION=A4GNW7J0 <truncated> ``` systemd-commit: 402fecff19d42bb06caed1a3a32262c18087b7f1 Author: Ryan Attard <frontrunner4000@gmail.com> Date: Fri Oct 4 07:52:49 2019 -0500
kaniini
approved these changes
Oct 16, 2021
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Author: Ryan Attard frontrunner4000@gmail.com
ata_id: Add support for host managed zone block devices (#14933)
If the peripheral device type is that of a host managed zone block device (0x14),
the device supports the same identification mechanisms as conventional disks (0x00).
systemd-commit: 06654d1225157ef2031559e47109730111514be2