From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932705AbcHIQi7 (ORCPT ); Tue, 9 Aug 2016 12:38:59 -0400 Received: from mail-db5eur01on0100.outbound.protection.outlook.com ([104.47.2.100]:17410 "EHLO EUR01-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S932700AbcHIQi1 (ORCPT ); Tue, 9 Aug 2016 12:38:27 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=VDavydov@virtuozzo.com; Date: Tue, 9 Aug 2016 19:06:12 +0300 From: Vladimir Davydov To: Chris Wilson CC: , Christoph Lameter , "Pekka Enberg" , David Rientjes , "Joonsoo Kim" , Andrew Morton , Dmitry Safonov , Daniel Vetter , Dave Gordon , Subject: Re: [PATCH v2] mm/slub: Run free_partial() outside of the kmem_cache_node->list_lock Message-ID: <20160809160612.GH1983@esperanza> References: <20160809151743.GF1983@esperanza> <1470756466-12493-1-git-send-email-chris@chris-wilson.co.uk> <20160809154539.GG1983@esperanza> <20160809155213.GI21147@nuc-i3427.alporthouse.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline In-Reply-To: <20160809155213.GI21147@nuc-i3427.alporthouse.com> X-Originating-IP: [195.214.232.10] X-ClientProxiedBy: HE1PR03CA0013.eurprd03.prod.outlook.com (10.163.170.151) To AM5PR0801MB1857.eurprd08.prod.outlook.com (10.168.157.14) X-MS-Office365-Filtering-Correlation-Id: fc672a76-10a0-4fe6-c8d8-08d3c06f1998 X-Microsoft-Exchange-Diagnostics: 1;AM5PR0801MB1857;2:7rXhnkrVLnwk73iYJmQQx9u15fnkMG/iyxAc4SaQwjtTjy4mnc85wfIlwbbpp+YI5BqzlM8jkVUV2I4tIKAg+GDCU653F6zaI9J5OlaSFPISVx3KB8krceRX8qm/uYXWcDzJy5/3m7AKIxkqQ4zpfkVftGnmITV4cOT393VIOkPeJY/YqaDxs3KExPP/gtLc;3:t3QHDCvyHHDN5ZYT/2k/Pykl28giCIL3hRMRE0NzOZXjY06qtnWmTD9QcCsGjc52RnilGWpAYatAMFUK+DlzWEsgohqIOdrcJuXPQ5kYQdGaewPqJmFKEmUrZZrvnmnD;25:PKlAqZ2lD1jA6RnWFNOL6jvVG61vtBHG4DFybILmNfGggApQultGK+N8OQ7C+iPwOeXyDTDcM3eCeB3TGOdqIzeR3KGDz1U6AV/hvKCqWhuszNrDJ0hK2nPR7Y2r8ViHVuVCjHGwr6rlblb1NoVBlnP34u37Lgft9URLXKcVkq/+pHRrSZ34ewbBdQ3mPQ7PsNzs5xPDzbx9KB1t1Ys7CR5xDXLPetvjwQ07RF28C91E+t61wQL5BrA79ACUM0kUdP51nyamZcLLkpNrnfmFOKlinAIi+8fkUircmTQ7/W19HiUmOZ0Lko3poC6pZcfSZJJOtrKN8KzPJwaEjsVWm30ahGzfdCW/8vtSe7939Re5PPtT7e+Zs3FwXzG+XvRbpxWo/4gyXPadzUfz+cwD9w== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:AM5PR0801MB1857; X-Microsoft-Exchange-Diagnostics: 1;AM5PR0801MB1857;31:3G026sP90s/HbBK26zanqDcJ8tT5TsTCycBoAxgmglAH/6lOthsVvelge15PL0rwa3j6KZSboEv5JSejHe9GFVhwV2eHPKQ6pqsqdkWBsGgFp5m11WqH40xVGsd5XMFSRPBSZqBCUkmnbKkDOqufLSjNoXJKYBf0ScqhMeERyATyTi54AflGvteVxJB7TaX5RT0L/sNzzqywVuV+8EQriIKaOgSly491jpHLN+opbYc=;4:8z216s++kCgnMLrJ5hwjBIE3CsDThWpzniYe28ANuZ/6JJPIrpa+CpI5X3ZRUTUrz7bHUCX5RtQ1YHsmihUzpzgHXVaGoMt/3WQFSix3Z80Am3pGrPUqhdCMM0L52XekQW2Ok8qa1Fz6DeI/5mr+F+lbZism+elzIjY59+e2QXLT7UI+wXPL7GA8ygYrGnrhqIXZlYQB6bxdMpzmUmf8KbQwGsG3qqrbzAOukasKkAOlEBTWZGln/FZqryMO1+Z/Ss7iANRstnm4Q6fop+wRGWKmTU5ambLWxTbTspwPuIg8uTX3jQgabIOvkBIK1VsfKt46EmD3EcVMHfCCP0dMFxlNg44HQAuYz+o0jInyjs3CPaEiunm52QxQ0804Rt04sD2uh0lbU290nKgdT/KS194PCrdwZiZfwTJPheTWZ64= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040130)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6041072)(6043046);SRVR:AM5PR0801MB1857;BCL:0;PCL:0;RULEID:;SRVR:AM5PR0801MB1857; X-Forefront-PRVS: 0029F17A3F X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(7916002)(189002)(199003)(24454002)(80792005)(2950100001)(42186005)(2906002)(77096005)(86362001)(4326007)(66066001)(81166006)(81156014)(93886004)(54356999)(76176999)(50986999)(46406003)(47776003)(8676002)(33716001)(97736004)(23726003)(3846002)(586003)(6116002)(92566002)(1076002)(19580395003)(189998001)(19580405001)(33656002)(7416002)(50466002)(68736007)(7736002)(106356001)(7846002)(9686002)(97756001)(105586002)(305945005)(110136002)(101416001);DIR:OUT;SFP:1102;SCL:1;SRVR:AM5PR0801MB1857;H:esperanza;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;AM5PR0801MB1857;23:6TpO7HnWdgNX5ZLvFIErOOQ13d3DFO2KWYNcMNY?= =?us-ascii?Q?ZujIc3L7H5Tj0IBvbOE4eb57/LCxBHYLXk6IjpT0uYV8VMYHfGSVWH4DpC0P?= =?us-ascii?Q?7yeI9bUSRyOvmQW2z9W9l2oH99Z+2Oyu1t6aWJLDGquvYHVTHwGjl44RGHYu?= =?us-ascii?Q?jGlVEmHsPnqKgNW2DhJnMoQ+rebZf/qSHNCbdz2oL3Oa7WwSZMsoV35M2sr5?= =?us-ascii?Q?WzUZgLK4OmyDd2WwwZRkyaVz7VVtgHKOn8ExOCYKQWs/9Pemq6LUsRkhYxJ9?= =?us-ascii?Q?Sm52QrVeBJ82MpMa4Cv05BrC2HK4Iv/H/W+2ErzizbtLYRR7BLbcF/Iykspu?= =?us-ascii?Q?UXn2kE3rLCo+wcs0zs5k3LDNmPDuPWSy1t1xwVzCZ9wm+7h7qgAN9aNbfuJO?= =?us-ascii?Q?6U66CZ0byTOx1ZUcbk1ZktuJkNKWe43bT1ZDwQJehDNJLi4zXvZW8Cch3tKv?= =?us-ascii?Q?uCYnnqQsQk52aPXxZ13S1c5rD6NTz3yzOfgwRBL9hl6TKwq9udvfGbVWGO4O?= =?us-ascii?Q?1XsiH3NCd83xGYqumbLuXzEpquuJiceAsO45vivPNXoMDydFog5x5VPIomVu?= =?us-ascii?Q?j7Dek4AyTLZIZG4tR8RA6H9l0woZOxRrI23zX1EYloD9XzvP17onkqge6v1a?= =?us-ascii?Q?PUhVPhTgxwNETOW8vHd0K1V/jDbfS+VHIbhpx7TuYy+mPJy18HOwEUpPm2rc?= =?us-ascii?Q?BLPaIxWWJ7a/BWejDVtb+NQk/e2ZM5oLgc1GGEP2OXpYrnJKYa6NntmKpcqq?= =?us-ascii?Q?v1EvXys34ONT6y4Fx71oDtAdMwiHYHYtzhQWHEceCICh0nK2Mf+ex5Z4SHr7?= =?us-ascii?Q?Sog1wAbMiOBi0FPrQpSe3o+/Q0gEj9qDxDUzxLb0TlFol1fMro4s8Oj7cl2K?= =?us-ascii?Q?77Qvm9wnj0PrcrO+UwSDBSe0s+9aqNn7DdGZBf0bC9PL5vN17CUvfjpPGw2x?= =?us-ascii?Q?CHCFaR48b5rS3GZIvMgPQh5mSOLl1BByNX/r/LpXt+a2Vgb/xmoz1etCw+tr?= =?us-ascii?Q?XYGoa4TDIpWckVeDYIHFSNeVn+JPMaCVS8mxD8xUGRYBvevvEXFciEhDvtEV?= =?us-ascii?Q?YoMEturwGqGcnGBMdrvvf0fRW4NDM8Oy7bn9u49g9mCN2qriwhzFkBuaHKyK?= =?us-ascii?Q?5bDL6sIV0dsDbDr5ZpqUFhhjjK/RzAEwCYSXpaVTFZkrsWmAJ3IqJiA=3D?= =?us-ascii?Q?=3D?= X-Microsoft-Exchange-Diagnostics: 1;AM5PR0801MB1857;6:xkdfQXe+LL5jJY2vz1QF/2yoF9dxBDqZ/xFMZUZdz4agE1QPKYeyeZX82JqKB1ahNsjZKFrhraM/jx3nYy7sMajSsxbWaz/cD/SZ9QXsP5v6midnLW1EznCq0VHVFIon0tgXwZLhL3p0Vc2gcpFXwDMdfe5o0qeDgMrMLzG+Hok/0sqH8MjDleBcDHwaq34QMx3vGtixYxzTr7H3Ihtz/hGq5hpHq/bq3bnibV4BRbzTj+aiBexwS3zdYF4ZzcRqT52ZieKVA2NydxsVuq32+WfZlpcoxhHpunzcbVM9olvi8O5Wrd4BMH/cBKhaKvO0;5:yQGy4sId5IQP2daKnosDSFk7aOkkRpzFlrUChO24o0khcy0MmAVL7bG5AKL0+fqTg6aEaRlhk2wo+D0K9HiU7T/pnIBA0ol3H2E4c4QSivpn7DzIRn727bBh+PRu07RtI7nR7Z8LkinmvwlWP/RNoQ==;24:8QEhn+zxQjmbE0cAyIWFTrYGs1VQxbIjgtcPUJTICNd6K/lW9YEXV6vcVDeB9iAV0qHnZuwUICCPgf4hMmaQ+pbnpHIlsZr7jhAELhkwLCU=;7:uvRCDj458b4IT1E+0xzxGY6S3M4/xCnv53NOyzRlqOLoNzgOVi8cfx2C3d+1m8U6jFEBrnNR7jjxhl9HoAmnVYDCeLLBpGfowC62PlkAO4/F0iswuqfhY6bdos6cR8rgcB9//KvZU6gkWMZoJBiuZKcTvGvCVmjIOtGWXXVj4Ma9aoQ7c0x/6tC0ebrb7lHK+iJqiB8IOobjKxNPplqN3Kenxsbfvg2WNAhkai8hNdMnmicpwjpSYQ3+kTPu9r8h SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;AM5PR0801MB1857;20:LZh7/T4Q9lUepDa8vW1wyQEjP7udKPPugGoxF5p5f5cZcveSdX4dMkfavn68zpXuWoyLhN8Ln9PSia1w+Mmby5Nd3zA2qFKSEWnPSS7NqUTHJeZEldMsAqAbju8MMSQ/FWMhOklTyhon8AO3Guh/Gv9z7qAGvPg6jhfHzS7Y/Hs= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Aug 2016 16:06:17.7585 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0801MB1857 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Aug 09, 2016 at 04:52:13PM +0100, Chris Wilson wrote: ... > > > @@ -3486,13 +3487,16 @@ static void free_partial(struct kmem_cache *s, struct kmem_cache_node *n) > > > list_for_each_entry_safe(page, h, &n->partial, lru) { > > > if (!page->inuse) { > > > remove_partial(n, page); > > > - discard_slab(s, page); > > > + list_add(&page->lru, &partial_list); > > > > If there are objects left in the cache on destruction, the cache won't > > be destroyed. Instead it will be left on the slab_list and can get > > reused later. So we should use list_move() here to always leave > > n->partial in a consistent state, even in case of a leak. > > Since remove_partial() does an unconditional list_del(), > I presume you want to perform the list_move() even if we hit the error > path, right? Please ignore my previous remark - I missed that remove_partial() does list_del(), so using list_add(), as you did in v2, should be just fine. Feel free, to add Reviewed-by: Vladimir Davydov Thanks, Vladimir