From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751178AbdAQCsa (ORCPT ); Mon, 16 Jan 2017 21:48:30 -0500 Received: from mx0a-00082601.pphosted.com ([67.231.145.42]:52032 "EHLO mx0a-00082601.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750826AbdAQCsR (ORCPT ); Mon, 16 Jan 2017 21:48:17 -0500 Subject: Re: [PATCH 6/8] blk-mq-sched: add framework for MQ capable IO schedulers To: Paolo Valente References: <1481933536-12844-1-git-send-email-axboe@fb.com> <1481933536-12844-7-git-send-email-axboe@fb.com> <9936D33B-AE98-46DF-B1DA-D54142A338FD@linaro.org> CC: Jens Axboe , , Linux-Kernal , From: Jens Axboe Message-ID: Date: Mon, 16 Jan 2017 18:47:22 -0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 MIME-Version: 1.0 In-Reply-To: <9936D33B-AE98-46DF-B1DA-D54142A338FD@linaro.org> Content-Type: text/plain; charset="windows-1252" Content-Transfer-Encoding: 7bit X-Originating-IP: [50.233.49.230] X-ClientProxiedBy: SN1PR10CA0022.namprd10.prod.outlook.com (10.162.255.160) To MWHPR15MB1198.namprd15.prod.outlook.com (10.175.2.140) X-MS-Office365-Filtering-Correlation-Id: 5b50b007-2a70-4051-4d45-08d43e832d10 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:MWHPR15MB1198; X-Microsoft-Exchange-Diagnostics: 1;MWHPR15MB1198;3:anqV8YefyGIx0EZPqx/KbtKhZsjvF17HhGYHF9jvlWobNsuae6jXRmNNVwRtCX8hQuZiNqa/g/FqQ8Muw0aWlViXOB0d6s+Oo4tBR+qNvphl9W2e542ImB0lvL359yDb+B5f2iQ0agZH/6zsDcCujRVEyP9U9g5Bf5QLWc/ll9AyXKD+iYSvlmW6zmf7wRLRoHURt9WZtUjUAL/ZTR1DO+OjVivs5Y1mTBYN5dt2QJYsDikK3jslbQDLKPI357buTG4ICJCyOx18n6aR0Fu1iA==;25:xOZvg+c2pTNskSssqFjObJDg5BBO7D8fnEpwHX0wGzQkOqKOfP3IeHVQJRangjUoyjLBSuiEzyj+1fm4H9GMXKBm5ULJkaT+S8LpZwmtg1pNystiw+JuXbp2um9kqTnORfk27s3FLZFjYIer2rZvIZM/jr8F0657FZANm+B+p1craFjzmu8zeRq5FGvu56ad54vC4+lp0HNn9+5K/tDKipeRCKhidKvBfVSQ6N7c1a9i+9qzSYbVefNCrqcRquJgi94pNTpnlDW0sWjiz/ty3/k9JHw5xo1CM97AVZnVktUHyEnt23p3AqGP41Mw1zNWKx9+VsIBPed/RhqpKonLR6C1RbRLiV+jZFePy69FtpcCNazjNg2CILRHIwzEo0auG0V8NacYrHOxVSlg+RGnmAWnYR3QCw0xJX02mLummE5RXKVGGd8aa6q8/8h2MKJbBUCVjud8eqUhBfPwqExHuw== X-Microsoft-Exchange-Diagnostics: 1;MWHPR15MB1198;31:KPROHgx3Gf/TaIhCpgvwEAv7H44xjk2FW0/k79eU1GhsodOgi8Km1rSAQBMhK/Sltk47yRSIw45B99s5ls31DNPMMuhuUU9PlsWbuRh0YgEaMMmOfk0m0sTa3Sxkt3hYnZAG0+eApXyRQq7mEB2zOovWh85GkHAO61ZfFzCV0T4DN7+iSuYad34RwdC6oGOmIFb6PF8zP6GgrK9bM1OxdcOwKligUQ30dw1PPskbRcNziOqVLPDWtIBR9iCumBvQrVu6a2eEMNEMz+KUD789tg==;20:SYKCLRc/msnxzVMxWxR0Rp8610wWDLeZ0urWPN3qBILNN1bkjy7yTbcmTw7DogIETh+Hrr6kP3fRpJ2pfU1Pz1xYaeY2gEtHCjmeh4WaHmqyI9ALhlQ8WnTgS0V9B+1zEvcCNexvbcBCCPbuMFh2wZwiQwEuBNogb6MCuRKN1UcgKZ0+Atg/L81/6H+AGL7N2kI6FneGCRQSIVcidRycqVzvLKfKFyNedz/79JJ122aMrzCWUUTPru3/W/UqsZYVp6i3WsuSLcIXpLyS6N8v63T5CuD3MkNlLD+bfC+3DpH8wy5qFz/xp07QIpc6eYZYhhFUeA95fsZj/1IgFTKXzhIwqCvRZ8eDVVi6QvcSLVpzOJwMUUOfzzATTXgbNYRf4p1gWAg5hgb4a7v2/0XPOQBRon4qkQW6vX4h6VuiewAYEODrNRr+Hv53kE5JYSNTpFnh8MxhdlQENwxl8sOr6AJclAkhWAmqQsqxpnfEs6QqfJaK+IwXbfL4Z4XBDNot X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(67672495146484)(211171220733660); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040375)(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001)(6041248)(20161123555025)(20161123560025)(20161123564025)(20161123562025)(6072148);SRVR:MWHPR15MB1198;BCL:0;PCL:0;RULEID:;SRVR:MWHPR15MB1198; X-Microsoft-Exchange-Diagnostics: 1;MWHPR15MB1198;4:UClVi5SYwPCHmmh8CyjATrIzH/7ckfYB20ju8Ff+Ra8jpZsI4YqCEE1/JCvulzSYLshxi59OQYbIHqnWirdiAvzQFZ3gIjcRqHfyln2j82kyv0GdgqnE+bgkLTAUlQ78JRkMxHn5al1mJnVWdK7+ty4ORlMJAVhOijpTOGfOjhYZmg8xoQ5ZGSu1C2tVN5+MrbufdiG4meQ+ZZAYTH54aWkpaWL4XRGDBcd5xkr2tSVd362yDAL6pQLyl2fy7t/bY1aoEyV7xKhkOqrDjpXWM+cpswFQH4OLwy8ssxWzVgmwC3A1HUhV9VkvgxqIJo6t2lYz9qHzvdIZ7vZR4TrfnH93C8fUokWur/PaRkI55LUf5dzhRG3vZsA1xNbSNlvXZ/or1KywmxI5Hlu/17hFhKnUJm9hkqSYXryLcWFccZR8OESoaGvrx2FPzP/SqR1gAdjSOAxUaIcQqKPjTD19JZ+PlkYGAdgw3jsY3abzYThUUb9RLdTvg37BsKTBtOYjxPwPkmOTlFW+JYZ87QKI+bmXwhwnuh6YXuQC+4Jdr2No2J9gwGZwFz76G1UNyBw8LZLapkpbdA1ahwFx8yNybtQ/6EXdxxK45Z4NHOJnCalBbpA4h8r0EeWKMporakux5zFsVg8R4Rz6R1UqH+FZ5Q== X-Forefront-PRVS: 01901B3451 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6049001)(6009001)(7916002)(39830400002)(39450400003)(39410400002)(24454002)(189002)(377454003)(199003)(97736004)(189998001)(68736007)(50466002)(6116002)(3846002)(4001350100001)(6916009)(25786008)(6666003)(2950100002)(54906002)(83506001)(2906002)(5660300001)(31696002)(23746002)(6486002)(38730400001)(33646002)(90366009)(77096006)(36756003)(86362001)(230700001)(229853002)(7736002)(305945005)(230783001)(65826007)(117156001)(4326007)(101416001)(50986999)(76176999)(54356999)(42186005)(105586002)(64126003)(66066001)(92566002)(106356001)(47776003)(31686004)(81166006)(110136003)(65806001)(81156014)(8676002)(65956001)(30001);DIR:OUT;SFP:1102;SCL:1;SRVR:MWHPR15MB1198;H:[192.168.102.217];FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1;MWHPR15MB1198;23:vjyRQP3oZffyf5xq0cWahYB3jNY23BuKTr2oG?= =?Windows-1252?Q?AT4xvyAslDPxB0o0L5VktLHZpsrbsSolnJ7IYh91QBXK3RW2ExDk1GpG?= =?Windows-1252?Q?beOkaStVkS6klYsXBR3X0S1fdXIRoIRahpxeWDjZtveaFOTSa2d8EnEv?= =?Windows-1252?Q?NpRQ27GcyAfakg94l+v7jIAMMn6eZbOOcgyLqfuhzT0TgVm+qotMEKyw?= =?Windows-1252?Q?eu3BJzSGbNwBfI4HfHrnUAu+LY0pEIdSYlNHMguavUwIZzETw+BmeXCl?= =?Windows-1252?Q?aMzTaVYhr4PV2qlZCFRw96AGGqCpZXMZbMcIUNMJZJlY3OgmJxa5EI6O?= =?Windows-1252?Q?1oPKb+OM0mqCEkCX6xRg5x5CfL6hfxURCypQ4hmwEIsYqw1Amdym3hN8?= =?Windows-1252?Q?v2uMxDuCgHX6xrtpRTAyobVioOk9S2HQkc8vOdGtVhrfGLoy/FtMLi6V?= =?Windows-1252?Q?gUKmyMBV1dqgTIlCVxwTEFVNdiooC0FnaQICDpviHJpP2JmY5EmhwDCJ?= =?Windows-1252?Q?MPnHt2URegFQJdc98POdRx9CZnv2KvlKshwZ6p/ySQ528wqUlWFuTZDg?= =?Windows-1252?Q?8BpL8p0xA8dX/aYx391YmefDI6v371pc2tmZWXosnJe3QsPyGoO9pUSL?= =?Windows-1252?Q?vaIn2xX5hZVCIyyFsky4BC8b9WNcSshgYPWKpFfnfbekEZ0O2OjZ/A1H?= =?Windows-1252?Q?IR063IDFM9262jwTuTwm90UxjS29lP2zDOTxBV+NqXvmcQZS5/j/cAPS?= =?Windows-1252?Q?xXr2GbczJj4cjZKw7Qh/t64KtKax8nrapI1nnhJ47KKmU8nZQz0O1lBp?= =?Windows-1252?Q?U/F4bnNBxa7wlkwyJu6LkN8fUDzG3YT7vZdCnreSKQpm1AuEq/v6i855?= =?Windows-1252?Q?bH1bcSmjUFE3G8ouYQHEqEp9kMSPiP098lP3YKHxZFGMA1qLTSFrEtYB?= =?Windows-1252?Q?9+36zV5dTKeM6tiXuFL1hzmBcYSZNd2yMi69DgWGnVXn4jUrCzkdaeCY?= =?Windows-1252?Q?xvIXT8rqg56OdnRiQY5jngYPSwsserMR/pJAio5PCgENloKgN/RucQcd?= =?Windows-1252?Q?kh9oDyIDR6FU9X3tI2EVIhFx2TPQSHkhPdsVTjYUm/K3DzoRymPFY0ux?= =?Windows-1252?Q?el048hEROV7d/0B23ewYDnerER6EUOISkW6i/8o8M0ghiE/dQpr+/VBU?= =?Windows-1252?Q?PJBHHFX3JQtHGPLZ31Mw67NIU8vR1ZRc8a9AxSOLLx6NAz9Xs1aJHTPQ?= =?Windows-1252?Q?H+PLNWOl4oW+KOW2lUGoUTub/g3ReBUg3n5xu4yEwLAwYIW51hwHnH5h?= =?Windows-1252?Q?VFdpyop4SmAHBNh95zkwFplkslZRAi2x/iZ7JcGzDbZKNTzZaytWyn4E?= =?Windows-1252?Q?18cRP9l1kbTtlB6mpDkpjTtw7CD/yO83xGW5TLQXZr73nS/R68Gy9+2Q?= =?Windows-1252?Q?1A+THkQHoHXXjuP7lizCfAOLgyQdApmiUKEZo3y3T+wzqUSxYJtEgKJI?= =?Windows-1252?Q?GBqcg83F7ubKfbLHPL8npWDNATl4xPKm5By+34tmIpIivnYlZCyqwsTX?= =?Windows-1252?Q?GYr5bSKXbO5mVU3VfUYpJ7+zLD/gIW6tOrc?= X-Microsoft-Exchange-Diagnostics: 1;MWHPR15MB1198;6:7Azr3K1fGtMGAFnRwDKU1dxwEDZ8F8599tNuwQvjzzIOf64DpjlFg8NRWem8CP+t40QGrWgdqYviSYbUnlB9PLcBc19M6Eu8ACsuPIdGNvg8Dmsj8K97po9PtQdHVCfNL6t2wz5rAl1Brrc94XS+blmZ1GndZModr73V1KAhE1UkDIgr4BtTyF4CH0Y5qGRTfW5fAm8NKNE4SnqOa+y/RFaL0S31KwOrC9MfhT0vn0/LRuqF7lQyWfEByhcFT3sqDUT9Y0J8GuJ352+fWc2lkCIx4yeCfdjwCX9TFHlIzrPFxlVPSis8cpb6RNR8qA8kgjB3zO4inXRaWKY7QQZ9flI23LsH0JKH26sG6V7iiJJ3Jh+M+kqTefVWUVMqe3WaKYJeESYqP1nZXPFd+Lr1k87nMZo9/uocO6fUM9ACChc=;5:qzDrFTTamYCnMUU97uX8V4WxNSdvD9AS2b3+w6ccBWwIekiz2+zRbiaUTEjU0FGzJwm/2lch/kcQ8KVquRLtKi6pZd9jvaZ9ygJUNw2t2CIw2shv9UrM6g0Ym0dXiCGvCNBfnb0h0Rv7xhBz/FhO02ozty+huEU2zwibfmHcq3E=;24:xTVQASYb6lZXg/xXSjNQ34zbOtTZJO+wXwuyuQhrNwfE+gmDj1sGMzK6Q/PEUzlSfA7ZL5cV1XzBIftvsQhP7JxZcFKPpbavgSeY7kMDiSw= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;MWHPR15MB1198;7:r30ab3Vcw0IbHF1+iLa4P1VxtoiHH6ZuxqUpIDnu+RX1rspnxhrFIpIVn+/4a2oVs3LVxpjHMpi6lHr8a6lLs02NIUGwhEGGLEM08IgrDzB/DG2ZIqULFOklLxYFs7IrNxbPbnkFfYzDIxTVyB55wm5wndoKz0rRKXDGyEimsG6N3E4uiuQ7vx74vuYDJ1r9sqNqYk31xQU5xNpIBYwYH44oa3iW7Z2Q7FEpfIZeSmsQ2bW7CcKT9exyubGRBBkCNiEZTcWTvVYOWJHEh7GZoN8BCvuLTP8JAvYyF3ZvQibl+7M1vqmvjY6WlLpz2P1js0mKRb3uvLta/MFdt5YAUkh2uGPEjRP8ZsoKppxTiiD35gcXPU71jlDOOz2LNrv9JgTMmVa0iYzOVtTB5edH+4RglZFeuE0lSsJDLCF1DFkPSZOIVUOCphVvfUTGL0EM294Gxz5nypfkMPgbL7oRvg==;20:b8juxjvVJCmRk+0jgCtIZ8vmpgskN8cjLzuz9aNHUaccARyfSznUhqy3pwwFkFLbqf5/SVuG3n5xC+hiCLmPOJpMDK6GpVH6JOm8z8CFuvEfWtt8piR8NiRJvd1QeoflvS2dmF1P8U61P4hs++GKPXWQ/g1xFArd3B48RJrPdLs= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Jan 2017 02:47:27.6477 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR15MB1198 X-OriginatorOrg: fb.com X-Proofpoint-Spam-Reason: safe X-FB-Internal: Safe X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2017-01-17_01:,, signatures=0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 12/22/2016 02:59 AM, Paolo Valente wrote: > >> Il giorno 17 dic 2016, alle ore 01:12, Jens Axboe ha scritto: >> >> This adds a set of hooks that intercepts the blk-mq path of >> allocating/inserting/issuing/completing requests, allowing >> us to develop a scheduler within that framework. >> >> We reuse the existing elevator scheduler API on the registration >> side, but augment that with the scheduler flagging support for >> the blk-mq interfce, and with a separate set of ops hooks for MQ >> devices. >> >> Schedulers can opt in to using shadow requests. Shadow requests >> are internal requests that the scheduler uses for for the allocate >> and insert part, which are then mapped to a real driver request >> at dispatch time. This is needed to separate the device queue depth >> from the pool of requests that the scheduler has to work with. >> >> Signed-off-by: Jens Axboe >> > ... > >> diff --git a/block/blk-mq-sched.c b/block/blk-mq-sched.c >> new file mode 100644 >> index 000000000000..b7e1839d4785 >> --- /dev/null >> +++ b/block/blk-mq-sched.c > >> ... >> +static inline bool >> +blk_mq_sched_allow_merge(struct request_queue *q, struct request *rq, >> + struct bio *bio) >> +{ >> + struct elevator_queue *e = q->elevator; >> + >> + if (e && e->type->ops.mq.allow_merge) >> + return e->type->ops.mq.allow_merge(q, rq, bio); >> + >> + return true; >> +} >> + > > Something does not seem to add up here: > e->type->ops.mq.allow_merge may be called only in > blk_mq_sched_allow_merge, which, in its turn, may be called only in > blk_mq_attempt_merge, which, finally, may be called only in > blk_mq_merge_queue_io. Yet the latter may be called only if there is > no elevator (line 1399 and 1507 in blk-mq.c). > > Therefore, e->type->ops.mq.allow_merge can never be called, both if > there is and if there is not an elevator. Be patient if I'm missing > something huge, but I thought it was worth reporting this. I went through the current branch, and it seems mostly fine. There was a double call to allow_merge() that I killed in the plug path, and one set missing in blk_mq_sched_try_merge(). The rest looks OK. -- Jens Axboe