Keep Calm and Follow the Rules
Accessing Host Managed SMR devices
Host Managed SMR devices must be accessed using either Zoned Access (ATA) or Zoned Block (SCSI) command sets, which restrict I/O operations that could be sent from the host. This results in simplified device implementation and behavior - as we shifted the burden of shingled writing to host software.Hopefully It is expected, that the host will have access to more compute resources (e.g. memory) and semantic/system-level information than a low-level storage device.
Restrictions
Below is a list of major I/O restrictions that ZAC and ZBC enforce on the host.
Nonconforming I/O operations will be failed by the device.
Sequential write - writes have to start at zone Write Pointer (WP)
Zone WPs could be reset (to the zone’s starting LBA) by issuing a RESET WRITE POINTER command
Writes have to be 4K aligned in SMR zones
Reads cannot start or extend beyond the zone WP
Read/Write commands cannot span zones (some exceptions may apply)
Zone WPs are kept and maintained by the device, they are used to keep host write sequential so we don’t accidentally wipe-out already written data. After each successful write, the associated zone WP is advanced to the next “unwritten” location within the zone (i.e. largest LBA written + 1).
Here are some concrete examples of the above I/O rules.
1. Not allowed - write commands cannot start before zone WP.
2. Allowed - write commands must start at zone WP.
3. Allowed - write commands must start and end in the same zone.
4. Not allowed - write commands cannot span multiple zones.
5. Not allowed - write commands cannot start after zone WP.
6. Allowed - read commands must start and end before zone WP.
7. Allowed - read commands can span up to LBA (zone WP - 1).
8. Not allowed - read commands cannot span multiple zones.
9. Not allowed - read commands cannot start on zone WP.
10. Not allowed - read commands cannot start after zone WP.
In the next post I’ll talk about why we should break some of these rules for efficiency.
Host Managed SMR devices must be accessed using either Zoned Access (ATA) or Zoned Block (SCSI) command sets, which restrict I/O operations that could be sent from the host. This results in simplified device implementation and behavior - as we shifted the burden of shingled writing to host software.
Restrictions
Below is a list of major I/O restrictions that ZAC and ZBC enforce on the host.
Nonconforming I/O operations will be failed by the device.
Zone WPs are kept and maintained by the device, they are used to keep host write sequential so we don’t accidentally wipe-out already written data. After each successful write, the associated zone WP is advanced to the next “unwritten” location within the zone (i.e. largest LBA written + 1).
Here are some concrete examples of the above I/O rules.
1. Not allowed - write commands cannot start before zone WP.
2. Allowed - write commands must start at zone WP.
3. Allowed - write commands must start and end in the same zone.
4. Not allowed - write commands cannot span multiple zones.
5. Not allowed - write commands cannot start after zone WP.
6. Allowed - read commands must start and end before zone WP.
7. Allowed - read commands can span up to LBA (zone WP - 1).
8. Not allowed - read commands cannot span multiple zones.
9. Not allowed - read commands cannot start on zone WP.
10. Not allowed - read commands cannot start after zone WP.
In the next post I’ll talk about why we should break some of these rules for efficiency.