Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755668AbcLNKcF (ORCPT ); Wed, 14 Dec 2016 05:32:05 -0500 Received: from mail-bl2nam02on0058.outbound.protection.outlook.com ([104.47.38.58]:41485 "EHLO NAM02-BL2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1755347AbcLNKcD (ORCPT ); Wed, 14 Dec 2016 05:32:03 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Bart.VanAssche@sandisk.com; Subject: Re: [PATCH 5/7] blk-mq-sched: add framework for MQ capable IO schedulers To: Jens Axboe , , , References: <1481228005-9245-1-git-send-email-axboe@fb.com> <1481228005-9245-6-git-send-email-axboe@fb.com> <69c1261a-1a21-7347-c753-0bcb9a2ab65e@sandisk.com> CC: , From: Bart Van Assche Message-ID: Date: Wed, 14 Dec 2016 11:31:46 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset="windows-1252" Content-Transfer-Encoding: 7bit X-Originating-IP: [178.117.55.239] X-ClientProxiedBy: VI1PR07CA0018.eurprd07.prod.outlook.com (10.163.160.156) To CY1PR02MB1692.namprd02.prod.outlook.com (10.162.161.26) X-MS-Office365-Filtering-Correlation-Id: 6d195d8c-5fc8-471a-d93c-08d4240c6fa9 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:CY1PR02MB1692; X-Microsoft-Exchange-Diagnostics: 1;CY1PR02MB1692;3:95Nj851kuCb44UoBpsHDM1XWUBs7lx1MPnbZ5wLgcU44Z4ofmWym4y4lCkauqDtpsjonAWEN+o63U2+q35HKtZDf1yT4+g1WZlqQO/y1kYb+kUwEedwbfXzCeBYiVgJhsey0FRmICH4vToS+gFMCnqEmfAS+NT02jzDeAEG6YSMrjQYUTT7WW6TCui76S22mtbzIY8SYe9t/x29YyC8dOdKtqwpD8FkYJvO3/ZF9BUH1r+1oziHwRti4gmcd78yAoYhwTdHfT1RE+bYtO3b0Xw==;25:3KxBVSlVl0Xjz7gy5PyS0YJ451+2tNuwjr/Gn5BMOEErt7rcXz7TMtT0AlfRaMBiEs4+UeoxM4QyN4nS21SL+bOioYFLdJcgbqdLHo3qBa11o+8FdZNVKFpNjnkyx4LNrQsNGwhpraW2HsiGfzEyZiiRg2+r5FE2ytxkEvRrYlB1kUbC1C66OdH6mIBHMBZhSaMaaWW9eMajIQYXQe0LV5J6rvT1a34wFhvKoWg65xb6/xyinKdrWcuELzsO+jpY4lT6JoATtSghOwN6l/7tHP3Du8nf5E4EVPYaNoRmGRl2Fr3x1iA+IoAgyYi/IQhCpDeu3sX1NuG1iij+9C1VtMpNcqtVrjSslhi26EWvHGpPTlgWAv32jvoO1P68jGcQHlm81U9QXOjHMF6jLSoZw2mOUIGauHkUW1ir1wqHYUvUs6d4RvEj4CgYjJmnZR+PERwR2lwLJNCmakeZYnSXjA== X-Microsoft-Exchange-Diagnostics: 1;CY1PR02MB1692;31:FPBGMU+InzaGLxU5kJepgnG7BoHXzgvSKR8qKKV607c0uONkCXEKnKTtNuGV5GtPzlTlXTXIYbB5GrZJUxZ1SLgXUhZGsYvXVVQIR5BSCbrysDx4aBxNGecXLzUjzMXrDmQQs+26qrFQ5a4f3cxoiAkL4TKGpE9f1DDTd56zGyBNUlGsujmA5JKD3mqu12zHq+CmbD3a3uL3TIts5A8Gz4pim7cSMNfBsNn80m9fpopdfeOoTIVU8sQm7RMzT8xcBjO1zri0MxcGCI5C0OEmSg==;20:JLW5MDDtA0hOJ4WO+VnG0x8xYj4DOv1EKG99MYdM1VX9dzzTF6qt9TFa4TRFRNfNLvHm91NJxAIfEyIFqDcui9HpzRqjE5lxdV6WVAxk4/DfB4LpyvsUSUKBzzWOw2StxqyUipr+wcBIhygSegzlt/HzaaONfz1dtao2Dqr3938d+WrW+GtCkJradOsqlxLAGetQM3/afbcECL5M3b94fxxLXJdp5z2me7Uom3s4CXcTd3uJESaL2k72lDgPK4CecN+pKcypDCDzZP0A9qyUkPhQ9E0M0t3WImxFirnyjLf6Vc2OIf7D0fhgkOANyaLQCa8MzQhT3sx8eltAKQ6qzVkJDFbL/f8huZIczbKTl7wmQoxUBfK+TnrkenueA7ixmYs7LXLiLnPWa9b99S1ci87i1G59/GRWudO7y4XivF3Js83ZwrlJO1fvWcPx2O8GuqoqMplOGP0PZRJk+fnIO+OXpZDrgVuJHy+LYajE6ruh8apEFHcS549fl6oYIOH2 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046)(6055026)(6041248)(20161123560025)(20161123562025)(20161123564025)(20161123555025)(6072148);SRVR:CY1PR02MB1692;BCL:0;PCL:0;RULEID:;SRVR:CY1PR02MB1692; X-Microsoft-Exchange-Diagnostics: 1;CY1PR02MB1692;4:fPwNRGxeimhFrLZGVQwBDEO/HBnprSQ+JrPiLfqCUZuKAPEfrfEYEawRM7TEXdh66IGQQP0mx9y69EquIjO0S9Rj3LjP429TeFjV3EKftIyBgYgxRvbuIVrjha0skBJiupE+Z4xdtUB/7LcYK6XlLclGhh54LX5YYMuOTFOLY3wzooZ/dsp1LKzMy6+7X0Fso3LpwZAk7/zOCzEVg+5eEJItTFOHKkLNcp2VXr/sTckCK43yNL8m1+/9HlRr80LRT4jLvjhK51MLJYZw79o62O8B9WM2/m2+qw5BsYcJBqnyZdE8IQNLBU9RU1EuT2iMogpn/n7ezV4b1Chw9r2nxDf3yNO0gBTgcm1ii+LxFjHk6B3zKV1mJS0BPShjjFVBFrWZo6RRLlQ7/XJQsU9T6jgXcQ2LzXUsaogTQaTuwvz549am8pUbTSh8HraRB1I4+dL/2blefMEln6krq0ju3SHTDm8UMvqClcTlzdkkNu5xgpDfJ1tOknzFOJmvfZPaEuVsoUTjihNVlzRsU5eFMU4i5YLnqDqvel0j3W0w1pFZpfGf1BQfbqK3BeIEkC/uGWpYrxlbOzbmqm6v+YZ23Q== X-Forefront-PRVS: 01565FED4C X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(7916002)(39840400002)(39850400002)(39450400003)(39860400002)(39410400002)(189002)(199003)(377454003)(24454002)(68736007)(76176999)(92566002)(54356999)(81156014)(23746002)(2906002)(4001350100001)(5001770100001)(229853002)(6486002)(50986999)(230783001)(8676002)(81166006)(42186005)(93886004)(38730400001)(65826007)(5660300001)(31686004)(97736004)(230700001)(106356001)(105586002)(53416004)(305945005)(66066001)(7736002)(65806001)(101416001)(33646002)(64126003)(189998001)(83506001)(3846002)(69596002)(6666003)(47776003)(36756003)(86362001)(2950100002)(65956001)(6116002)(2201001)(50466002)(31696002)(4326007)(2101003);DIR:OUT;SFP:1101;SCL:1;SRVR:CY1PR02MB1692;H:exp-402881.sandisk.com;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1;CY1PR02MB1692;23:UHBcHPQHfYBT141EJ98zpf92sVREFVZeZ+4a/?= =?Windows-1252?Q?zpUbLMNW26zU2qaVxCVFilZgdReFaX1oAbTQd6biDgm0Me3DehokF15D?= =?Windows-1252?Q?8UjeNUkbDNbATMScIBpLLrT1v4TFU2a3e4kl8Ab6asTRnN1pC0wJag3a?= =?Windows-1252?Q?iBQpVBP4U+B5/cAlvEezccFNNp1+d1HcTpgdGRuulYrL4JuQ3j6OP3nQ?= =?Windows-1252?Q?vCVAQWS2OAhvVgZFcMzTUKuWVayH9whhsSKtfkZ6EUlAKZeksPN92x/n?= =?Windows-1252?Q?qOUIgMffV5cXZs43xCtLpXgpFoRytRLhWshTqlGd0AzMwZuXitLYlIXq?= =?Windows-1252?Q?msE2sOjNGUm3+28Q7OGL9DOVOGzF1mEzp7isyPpDsV3Bcbtmw9bGZX/0?= =?Windows-1252?Q?yaDFK1ftar74YY95p4DtG/WqNVgJoiw1LDYVjYpziozPQon40J2p5V2X?= =?Windows-1252?Q?7aNUddmvitgeS+TwmHSc3C4HD/JDDemUUY3Zc9tPhGKdDgq6jY5ajHH/?= =?Windows-1252?Q?tjPamF2oYJiSFCA5ZwxDDgU2I/8Hdx25f410rY5v848zqsQiJ4rhNLyY?= =?Windows-1252?Q?FheMLYJi4FX2RInxG72DoxpOf57577mdYvyw+2TrLfgT8FJEhDQi/NnG?= =?Windows-1252?Q?o0MtxAuzOpzBBkLOBfL8OPQGEhyCpIXL4kfqJUeI9juHU2Qba2pvtuWJ?= =?Windows-1252?Q?5Z3pBLwA2YDYQi3EsA6JyMdFyzmfZK1SN+XOplNCMwS7AYSlzsL6oUJa?= =?Windows-1252?Q?NSAVfBureG4ebGMypcC6deKXrFqU7cv1M0wqnWgJnWJvtcvWEHhVn6Q3?= =?Windows-1252?Q?lH3T5z/kmZbU71td2/dl1f1FfVRTxizfm/hm2sU3MzGEcrgIXNF+vwQB?= =?Windows-1252?Q?zSDC0nLpWCLyqSDYdtGdGr5dUaG7qQmMNHp8yUB+9LFpE+4LVVCXHgyh?= =?Windows-1252?Q?gDDT/H3+qNKCl/wPGDlgSFLuF9se2um0dya123ppchhKJ0165H3EOCTv?= =?Windows-1252?Q?D6qnKear4osR3FffBikiS/8ZfeJkQI2pJpY6JIogoHbsoQ0Kc4BVw7tq?= =?Windows-1252?Q?EfQov6eu4ADIL2bpw2fw0Zb20w3vUljjfTY0pA1zNtsc0Up2LMWw6X4M?= =?Windows-1252?Q?Xm5H8jz1JULwtsmAtUMoGFmeCdJAFmVCw7au/B4BbXJRP3BzbMbfbcCN?= =?Windows-1252?Q?lnDHu9a0xPjyDpDYVe+qjLPa5FO+lupV3dqQynJNROXBct/Hx0izn7v2?= =?Windows-1252?Q?hqrtnUr9UnqqXPzyePe2+ZOyckImZps69GYH6jTtT3BUzDq8JyuhQrXy?= =?Windows-1252?Q?bo1RGEoW8Z+zE+HbtfJFmHLRv2gsYfrTC8/Kge1sJRXpejWeLlhKywhz?= =?Windows-1252?Q?HeeQcbnwV4asZdwOArcXr6CVAC2D36tqm0NxJsAtN4fuX3OGofNFbME/?= =?Windows-1252?Q?8bKfA2Zm61EbLzIgqPh/r/GJsCyN2+IA7hnF+dgh4CX+Faccx3IHyZ/Y?= =?Windows-1252?Q?bhbVTdPD8kjAec2WELpzY5/xqcdwxGFQF+aEfGyG3/FdI0jIZxeaErUt?= =?Windows-1252?Q?qhmZLM0a5M3XI+lmVpdaduZcCsCRv19C1cZpf7YsTDyzo55EIiuV+gYe?= =?Windows-1252?B?QT09?= X-Microsoft-Exchange-Diagnostics: 1;CY1PR02MB1692;6:KYKyu9lJqyOcQ7HuyXbcIMCJTfdPhitHzf1ANuwnh7S+649WqUNEX6yu4DXYKWVKqfq8KgR7R5d3fLY2Iqwh0hpLfksrPLZzVfCFqElI+4Zcrlaqa3kFlue/8ov0sptBr1WBdSI793jXe6Srww6tx3dXXg67j13onOW9aSnoeEi+i3k0ngtjF+ToVIb8Qm3Zoi7W9hKX24bCpVeugTrqgvBsAesIF7nXEMPT67l3/dZ85w2WLNlatM2deWboeAChc4yJjmHton8bbNGod6MjXlPK3WysG5q2Q7mXGXvhT6C+UtRxdYiJo7FYSW3yLnqk0D0kDiPbVEkud5qgPgjBIVj7pGoKznnf51Dw0jeuCVSMvdLWsxsaAbWGrdnY0d8YcvP3aurygaNURdHQKR2GzHHxqA5euVxe2UOAxf7O6eRmtDN77x+UaZt1cpL1yDCI+CrJ2Xe5sM7ELw9s4fJ/mA==;5:THq+8yobMwVGUwz9KWOa+4o9mAJFN6bSD0z5vChymyHRGo7BQsoQC/UTroNCJP8a4tozUzDwULxCPAM+rw4KtTRaG919Z/EA4Rh/TPzI6Piwycc2dq0eWWi3WCeQaIJm7S1o8j8s8wVs0H7VkJ+oYg==;24:Z2CYGkxfFFbiTKqqq2uxuZiYhni/B6NKeJQfLKqMRLlwIfKVMIpnDKSNlx5QRCnfU4vXPqze9tunpTPlnZXbNNj5tSlbxmB7ITAohKwNehM= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;CY1PR02MB1692;7:HsIzRr5+6BLrwjWUO8O8W2flUhMmYx4WS5TkLjS1z2J07dnzFhmge6niG5lAdiTn6JA7vxCrtAntqBc84N3XN2uR01+8DFqF289Odeg6aaIJiPsqJJWQ4ReCw2P5yPUq+jQL2dkDQkWeZYi5qbMxovq/p9BiaCNTQI6DmaObunPn+lipcQkG7A3mvrKXQB5xP4OtxhwMNS0MfeRUkNo9eKEisBGlV1gCHvqpqi6d4ocl5mYepKTm8mAJGHNOgxuIfkN2PAIiffncFEPM2ByLrCA7HGu9ltzf8uyWn1l5DpifswAghSGQrx2jMu4JTJwu7Rf00hM5I0fiiSa3wfWCqOlSBZdClKlHQtJa4O9ar0EgBAtGG1VZBzMKODA/AY6uFIF1qs+NCXKnEPQf/0NW4hjggw1KQrhdHG4k8aFQnGBLv8VwPbUk4Rd+5j76vXJaM24cyzYVfmYT3snWkdKmKg==;20:oQeinhgAVtrZs7IEGJGDSADHRRPXkMBv9gsLzcOPeRLUNugK4HTDyBChat0QwQTGoq5Tb0GdzGlG0cqtktR89HwJ451uff6IL8uc4GUmdVlTk4CcSv/8BnJqCBvanYRWOVLs3GmgIlwRhMFonmhIBmFaCDsfYpnfUqJkG5y7JIREKk0lz4LeCogz5UYZGKYzvx7d0CphLN7qQNizrZVtMPW+R5K+1hq8YltRnw/AeX4XNcY652mZomfCNWKl5H3H X-OriginatorOrg: sandisk.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Dec 2016 10:31:58.3199 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR02MB1692 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2038 Lines: 43 On 12/13/2016 04:14 PM, Jens Axboe wrote: > On 12/13/2016 06:56 AM, Bart Van Assche wrote: >> On 12/08/2016 09:13 PM, Jens Axboe wrote: >>> +struct request *blk_mq_sched_alloc_shadow_request(struct request_queue *q, >>> + struct blk_mq_alloc_data *data, >>> + struct blk_mq_tags *tags, >>> + atomic_t *wait_index) >>> +{ >> >> Using the word "shadow" in the function name suggests to me that there >> is a shadow request for every request and a request for every shadow >> request. However, my understanding from the code is that there can be >> requests without shadow requests (for e.g. a flush) and shadow requests >> without requests. Shouldn't the name of this function reflect that, e.g. >> by using "sched" or "elv" in the function name instead of "shadow"? > > Shadow might not be the best name. Most do have shadows though, it's > only the rare exception like the flush, that you mention. I'll see if I > can come up with a better name. Hello Jens, One aspect of this patch series that might turn out to be a maintenance burden is the copying between original and shadow requests. It is easy to overlook that rq_copy() has to be updated if a field would ever be added to struct request. Additionally, having to allocate two requests structures per I/O instead of one will have a runtime overhead. Do you think the following approach would work? - Instead of using two request structures per I/O, only use a single request structure. - Instead of storing one tag in the request structure, store two tags in that structure. One tag comes from the I/O scheduler tag set (size: nr_requests) and the other from the tag set associated with the block driver (size: HBA queue depth). - Only add a request to the hctx dispatch list after a block driver tag has been assigned. This means that an I/O scheduler must keep a request structure on a list it manages itself as long as no block driver tag has been assigned. - sysfs_list_show() is modified such that it shows both tags. Thanks, Bart.