diff for duplicates of <1504498405.10804.10.camel@wdc.com> diff --git a/a/1.txt b/N1/1.txt index 6e7e3b6..61ca832 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -1,22 +1,23 @@ -T24gU2F0LCAyMDE3LTA5LTAyIGF0IDIxOjEyICswODAwLCBNaW5nIExlaSB3cm90ZToNCj4gUGxl -YXNlIGxldCB1cyBrbm93IGlmIFYzIGFkZHJlc3NlcyB5b3VyIHByZXZpb3VzIGNvbmNlcm4gYWJv -dXQgY2FsbGluZw0KPiBibGtfcXVldWVfZW50ZXJfbGl2ZSgpIGR1cmluZyBwcmVlbXB0IGZyZWV6 -aW5nLg0KDQpEbyB5b3UgdW5kZXJzdGFuZCBob3cgcmVxdWVzdCBxdWV1ZSBjbGVhbnVwIHdvcmtz -PyBUaGUgYWxnb3JpdGhtIHVzZWQgZm9yDQpyZXF1ZXN0IHF1ZXVlIGNsZWFudXAgaXMgYXMgZm9s -bG93czoNCiogU2V0IHRoZSBEWUlORyBmbGFnLiBUaGlzIGZsYWcgbWFrZXMgYWxsIGxhdGVyIGJs -a19nZXRfcmVxdWVzdCgpIGNhbGxzDQogIGZhaWwuDQoqIFdhaXQgdW50aWwgYWxsIHBlbmRpbmcg -cmVxdWVzdHMgaGF2ZSBmaW5pc2hlZC4NCiogU2V0IHRoZSBERUFEIGZsYWcuIEZvciB0aGUgdHJh -ZGl0aW9uYWwgYmxvY2sgbGF5ZXIsIHRoaXMgZmxhZyBjYXVzZXMNCiAgYmxrX3J1bl9xdWV1ZSgp -IG5vdCB0byBjYWxsIC5yZXF1ZXN0X2ZuKCkgYW55bW9yZS4gRm9yIGJsay1tcSBpdCBpcw0KICBn -dWFyYW50ZWVkIGluIGFub3RoZXIgd2F5IHRoYXQgLnF1ZXVlX3JxKCkgd29uJ3QgYmUgY2FsbGVk -IGFueW1vcmUgYWZ0ZXINCiAgdGhpcyBmbGFnIGhhcyBiZWVuIHNldC4NCg0KQWxsb3dpbmcgYmxr -X2dldF9yZXF1ZXN0KCkgdG8gc3VjY2VlZCBhZnRlciB0aGUgRFlJTkcgZmxhZyBoYXMgYmVlbiBz -ZXQgaXMNCmNvbXBsZXRlbHkgd3JvbmcgYmVjYXVzZSB0aGF0IGNvdWxkIHJlc3VsdCBpbiBhIHJl -cXVlc3QgYmVpbmcgcXVldWVkIGFmdGVyDQp0aGUgREVBRCBmbGFnIGhhcyBiZWVuIHNldCwgcmVz -dWx0aW5nIGluIGVpdGhlciBhIGhhbmdpbmcgcmVxdWVzdCBvciBhIGtlcm5lbA0KY3Jhc2guIFRo -aXMgaXMgd2h5IGl0J3MgY29tcGxldGVseSB3cm9uZyB0byBhZGQgYSBibGtfcXVldWVfZW50ZXJf -bGl2ZSgpIGNhbGwNCmluIGJsa19vbGRfZ2V0X3JlcXVlc3QoKSBvciBibGtfbXFfYWxsb2NfcmVx -dWVzdCgpLiBIZW5jZSBteSBOQUsgZm9yIGFueQ0KcGF0Y2ggdGhhdCBhZGRzIGEgYmxrX3F1ZXVl -X2VudGVyX2xpdmUoKSBjYWxsIHRvIGFueSBmdW5jdGlvbiBjYWxsZWQgZnJvbQ0KYmxrX2dldF9y -ZXF1ZXN0KCkuIFRoYXQgaW5jbHVkZXMgdGhlIHBhdGNoIGF0IHRoZSBzdGFydCBvZiB0aGlzIGUt -bWFpbCB0aHJlYWQuDQoNCkJhcnQu +On Sat, 2017-09-02 at 21:12 +0800, Ming Lei wrote: +> Please let us know if V3 addresses your previous concern about calling +> blk_queue_enter_live() during preempt freezing. + +Do you understand how request queue cleanup works? The algorithm used for +request queue cleanup is as follows: +* Set the DYING flag. This flag makes all later blk_get_request() calls + fail. +* Wait until all pending requests have finished. +* Set the DEAD flag. For the traditional block layer, this flag causes + blk_run_queue() not to call .request_fn() anymore. For blk-mq it is + guaranteed in another way that .queue_rq() won't be called anymore after + this flag has been set. + +Allowing blk_get_request() to succeed after the DYING flag has been set is +completely wrong because that could result in a request being queued after +the DEAD flag has been set, resulting in either a hanging request or a kernel +crash. This is why it's completely wrong to add a blk_queue_enter_live() call +in blk_old_get_request() or blk_mq_alloc_request(). Hence my NAK for any +patch that adds a blk_queue_enter_live() call to any function called from +blk_get_request(). That includes the patch at the start of this e-mail thread. + +Bart. diff --git a/a/content_digest b/N1/content_digest index f4646ac..c487c26 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -17,27 +17,28 @@ " oleksandr@natalenko.name <oleksandr@natalenko.name>\0" "\00:1\0" "b\0" - "T24gU2F0LCAyMDE3LTA5LTAyIGF0IDIxOjEyICswODAwLCBNaW5nIExlaSB3cm90ZToNCj4gUGxl\n" - "YXNlIGxldCB1cyBrbm93IGlmIFYzIGFkZHJlc3NlcyB5b3VyIHByZXZpb3VzIGNvbmNlcm4gYWJv\n" - "dXQgY2FsbGluZw0KPiBibGtfcXVldWVfZW50ZXJfbGl2ZSgpIGR1cmluZyBwcmVlbXB0IGZyZWV6\n" - "aW5nLg0KDQpEbyB5b3UgdW5kZXJzdGFuZCBob3cgcmVxdWVzdCBxdWV1ZSBjbGVhbnVwIHdvcmtz\n" - "PyBUaGUgYWxnb3JpdGhtIHVzZWQgZm9yDQpyZXF1ZXN0IHF1ZXVlIGNsZWFudXAgaXMgYXMgZm9s\n" - "bG93czoNCiogU2V0IHRoZSBEWUlORyBmbGFnLiBUaGlzIGZsYWcgbWFrZXMgYWxsIGxhdGVyIGJs\n" - "a19nZXRfcmVxdWVzdCgpIGNhbGxzDQogIGZhaWwuDQoqIFdhaXQgdW50aWwgYWxsIHBlbmRpbmcg\n" - "cmVxdWVzdHMgaGF2ZSBmaW5pc2hlZC4NCiogU2V0IHRoZSBERUFEIGZsYWcuIEZvciB0aGUgdHJh\n" - "ZGl0aW9uYWwgYmxvY2sgbGF5ZXIsIHRoaXMgZmxhZyBjYXVzZXMNCiAgYmxrX3J1bl9xdWV1ZSgp\n" - "IG5vdCB0byBjYWxsIC5yZXF1ZXN0X2ZuKCkgYW55bW9yZS4gRm9yIGJsay1tcSBpdCBpcw0KICBn\n" - "dWFyYW50ZWVkIGluIGFub3RoZXIgd2F5IHRoYXQgLnF1ZXVlX3JxKCkgd29uJ3QgYmUgY2FsbGVk\n" - "IGFueW1vcmUgYWZ0ZXINCiAgdGhpcyBmbGFnIGhhcyBiZWVuIHNldC4NCg0KQWxsb3dpbmcgYmxr\n" - "X2dldF9yZXF1ZXN0KCkgdG8gc3VjY2VlZCBhZnRlciB0aGUgRFlJTkcgZmxhZyBoYXMgYmVlbiBz\n" - "ZXQgaXMNCmNvbXBsZXRlbHkgd3JvbmcgYmVjYXVzZSB0aGF0IGNvdWxkIHJlc3VsdCBpbiBhIHJl\n" - "cXVlc3QgYmVpbmcgcXVldWVkIGFmdGVyDQp0aGUgREVBRCBmbGFnIGhhcyBiZWVuIHNldCwgcmVz\n" - "dWx0aW5nIGluIGVpdGhlciBhIGhhbmdpbmcgcmVxdWVzdCBvciBhIGtlcm5lbA0KY3Jhc2guIFRo\n" - "aXMgaXMgd2h5IGl0J3MgY29tcGxldGVseSB3cm9uZyB0byBhZGQgYSBibGtfcXVldWVfZW50ZXJf\n" - "bGl2ZSgpIGNhbGwNCmluIGJsa19vbGRfZ2V0X3JlcXVlc3QoKSBvciBibGtfbXFfYWxsb2NfcmVx\n" - "dWVzdCgpLiBIZW5jZSBteSBOQUsgZm9yIGFueQ0KcGF0Y2ggdGhhdCBhZGRzIGEgYmxrX3F1ZXVl\n" - "X2VudGVyX2xpdmUoKSBjYWxsIHRvIGFueSBmdW5jdGlvbiBjYWxsZWQgZnJvbQ0KYmxrX2dldF9y\n" - "ZXF1ZXN0KCkuIFRoYXQgaW5jbHVkZXMgdGhlIHBhdGNoIGF0IHRoZSBzdGFydCBvZiB0aGlzIGUt\n" - bWFpbCB0aHJlYWQuDQoNCkJhcnQu + "On Sat, 2017-09-02 at 21:12 +0800, Ming Lei wrote:\n" + "> Please let us know if V3 addresses your previous concern about calling\n" + "> blk_queue_enter_live() during preempt freezing.\n" + "\n" + "Do you understand how request queue cleanup works? The algorithm used for\n" + "request queue cleanup is as follows:\n" + "* Set the DYING flag. This flag makes all later blk_get_request() calls\n" + " fail.\n" + "* Wait until all pending requests have finished.\n" + "* Set the DEAD flag. For the traditional block layer, this flag causes\n" + " blk_run_queue() not to call .request_fn() anymore. For blk-mq it is\n" + " guaranteed in another way that .queue_rq() won't be called anymore after\n" + " this flag has been set.\n" + "\n" + "Allowing blk_get_request() to succeed after the DYING flag has been set is\n" + "completely wrong because that could result in a request being queued after\n" + "the DEAD flag has been set, resulting in either a hanging request or a kernel\n" + "crash. This is why it's completely wrong to add a blk_queue_enter_live() call\n" + "in blk_old_get_request() or blk_mq_alloc_request(). Hence my NAK for any\n" + "patch that adds a blk_queue_enter_live() call to any function called from\n" + "blk_get_request(). That includes the patch at the start of this e-mail thread.\n" + "\n" + Bart. -9b4c05a779e00aef42c5fe42f9c83a829b512aba42e7785801714676b1f64d87 +ca0f44514eed8eddcd519a087a97adbc9cb648b0e93e3cc4758cda480cd40dd6
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.