On Thu, Jul 17, 2025 at 05:08:11PM +0200, Mikulas Patocka wrote:
> Hi
> 
> I wouldn't do this - these sorts of changes will cause problems when 
> backporting bugfixes to the stable kernel branches.
> 
> Mikulas

Sure, but doing the right thing in mainline takes priority over ease of
backports.

The naming here is challenging, and it is annoying that the UAPIs
"try_verify_in_tasklet" and "use_bh_bytes" are stuck with misleading
names that are tied to obsolete implementation details.  But for the
internal names I do think this patch is an improvement.  There are 4
cases for how data verification can happen now:

    1. In a kworker, via a regular workqueue.

    2. (When try_verify_in_tasklet=true)
       Inline in verity_end_io() in softirq context.  This happens when
       verity_end_io() is invoked in the BLOCK_SOFTIRQ.

    3. (When try_verify_in_tasklet=true)
       Inline in verity_end_io() in task context.  This happens when
       verity_end_io() is invoked by kworker, e.g. the loop device's.

    4. (When try_verify_in_tasklet=true)
       In a softirq following verity_end_io(), via the BH workqueue.
       This happens when verity_end_io() is invoked in hardirq context.

The name "in_bh" is wrong for case (3).  The name "use_bh_wq_enabled" is
wrong for cases (2) and (3).

But "in_bh" really just tracks whether sleeping code paths should be
executed or not.  "may_sleep" better reflects that.

For the rest, I think calling (2) through (4) "inline verification"
makes sense.  It clearly fits cases (2) and (3).  It's somewhat of a
stretch for (4); however, it's still "inline" in the sense that it tends
to happen in the same non-schedulable section as the hardirq itself.

Naming things is hard...

- Eric

Reply via email to