Thread (8 messages) 8 messages, 3 authors, 2016-08-26

Re: [PATCH v8 1/2 RESEND] Add bio/request flags to issue ZBC/ZAC commands

From: Damien Le Moal <hidden>
Date: 2016-08-26 02:33:24
Also in: dm-devel, linux-f2fs-devel, linux-fsdevel, linux-scsi, lkml

Shaun,

On 8/25/16 05:24, Shaun Tancheff wrote:
(RESENDING to include f2fs, fs-devel and dm-devel)

Add op flags to access to zone information as well as open, close
and reset zones:
  - REQ_OP_ZONE_REPORT - Query zone information (Report zones)
  - REQ_OP_ZONE_OPEN - Explicitly open a zone for writing
  - REQ_OP_ZONE_CLOSE - Explicitly close a zone
  - REQ_OP_ZONE_FINISH - Explicitly finish a zone
  - REQ_OP_ZONE_RESET - Reset Write Pointer to start of zone

These op flags can be used to create bio's to control zoned devices
through the block layer.
I still have a hard time seeing the need for the REQ_OP_ZONE_REPORT =

operation assuming that the device queue will hold a zone information =

cache, Hannes RB-tree or your array type, whichever.

Let's try to think simply here: if the disk user (and FS, a device =

mapper or an application doing raw disk accesses) wants to access the =

disk zone information, why would it need to issue a BIO when calling =

blkdev_lookup_zone would exactly give that information straight out of =

memory (so much faster) ? I thought hard about this, but cannot think of =

any value for the BIO-to-disk option. It seems to me to be equivalent to =

systematically doing a page cache read even if the page cache tells us =

that the page is up-to-date...

Moreover, issuing a report zone to the disk may return information that =

is in fact incorrect, as that would not take into account the eventual =

set of write requests that was dispatched but not yet processed by the =

disk (some zone write pointer may be reported with a value lower than =

what the zone cache maintains).

Dealing (and fixing) these inconsistencies would force an update of the =

report zone result using the information of the zone cache, which in =

itself sounds like a good justification of not doing a report zones in =

the first place.

I am fine with the other operations, and in fact having a BIO interface =

for them to send down to the SCSI layer is better than any other method. =

It will causes them to be seen in sd_init_command, which is the path =

taken for read and write commands too. So all zone cache information =

checking and updating can be done in that single place and serialized =

with a spinlock. Maintenance of the zone cache information becomes very =

easy.

Any divergence of the zone cache information with the actual state of =

the disk will likely cause an error (unaligned write or other). Having a =

specific report zone BIO option will not help the disk user recover from =

those. Hannes current implementation make sure that the information of =

the zone for the failed request is automatically updated. That is enough =

to maintain the zone cache information uptodate, and a zone information =

can be marked as "in update" for the user to notice and wait for the =

refreshed information.

The ioctl code for reporting zones does not need the specific request op =

code either. Again, blkdev_lookup_zone can provide zone information, and =

an emulation of the reporting options filtering is also trivial to =

implement on top of that, if really required (I do not think that is =

strongly needed though).

Without the report zone operation, your patch set size would =

significantly shrink and merging with Hannes work becomes very easy too.

Please let me know what you think. If we drop this, we can get a clean =

and full ZBC support patch set ready in no time at all.

Best regards.

-- =

Damien Le Moal, Ph.D.
Sr. Manager, System Software Group, HGST Research,
HGST, a Western Digital brand
Damien.LeMoal@hgst.com
(+81) 0466-98-3593 (ext. 513593)
1 kirihara-cho, Fujisawa,
Kanagawa, 252-0888 Japan
www.hgst.com
Western Digital Corporation (and its subsidiaries) E-mail Confidentiality N=
otice & Disclaimer:

This e-mail and any files transmitted with it may contain confidential or l=
egally privileged information of WDC and/or its affiliates, and are intende=
d solely for the use of the individual or entity to which they are addresse=
d. If you are not the intended recipient, any disclosure, copying, distribu=
tion or any action taken or omitted to be taken in reliance on it, is prohi=
bited. If you have received this e-mail in error, please notify the sender =
immediately and delete the e-mail in its entirety from your system.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help