Mateusz Guzik 8e3447822d
vfs: remove redundant smp_mb for thp handling in do_dentry_open
opening for write performs:

if (f->f_mode & FMODE_WRITE) {
[snip]
        smp_mb();
        if (filemap_nr_thps(inode->i_mapping)) {
[snip]
        }
}

filemap_nr_thps on kernels built without CONFIG_READ_ONLY_THP_FOR
expands to 0, allowing the compiler to eliminate the entire thing, with
exception of the fence (and the branch leading there).

So happens required synchronisation between i_writecount and nr_thps
changes is already provided by the full fence coming from
get_write_access -> atomic_inc_unless_negative, thus the smp_mb instance
above can be removed regardless of CONFIG_READ_ONLY_THP_FOR.

While I updated commentary in places claiming to match the now-removed
fence, I did not try to patch them to act on the compile option.

I did not bother benchmarking it, not issuing a spurious full fence in
the fast path does not warrant justification from perf standpoint.

Signed-off-by: Mateusz Guzik <mjguzik@gmail.com>
Link: https://lore.kernel.org/r/20240624085402.493630-1-mjguzik@gmail.com
Signed-off-by: Christian Brauner <brauner@kernel.org>
2024-06-25 11:15:48 +02:00
..
2024-05-01 18:07:38 +01:00
2024-05-13 12:14:03 -07:00
2024-01-11 20:11:35 -08:00
2024-05-24 09:07:22 -07:00
2024-05-24 09:40:31 -07:00
2024-05-13 14:14:05 -07:00
2024-05-24 09:31:50 -07:00
2024-05-21 09:51:42 -07:00
2024-05-21 09:51:42 -07:00
2024-05-18 12:39:20 -07:00
2024-05-21 09:51:42 -07:00
2024-03-27 13:17:15 +01:00
2024-05-23 13:51:09 -07:00
2024-05-25 14:19:01 -07:00
2024-05-22 09:23:18 -07:00
2024-03-27 13:17:15 +01:00
2024-04-23 13:27:43 +02:00
2024-04-23 15:37:02 +02:00
2024-06-25 11:15:48 +02:00
2024-05-02 20:35:57 +02:00
2024-05-21 09:51:42 -07:00
2024-05-23 12:04:36 -07:00
2024-04-25 20:56:20 -07:00
2024-05-10 08:26:31 +02:00
2024-03-12 20:03:34 -07:00
2024-06-25 11:15:48 +02:00
2024-05-02 20:35:57 +02:00
2024-04-17 13:49:44 +02:00
2024-03-11 10:21:06 -07:00
2024-06-21 11:41:04 +02:00
2024-03-13 12:53:53 -07:00
2024-02-02 13:11:49 +01:00
2024-03-12 20:03:34 -07:00
2024-05-02 16:28:20 +02:00
2024-04-10 16:23:04 -06:00
\n
2024-05-20 12:31:43 -07:00
2024-04-10 16:23:02 -06:00
2024-02-15 23:43:47 -05:00