From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754320AbdEIQcv (ORCPT ); Tue, 9 May 2017 12:32:51 -0400 Received: from mx0a-00082601.pphosted.com ([67.231.145.42]:55007 "EHLO mx0a-00082601.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753322AbdEIQcu (ORCPT ); Tue, 9 May 2017 12:32:50 -0400 Authentication-Results: vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=none action=none header.from=fb.com; Subject: Re: get/put_cpu() usage in block/blk-mq.c To: Mike Galbraith References: <1494310029.20252.44.camel@gmx.de> <1494342256.4440.3.camel@gmx.de> <842b9fc5-5a8e-d147-0b14-3c9f9540336d@fb.com> <1494344459.4440.17.camel@gmx.de> <19592821-f779-176e-ecb5-a98e846824d6@fb.com> <1494347203.4440.24.camel@gmx.de> CC: LKML From: Jens Axboe Message-ID: <1c0ec340-675f-152f-aa4f-37b6d0c0734e@fb.com> Date: Tue, 9 May 2017 10:32:38 -0600 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 MIME-Version: 1.0 In-Reply-To: <1494347203.4440.24.camel@gmx.de> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-Originating-IP: [216.160.245.98] X-ClientProxiedBy: CY4PR0101CA0018.prod.exchangelabs.com (10.171.218.31) To CY4PR15MB1191.namprd15.prod.outlook.com (10.172.177.13) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 5168fa4f-49fc-4aef-2319-08d496f90500 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(201703131423075)(201703031133081);SRVR:CY4PR15MB1191; X-Microsoft-Exchange-Diagnostics: 1;CY4PR15MB1191;3:LvM34tW5vlZf2i3wbu+8rskGqqrXbrCAHzRnRXIQqwvIJ5HzsjEIcKBeO+N2Cs6DvpxQQmmRpksJ2aYlEdzie2iGhdM+Y7LZyjOaYgW1l8or77InZX7H7X5QiQIqxNIBLeElZ8kEe4qaj50eAzvF4MumLXVPsIX+HIJNzszPpiSefxJ8IG8YkHVZ75IDKJ1dXMWE34QnKlSkLNh3ntUHuwfJXNrW0v948h5mPtSJ5OiApX925i9Pn1a9QpdqmRgu0d2brdZGJD06TBSQmo0EQEsAsNWgOywF4uwembWs+6ZPmZjP+ZMIqAoYAxDU+YYnh7dhXwPQTIvolD3AAY0RXQ==;25:StOdD0G20rDO1jMzBIeiuuYz1rrM2FK8J8kULZTDcR+INkl2CiiS8jgC0d0mnOF2PnZTwY9bYdIKBdmAzvQA6Yo09KaPnssH9N+KLNKGHBmqHE0QnsGTCZqPYVgxmjeSxRmmRlkdmSXYW7kih8ox8KjJUt2ozekOvVBPLlNplbL0ke1h/jvpWkiR6DziukfsbbuTaOpxKg+NwSklqvKnOE5jK1ifBfH9PLw2RLiXfu1sbtTN0An60wQMs75UzYrwB1CCmAgnfiDisTfaol+i6Jb/jDmfEnDNNdVxqCBAIqPORSNpnuUr+ooElnEIkNbyZ783WsPtyxSjdkSALZU3ckJOrrj64oFV4pqY/nBtSfP9qHHuD5TMKd4aavKef/ZkmNqOXZOhWHC/See8sLePF/s2rKScxKI9l2I6ypuur+K2IqaTaO6Jv0VYpJCM2nI44tR2i4NrIKW3H01dQ0Ky5pSfkS3ThOuAPX9Wos1+TKE= X-Microsoft-Exchange-Diagnostics: 1;CY4PR15MB1191;31:WTXb+qSys+89lM6TTCDIdke+utGxYkcaVwjCKxIGKcOTBkaEW/l3+GRX1DpH8g73ccDmBmzHn3cAUpFAWX2n3J7Vw4EbIdDCDbwRRxJEa8A37w6MTqfFgFAKeY5HjEWLl+gwuSfd0Zy6CUuPyDztX+22yk1dQ7b5JgJ3gh5FNnCjj146G9uTzgOhvx/umFjXGX8x0kUPBRyIQxZ4iTUG+eefTnZX/V0fZpxPWQPRXkN3DAUuPUdwom11qCOZI+LXeLjlFOYrl2sGuNvZDgMD3v6HYqjQXZcJLIcGPpIOODU=;20:4uEmlgcbgy206hRk6TbCRDHkozBDWJPyv67nm6IZc4/E1AD2TKXgXmPSbcDWBNUoYYMm7hevvKUevrbHgoiLaoBRP2IwLEZNd5rumDlEDb/sbnSw/BOVhBSMaXcrmJvCZeqr8+823O1Rig0K7LF3kN18DJTFkzPxe1MHlCKtvWNwxU53pjj6SGu6xp+TZBnEZCKpbhGuDSi21mEqlq/VY2ca28RAkLbUtBAZeQ2oZSpqlMbvyHlyXf7pvFip6IdkNmgM3UqJ0lSCP5ivuyIm7qDcGmlz/qis003GyYdULeNWnfK1DbCbylieYXuPR+zoQUU1d0dafeoMZ6Q63CmsXZdgSC3TvnoLlKCX2SS5qEvylczzS1sdsSoXL5cjKK78NfB5jDqV7nu742dEzJ4z6LpKtj4islJiJc1Rvm1TcvDcGtd6Z5HzJAxjfPMoI5xogfsr6bLfnAH60S24/674Wf5bGorYOsQJGWSdhVHcl2nX3j7rs95O900Qr17G05zy X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040450)(601004)(2401047)(5005006)(8121501046)(93006095)(93001095)(3002001)(10201501046)(6041248)(20161123558100)(20161123562025)(20161123560025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(20161123555025)(6072148);SRVR:CY4PR15MB1191;BCL:0;PCL:0;RULEID:;SRVR:CY4PR15MB1191; X-Microsoft-Exchange-Diagnostics: 1;CY4PR15MB1191;4:x9NAhSjpzTQphJ9TfvrZdeC851CO4dVQu9YuFfCH6Jntx6c/4dUKCFCGFHSL4bA43s6rzIgEGZfQWT/Z7sVJRH6hvAH5w34bkpuIwe/5oE3wr8VQAyAbjJjh4h9xsBDC9Yhy7mgFABfFe9R7+E0m6Yv7JHy5nXfqpa+VPa5phmv2b6s3DqtZDfcuT1yxlnpThQzBOxzDlNnNo9H5C+fw9+u0pbYGstQ0ntrHOBITVcZ95aZ3JQp972NNUyDEZqDrVN1E1oLNkWJK8BHku/PI8O+qBeTBlzXM27lvvfw+Rb8SdfBt7JxJHMI9NACrJepmMiKpf+Gc7fS/Foc4p6PCGrAO3KDwg2ISyNh+Irqk53EHVQkAWCO4FzYVhvM48HSIuGx34+zxudj+HZF8VEj1hVpKsmHwgLQsB2iGu/dbwc6r3TlS2T3s15fH15IZg6qNMCiOgrthuYiwy5xuCZQAgibEC6cCenVeVoY9TvGpc0MP+PIoDSVKSTA1iDCzcgao+8ynnYhHxuHuIHfvyL8wB+MMJVsIRIgzw8drmSBHAZpWOPtgva/yAG8iViE0RshQJFs1wvIVcWce4r/FPa7XM3aNmtg4BNHpNLjC8cfkjCBTEL7knDIkT9t0m8tYlR1I5FhonbkuYxKIPswXTp6WOnA+U0v55qMqb7qfrGj1brMmT+59bbEnNh/ARYGBkf5iNJhjCv6s8ZhMpLcml8RJeGuetHw3eQt9RHywUtW9hZaYZAC+KAy5xrdaZInHWOwQFDeMKqldooVujTZUNh0O2NcuXwwAKMxMihbWtlp4MAk= X-Forefront-PRVS: 0302D4F392 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(6049001)(39410400002)(39850400002)(39450400003)(39400400002)(39840400002)(24454002)(52314003)(377424004)(377454003)(6116002)(36756003)(31696002)(8676002)(65956001)(7736002)(66066001)(81166006)(38730400002)(478600001)(305945005)(2906002)(86362001)(83506001)(53546009)(4326008)(25786009)(117156002)(5660300001)(4001350100001)(229853002)(53936002)(189998001)(47776003)(230700001)(90366009)(76176999)(110136004)(6246003)(50986999)(54356999)(50466002)(8666007)(42186005)(6666003)(6916009)(2950100002)(77096006)(23676002)(93886004)(6486002)(33646002)(3846002);DIR:OUT;SFP:1102;SCL:1;SRVR:CY4PR15MB1191;H:[192.168.1.160];FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtDWTRQUjE1TUIxMTkxOzIzOkphamtuTGFJUk1XYXdjNktxMmE3SU5scWZR?= =?utf-8?B?S0thY1dsbWNOZHNGL0MwQUErS1FQWkRNR2dscXlMTnhPYTlqZTZvcWFDOThZ?= =?utf-8?B?ZmVkYkR6cXI0SGQrOHdkdlNQQUNYbjNmTFVZOGJwenhOT0NoSmNtcjBzcWRv?= =?utf-8?B?bFFsb0ZVMWkvL0ptdTBlQkREa21yLzBWQVRCUTEybEdqb202R0dmd0pnbGtV?= =?utf-8?B?K2oramtrNjhrQVFmeVJvU2NVYWhoL3ptVm9hS0c3ajMzWlp0N2lKZ1NVMVo5?= =?utf-8?B?SW81ZW9MRGp5dUt4dmhjblcyb2pyRlgrTmVQdlJncE5HODBTWGRHMU5LZER4?= =?utf-8?B?M1k1Ymt4YVE0UmlsSUg1TlRwZXd5U3JmR29jMXJuTU1MTzV6L09HaHJFT2FY?= =?utf-8?B?NU1hV0oxMmRJNXJFUTc1SEVwSHRPWFVlekdhY2VmRzNhazVLaDlPUGpRL2Ry?= =?utf-8?B?VEx2MmpiODNIUVlWTTJtTkdjRE5leDFkQ05wOXh0blBPalY4OXVLUnBUOXhQ?= =?utf-8?B?T1pCS0QyQUZGSlo1c3FEVGJlUDRmTEl3bEZINXpSL3pvUnZ0dDYzRWJ6d1JC?= =?utf-8?B?V0FqSVJJOXd4OWpvRUVva29DYmRoQ2ozYzJIU1NlT0tsd0tjbUFVSS9NanRS?= =?utf-8?B?NTFydHkwR2wyRERXN2VUcUZiM3cydk5yY2p3ZlNsTlViUVRMZkdWdXJwUFBL?= =?utf-8?B?VENVajR4RHd5OWppelZ3aU9rVy9Ga09sVytMdEttWkVMM0VrdFo1ODlXc3N0?= =?utf-8?B?emVlWmFNYmJ2ODBhNitieklBNEpaUC8vRzRQVmJzaFp4dHROVVdqZ0ZKcktC?= =?utf-8?B?cGx0aGN4cDBkN2VnS0VLcm13QTgycW56UGs5aUU0OTdKYkE4dWVpM1JHbTQy?= =?utf-8?B?V1NkUTNoY1BFcm9tREFTd2JmNUl5L25kWTBvWXdLdnVia3dUVmhhUk5ybEV6?= =?utf-8?B?aDl6Ky9LUGN4ZVdDUWlzODFOelkxQTdqNWorZHBnRFZLSzV5SnRRVVk2S0Fa?= =?utf-8?B?elgva0hnTFRUY3ViRXRpTWpsYnNDYjgzemN1a1kwamZBTHRvNFlhc2x0YVZO?= =?utf-8?B?dG00T0FTQll5VytHczMrQWoyVnBESTN4NEdma0dqYW1kR3E5bDd1Wi8vMzhw?= =?utf-8?B?cS9zZG9CTnhaN3E5cUJJOHZIWTRzVHJSTlZGWHY1TGF4cVZGZlg5NlJpNVor?= =?utf-8?B?eHhuV3VnMXpRM243bzRlS0IxQlViVEdiSEV3bVd3cFpIL0xNcHlJcDl1dWFV?= =?utf-8?B?S2ZnWmc4ZmFiWnlXNDlMRVREUytYT0hBOHZ2NHlkU1djbG5FN1g2anlaRDRM?= =?utf-8?B?K29PT2VlQTM1Z3d2djRDbzFrY2liR0gwNnVaT2tBVCt0TVhsVHhjNm80SlJI?= =?utf-8?B?dGNjOGcvWk1JWFdkeDd5TTZaa2F0c0ttYjh1RnUzWm5HMmgyVDRlQnJqenhi?= =?utf-8?B?M1hwZXpmZGVHcWp4NmJnQkh4VDZNWUozOXZiVzRXdjRsbW1jMkZBaTdkWm1s?= =?utf-8?B?TCt3ZHRHOGVubHZxWEN3Q3Q3Q3I4TG9iZVBIc0dIa3Y1RU1RbTJSdlRYSGdu?= =?utf-8?B?K1A1eUlPWHlIWVdJeXFhdUovT1I4dEdTUVJMeEc1K3lEUURKNENxbnUweEZC?= =?utf-8?B?Um9Fekwyak5VTHhyWDlvZlVrL0kwRlp2ODFkREQ1ajg5cVFTUXIyNUNQdHNl?= =?utf-8?B?UjVVeWlUZGh3UlpnQmFSaDRHc2g0QmQxanFzZGx1K2N5Vy9JNDk2TTQxQmpp?= =?utf-8?B?cWE2RGFiVFpBOHZyQ2lEQk9ycndtNitYODNVMm03NDV0dUs0QkkrRlB0Tncr?= =?utf-8?B?bFFGcVA5bHJWcmhqQ3ZFSHVwZ253czRVUWNodjl6b2dPVUE9PQ==?= X-Microsoft-Exchange-Diagnostics: 1;CY4PR15MB1191;6:Z3AOvDXt1FcGqsZPMa+V+85mXw3UF83Bve/lEGW27926nBtZCjlPg6yXAZyRe1QFiZdTSFySViNenIqNqPjEFdIm/9G7KGhoTRhvNFphwIttRUs+nxpfwnN8UuANAdGhm1O17xeHUGoyRQchlRTSlZ0FzJhG5afKZ7wbVlglyrFP1qK/BXD+EGjUlbhd6XST+a+h1mIYh1RISvtbIwcNWBd7MRNhkc3Uf5V8ppMBVZ22FeZcnzb4c8r1504xDTDUxsbUBdtj/aJoHX5vZ3e2X+r4xP68CzD/mWRlmJg0SVe6k5ylMxO10FfypBCuA00JYjFCc+d0tAwfmvwij+QZVhhkPU2Aux5Bh4fyIQXwP0VM19907gnizasywfx4C7ftEbxdwgNZszA2wwIFslrHcmhdJcBm0JsEI1cq2H1KxvmV5lFFokNtK53gYMCDWCd+B94gOJdPvZ5FH2M+XWqBxD9RO6VCaaQGPv/pr36k1a3n6dFpwsIdAk3XjlUIqpqmireNBtYLnzfsUkyGMuCJrA==;5:tInqPVacK0lQrFVmtRCdE9ycYQxoCJK43BPPu4IxDe23S3+qCsr2mOdPFwwnfw8G/t267IwFbkHb2GrSk3KwCFcak3yu1ieHHEaFjTqBJc29KJjWjn1uEKSn0u7r+XJe1ffKj2kmiM2WWeLo0633613pTgJR5exsFH8L0LFD5ho=;24:FzUhlTiwz9ACoKf1A3yawWRBlq2HLxxVLAqyrMRsLO0NQ0hppsgjL1Yx5ba1RRw1BF0Tg8FWyjosjh5sFFockQeGi+0+rEVC3x4gE2HTUZs= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;CY4PR15MB1191;7:rLSA/x0ZhzASzya8y7L/tJr4IV7ad6alVbc8kJobJApzGu5pbgY0tA2KY9DRrTbr0u6VF5+qzWIMMxx5f4TBMZeggvA+Xw6bjrD/I3Aq18qeFEOoZqY6ClutjR7JgzdrbBbPeYtHPCSjaWq93TMz1HxXCtTapl2GzqH2MWZEC2zN9tVBb3GB+Fmx8L4WC6Kc6vCN5RhZ4+uw8KVoVei8e1XN1wsBXQCp60h1iyd6tqYxiwxxUqAkntCWBXqLonFCDDmIi3PHBPH3LPVDKzt5Ix5pap/YysvPEvGuNlCUIBWBrDeQzAtv28FnC9sja9+CB6eWAGLWr13EW6mLNQSYJg==;20:oR2+kfFBZrGDl120rrzh/w3/CarpbQWkkhrpr0K0vTvGlkBlMt5Ta5FNEm1yhiwUAMx863ebZ92yUb/LUQuggj+Noa13wWcEWICJaLQo4E0N3qwQUVVrKXueEvKaQ5szv+xEHAX1heZEV6EO7ZbO0VXZ26/eVN7prYFr3QNHGQQ= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 May 2017 16:32:44.0049 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR15MB1191 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-05-09_13:,, signatures=0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 05/09/2017 10:26 AM, Mike Galbraith wrote: > On Tue, 2017-05-09 at 09:45 -0600, Jens Axboe wrote: > >>>>>>> Is it from this_cpu_ptr() in blk_stat_add()? >>>>>> >>>>>> Yeah. >>>>> >>>>> So why is this complaining, doesn't rcu_read_lock() disable >>>>> preemption? >>>> >>>> Ah, I guess it doesn't if PREEMPT_RCU is set. How about the >>>> below? >>> >>> Should do it. I was about to run LTP (where it turned up) again >>> anyway, I'll add this. No news is good news, what you should hear. >> >> Thanks, let me know, so I can add your tested-by (or whatever you >> prefer). > > Sure, but s/get_cpu_var/get_cpu_ptr first. Doh. diff --git a/block/blk-stat.c b/block/blk-stat.c index 6c2f40940439..c52356d90fe3 100644 --- a/block/blk-stat.c +++ b/block/blk-stat.c @@ -96,13 +96,16 @@ void blk_stat_add(struct request *rq) rcu_read_lock(); list_for_each_entry_rcu(cb, &q->stats->callbacks, list) { - if (blk_stat_is_active(cb)) { - bucket = cb->bucket_fn(rq); - if (bucket < 0) - continue; - stat = &this_cpu_ptr(cb->cpu_stat)[bucket]; - __blk_stat_add(stat, value); - } + if (!blk_stat_is_active(cb)) + continue; + + bucket = cb->bucket_fn(rq); + if (bucket < 0) + continue; + + stat = &get_cpu_ptr(cb->cpu_stat)[bucket]; + __blk_stat_add(stat, value); + put_cpu_ptr(cb->cpu_stat); } rcu_read_unlock(); } -- Jens Axboe