Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753278AbbHEUIj (ORCPT ); Wed, 5 Aug 2015 16:08:39 -0400 Received: from mail.linuxfoundation.org ([140.211.169.12]:37175 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752026AbbHEUIi (ORCPT ); Wed, 5 Aug 2015 16:08:38 -0400 Date: Wed, 5 Aug 2015 13:08:36 -0700 From: Andrew Morton To: Dan Streetman Cc: Seth Jennings , linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 1/3] zpool: add zpool_has_pool() Message-Id: <20150805130836.16c42cd0a9fe6f4050cf0620@linux-foundation.org> In-Reply-To: <1438782403-29496-2-git-send-email-ddstreet@ieee.org> References: <1438782403-29496-1-git-send-email-ddstreet@ieee.org> <1438782403-29496-2-git-send-email-ddstreet@ieee.org> X-Mailer: Sylpheed 3.4.1 (GTK+ 2.24.23; x86_64-pc-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1478 Lines: 47 On Wed, 5 Aug 2015 09:46:41 -0400 Dan Streetman wrote: > Add zpool_has_pool() function, indicating if the specified type of zpool > is available (i.e. zsmalloc or zbud). This allows checking if a pool is > available, without actually trying to allocate it, similar to > crypto_has_alg(). > > This is used by a following patch to zswap that enables the dynamic > runtime creation of zswap zpools. > > ... > > /** > + * zpool_has_pool() - Check if the pool driver is available > + * @type The type of the zpool to check (e.g. zbud, zsmalloc) > + * > + * This checks if the @type pool driver is available. > + * > + * Returns: true if @type pool is available, false if not > + */ > +bool zpool_has_pool(char *type) > +{ > + struct zpool_driver *driver = zpool_get_driver(type); > + > + if (!driver) { > + request_module("zpool-%s", type); > + driver = zpool_get_driver(type); > + } > + > + if (!driver) > + return false; > + > + zpool_put_driver(driver); > + return true; > +} This looks racy: after that zpool_put_driver() has completed, an rmmod will invalidate zpool_has_pool()'s return value. If there's some reason why this can't happen, can we please have a code comment which reveals that reason? -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/