From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id BDB63E75459 for ; Tue, 3 Oct 2023 18:46:10 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232041AbjJCSqM convert rfc822-to-8bit (ORCPT ); Tue, 3 Oct 2023 14:46:12 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45022 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231263AbjJCSqJ (ORCPT ); Tue, 3 Oct 2023 14:46:09 -0400 Received: from lithops.sigma-star.at (lithops.sigma-star.at [195.201.40.130]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 77730A7; Tue, 3 Oct 2023 11:46:05 -0700 (PDT) Received: from localhost (localhost [127.0.0.1]) by lithops.sigma-star.at (Postfix) with ESMTP id 2158E6340E0E; Tue, 3 Oct 2023 20:46:04 +0200 (CEST) Received: from lithops.sigma-star.at ([127.0.0.1]) by localhost (lithops.sigma-star.at [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id YXf_5sB6IDQO; Tue, 3 Oct 2023 20:46:03 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by lithops.sigma-star.at (Postfix) with ESMTP id 4184D6340DF3; Tue, 3 Oct 2023 20:46:03 +0200 (CEST) Received: from lithops.sigma-star.at ([127.0.0.1]) by localhost (lithops.sigma-star.at [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id zQ-FJz0PTVGL; Tue, 3 Oct 2023 20:46:03 +0200 (CEST) Received: from lithops.sigma-star.at (lithops.sigma-star.at [195.201.40.130]) by lithops.sigma-star.at (Postfix) with ESMTP id 025336340DE8; Tue, 3 Oct 2023 20:46:02 +0200 (CEST) Date: Tue, 3 Oct 2023 20:46:02 +0200 (CEST) From: Richard Weinberger To: Daniel Golle Cc: Randy Dunlap , Miquel Raynal , Vignesh Raghavendra , Rob Herring , Krzysztof Kozlowski , Conor Dooley , linux-mtd , devicetree , linux-kernel Message-ID: <1135175877.31585.1696358762881.JavaMail.zimbra@nod.at> In-Reply-To: <1bb74a9feeeb64dcd94024fbfa3a8259fcdac53d.1691717480.git.daniel@makrotopia.org> References: <1bb74a9feeeb64dcd94024fbfa3a8259fcdac53d.1691717480.git.daniel@makrotopia.org> Subject: Re: [PATCH v4 4/8] mtd: ubi: block: use notifier to create ubiblock MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8BIT X-Originating-IP: [195.201.40.130] X-Mailer: Zimbra 8.8.12_GA_3807 (ZimbraWebClient - FF97 (Linux)/8.8.12_GA_3809) Thread-Topic: block: use notifier to create ubiblock Thread-Index: pcyMIJkQgdcxJxlQRVjxanFXVjGyiQ== Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org ----- Ursprüngliche Mail ----- > Von: "Daniel Golle" > An: "Randy Dunlap" , "Miquel Raynal" , "richard" , > "Vignesh Raghavendra" , "Rob Herring" , "Krzysztof Kozlowski" > , "Conor Dooley" , "Daniel Golle" , > "linux-mtd" , "devicetree" , "linux-kernel" > > Gesendet: Freitag, 11. August 2023 03:37:31 > Betreff: [PATCH v4 4/8] mtd: ubi: block: use notifier to create ubiblock > Use UBI_VOLUME_ADDED notification to create ubiblock device specified > on kernel cmdline or module parameter. > This makes thing more simple and has the advantage that ubiblock devices *things > on volumes which are not present at the time the ubi module is probed > will still be created. > > Suggested-by: Zhihao Cheng > Signed-off-by: Daniel Golle > --- > drivers/mtd/ubi/block.c | 152 ++++++++++++++++++++++------------------ > 1 file changed, 84 insertions(+), 68 deletions(-) > > diff --git a/drivers/mtd/ubi/block.c b/drivers/mtd/ubi/block.c > index 69fa6fecb8494..e0618bbde3613 100644 > --- a/drivers/mtd/ubi/block.c > +++ b/drivers/mtd/ubi/block.c > @@ -33,6 +33,7 @@ > #include > #include > #include > +#include > #include > #include > #include > @@ -65,10 +66,10 @@ struct ubiblock_pdu { > }; > > /* Numbers of elements set in the @ubiblock_param array */ > -static int ubiblock_devs __initdata; > +static int ubiblock_devs; > > /* MTD devices specification parameters */ > -static struct ubiblock_param ubiblock_param[UBIBLOCK_MAX_DEVICES] __initdata; > +static struct ubiblock_param ubiblock_param[UBIBLOCK_MAX_DEVICES]; > > struct ubiblock { > struct ubi_volume_desc *desc; > @@ -532,6 +533,85 @@ static int ubiblock_resize(struct ubi_volume_info *vi) > return 0; > } > > +static bool > +match_volume_desc(struct ubi_volume_info *vi, const char *name, int ubi_num, > int vol_id) > +{ > + int err, len; > + struct path path; > + struct kstat stat; > + > + if (ubi_num == -1) { > + /* No ubi num, name must be a vol device path */ > + err = kern_path(name, LOOKUP_FOLLOW, &path); > + if (err) > + return false; > + > + err = vfs_getattr(&path, &stat, STATX_TYPE, AT_STATX_SYNC_AS_STAT); > + path_put(&path); > + if (err) > + return false; > + > + if (!S_ISCHR(stat.mode)) > + return false; > + > + if (vi->ubi_num != ubi_major2num(MAJOR(stat.rdev))) > + return false; > + > + if (vi->vol_id != MINOR(stat.rdev) - 1) > + return false; > + This is more or less an open coded ubi_open_volume_path(). Please either split or adopt ubi_open_volume_path() to fit your use case. > + return true; > + } > + > + if (vol_id == -1) { > + if (vi->ubi_num != ubi_num) > + return false; > + > + len = strnlen(name, UBI_VOL_NAME_MAX + 1); > + if (len < 1 || vi->name_len != len) > + return false; > + > + if (strcmp(name, vi->name)) > + return false; > + > + return true; > + } Same for ubi_open_volume_nm(). Thanks, //richard