* Block layer state diagrams
@ 2016-10-26 20:21 Bart Van Assche
2016-10-27 5:45 ` Hannes Reinecke
0 siblings, 1 reply; 6+ messages in thread
From: Bart Van Assche @ 2016-10-26 20:21 UTC (permalink / raw)
To: Jens Axboe; +Cc: Christoph Hellwig, linux-block@vger.kernel.org
[-- Attachment #1: Type: text/plain, Size: 317 bytes --]
Hello Jens,
Some time ago I created the attached state diagrams for myself to avoid
that I would have to reread the entire block layer core source code if
it has been a while since I had a look at it. Do you think it would be
useful to add these diagrams somewhere in the Documentation directory?
Thanks,
Bart.
[-- Attachment #2: block-layer-request-states-mq.dot --]
[-- Type: application/msword-template, Size: 1088 bytes --]
[-- Attachment #3: block-layer-request-states-mq.svg --]
[-- Type: image/svg+xml, Size: 10032 bytes --]
[-- Attachment #4: block-layer-request-states-sq.dot --]
[-- Type: application/msword-template, Size: 1467 bytes --]
[-- Attachment #5: block-layer-request-states-sq.svg --]
[-- Type: image/svg+xml, Size: 13448 bytes --]
[-- Attachment #6: Makefile --]
[-- Type: text/plain, Size: 115 bytes --]
all: \
block-layer-request-states-sq.svg \
block-layer-request-states-mq.svg \
%.svg: %.dot
dot -Tsvg -o $@ $<
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Block layer state diagrams
2016-10-26 20:21 Block layer state diagrams Bart Van Assche
@ 2016-10-27 5:45 ` Hannes Reinecke
2016-10-27 22:37 ` Bart Van Assche
0 siblings, 1 reply; 6+ messages in thread
From: Hannes Reinecke @ 2016-10-27 5:45 UTC (permalink / raw)
To: Bart Van Assche, Jens Axboe
Cc: Christoph Hellwig, linux-block@vger.kernel.org
On 10/26/2016 10:21 PM, Bart Van Assche wrote:
> Hello Jens,
>
> Some time ago I created the attached state diagrams for myself to avoid
> that I would have to reread the entire block layer core source code if
> it has been a while since I had a look at it. Do you think it would be
> useful to add these diagrams somewhere in the Documentation directory?
>
Can you add a step for the mapping between software and
hardware queues?
Also the actual submission to the LLDD (in step 'executing') could do
with a bit more emphasis.
And maybe the fontsize could be a tad smaller; currently it's hard to
figure out which label goes where, expecially in the bottom half.
Otherwise looking good.
Cheers,
Hannes
--
Dr. Hannes Reinecke Teamlead Storage & Networking
hare@suse.de +49 911 74053 688
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: F. Imendörffer, J. Smithard, J. Guild, D. Upmanyu, G. Norton
HRB 21284 (AG Nürnberg)
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Block layer state diagrams
2016-10-27 5:45 ` Hannes Reinecke
@ 2016-10-27 22:37 ` Bart Van Assche
2016-10-28 15:45 ` Jens Axboe
0 siblings, 1 reply; 6+ messages in thread
From: Bart Van Assche @ 2016-10-27 22:37 UTC (permalink / raw)
To: Hannes Reinecke, Jens Axboe
Cc: Christoph Hellwig, linux-block@vger.kernel.org
[-- Attachment #1: Type: text/plain, Size: 809 bytes --]
On 10/26/2016 10:45 PM, Hannes Reinecke wrote:
> On 10/26/2016 10:21 PM, Bart Van Assche wrote:
>> Some time ago I created the attached state diagrams for myself to avoid
>> that I would have to reread the entire block layer core source code if
>> it has been a while since I had a look at it. Do you think it would be
>> useful to add these diagrams somewhere in the Documentation directory?
>>
> Can you add a step for the mapping between software and
> hardware queues?
> Also the actual submission to the LLDD (in step 'executing') could do
> with a bit more emphasis.
> And maybe the fontsize could be a tad smaller; currently it's hard to
> figure out which label goes where, expecially in the bottom half.
Thanks Hannes for the review. How about the attached second version of
these diagrams?
Bart.
[-- Attachment #2: block-layer-request-states-mq.dot --]
[-- Type: application/msword-template, Size: 1779 bytes --]
[-- Attachment #3: block-layer-request-states-mq.svg --]
[-- Type: image/svg+xml, Size: 15935 bytes --]
[-- Attachment #4: block-layer-request-states-sq.dot --]
[-- Type: application/msword-template, Size: 1927 bytes --]
[-- Attachment #5: block-layer-request-states-sq.svg --]
[-- Type: image/svg+xml, Size: 16216 bytes --]
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Block layer state diagrams
2016-10-27 22:37 ` Bart Van Assche
@ 2016-10-28 15:45 ` Jens Axboe
2016-10-28 16:06 ` Bart Van Assche
0 siblings, 1 reply; 6+ messages in thread
From: Jens Axboe @ 2016-10-28 15:45 UTC (permalink / raw)
To: Bart Van Assche, Hannes Reinecke
Cc: Christoph Hellwig, linux-block@vger.kernel.org
On 10/27/2016 04:37 PM, Bart Van Assche wrote:
> On 10/26/2016 10:45 PM, Hannes Reinecke wrote:
>> On 10/26/2016 10:21 PM, Bart Van Assche wrote:
>>> Some time ago I created the attached state diagrams for myself to avoid
>>> that I would have to reread the entire block layer core source code if
>>> it has been a while since I had a look at it. Do you think it would be
>>> useful to add these diagrams somewhere in the Documentation directory?
>>>
>> Can you add a step for the mapping between software and
>> hardware queues?
>> Also the actual submission to the LLDD (in step 'executing') could do
>> with a bit more emphasis.
>> And maybe the fontsize could be a tad smaller; currently it's hard to
>> figure out which label goes where, expecially in the bottom half.
>
> Thanks Hannes for the review. How about the attached second version of
> these diagrams?
I think they are a little confusing. Some of it is specific to non-fs
requests, yet you have the plugging path in there as well. Was the
intent to just show the PC path?
--
Jens Axboe
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Block layer state diagrams
2016-10-28 15:45 ` Jens Axboe
@ 2016-10-28 16:06 ` Bart Van Assche
2016-10-28 16:24 ` Jens Axboe
0 siblings, 1 reply; 6+ messages in thread
From: Bart Van Assche @ 2016-10-28 16:06 UTC (permalink / raw)
To: hare@suse.de, axboe@fb.com; +Cc: hch@lst.de, linux-block@vger.kernel.org
T24gRnJpLCAyMDE2LTEwLTI4IGF0IDA5OjQ1IC0wNjAwLCBKZW5zIEF4Ym9lIHdyb3RlOg0KPiBP
biAxMC8yNy8yMDE2IDA0OjM3IFBNLCBCYXJ0IFZhbiBBc3NjaGUgd3JvdGU6DQo+ID4gT24gMTAv
MjYvMjAxNiAxMDo0NSBQTSwgSGFubmVzIFJlaW5lY2tlIHdyb3RlOg0KPiA+ID4gT24gMTAvMjYv
MjAxNiAxMDoyMSBQTSwgQmFydCBWYW4gQXNzY2hlIHdyb3RlOg0KPiA+ID4gPiBTb21lIHRpbWUg
YWdvIEkgY3JlYXRlZCB0aGUgYXR0YWNoZWQgc3RhdGUgZGlhZ3JhbXMgZm9yIG15c2VsZg0KPiA+
ID4gPiB0byBhdm9pZA0KPiA+ID4gPiB0aGF0IEkgd291bGQgaGF2ZSB0byByZXJlYWQgdGhlIGVu
dGlyZSBibG9jayBsYXllciBjb3JlIHNvdXJjZQ0KPiA+ID4gPiBjb2RlIGlmDQo+ID4gPiA+IGl0
IGhhcyBiZWVuIGEgd2hpbGUgc2luY2UgSSBoYWQgYSBsb29rIGF0IGl0LiBEbyB5b3UgdGhpbmsg
aXQNCj4gPiA+ID4gd291bGQgYmUNCj4gPiA+ID4gdXNlZnVsIHRvIGFkZCB0aGVzZSBkaWFncmFt
cyBzb21ld2hlcmUgaW4gdGhlIERvY3VtZW50YXRpb24NCj4gPiA+ID4gZGlyZWN0b3J5Pw0KPiA+
ID4gPiANCj4gPiA+IA0KPiA+ID4gQ2FuIHlvdSBhZGQgYSBzdGVwIGZvciB0aGUgbWFwcGluZyBi
ZXR3ZWVuIHNvZnR3YXJlIGFuZA0KPiA+ID4gaGFyZHdhcmUgcXVldWVzPw0KPiA+ID4gQWxzbyB0
aGUgYWN0dWFsIHN1Ym1pc3Npb24gdG8gdGhlIExMREQgKGluIHN0ZXAgJ2V4ZWN1dGluZycpDQo+
ID4gPiBjb3VsZCBkbw0KPiA+ID4gd2l0aCBhIGJpdCBtb3JlIGVtcGhhc2lzLg0KPiA+ID4gQW5k
IG1heWJlIHRoZSBmb250c2l6ZSBjb3VsZCBiZSBhIHRhZCBzbWFsbGVyOyBjdXJyZW50bHkgaXQn
cw0KPiA+ID4gaGFyZCB0bw0KPiA+ID4gZmlndXJlIG91dCB3aGljaCBsYWJlbCBnb2VzIHdoZXJl
LCBleHBlY2lhbGx5IGluIHRoZSBib3R0b20gaGFsZi4NCj4gPiANCj4gPiBUaGFua3MgSGFubmVz
IGZvciB0aGUgcmV2aWV3LiBIb3cgYWJvdXQgdGhlIGF0dGFjaGVkIHNlY29uZCB2ZXJzaW9uDQo+
ID4gb2YNCj4gPiB0aGVzZSBkaWFncmFtcz8NCj4gDQo+IEkgdGhpbmsgdGhleSBhcmUgYSBsaXR0
bGUgY29uZnVzaW5nLiBTb21lIG9mIGl0IGlzIHNwZWNpZmljIHRvIG5vbi1mcw0KPiByZXF1ZXN0
cywgeWV0IHlvdSBoYXZlIHRoZSBwbHVnZ2luZyBwYXRoIGluIHRoZXJlIGFzIHdlbGwuIFdhcyB0
aGUNCj4gaW50ZW50IHRvIGp1c3Qgc2hvdyB0aGUgUEMgcGF0aD8NCg0KSGVsbG8gSmVucywNCg0K
QXMgZmFyIGFzIEkga25vdyB0aGVyZSBpcyBubyBkb2N1bWVudGF0aW9uIHlldCBpbiB0aGUga2Vy
bmVsIHRyZWUNCihvdGhlciB0aGFuIHRoZSBibG9jayBsYXllciBzb3VyY2UgY29kZSkgb2YgaG93
IHRoZSBkaWZmZXJlbnQgYmxvY2sNCmxheWVyIGZ1bmN0aW9ucyBhZmZlY3QgdGhlIHJlcXVlc3Qg
c3RhdGUuIFNldmVyYWwga2VybmVsIGRldmVsb3BlcnMNCnNlZW0gbm90IHRvIGJlIGF3YXJlIG9m
IHdoZW4gaXQgaXMgYWxsb3dlZCB0byBjYWxsIHdoaWNoIGJsb2NrIGxheWVyDQpmdW5jdGlvbi4g
U2VlIGUuZy4gIlJlOiBbUEFUQ0ggdjIgMS8yXSBzY3NpOiBIYW5kbGUgVW5pdCBBdHRlbnRpb24g
d2hlbg0KaXNzdWluZyBTQ1NJIGNvbW1hbmQiIChodHRwOi8vd3d3LnNwaW5pY3MubmV0L2xpc3Rz
L2xpbnV4LXNjc2kvbXNnMTAwNzMNCjcuaHRtbCkgZm9yIGFuIGV4YW1wbGUuIFRoZXNlIGRpYWdy
YW1zIG1ha2UgZS5nLiBjbGVhciB3aGVuIGl0IGlzDQphbGxvd2VkIHRvIGNhbGwgYmxrX3N0YXJ0
X3JlcXVlc3QoKSBhbmQgd2hlbiB0aGF0IGl0IGlzIG5vdCBhbGxvd2VkLg0KDQpUaGFua3MsDQoN
CkJhcnQu
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Block layer state diagrams
2016-10-28 16:06 ` Bart Van Assche
@ 2016-10-28 16:24 ` Jens Axboe
0 siblings, 0 replies; 6+ messages in thread
From: Jens Axboe @ 2016-10-28 16:24 UTC (permalink / raw)
To: Bart Van Assche, hare@suse.de; +Cc: hch@lst.de, linux-block@vger.kernel.org
On 10/28/2016 10:06 AM, Bart Van Assche wrote:
> On Fri, 2016-10-28 at 09:45 -0600, Jens Axboe wrote:
>> On 10/27/2016 04:37 PM, Bart Van Assche wrote:
>>> On 10/26/2016 10:45 PM, Hannes Reinecke wrote:
>>>> On 10/26/2016 10:21 PM, Bart Van Assche wrote:
>>>>> Some time ago I created the attached state diagrams for myself
>>>>> to avoid
>>>>> that I would have to reread the entire block layer core source
>>>>> code if
>>>>> it has been a while since I had a look at it. Do you think it
>>>>> would be
>>>>> useful to add these diagrams somewhere in the Documentation
>>>>> directory?
>>>>>
>>>>
>>>> Can you add a step for the mapping between software and
>>>> hardware queues?
>>>> Also the actual submission to the LLDD (in step 'executing')
>>>> could do
>>>> with a bit more emphasis.
>>>> And maybe the fontsize could be a tad smaller; currently it's
>>>> hard to
>>>> figure out which label goes where, expecially in the bottom half.
>>>
>>> Thanks Hannes for the review. How about the attached second version
>>> of
>>> these diagrams?
>>
>> I think they are a little confusing. Some of it is specific to non-fs
>> requests, yet you have the plugging path in there as well. Was the
>> intent to just show the PC path?
>
> Hello Jens,
>
> As far as I know there is no documentation yet in the kernel tree
> (other than the block layer source code) of how the different block
> layer functions affect the request state. Several kernel developers
> seem not to be aware of when it is allowed to call which block layer
> function. See e.g. "Re: [PATCH v2 1/2] scsi: Handle Unit Attention when
> issuing SCSI command" (http://www.spinics.net/lists/linux-scsi/msg10073
> 7.html) for an example. These diagrams make e.g. clear when it is
> allowed to call blk_start_request() and when that it is not allowed.
Don't get me wrong, I think it would be great to have some graphic
documentation of the flow. But I think it should be clear about what it
is showing, not just some of it. Otherwise it'll just cause people to
get confused.
--
Jens Axboe
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2016-10-28 16:24 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-10-26 20:21 Block layer state diagrams Bart Van Assche
2016-10-27 5:45 ` Hannes Reinecke
2016-10-27 22:37 ` Bart Van Assche
2016-10-28 15:45 ` Jens Axboe
2016-10-28 16:06 ` Bart Van Assche
2016-10-28 16:24 ` Jens Axboe
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.