All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christoph Hellwig <hch@lst.de>
To: "Darrick J. Wong" <djwong@kernel.org>
Cc: Christoph Hellwig <hch@lst.de>,
	Eric Biggers <ebiggers@kernel.org>,
	Al Viro <viro@zeniv.linux.org.uk>,
	Christian Brauner <brauner@kernel.org>, Jan Kara <jack@suse.cz>,
	David Sterba <dsterba@suse.com>, Theodore Ts'o <tytso@mit.edu>,
	Jaegeuk Kim <jaegeuk@kernel.org>, Chao Yu <chao@kernel.org>,
	Andrey Albershteyn <aalbersh@redhat.com>,
	"Matthew Wilcox (Oracle)" <willy@infradead.org>,
	linux-fsdevel@vger.kernel.org, linux-btrfs@vger.kernel.org,
	linux-ext4@vger.kernel.org,
	linux-f2fs-devel@lists.sourceforge.net, fsverity@lists.linux.dev
Subject: Re: [PATCH 11/11] fsverity: use a hashtable to find the fsverity_info
Date: Fri, 23 Jan 2026 06:27:23 +0100	[thread overview]
Message-ID: <20260123052723.GE24123@lst.de> (raw)
In-Reply-To: <20260122220420.GI5910@frogsfrogsfrogs>

On Thu, Jan 22, 2026 at 02:04:20PM -0800, Darrick J. Wong wrote:
> On Thu, Jan 22, 2026 at 09:22:07AM +0100, Christoph Hellwig wrote:
> > Use the kernel's resizable hash table to find the fsverity_info.  This
> 
> Oh is that what the 'r' stands for?  I thought it was rcu.  Maybe it's
> both. :P

From the lib/rhashtable.c:

 * Resizable, Scalable, Concurrent Hash Table

> > Because insertation into the hash table now happens before S_VERITY is
> > set, fsverity just becomes a barrier and a flag check and doesn't have
> > to look up the fsverity_info at all, so there is only one two two
> 
> "one two two" <confused>?

one or two, sorry.  The cover letter actually explains this in more
detail, which this should be updated to.

