From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752298AbdJCOGe (ORCPT ); Tue, 3 Oct 2017 10:06:34 -0400 Received: from mail-eopbgr30129.outbound.protection.outlook.com ([40.107.3.129]:29265 "EHLO EUR03-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751514AbdJCOEZ (ORCPT ); Tue, 3 Oct 2017 10:04:25 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=aryabinin@virtuozzo.com; Subject: Re: [PATCH] lightnvm: pblk: use vfree_atomic when freeing line metadata To: Hans Holmberg , Matias Bjorling Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, Javier Gonzales , Christoph Hellwig , Hans Holmberg References: <1507038524-24587-1-git-send-email-hans.ml.holmberg@owltronix.com> From: Andrey Ryabinin Message-ID: <5f64209d-ba28-a642-ed44-66a5eced9a99@virtuozzo.com> Date: Tue, 3 Oct 2017 17:07:23 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.3.0 MIME-Version: 1.0 In-Reply-To: <1507038524-24587-1-git-send-email-hans.ml.holmberg@owltronix.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: VI1PR08CA0119.eurprd08.prod.outlook.com (2603:10a6:800:d4::21) To AM4PR08MB2818.eurprd08.prod.outlook.com (2603:10a6:205:d::24) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f0598d18-3efd-4fd4-dacd-08d50a67a65b X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(2017030254152)(2017052603199)(201703131423075)(201703031133081)(201702281549075);SRVR:AM4PR08MB2818; X-Microsoft-Exchange-Diagnostics: 1;AM4PR08MB2818;3:00YK3Zq51CJm5Z7h/WjA42JXZHWJrXvNX55Br5QPONw6QgMsWD5YpGuJIy3/VLmD2WAqJHpF9bSOsWqJ7DWouUbhnrlR+KOMrEunK3tgdTaf6Fc1Cg3gR/qPpj6wXOdvOkQ1lbjnRgEHyyQJeahvh8T6iZONpEjUt1lVVHuk+IU7WMHiRAbpovBYZ461yp4r/v3G/a1MBg5q0gBfRkVzVmfvA+0rnokDYJ9hGAfzsFt5cA5Vb5fX1MK70NB+9+D1;25:ZZs8eg8H+vOQJk2x0UJE50P1OGAWO9wJtZoKR4neD8a7WkP4Ag8HQ+loAhMY796w9DaeQvBWmF2sWJyFwxmezUSS4fF72eN7l5u19Bu102YpnaA7cdUSRVgFbxNjatwRBnyYgjJ6zoZXZKg+vUE8cSqQ1ZTvQrNJ80cOu52B1X8HlvP8u4TIde+51ZHdMR0MOBBtIKN9eeYuSvbnVBsgxVnjsiXX9tjQwLoxp5UwjVgGWz08DoFjqVg/PWbDT4O8D7w5jKQzrMkN72taeBiy4w2pGr3T8V4ZNMZPXrr2inQpumA/2Tfd++YJUDP9Im5bjrADpArW8hKqUtESt4jQLQ==;31:eR4pY07/Lhd8bsMHGZc+WLMI53Mtbr9PelO6A5kBLOFRtnaYoOxgW3hpYzaBwg2Pa+WSMK+IJFDCT81CTQkpzRjkG14izNDa3jwwylpNsSRjpuzBimL0c6AE6G/EryoCzJSONz1vew+RLmrf5k5/hOLfNm/5MbZ4YpOgB5c+ORM+aJi/IWdAb/4FpwUW9KvQLccSMzExzFBVldZ7W4DqHlnUW2VnrTQ1OjphcWk3Ah8= X-MS-TrafficTypeDiagnostic: AM4PR08MB2818: X-Microsoft-Exchange-Diagnostics: 1;AM4PR08MB2818;20:K44xLUXR3Z6ONkxovgz58PwkylClvhSblDKBczcQ5hWIUz3QhSmxD9VvdIiZsucdGMy6QspSf3mW4TXz7X1JBd3Bwwt2dK4UAmJdhhPeXO1aiE7X0fk6X/PrTEQ3wJr45OwjnAYhb66leYSzTc69VBpqvZH1pzag5H3vLEOnUaFQWPqDv4U/vATcsILmOJwa7xu00QLHsOyTZ/y9oSs3od9ITMvuDPsqkcyYUB/Rl8icDKgVtsAx6exBIHhcIKm2vzwYHRbNw5M3cv6Oiy8sMg5Nk3oGU4fjUDeJCLdhj7A8D0IFe6cE+iaJDpMbJ5btwbF9SswgA8SgymZSI0i8Bfg1FYj/EPQCFtJuuYulFDLVW69Sg2zWaUwmnoPlTngeSU+jr3NuNCWA+W/46bFWipYIH6S30nlyzXnLLHlHesM=;4:X23187lVBZvOBOIUQ2S+mL8D3IqCSQqE1HybdNTj+TzGW/SJJzL4xTCQhAHlYbFlJElNIQLj8410rWwTj4LSY9t2RvtagzU/i9WHFxxMcZVyko2KNluVDPiAk6F7twgsWqhf+aXYk32dmGD+wJgchslk7z5edl6WYGvcWY9jKMMSHZZajF7uf8OvUps2cXw3NMDrPHKgZ/oCTWg2g5tl1WyPytxAoWmaPhHJ4qDRIZ1ZwLBFEDJIliDfbmM4YxLnGWtAGZTIg5FcFMebVjVGc3F07UlonTPVSNWxLIVxVVg= X-Exchange-Antispam-Report-Test: UriScan:(166708455590820); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(5005006)(8121501046)(93006095)(93001095)(3002001)(10201501046)(100000703101)(100105400095)(6041248)(20161123555025)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(20161123560025)(20161123558100)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:AM4PR08MB2818;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:AM4PR08MB2818; X-Forefront-PRVS: 044968D9E1 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(6049001)(6009001)(376002)(346002)(199003)(189002)(24454002)(377454003)(53546010)(36756003)(7736002)(54906003)(68736007)(6116002)(50466002)(230700001)(66066001)(3846002)(31696002)(23676002)(110136005)(25786009)(101416001)(8676002)(2906002)(229853002)(478600001)(64126003)(65956001)(65826007)(47776003)(65806001)(6486002)(81166006)(966005)(305945005)(81156014)(106356001)(6306002)(33646002)(77096006)(97736004)(4326008)(189998001)(86362001)(316002)(5660300001)(50986999)(76176999)(31686004)(6246003)(83506001)(16576012)(58126008)(8936002)(2950100002)(16526017)(53936002)(54356999)(105586002);DIR:OUT;SFP:1102;SCL:1;SRVR:AM4PR08MB2818;H:[172.16.25.12];FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtBTTRQUjA4TUIyODE4OzIzOnBtK1pwWXd4SEFXSzd6Sk93a3F1Q2Ztejcx?= =?utf-8?B?bVM1czdIcmtmN0p6TktzcnI5RXp2VHZWM1BrL1lETHl1VnZJNkJtNEMzeDFr?= =?utf-8?B?cnN3TUF3VzNMbjlQSis5Qjkwdm5hUktXT2EvM0wrWDJ4UEQ1OHNSYnRQZUFP?= =?utf-8?B?bDJmUmE0S2FWcFZzWHhlbTJZTFJzZit0K1VIUE1EMnRhWE53TDFqUVJobyt0?= =?utf-8?B?RXZsTklnYkpRYTZLdC9rK1cvNDJGYlhPNXFPWnJVRzdISy82K3Vqb1VMTm5h?= =?utf-8?B?SUpoa0NwclZ6ZjM0TjhrM0pPMGNKUVp0bDJMb1FPRUxUZE0rczhBam96L2Vt?= =?utf-8?B?MjBVZzdnRGplVWRaR2RpK1p1Zjl0UmlERlhsbGlQZGcxRTREYm5rVGx0K0pL?= =?utf-8?B?WnFBdmhYZzMrVUZNYXNnKzM3d2l4TGdHYythcjZBMzRMR3duR0lERDUwK0dD?= =?utf-8?B?bVduSHdRckdnYXY4N3dHVk51SzF2WW1XK1crR0VpUUlkZVpmV1FNY2xrbWVz?= =?utf-8?B?WURqbndkb1VpQzFBendJbGVkUVFvOS93eFNBTWhNWlVKK3dZUnptVjBCa1Bn?= =?utf-8?B?RXpuTm5jUkJhcVFXd0U3ZFVmb0UxRDVPblhZWEZxSU0xUkQwWUZweHNEM1Ft?= =?utf-8?B?Z2piV1h6TmlUZDA5a3QxSml2REhWTDVoSzZHQ042SmI4NDR6bm92eWV3UzhR?= =?utf-8?B?aHFTWkpXNXdVWko3WlBtTzhVUys0K3NKM3R4R2o2R09tRk5yMERNQjJ2ZVRh?= =?utf-8?B?TUJQMFp1eVFJNUJOQW5tQWlJcUJKNkh1U0kwL0J3OU95OHpGLzVOZ0tOS3pu?= =?utf-8?B?aVpBbktrbmQxOHMrQmJtM0FtZUxjcElKVCsvSmRLNEVza3h0bXdOd2xlRStU?= =?utf-8?B?Z0ZQbkd6cG43OGV4MU5jRklVcFpRUmNCcUlMcjQwMDZjVUVxbW5qcXZtQ0pp?= =?utf-8?B?ZEVmTjFXVC9tWjNpUFNseVZxM2NGcTZLNGlVTVgvWmVWSFhaaURPVmpXWmJp?= =?utf-8?B?QmQveVF0V0QxWUlmRkg0ZGYwZTZOZEdjZ2VUeDRtbjBEemRLbWZLVWFCaU1p?= =?utf-8?B?Rk9RcTdZNkd2T0ZGSWQxcFJFMC9heFBtQ0F6a0ZKVnpTNHdLdGdvUDRjakVk?= =?utf-8?B?OFdZS2VhZXhhOFNBVzh5WFJ0L09TdXYyOVNDeEZJelMxRmlxbzA5QWt2VURo?= =?utf-8?B?TzBWWXpvUzk1K2FIZVlYY01DS1lEVDFkVHNvUWpqa2hEdHpINWJ3eEYzVjdE?= =?utf-8?B?TkFZSVhvOFh1enozekNJLzJrRmVtc3RwRUNmVjllano2dlNhV1lUOGFBWTNH?= =?utf-8?B?WUFSNUVya0JJZ1ROY2pCN04xMXhYUnFyNkpUQWFHUHlIWU04QUE2SFBYOUg3?= =?utf-8?B?UmNJelkxLzdLczB6YzZNdHJrVlRwUFVCYTZObEdtRDJUS2xVMzQyUlJ5b093?= =?utf-8?B?eTQzWkpjaCsrTDA4NkNNck8rKzA2dUY0MnpzQVp5T2JWWWlxVzJuOTdwbHNC?= =?utf-8?B?N3JZOVJqL1E2Y0Jmanp3QkVpNjdOekR5cnZ4YVNJN0tmMTBLRTBhV2cxUEY4?= =?utf-8?B?NUtJbWw5Qng0NkhyaVpiazJDazFDendDWXZ2bGt3eHpQT2hsem9lYy8zeDVs?= =?utf-8?B?N0xGSjUyUDdHNlZsYitDOHpWZzZEVXRNbDZjMFo1RlNMUlFOU2ZUdWVsQXhM?= =?utf-8?B?WjhlbnpqZURqSGhkOC9qUVlYQU94dFJNL3ZjN2VUTExVTDFtYzN2OWpqakgy?= =?utf-8?B?UEVXbzdvYU16SXlGY3owRllPdDZZWWl1SkZqZm5mUmsvVzZGb0c3NVl2WlRK?= =?utf-8?B?THRiQ1VRN0ZCOXNGN1pnSXQ2eHphc2xkeW53ZkJ1ekJoOEg0TCtuNmlOV1Qx?= =?utf-8?Q?3DfmxRDBUo4=3D?= X-Microsoft-Exchange-Diagnostics: 1;AM4PR08MB2818;6:9LsDz3b4djzq43AsfARhpMVClhBHyu3/smY7R7z0SMz9/67rcOo538dFBx4dXd6/ZAHqGDmNKVNESl2B5j8eraJxvqD7vPCihdjrsWjVHUGNCvqEvE8ONMGidZawGIY6dtPAQcaghQfB5KSB/UuatcE7l+1dqkFk6JGG5UjQp9mfA6G+JW209lVF9i3FMmu0pkHgqPpdpCMbNSRKna+vK3CM6oMWV5zm91Xw75vgabtmwv2h30s6CvuK5VaKmgbqJhLlVfvJmlP/6/9jzuZVlku11QW8D6XWIB68JDNUSxQU5UIeg+muz7/5x36QECFgTtrXYsOu2oZN9TgwN7m4Nw==;5:LyAZqm/oO7iCxIh1Bq1l2IP7JzENnTst8RiRiDjw2iPfaUdXmC/unb22v/2B2C42IYeR3aLyJwCmjU7RpwTS349NCJdNTr0biJajVlKTd6XYBhUsnHRYdeAs0ckuRrZo6pPM4lWTWPbvl2KyYPaoAA46GusAqcaClTA6waaM1MU=;24:NUYqZMF5bibIyC2shtMXMQe9yZ577jMgUD1V7TzwQ58Tv1LwCwx/u3Cb53r4dF147Rh6odmQorVZfaK1o2uafRn2dsZ5WgbNaJw9aOlO/8Y=;7:lQlYkQfSUMkc/qS//NvbeUmBrWDBPquANO+q+BCt3l4unBeVmZrSxvVKPXXiqi4uz6X3SwkGNpHm70g/K99G6TMmgOEB+wAgv31Qyb9Tv3BZyGPRPreDv1iEMiyn3GdMfRJFqxP1gQzb13Cj48U1SAxnkmk3yJ+VvhAcNtQpkT2uUX7QKhHYbM0P2Dr5irEuo95FgEc6o9qJFkCNVdYUDjiatTaVykIjLG7wY9n0mEU= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;AM4PR08MB2818;20:1RBBkOSt9z5HS7DCqUX01wlTzKGkNRJ7Hl2EgAGAuklJvTLEgJ1EbODZqTOFkzKWZYdMv2g+8uABTohkSvFJzZ9zBWn/92t5HI/Ibj9hvOKwcri0do9hHBxACq5mjsnRaOS9KdG9HWXZhgpSV2bW4qtF9nwJEhaC/QQW2J3FFtE= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Oct 2017 14:04:22.4396 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM4PR08MB2818 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 10/03/2017 04:48 PM, Hans Holmberg wrote: > From: Hans Holmberg > > The commit bf22e37a6413 ("mm: add vfree_atomic()") made vfree unsafe to > call in atomic context (unless the call came from an interrupt) and > introduced vfree_atomic that is safe to call in atomic context. > > So, since we're holding locks when freeing line metadata, we need to > use the atomic version of vfree. > > Fix this by introducing an atomic variant of pblk_mfree and > switching to that in pblk_line_meta_free. > > Signed-off-by: Hans Holmberg > --- > > The patch is for: > https://github.com/OpenChannelSSD/linux branch for-4.15/pblk > > drivers/lightnvm/pblk-init.c | 3 ++- > drivers/lightnvm/pblk.h | 8 ++++++++ > 2 files changed, 10 insertions(+), 1 deletion(-) > > diff --git a/drivers/lightnvm/pblk-init.c b/drivers/lightnvm/pblk-init.c > index c452478..3a191a6 100644 > --- a/drivers/lightnvm/pblk-init.c > +++ b/drivers/lightnvm/pblk-init.c > @@ -396,7 +396,8 @@ static void pblk_line_meta_free(struct pblk *pblk) > spin_lock(&l_mg->free_lock); What's the point in holding ->free_lock here? It seems like it could be just dropped. > for (i = 0; i < PBLK_DATA_LINES; i++) { > kfree(l_mg->sline_meta[i]); > - pblk_mfree(l_mg->eline_meta[i]->buf, l_mg->emeta_alloc_type); > + pblk_mfree_atomic(l_mg->eline_meta[i]->buf, > + l_mg->emeta_alloc_type); > kfree(l_mg->eline_meta[i]); > } > spin_unlock(&l_mg->free_lock); > diff --git a/drivers/lightnvm/pblk.h b/drivers/lightnvm/pblk.h > index 03965da..93f98e3 100644 > --- a/drivers/lightnvm/pblk.h > +++ b/drivers/lightnvm/pblk.h > @@ -881,6 +881,14 @@ static inline void pblk_mfree(void *ptr, int type) > vfree(ptr); > } > > +static inline void pblk_mfree_atomic(void *ptr, int type) > +{ > + if (type == PBLK_KMALLOC_META) > + kfree(ptr); > + else > + vfree_atomic(ptr); > +} > + > static inline struct nvm_rq *nvm_rq_from_c_ctx(void *c_ctx) > { > return c_ctx - sizeof(struct nvm_rq); >