From: Eric Biggers <ebiggers@kernel.org> To: Daniel Rosenberg <drosen@google.com> Cc: kernel-team@android.com, Theodore Ts'o <tytso@mit.edu>, Jonathan Corbet <corbet@lwn.net>, Richard Weinberger <richard@nod.at>, Andreas Dilger <adilger.kernel@dilger.ca>, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net, linux-fscrypt@vger.kernel.org, linux-mtd@lists.infradead.org, Alexander Viro <viro@zeniv.linux.org.uk>, linux-fsdevel@vger.kernel.org, Jaegeuk Kim <jaegeuk@kernel.org>, linux-ext4@vger.kernel.org, Gabriel Krisman Bertazi <krisman@collabora.com> Subject: Re: [f2fs-dev] [PATCH v7 1/8] unicode: Add utf8_casefold_iter Date: Tue, 11 Feb 2020 19:38:00 -0800 Message-ID: <20200212033800.GC870@sol.localdomain> (raw) In-Reply-To: <20200208013552.241832-2-drosen@google.com> On Fri, Feb 07, 2020 at 05:35:45PM -0800, Daniel Rosenberg wrote: > This function will allow other uses of unicode to act upon a casefolded > string without needing to allocate their own copy of one. > > The actor function can return an nonzero value to exit early. > > Signed-off-by: Daniel Rosenberg <drosen@google.com> > --- > fs/unicode/utf8-core.c | 25 ++++++++++++++++++++++++- > include/linux/unicode.h | 10 ++++++++++ > 2 files changed, 34 insertions(+), 1 deletion(-) > > diff --git a/fs/unicode/utf8-core.c b/fs/unicode/utf8-core.c > index 2a878b739115d..db050bf59a32b 100644 > --- a/fs/unicode/utf8-core.c > +++ b/fs/unicode/utf8-core.c > @@ -122,9 +122,32 @@ int utf8_casefold(const struct unicode_map *um, const struct qstr *str, > } > return -EINVAL; > } > - > EXPORT_SYMBOL(utf8_casefold); > > +int utf8_casefold_iter(const struct unicode_map *um, const struct qstr *str, > + struct utf8_itr_context *ctx) > +{ > + const struct utf8data *data = utf8nfdicf(um->version); > + struct utf8cursor cur; > + int c; > + int res = 0; > + int pos = 0; > + > + if (utf8ncursor(&cur, data, str->name, str->len) < 0) > + return -EINVAL; > + > + while ((c = utf8byte(&cur))) { > + if (c < 0) > + return c; > + res = ctx->actor(ctx, c, pos); > + pos++; > + if (res) > + return res; > + } > + return res; > +} > +EXPORT_SYMBOL(utf8_casefold_iter); Indirect function calls are expensive these days for various reasons, including Spectre mitigations and CFI. Are you sure it's okay from a performance perspective to make an indirect call for every byte of the pathname? > +typedef int (*utf8_itr_actor_t)(struct utf8_itr_context *, int byte, int pos); The byte argument probably should be 'u8', to avoid confusion about whether it's a byte or a Unicode codepoint. - Eric _______________________________________________ Linux-f2fs-devel mailing list Linux-f2fs-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
next prev parent reply index Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-02-08 1:35 [f2fs-dev] [PATCH v7 0/8] Support fof Casefolding and Encryption Daniel Rosenberg via Linux-f2fs-devel 2020-02-08 1:35 ` [f2fs-dev] [PATCH v7 1/8] unicode: Add utf8_casefold_iter Daniel Rosenberg via Linux-f2fs-devel 2020-02-12 3:38 ` Eric Biggers [this message] 2020-02-14 21:47 ` Daniel Rosenberg via Linux-f2fs-devel 2020-02-17 19:02 ` Gabriel Krisman Bertazi 2020-02-08 1:35 ` [f2fs-dev] [PATCH v7 2/8] fs: Add standard casefolding support Daniel Rosenberg via Linux-f2fs-devel 2020-02-08 2:12 ` Al Viro 2020-02-10 23:11 ` Daniel Rosenberg via Linux-f2fs-devel 2020-02-10 23:42 ` Al Viro 2020-02-12 6:34 ` Eric Biggers 2020-02-12 6:57 ` Eric Biggers 2020-02-20 2:27 ` Daniel Rosenberg via Linux-f2fs-devel 2020-02-12 3:55 ` Eric Biggers 2020-02-08 1:35 ` [f2fs-dev] [PATCH v7 3/8] f2fs: Use generic " Daniel Rosenberg via Linux-f2fs-devel 2020-02-12 4:05 ` Eric Biggers 2020-02-08 1:35 ` [f2fs-dev] [PATCH v7 4/8] ext4: " Daniel Rosenberg via Linux-f2fs-devel 2020-02-08 1:35 ` [f2fs-dev] [PATCH v7 5/8] fscrypt: Have filesystems handle their d_ops Daniel Rosenberg via Linux-f2fs-devel 2020-02-12 4:33 ` Eric Biggers 2020-02-08 1:35 ` [f2fs-dev] [PATCH v7 6/8] f2fs: Handle casefolding with Encryption Daniel Rosenberg via Linux-f2fs-devel 2020-02-12 5:10 ` Eric Biggers 2020-02-12 5:55 ` Al Viro 2020-02-12 6:06 ` Eric Biggers 2020-02-12 5:47 ` Eric Biggers 2020-02-08 1:35 ` [f2fs-dev] [PATCH v7 7/8] ext4: Hande casefolding with encryption Daniel Rosenberg via Linux-f2fs-devel 2020-02-12 5:59 ` Eric Biggers 2020-02-08 1:35 ` [f2fs-dev] [PATCH v7 8/8] ext4: Optimize match for casefolded encrypted dirs Daniel Rosenberg via Linux-f2fs-devel 2020-02-12 6:12 ` [f2fs-dev] [PATCH v7 0/8] Support fof Casefolding and Encryption Eric Biggers 2020-02-13 0:01 ` Daniel Rosenberg via Linux-f2fs-devel
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20200212033800.GC870@sol.localdomain \ --to=ebiggers@kernel.org \ --cc=adilger.kernel@dilger.ca \ --cc=corbet@lwn.net \ --cc=drosen@google.com \ --cc=jaegeuk@kernel.org \ --cc=kernel-team@android.com \ --cc=krisman@collabora.com \ --cc=linux-doc@vger.kernel.org \ --cc=linux-ext4@vger.kernel.org \ --cc=linux-f2fs-devel@lists.sourceforge.net \ --cc=linux-fscrypt@vger.kernel.org \ --cc=linux-fsdevel@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mtd@lists.infradead.org \ --cc=richard@nod.at \ --cc=tytso@mit.edu \ --cc=viro@zeniv.linux.org.uk \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Linux-f2fs-devel Archive on lore.kernel.org Archives are clonable: git clone --mirror https://lore.kernel.org/linux-f2fs-devel/0 linux-f2fs-devel/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 linux-f2fs-devel linux-f2fs-devel/ https://lore.kernel.org/linux-f2fs-devel \ linux-f2fs-devel@lists.sourceforge.net public-inbox-index linux-f2fs-devel Example config snippet for mirrors Newsgroup available over NNTP: nntp://nntp.lore.kernel.org/net.sourceforge.lists.linux-f2fs-devel AGPL code for this site: git clone https://public-inbox.org/public-inbox.git