> > +static const struct rhashtable_params fsverity_info_hash_params = {
> > +	.key_len		= sizeof(struct inode *),
> 
> 	.key_len		= sizeof_field(struct fsverity_info, inode),
> 
> Perhaps?

That should work, yes.

> > -	kfree(vi->tree_params.hashstate);
> > -	kvfree(vi->hash_block_verified);
> > -	kmem_cache_free(fsverity_info_cachep, vi);
> > +	return rhashtable_lookup_fast(&fsverity_info_hash, &inode,
> > +			fsverity_info_hash_params);
> 
> Hrm.  The rhashtable stores a pointer to the rhash_head, but now we're
> returning that as if it were a fsverity_info pointer.  Can I be pedantic
> and ask for a proper container_of() to avoid leaving a landmine if the
> struct layout ever changes?

rhashtable_lookup_fast returns the struct containing the rhash_head.
The paramters store the rhead_offset for that purpose.  See rht_obj
as used by rhashtable_lookup.

> > @@ -323,9 +323,9 @@ fsverity_init_verification_context(struct fsverity_verification_context *ctx,
> >  				   struct fsverity_info *vi)
> >  {
> >  	ctx->inode = inode;
> > -	ctx->vi = vi;
> 
> Can this function drop its @vi argument?

No..

> 
> > +	ctx->vi = fsverity_get_info(inode);

... but this extra lookup should have been removed and got messed up by a
rebase, causing a pointless extra lookup.  (Which still is completely
in the noise in my runs).


WARNING: multiple messages have this Message-ID (diff)
From: Christoph Hellwig <hch@lst.de>
To: "Darrick J. Wong" <djwong@kernel.org>
Cc: fsverity@lists.linux.dev, Christian Brauner <brauner@kernel.org>,
	Jan Kara <jack@suse.cz>, Andrey Albershteyn <aalbersh@redhat.com>,
	"Matthew Wilcox \(Oracle\)" <willy@infradead.org>,
	linux-f2fs-devel@lists.sourceforge.net,
	Eric Biggers <ebiggers@kernel.org>,
	linux-fsdevel@vger.kernel.org, Al Viro <viro@zeniv.linux.org.uk>,
	Jaegeuk Kim <jaegeuk@kernel.org>, David Sterba <dsterba@suse.com>,
	Theodore Ts'o <tytso@mit.edu>,
	linux-ext4@vger.kernel.org, Christoph Hellwig <hch@lst.de>,
	linux-btrfs@vger.kernel.org
Subject: Re: [f2fs-dev] [PATCH 11/11] fsverity: use a hashtable to find the fsverity_info
Date: Fri, 23 Jan 2026 06:27:23 +0100	[thread overview]
Message-ID: <20260123052723.GE24123@lst.de> (raw)
In-Reply-To: <20260122220420.GI5910@frogsfrogsfrogs>

On Thu, Jan 22, 2026 at 02:04:20PM -0800, Darrick J. Wong wrote:
> On Thu, Jan 22, 2026 at 09:22:07AM +0100, Christoph Hellwig wrote:
> > Use the kernel's resizable hash table to find the fsverity_info.  This
> 
> Oh is that what the 'r' stands for?  I thought it was rcu.  Maybe it's
> both. :P

From the lib/rhashtable.c:

 * Resizable, Scalable, Concurrent Hash Table

> > Because insertation into the hash table now happens before S_VERITY is
> > set, fsverity just becomes a barrier and a flag check and doesn't have
> > to look up the fsverity_info at all, so there is only one two two
> 
> "one two two" <confused>?

one or two, sorry.  The cover letter actually explains this in more
detail, which this should be updated to.

> > +static const struct rhashtable_params fsverity_info_hash_params = {
> > +	.key_len		= sizeof(struct inode *),
> 
> 	.key_len		= sizeof_field(struct fsverity_info, inode),
> 
> Perhaps?

That should work, yes.

> > -	kfree(vi->tree_params.hashstate);
> > -	kvfree(vi->hash_block_verified);
> > -	kmem_cache_free(fsverity_info_cachep, vi);
> > +	return rhashtable_lookup_fast(&fsverity_info_hash, &inode,
> > +			fsverity_info_hash_params);
> 
> Hrm.  The rhashtable stores a pointer to the rhash_head, but now we're
> returning that as if it were a fsverity_info pointer.  Can I be pedantic
> and ask for a proper container_of() to avoid leaving a landmine if the
> struct layout ever changes?

rhashtable_lookup_fast returns the struct containing the rhash_head.
The paramters store the rhead_offset for that purpose.  See rht_obj
as used by rhashtable_lookup.

> > @@ -323,9 +323,9 @@ fsverity_init_verification_context(struct fsverity_verification_context *ctx,
> >  				   struct fsverity_info *vi)
> >  {
> >  	ctx->inode = inode;
> > -	ctx->vi = vi;
> 
> Can this function drop its @vi argument?

No..

> 
> > +	ctx->vi = fsverity_get_info(inode);

... but this extra lookup should have been removed and got messed up by a
rebase, causing a pointless extra lookup.  (Which still is completely
in the noise in my runs).



_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

  reply	other threads:[~2026-01-23  5:27 UTC|newest]

Thread overview: 105+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-01-22  8:21 fsverity cleanups, speedup and memory usage optimization v2 Christoph Hellwig
2026-01-22  8:21 ` [f2fs-dev] " Christoph Hellwig
2026-01-22  8:21 ` [PATCH 01/11] fs,fsverity: reject size changes on fsverity files in setattr_prepare Christoph Hellwig
2026-01-22  8:21   ` [f2fs-dev] [PATCH 01/11] fs, fsverity: " Christoph Hellwig
2026-01-22  9:12   ` [PATCH 01/11] fs,fsverity: " Jan Kara
2026-01-22  9:12     ` [f2fs-dev] [PATCH 01/11] fs, fsverity: " Jan Kara
2026-01-22 21:21   ` [PATCH 01/11] fs,fsverity: " Darrick J. Wong
2026-01-22 21:21     ` [f2fs-dev] [PATCH 01/11] fs, fsverity: " Darrick J. Wong via Linux-f2fs-devel
2026-01-22  8:21 ` [PATCH 02/11] fs,fsverity: clear out fsverity_info from common code Christoph Hellwig
2026-01-22  8:21   ` [f2fs-dev] [PATCH 02/11] fs, fsverity: " Christoph Hellwig
2026-01-22  9:15   ` [PATCH 02/11] fs,fsverity: " Jan Kara
2026-01-22  9:15     ` [f2fs-dev] [PATCH 02/11] fs, fsverity: " Jan Kara
2026-01-22 21:22   ` [PATCH 02/11] fs,fsverity: " Darrick J. Wong
2026-01-22 21:22     ` [f2fs-dev] [PATCH 02/11] fs, fsverity: " Darrick J. Wong via Linux-f2fs-devel
2026-01-22  8:21 ` [PATCH 03/11] fsverity: pass struct file to ->write_merkle_tree_block Christoph Hellwig
2026-01-22  8:21   ` [f2fs-dev] " Christoph Hellwig
2026-01-22 10:04   ` Andrey Albershteyn
2026-01-22 10:04     ` [f2fs-dev] " Andrey Albershteyn via Linux-f2fs-devel
2026-01-22 21:23   ` Darrick J. Wong
2026-01-22 21:23     ` [f2fs-dev] " Darrick J. Wong via Linux-f2fs-devel
2026-01-22  8:22 ` [PATCH 04/11] fsverity: start consolidating pagecache code Christoph Hellwig
2026-01-22  8:22   ` [f2fs-dev] " Christoph Hellwig
2026-01-22  9:18   ` Jan Kara
2026-01-22  9:18     ` [f2fs-dev] " Jan Kara
2026-01-22 10:12   ` Andrey Albershteyn
2026-01-22 10:12     ` [f2fs-dev] " Andrey Albershteyn via Linux-f2fs-devel
2026-01-22 21:27   ` Darrick J. Wong
2026-01-22 21:27     ` [f2fs-dev] " Darrick J. Wong via Linux-f2fs-devel
2026-01-23  5:12     ` Christoph Hellwig
2026-01-23  5:12       ` [f2fs-dev] " Christoph Hellwig
2026-01-23  7:21       ` Darrick J. Wong
2026-01-23  7:21         ` [f2fs-dev] " Darrick J. Wong via Linux-f2fs-devel
2026-01-24 19:27   ` Eric Biggers
2026-01-24 19:27     ` [f2fs-dev] " Eric Biggers via Linux-f2fs-devel
2026-01-26  4:27     ` Christoph Hellwig
2026-01-26  4:27       ` [f2fs-dev] " Christoph Hellwig
2026-01-22  8:22 ` [PATCH 05/11] fsverity: kick off hash readahead at data I/O submission time Christoph Hellwig
2026-01-22  8:22   ` [f2fs-dev] " Christoph Hellwig
2026-01-22 21:42   ` Darrick J. Wong
2026-01-22 21:42     ` [f2fs-dev] " Darrick J. Wong via Linux-f2fs-devel
2026-01-23  5:14     ` Christoph Hellwig
2026-01-23  5:14       ` [f2fs-dev] " Christoph Hellwig
2026-01-23  7:22       ` Darrick J. Wong
2026-01-23  7:22         ` [f2fs-dev] " Darrick J. Wong via Linux-f2fs-devel
2026-01-24 20:53   ` Eric Biggers
2026-01-24 20:53     ` [f2fs-dev] " Eric Biggers via Linux-f2fs-devel
2026-01-26  4:30     ` Christoph Hellwig
2026-01-26  4:30       ` [f2fs-dev] " Christoph Hellwig
2026-01-22  8:22 ` [PATCH 06/11] fsverity: push out fsverity_info lookup Christoph Hellwig
2026-01-22  8:22   ` [f2fs-dev] " Christoph Hellwig
2026-01-22 21:45   ` Darrick J. Wong
2026-01-22 21:45     ` [f2fs-dev] " Darrick J. Wong via Linux-f2fs-devel
2026-01-24 21:19   ` Eric Biggers
2026-01-24 21:19     ` [f2fs-dev] " Eric Biggers via Linux-f2fs-devel
2026-01-26  4:33     ` Christoph Hellwig
2026-01-26  4:33       ` [f2fs-dev] " Christoph Hellwig
2026-01-22  8:22 ` [PATCH 07/11] fs: consolidate fsverity_info lookup in buffer.c Christoph Hellwig
2026-01-22  8:22   ` [f2fs-dev] " Christoph Hellwig
2026-01-22 21:49   ` Darrick J. Wong
2026-01-22 21:49     ` [f2fs-dev] " Darrick J. Wong via Linux-f2fs-devel
2026-01-23  5:15     ` Christoph Hellwig
2026-01-23  5:15       ` [f2fs-dev] " Christoph Hellwig
2026-01-23  7:23       ` Darrick J. Wong
2026-01-23  7:23         ` [f2fs-dev] " Darrick J. Wong via Linux-f2fs-devel
2026-01-23  7:24         ` Christoph Hellwig
2026-01-23  7:24           ` [f2fs-dev] " Christoph Hellwig
2026-01-22  8:22 ` [PATCH 08/11] ext4: consolidate fsverity_info lookup Christoph Hellwig
2026-01-22  8:22   ` [f2fs-dev] " Christoph Hellwig
2026-01-22 21:54   ` Darrick J. Wong
2026-01-22 21:54     ` [f2fs-dev] " Darrick J. Wong via Linux-f2fs-devel
2026-01-23  5:18     ` Christoph Hellwig
2026-01-23  5:18       ` [f2fs-dev] " Christoph Hellwig
2026-01-23  7:25       ` Darrick J. Wong
2026-01-23  7:25         ` [f2fs-dev] " Darrick J. Wong via Linux-f2fs-devel
2026-01-22  8:22 ` [PATCH 09/11] f2fs: " Christoph Hellwig
2026-01-22  8:22   ` [f2fs-dev] " Christoph Hellwig
2026-01-22  8:22 ` [PATCH 10/11] btrfs: " Christoph Hellwig
2026-01-22  8:22   ` [f2fs-dev] " Christoph Hellwig
2026-01-22  8:22 ` [PATCH 11/11] fsverity: use a hashtable to find the fsverity_info Christoph Hellwig
2026-01-22  8:22   ` [f2fs-dev] " Christoph Hellwig
2026-01-22 22:04   ` Darrick J. Wong
2026-01-22 22:04     ` [f2fs-dev] " Darrick J. Wong via Linux-f2fs-devel
2026-01-23  5:27     ` Christoph Hellwig [this message]
2026-01-23  5:27       ` Christoph Hellwig
2026-01-23  7:27       ` Darrick J. Wong
2026-01-23  7:27         ` [f2fs-dev] " Darrick J. Wong via Linux-f2fs-devel
2026-01-23  7:30         ` Christoph Hellwig
2026-01-23  7:30           ` [f2fs-dev] " Christoph Hellwig
2026-01-25  1:31   ` Eric Biggers
2026-01-25  1:31     ` [f2fs-dev] " Eric Biggers via Linux-f2fs-devel
2026-01-25 21:48     ` Matthew Wilcox
2026-01-25 21:48       ` [f2fs-dev] " Matthew Wilcox
2026-01-26  4:44       ` Christoph Hellwig
2026-01-26  4:44         ` [f2fs-dev] " Christoph Hellwig
2026-01-26 20:12         ` Eric Biggers
2026-01-26 20:12           ` [f2fs-dev] " Eric Biggers via Linux-f2fs-devel
2026-01-28 21:38           ` Matthew Wilcox
2026-01-28 21:38             ` [f2fs-dev] " Matthew Wilcox
2026-01-28 22:14             ` Eric Biggers
2026-01-28 22:14               ` [f2fs-dev] " Eric Biggers via Linux-f2fs-devel
2026-01-26  4:43     ` Christoph Hellwig
2026-01-26  4:43       ` [f2fs-dev] " Christoph Hellwig
2026-01-22 15:42 ` fsverity cleanups, speedup and memory usage optimization v2 David Sterba
2026-01-22 15:42   ` [f2fs-dev] " David Sterba
  -- strict thread matches above, loose matches on Subject: below --
2026-02-02  6:06 fsverity speedup and memory usage optimization v5 Christoph Hellwig
2026-02-02  6:06 ` [PATCH 11/11] fsverity: use a hashtable to find the fsverity_info Christoph Hellwig

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=20260123052723.GE24123@lst.de \
    --to=hch@lst.de \
    --cc=aalbersh@redhat.com \
    --cc=brauner@kernel.org \
    --cc=chao@kernel.org \
    --cc=djwong@kernel.org \
    --cc=dsterba@suse.com \
    --cc=ebiggers@kernel.org \
    --cc=fsverity@lists.linux.dev \
    --cc=jack@suse.cz \
    --cc=jaegeuk@kernel.org \
    --cc=linux-btrfs@vger.kernel.org \
    --cc=linux-ext4@vger.kernel.org \
    --cc=linux-f2fs-devel@lists.sourceforge.net \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=tytso@mit.edu \
    --cc=viro@zeniv.linux.org.uk \
    --cc=willy@infradead.org \
    /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
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.