diff for duplicates of <1518022762.2870.20.camel@wdc.com> diff --git a/a/1.txt b/N1/1.txt index 5b59994..4f0f9bf 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -1,20 +1,32 @@ -T24gTW9uLCAyMDE4LTAyLTA1IGF0IDIzOjIwICswODAwLCBNaW5nIExlaSB3cm90ZToNCj4gZGlm -ZiAtLWdpdCBhL2Jsb2NrL2Jsay1tcS1zY2hlZC5jIGIvYmxvY2svYmxrLW1xLXNjaGVkLmMNCj4g -aW5kZXggNTVjMGE3NDViNDI3Li4zODViYmVjNzM4MDQgMTAwNjQ0DQo+IC0tLSBhL2Jsb2NrL2Js -ay1tcS1zY2hlZC5jDQo+ICsrKyBiL2Jsb2NrL2Jsay1tcS1zY2hlZC5jDQo+IEBAIC04MSw2ICs4 -MSwxNyBAQCBzdGF0aWMgYm9vbCBibGtfbXFfc2NoZWRfcmVzdGFydF9oY3R4KHN0cnVjdCBibGtf -bXFfaHdfY3R4ICpoY3R4KQ0KPiAgCX0gZWxzZQ0KPiAgCQljbGVhcl9iaXQoQkxLX01RX1NfU0NI -RURfUkVTVEFSVCwgJmhjdHgtPnN0YXRlKTsNCj4gIA0KPiArCS8qIG5lZWQgdG8gcmVzdGFydCBh -bGwgaHcgcXVldWVzIGZvciBnbG9iYWwgdGFncyAqLw0KPiArCWlmIChoY3R4LT5mbGFncyAmIEJM -S19NUV9GX0dMT0JBTF9UQUdTKSB7DQo+ICsJCXN0cnVjdCBibGtfbXFfaHdfY3R4ICpoY3R4MjsN -Cj4gKwkJaW50IGk7DQo+ICsNCj4gKwkJcXVldWVfZm9yX2VhY2hfaHdfY3R4KGhjdHgtPnF1ZXVl -LCBoY3R4MiwgaSkNCj4gKwkJCWlmIChibGtfbXFfcnVuX2h3X3F1ZXVlKGhjdHgyLCB0cnVlKSkN -Cj4gKwkJCQlyZXR1cm4gdHJ1ZTsNCj4gKwkJcmV0dXJuIGZhbHNlOw0KPiArCX0NCj4gKw0KPiAg -CXJldHVybiBibGtfbXFfcnVuX2h3X3F1ZXVlKGhjdHgsIHRydWUpOw0KPiAgfQ0KDQpUaGlzIG5l -dyBsb29wIGxvb2tzIG1pc3BsYWNlZCB0byBtZS4gSWYgYm90aCB0aGUgQkxLX01RX0ZfR0xPQkFM -X1RBR1MgYW5kIHRoZQ0KQkxLX01RX0ZfVEFHX1NIQVJFRCBmbGFncyBhcmUgc2V0IHRoZW4gdGhl -IG91dGVyIGxvb3AgaW4gYmxrX21xX3NjaGVkX3Jlc3RhcnQoKQ0KYW5kIHRoZSBpbm5lciBsb29w -IGluIGJsa19tcV9zY2hlZF9yZXN0YXJ0X2hjdHgoKSB3aWxsIGNhdXNlIG1vcmUgY2FsbHMgb2YN -CmJsa19tcV9ydW5faHdfcXVldWUoKSB0aGFuIG5lY2Vzc2FyeS4gSGF2ZSB5b3UgY29uc2lkZXJl -ZCB0byBtZXJnZSB0aGUgYWJvdmUNCmxvb3AgaW50byBibGtfbXFfc2NoZWRfcmVzdGFydCgpPw0K -DQpUaGFua3MsDQoNCkJhcnQuDQoNCg0K +On Mon, 2018-02-05 at 23:20 +0800, Ming Lei wrote: +> diff --git a/block/blk-mq-sched.c b/block/blk-mq-sched.c +> index 55c0a745b427..385bbec73804 100644 +> --- a/block/blk-mq-sched.c +> +++ b/block/blk-mq-sched.c +> @@ -81,6 +81,17 @@ static bool blk_mq_sched_restart_hctx(struct blk_mq_hw_ctx *hctx) +> } else +> clear_bit(BLK_MQ_S_SCHED_RESTART, &hctx->state); +> +> + /* need to restart all hw queues for global tags */ +> + if (hctx->flags & BLK_MQ_F_GLOBAL_TAGS) { +> + struct blk_mq_hw_ctx *hctx2; +> + int i; +> + +> + queue_for_each_hw_ctx(hctx->queue, hctx2, i) +> + if (blk_mq_run_hw_queue(hctx2, true)) +> + return true; +> + return false; +> + } +> + +> return blk_mq_run_hw_queue(hctx, true); +> } + +This new loop looks misplaced to me. If both the BLK_MQ_F_GLOBAL_TAGS and the +BLK_MQ_F_TAG_SHARED flags are set then the outer loop in blk_mq_sched_restart() +and the inner loop in blk_mq_sched_restart_hctx() will cause more calls of +blk_mq_run_hw_queue() than necessary. Have you considered to merge the above +loop into blk_mq_sched_restart()? + +Thanks, + +Bart. diff --git a/a/content_digest b/N1/content_digest index d057c92..9825f8a 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -22,25 +22,37 @@ " peter.rivera@broadcom.com <peter.rivera@broadcom.com>\0" "\00:1\0" "b\0" - "T24gTW9uLCAyMDE4LTAyLTA1IGF0IDIzOjIwICswODAwLCBNaW5nIExlaSB3cm90ZToNCj4gZGlm\n" - "ZiAtLWdpdCBhL2Jsb2NrL2Jsay1tcS1zY2hlZC5jIGIvYmxvY2svYmxrLW1xLXNjaGVkLmMNCj4g\n" - "aW5kZXggNTVjMGE3NDViNDI3Li4zODViYmVjNzM4MDQgMTAwNjQ0DQo+IC0tLSBhL2Jsb2NrL2Js\n" - "ay1tcS1zY2hlZC5jDQo+ICsrKyBiL2Jsb2NrL2Jsay1tcS1zY2hlZC5jDQo+IEBAIC04MSw2ICs4\n" - "MSwxNyBAQCBzdGF0aWMgYm9vbCBibGtfbXFfc2NoZWRfcmVzdGFydF9oY3R4KHN0cnVjdCBibGtf\n" - "bXFfaHdfY3R4ICpoY3R4KQ0KPiAgCX0gZWxzZQ0KPiAgCQljbGVhcl9iaXQoQkxLX01RX1NfU0NI\n" - "RURfUkVTVEFSVCwgJmhjdHgtPnN0YXRlKTsNCj4gIA0KPiArCS8qIG5lZWQgdG8gcmVzdGFydCBh\n" - "bGwgaHcgcXVldWVzIGZvciBnbG9iYWwgdGFncyAqLw0KPiArCWlmIChoY3R4LT5mbGFncyAmIEJM\n" - "S19NUV9GX0dMT0JBTF9UQUdTKSB7DQo+ICsJCXN0cnVjdCBibGtfbXFfaHdfY3R4ICpoY3R4MjsN\n" - "Cj4gKwkJaW50IGk7DQo+ICsNCj4gKwkJcXVldWVfZm9yX2VhY2hfaHdfY3R4KGhjdHgtPnF1ZXVl\n" - "LCBoY3R4MiwgaSkNCj4gKwkJCWlmIChibGtfbXFfcnVuX2h3X3F1ZXVlKGhjdHgyLCB0cnVlKSkN\n" - "Cj4gKwkJCQlyZXR1cm4gdHJ1ZTsNCj4gKwkJcmV0dXJuIGZhbHNlOw0KPiArCX0NCj4gKw0KPiAg\n" - "CXJldHVybiBibGtfbXFfcnVuX2h3X3F1ZXVlKGhjdHgsIHRydWUpOw0KPiAgfQ0KDQpUaGlzIG5l\n" - "dyBsb29wIGxvb2tzIG1pc3BsYWNlZCB0byBtZS4gSWYgYm90aCB0aGUgQkxLX01RX0ZfR0xPQkFM\n" - "X1RBR1MgYW5kIHRoZQ0KQkxLX01RX0ZfVEFHX1NIQVJFRCBmbGFncyBhcmUgc2V0IHRoZW4gdGhl\n" - "IG91dGVyIGxvb3AgaW4gYmxrX21xX3NjaGVkX3Jlc3RhcnQoKQ0KYW5kIHRoZSBpbm5lciBsb29w\n" - "IGluIGJsa19tcV9zY2hlZF9yZXN0YXJ0X2hjdHgoKSB3aWxsIGNhdXNlIG1vcmUgY2FsbHMgb2YN\n" - "CmJsa19tcV9ydW5faHdfcXVldWUoKSB0aGFuIG5lY2Vzc2FyeS4gSGF2ZSB5b3UgY29uc2lkZXJl\n" - "ZCB0byBtZXJnZSB0aGUgYWJvdmUNCmxvb3AgaW50byBibGtfbXFfc2NoZWRfcmVzdGFydCgpPw0K\n" - DQpUaGFua3MsDQoNCkJhcnQuDQoNCg0K + "On Mon, 2018-02-05 at 23:20 +0800, Ming Lei wrote:\n" + "> diff --git a/block/blk-mq-sched.c b/block/blk-mq-sched.c\n" + "> index 55c0a745b427..385bbec73804 100644\n" + "> --- a/block/blk-mq-sched.c\n" + "> +++ b/block/blk-mq-sched.c\n" + "> @@ -81,6 +81,17 @@ static bool blk_mq_sched_restart_hctx(struct blk_mq_hw_ctx *hctx)\n" + "> \t} else\n" + "> \t\tclear_bit(BLK_MQ_S_SCHED_RESTART, &hctx->state);\n" + "> \n" + "> +\t/* need to restart all hw queues for global tags */\n" + "> +\tif (hctx->flags & BLK_MQ_F_GLOBAL_TAGS) {\n" + "> +\t\tstruct blk_mq_hw_ctx *hctx2;\n" + "> +\t\tint i;\n" + "> +\n" + "> +\t\tqueue_for_each_hw_ctx(hctx->queue, hctx2, i)\n" + "> +\t\t\tif (blk_mq_run_hw_queue(hctx2, true))\n" + "> +\t\t\t\treturn true;\n" + "> +\t\treturn false;\n" + "> +\t}\n" + "> +\n" + "> \treturn blk_mq_run_hw_queue(hctx, true);\n" + "> }\n" + "\n" + "This new loop looks misplaced to me. If both the BLK_MQ_F_GLOBAL_TAGS and the\n" + "BLK_MQ_F_TAG_SHARED flags are set then the outer loop in blk_mq_sched_restart()\n" + "and the inner loop in blk_mq_sched_restart_hctx() will cause more calls of\n" + "blk_mq_run_hw_queue() than necessary. Have you considered to merge the above\n" + "loop into blk_mq_sched_restart()?\n" + "\n" + "Thanks,\n" + "\n" + Bart. -25c3feed2d349707beaae120987aaa8c15c5591d3b6c49254f8cb87fb0a431ad +420406f663511e7e64234e8f782248bcbf8346b77a47720bf90638ad44869c71
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.