From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa4.hgst.iphmx.com ([216.71.154.42]:11197 "EHLO esa4.hgst.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751101AbdCQRkR (ORCPT ); Fri, 17 Mar 2017 13:40:17 -0400 From: Bart Van Assche To: "linux-kernel@vger.kernel.org" , "hch@infradead.org" , "linux-block@vger.kernel.org" , "tom.leiming@gmail.com" , "axboe@fb.com" CC: "yizhan@redhat.com" Subject: Re: [PATCH v1 2/3] blk-mq: comment on races related with timeout handler Date: Fri, 17 Mar 2017 17:39:06 +0000 Message-ID: <1489772332.2826.6.camel@sandisk.com> References: <20170317095711.5819-1-tom.leiming@gmail.com> <20170317095711.5819-3-tom.leiming@gmail.com> In-Reply-To: <20170317095711.5819-3-tom.leiming@gmail.com> Content-Type: text/plain; charset="iso-8859-1" MIME-Version: 1.0 Sender: linux-block-owner@vger.kernel.org List-Id: linux-block@vger.kernel.org On Fri, 2017-03-17 at 17:57 +0800, Ming Lei wrote: > +/* > + * When we reach here because queue is busy, REQ_ATOM_COMPLETE > + * flag isn't set yet, so there may be race with timeout hanlder, > + * but given rq->deadline is just set in .queue_rq() under > + * this sitation, the race won't be possible in reality because > + * rq->timeout should be set as big enough to cover the window > + * between blk_mq_start_request() called from .queue_rq() and > + * clearing REQ_ATOM_STARTED here. > + */ > static void __blk_mq_requeue_request(struct request *rq) > { > struct request_queue *q =3D rq->q; > @@ -700,6 +709,19 @@ static void blk_mq_check_expired(struct blk_mq_hw_ct= x *hctx, > if (!test_bit(REQ_ATOM_STARTED, &rq->atomic_flags)) > return; > =20 > + /* > + * The rq being checked may have been freed and reallocated > + * out already here, we avoid this race by checking rq->deadline > + * and REQ_ATOM_COMPLETE flag together: > + * > + * - if rq->deadline is observed as new value because of > + * reusing, the rq won't be timed out because of timing. > + * - if rq->deadline is observed as previous value, > + * REQ_ATOM_COMPLETE flag won't be cleared in reuse path > + * because we put a barrier between setting rq->deadline > + * and clearing the flag in blk_mq_start_request(), so > + * this rq won't be timed out too. > + */ > if (time_after_eq(jiffies, rq->deadline)) { > if (!blk_mark_rq_complete(rq)) > blk_mq_rq_timed_out(rq, reserved); Since this explanation applies to the same race addressed by patch 1/3, please consider squashing this patch into patch 1/3. Thanks, Bart.= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751248AbdCQRkU (ORCPT ); Fri, 17 Mar 2017 13:40:20 -0400 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:11197 "EHLO esa4.hgst.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751101AbdCQRkR (ORCPT ); Fri, 17 Mar 2017 13:40:17 -0400 X-IronPort-AV: E=Sophos;i="5.36,177,1486396800"; d="scan'208";a="4074895" Authentication-Results: spf=pass (sender IP is 74.221.232.54) smtp.mailfrom=sandisk.com; fb.com; dkim=none (message not signed) header.d=none;fb.com; dmarc=bestguesspass action=none header.from=sandisk.com; X-AuditID: ac1c2133-9afff7000000c960-00-58cc1f3bd45f From: Bart Van Assche To: "linux-kernel@vger.kernel.org" , "hch@infradead.org" , "linux-block@vger.kernel.org" , "tom.leiming@gmail.com" , "axboe@fb.com" CC: "yizhan@redhat.com" Subject: Re: [PATCH v1 2/3] blk-mq: comment on races related with timeout handler Thread-Topic: [PATCH v1 2/3] blk-mq: comment on races related with timeout handler Thread-Index: AQHSn0VfEUf9p5mWI0ScFaqZY4Un8A== Date: Fri, 17 Mar 2017 17:39:06 +0000 Message-ID: <1489772332.2826.6.camel@sandisk.com> References: <20170317095711.5819-1-tom.leiming@gmail.com> <20170317095711.5819-3-tom.leiming@gmail.com> In-Reply-To: <20170317095711.5819-3-tom.leiming@gmail.com> Accept-Language: en-US, nl-NL Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [172.28.1.254] Content-Type: text/plain; charset="iso-8859-1" Content-ID: <0918B02F4D77984F80520817F627EC54@sandisk.com> MIME-Version: 1.0 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrGIsWRmVeSWpSXmKPExsWyRobxn66N/JkIgz+z9S3+7znGZnF6wiIm i723tC0u75rDZvH+x3V2iy1X7rI5sHlMbH7H7rFz1l12j80rtDze77vK5vF5k1wAaxSXTUpq TmZZapG+XQJXxucZN5gL+ngrlvRPZW1gXMDVxcjJISFgInFu0U12EFtIYAmTxO/v3F2MXED2 MUaJjS93sYEk2ASMJGZP2MMCkhAR+MsoMbn7BjNIgllAW6L11gwWEFtYIFji59QzrCC2iECI xK1nS1ggbD2JF8+3gNksAqoS/esWgdXwChhK7Dx1mhlic5bEii+LmUBsTgEriYlHZ4PZjAKy EountzBB7BKXuPVkPhPE1QISS/acZ4awRSVePv7HCmErSHxe8Y8Nol5P4sbUKVC2lcTNTWvg bl628DUzxA2CEidnPmGZwCg2C8mKWUjaZyFpn4WkfRaS9gWMrKsYxYoTk4tz01MLDE30ihPz UjKLs/WS83M3MYJjU9F4B+O/De6HGAU4GJV4eG88OR0hxJpYVlyZe4hRgoNZSYR3t+CZCCHe lMTKqtSi/Pii0pzU4kOM0hwsSuK8MbOnRggJpCeWpGanphakFsFkmTg4pRoYg+YYnfwfXFsz J+uTS3liDsuhneuP5O7XqBA9XdCe2Lr/xySrT68Wn5Fezvdg4/NG+5cR9Ro1hz/8fbFejq2n M/7IJpakan2fJ9piVT1C6/2fXNeOvf4w7jUTp1xigW+kvMLKuJ4V/0SuHGkI3Wm6ff/bef1f BMpfXN0medW5cMK0l4JdatarlFiKMxINtZiLihMBYAMrcckCAAA= X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:74.221.232.54;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10019020)(6009001)(39450400003)(39410400002)(39850400002)(39860400002)(39840400002)(2980300002)(438002)(199003)(24454002)(189002)(377424004)(9170700003)(54356999)(103116003)(305945005)(50986999)(4326008)(2950100002)(8746002)(47776003)(2900100001)(76176999)(38730400002)(39060400002)(6246003)(33646002)(5660300001)(229853002)(106466001)(356003)(2201001)(3846002)(81166006)(189998001)(8676002)(7736002)(6116002)(102836003)(23756003)(36756003)(50466002)(5250100002)(53936002)(2906002)(8936002)(86362001)(2501003);DIR:OUT;SFP:1102;SCL:1;SRVR:CO2PR04MB828;H:sacsmgep14.sandisk.com;FPR:;SPF:Pass;MLV:ovrnspm;A:1;MX:1;PTR:InfoDomainNonexistent;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BN3NAM04FT006;1:SOsX1hnLPNVPjmIqF7w/uxMp3NzX8M3rd2DN0itwKsTtO6QudZ340HnGpjfVLvsdfMg9036SnndTkqE5oMsFmAeoRdQTPddnNEjwNNRXsDzH4HDe26Uf2DZBDhrZdQ0QwCdZ7OyEQ2CQYUgYXsWdbgdotlaXBnDwah3KKBNuJq0wTMxmG5ascxqRtxytSIaaOI6H2AfQpHh2Y5L8IWidFmjWisXBCGwglFVEncb6EuOiJdiETfy4ZZGQswGB/V2Z2m6wManKhokdreelCBdOCV1zgYlDS1aPwW4qw3KoAZu/Gtii7wkbVPpCY8enqwpw27bgiUrn/talpzJV7C6xM0NJ8xThUzBAl0I08N5FQ305/Rb5eaR3DeG7UqRUyw2Px1K8JeAOqj7nWv15VXkUSNbn284S63BKBU0A+yjqAmy2gq3bU5EOkYBhZprEBV5yuA+CmBLtUkTBM81Dkyfia+8zKTFO4fWQHGip0ysQia0Dw1Z0YDGINmipezMGuuqCstPwqLBw2h2P4M9q5piObV+Ek7XhSPj/bZq2pRZNnmCDRvgqwnSA9W3bBEDszkqL X-MS-Office365-Filtering-Correlation-Id: ee7c22ee-b528-4d54-d7a9-08d46d5c849a X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(8251501002);SRVR:CO2PR04MB828; X-Microsoft-Exchange-Diagnostics: 1;CO2PR04MB828;3:9Q+cqibpjZGgOZo4RAFqFD24v8doQc9G5QGzb38F+oQdZerVMWuGb47PukqWqEevizddyjCFf45n3XXSvvTeO04xGwaiXh5mUE2dOYs6xjSoEJjVItx9kXn11CvyOQVnN8RT5Xqxss2ejR/Q2ZSWdbJmdti3X2x7rtsPD6Pky82edXRoQQT0cLFoSV5eXg64PYBeR2rXzZyTueNww1x6ysE67rkPSg1/v32cbNaRTPkoHaTyml5fvCzzmreW8UpjV+4HvnBjC58RqpvzHdLiOAwMZesXo1PeBku28aDpZHkH7diQ6yduywCuYgKDVvGD7mfEViZeSXCsUnTWxLuBOoZiyBl3BaC30qwDlWBaPzGC/tKVu8sKCJ4B7w6aAtKbJtqUnBmdv6x/jhxzsy758w==;25:dj0gKwAnxM2YOkOueH+tWZgfKhsimm2svsavRNbLeYEzo7jAea8N2OSLHda/Ae7+o62XKcyAJZfLXDPM3klHAA/QaiMzzE0E30QkN0RIWlcszqLAiLKvFTenYoeVMePWGBmMYPHP1DOmIGVZLydqZ5CNFLhIM8CkmlYppduiPM6ttam5kwpWKfhO3nmBlbTDYJ9QHSFF5bzBK86x3oiB5mngq2McbaddJnclzXJAP50Y63BRd8bUKnWuWhP6UGgmDTMprKF/hLzPMsLrOLuI0+DkPMtVBAyo6YAseZ2ljiALY60VXdFF/gpeE4n4DnFQ2VFqJRB5u+q4vcDs391v3IRnoLwqy7kpVASKoiTi9GUEcflk/OfzzMIUjjIlgwMErIbJQS0JAljqfNVQqwDgHx0fb8b3MalrUBNd1Q9fM4THIQ9MCpsTzOSkHV6M6G873qxryqE9Sr3ZHEEZPWNBjg== X-Microsoft-Exchange-Diagnostics: 1;CO2PR04MB828;31:zHn499gVYFWB2jbaZNff7saI4p0jB1klacEr0qyw8SC0EAqx2NTfPxkuJGD1+Qs8zEbB4O44lqtyMS7j3+y7bQrqtCNl8yoqgcbLp1eXAN3I8nGIBxJPoyo5gMKN0wA3vBiuON3vmyE1lyS3/MA/NiqYMSFtpPSdsxkPh8tGYxfPVYMfNU4K919kulVPMWixv5feaWOtonO04QrN3+/Uifih5W8zclxixIBptQj+c6nBIBziYmEeXW3UYaixji7UWR+EHfi2R5EaWtmeKYgEsJ/ewidJe7ocO1hPoJsT4Qs=;20:rhHyKWvURgthILunjfkz6TmxCqjkLKSISWBReE69KX2xr7bK27/qS4nAUJCIyaOwxmgwW098Nzifn08Ece1ZoqI16lDkDEWsjEP+MuyRHS9N3RSYoA48vIwtfM0t6y+RzXqBdk6Rzt9b5d/DK7/XZHaIztxy2Ay9WwvmzuPLKNl77opZnWzEPwXJHOSZCn1WQ3KIPInItXEfQMyaaYye4eJDcmxaNIKjGOIEjRmIXyrGV0HcXpiJ105Fx5KYlEN1QXMuH3j96cACXKIMXsINK4zyqz2YvEbg4X0b63uIrnSM4g9Uo3JkUmjjcrhMsb9xGE0A/Z5CzeL1GCxcW+cqzpU808wkQ2FyQAljOqsyhOtYsBbXIUjGN/3pEpBbW6s7R0nrhSMQTn/slzzXyvvPyLpM4hIPaEFjFu9jcLUoGFJNKGkoewDYcW3g7CfHS6b9WG2Iegeq8wQfJW0y1oYhGRfPD74MrqH9KUNaYU9n+Y8bUEJBpS7sV/FDOgX1Zyqf WDCIPOUTBOUND: EOP-TRUE 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)(13024025)(13016025)(5005006)(13023025)(13018025)(10201501046)(3002001)(6055026)(6041248)(20161123558025)(20161123562025)(20161123560025)(20161123564025)(20161123555025)(6072148);SRVR:CO2PR04MB828;BCL:0;PCL:0;RULEID:;SRVR:CO2PR04MB828; X-Microsoft-Exchange-Diagnostics: 1;CO2PR04MB828;4:MfhFh126J+3YErCCYFFZQwkuQTuh9jTSIdPRvscmI3NaQvYQDWTRa4kHy8NMOtf6uO3RMsGmQuAVqCMJ5eS94qWVQ10lSq258rJo9cpR2LSaJ/mDoT1Y7jKRDEKPZ8hx4wVTSTvA2E9yNdwMvvf/B+Yyn3GnwYwJxt+y5t/ozBSUn4fG0PwAFzRcdMT18RMIb8bh8KYt74zPWs143sy7R7b6ur81ldo18wVWlM/TQdNf6DFDYfMYtpCDc8AtbSsotpy0S5Wi9yk7M/prT2VwmGgyPbqM6KYxANQ+ncpIKegv826j7Vz0X9Tb87bU7y32Z6/eYPG3TKMI+789DHB2i38QFW0/aMjXKOuPYmwrGPdF/q8oy4/QeHtWMbAdq443VBnGO4IUOa7zthBtuW/c1fr6EI+KcXpV0p5TGrJHawATHOaI/T9faj3fS4DCWBE9DO/IA9pOFsLems0aWQ2sLTPxIW36IEefuZnycwmg4hxmDFeqdHGSE+6aD0oShCkgFH/WaEqIDS2tPgqO55V6fOYnmeJXw76RZd/9qxhHzvmNVBBCI2XKWVbg33p7/Pnk7Hz46o2LP0NJoaL4Dk8qgQSJ39Eerq5vNNSkj+FKIdBM82nl9mEP1KdGuSKRUHhxwzBoJwgUqmpB9H5hifAYqgrvcTefUg5zG36GbTEYxzyUUoAgoXXba/Pht98LzCkNVchczHLc6hkxrk8H2BzEaw== X-Forefront-PRVS: 0249EFCB0B X-Microsoft-Exchange-Diagnostics: =?iso-8859-1?Q?1;CO2PR04MB828;23:6UnY8q+diAJuL4/ZSPjvjQYLXDzJ6wUigKoiKi9B?= =?iso-8859-1?Q?rQeEg/GfK0b6jBn4bnBEpdzYC9lHRgF2dzqya9AWiT3/AbDT39bwGM570m?= =?iso-8859-1?Q?yY8ZiKIot4VuJEDDFD7/eJ2oIwpW+jBsbBXgmUih2RdiDyLd1k4RjNTdkb?= =?iso-8859-1?Q?QP0NvTFptkDVM2PjwZrTjjgL969djM844mOM2ONyt7Vfk8KL+PRUT0YkGC?= =?iso-8859-1?Q?yuU9F/cfuUGBusuW/qZdBmVjt0ZG6kMPtMvQZlSfYkt3sTckfoEvoZpihd?= =?iso-8859-1?Q?7BsK/7FbOb5SEoEgrZpJPGCrXwNh91qg4mrLJFSR5hkGbIpTG9LCnh/siy?= =?iso-8859-1?Q?w85F13nbN4PprcYtQbcgK92D6y2QZVwyLBj9g2R624fawNx3qRqeclz9nW?= =?iso-8859-1?Q?QHVYr29hrKVd0/lyMp8L1jXUYQBS8SjLufmtkdYU7EP9rE/w0I2cokjUh4?= =?iso-8859-1?Q?+Exeme2FRZ6vqtXmhqLUjjMObb2JgDbaPy1ciQN+xjSM2CXpYs5iNkrGjh?= =?iso-8859-1?Q?oCVNwhSB1wObTRGpKlQbjAfHlZ4GsQ177EWQ/lK0q40J+N/j4qdRLxFT21?= =?iso-8859-1?Q?P6Nzj2rQgscAFU3RR7xs6x7jO0Wax2BCIoZL6HNCGFZrI6KurIN1qURr+/?= =?iso-8859-1?Q?NpGOvmOm6bnMiWbWfWjDxVcnBGYKQ8+LajFfz/unXCNQAUs5ExdWBDUNav?= =?iso-8859-1?Q?c0ynEL2wjkefMsBEXuo3wCVCfCmmYN/YUyrQXdbeTRZirxI8AsCTeV3TN4?= =?iso-8859-1?Q?ujPvgjAwXSsomlE/sfHN7T9thIBInDpbCSsJMSSSC71QCIQCn+tWLqvMh1?= =?iso-8859-1?Q?U/DM5yHAYoEYbmFLvd7V9BNlGm5oKw/pGpf+VYlkf7kn7IlMUfB5antBn0?= =?iso-8859-1?Q?9wSmhmf5hkQa1TvdC7wA3oA1A3857acp3TTQMOTQws6ytLH7VLxGIP8GP5?= =?iso-8859-1?Q?hqB/f6jAVnbcbY7xl6t/iJxcPZR3sjHTujrOfUZnaqOwrwmFtEFK6g/J0/?= =?iso-8859-1?Q?XNkhYcEpxRMlp6JEwjkF5gtUnMm1ekFJjcfb2Nu2SUL6G932f0pFrvhiAG?= =?iso-8859-1?Q?A/dIRdIuatOXPF1WU9bDaaESYEa1maZFRDizagUWPpqPz3B/jlU2rLXxGJ?= =?iso-8859-1?Q?PLNsFNjTrUU/VhJruqU3bChO6VgnuoX5nxfVqw8rerf7osLv3C4ZwZjP8D?= =?iso-8859-1?Q?/LXqB4iFH6nb6jCIR387SJDHHaNL2VzZmEaB5oCB1qNH+yft1Mx08=3D?= X-Microsoft-Exchange-Diagnostics: 1;CO2PR04MB828;6:hoXM8thI5yz+XWSgX+2bK+3MCOWUxsQkbGlrLjenNEqau7kxEmRead06rRj4IYEkAeMqV2I6axGQf+4EHLGhOeqEsNHEBQf/tf0MKcCmktSlu5DWE2Rr1wn37lu71Ja4/3M7uS4gaLmIMo1mANbL8J2cgOUF042jIfIF+ClAk78K8ThYc6WHsgzNoEis9uFIbPDmeaqR+dKqwuOsBOQbG6ZX0hHtXtVKkVRNqgqKDJS0aMGtUc2hIqaBzj8S5q4kavxcWEaFZW6DxHHr+tLYqFZj+bxfuLkkIQQTjojfotcRwJ7jwhiiTTyOD71L6r9FvshFQlOblhM5LZfzva8np94jiohrv5z3Un+Sx8+rB9+1pfD3fXn+StaPCGJjxv9Aj+zXzmmLT2ULouS8OCCKIpkNUVLAm13SwguWWbQT4UA=;5:JMJTzVuRwWz0qkpi0bKOCHb3BLP36Yq++QukomyesqkxzlfjlKOsgj3z11+MsQPdRoBJsdaX0aLuqbx03/Dh5N4G9Wi3Kdy5Z5+uDaef45WLnFESWOSWSmhPDKAco2xVRhmZPy+rD6R9Ki2fpJwZ7w==;24:kNnMnX7zDdEYkloiBCxLRcqMUOQmX9d5yYO9MmFuEXvxUN6+qkwqtBIUBrRIM6MiRmoQ94usJDI1KUUrAFLR8aFOkGxvRTtFBfguaiYwVsE= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;CO2PR04MB828;7:zrLCDndv9ytVUpc+lQy9sCUEZDYHtZRnCci+s58MllhXsqC2QZxyiq8COyrlx7bbHdKJzcdYRQk/J/HdsUvdxjlea2dhu1py0w+NBetL0TuN0eOYmm4PXA/GUAybxo0KJ4qv6kTKLuvNw6m8KH0qk2mWimpI/A5AhJjhQGT4LTtmDBzRUqZQLzVyz77PfOW0VuFtURaqJvnSp7nVDZ1RbJzH8LHYC2OCFS2xR88tzk9Hh/p89N0P8FEU4BMlSmidW8wSQh1e5JFrLpliiHFO6Wh15VId2qiyPfrruTEcVfPXito3vpB8a50X7WoF6HN5udUoI1fEGOYreDJlxSK+gg==;20:k9f8fS2U/FcRNJ9goW8Nr1ZyfI1O5bK9vZbbZHhSkrk2YxHLUKwd2/9T5oIsvgvSIGWS7DdANwGCemTfwRyD1LF1t2CbkRfMNo3lnIBY01kaN7OAnWtD6xhA1pk7s7DdPsNwbqrWGklply91RbKdv2QP8BoWDBo8uy8Pp0570+E= X-OriginatorOrg: sandisk.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Mar 2017 17:39:08.9303 (UTC) X-MS-Exchange-CrossTenant-Id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=b61c8803-16f3-4c35-9b17-6f65f441df86;Ip=[74.221.232.54];Helo=[sacsmgep14.sandisk.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO2PR04MB828 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by mail.home.local id v2HHfI5M004849 On Fri, 2017-03-17 at 17:57 +0800, Ming Lei wrote: > +/* > + * When we reach here because queue is busy, REQ_ATOM_COMPLETE > + * flag isn't set yet, so there may be race with timeout hanlder, > + * but given rq->deadline is just set in .queue_rq() under > + * this sitation, the race won't be possible in reality because > + * rq->timeout should be set as big enough to cover the window > + * between blk_mq_start_request() called from .queue_rq() and > + * clearing REQ_ATOM_STARTED here. > + */ > static void __blk_mq_requeue_request(struct request *rq) > { > struct request_queue *q = rq->q; > @@ -700,6 +709,19 @@ static void blk_mq_check_expired(struct blk_mq_hw_ctx *hctx, > if (!test_bit(REQ_ATOM_STARTED, &rq->atomic_flags)) > return; > > + /* > + * The rq being checked may have been freed and reallocated > + * out already here, we avoid this race by checking rq->deadline > + * and REQ_ATOM_COMPLETE flag together: > + * > + * - if rq->deadline is observed as new value because of > + * reusing, the rq won't be timed out because of timing. > + * - if rq->deadline is observed as previous value, > + * REQ_ATOM_COMPLETE flag won't be cleared in reuse path > + * because we put a barrier between setting rq->deadline > + * and clearing the flag in blk_mq_start_request(), so > + * this rq won't be timed out too. > + */ > if (time_after_eq(jiffies, rq->deadline)) { > if (!blk_mark_rq_complete(rq)) > blk_mq_rq_timed_out(rq, reserved); Since this explanation applies to the same race addressed by patch 1/3, please consider squashing this patch into patch 1/3. Thanks, Bart.