mainlining shenanigans
Go to file
Dave Chinner 9a5280b312 xfs: reorder iunlink remove operation in xfs_ifree
The O_TMPFILE creation implementation creates a specific order of
operations for inode allocation/freeing and unlinked list
modification. Currently both are serialised by the AGI, so the order
doesn't strictly matter as long as the are both in the same
transaction.

However, if we want to move the unlinked list insertions largely out
from under the AGI lock, then we have to be concerned about the
order in which we do unlinked list modification operations.
O_TMPFILE creation tells us this order is inode allocation/free,
then unlinked list modification.

Change xfs_ifree() to use this same ordering on unlinked list
removal. This way we always guarantee that when we enter the
iunlinked list removal code from this path, we already have the AGI
locked and we don't have to worry about lock nesting AGI reads
inside unlink list locks because it's already locked and attached to
the transaction.

We can do this safely as the inode freeing and unlinked list removal
are done in the same transaction and hence are atomic operations
with respect to log recovery.


Reported-by: Frank Hofmann <fhofmann@cloudflare.com>
Fixes: 298f7bec50 ("xfs: pin inode backing buffer to the inode log item")
Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
2022-04-21 08:45:16 +10:00
arch Driver core changes for 5.18-rc2 2022-04-10 09:55:09 -10:00
block
certs
crypto
Documentation linux-kselftest-kunit-fixes-5.18-rc2 2022-04-08 15:06:11 -10:00
drivers Serial driver fix for 5.18-rc2 2022-04-10 10:08:50 -10:00
fs xfs: reorder iunlink remove operation in xfs_ifree 2022-04-21 08:45:16 +10:00
include Driver core changes for 5.18-rc2 2022-04-10 09:55:09 -10:00
init
ipc
kernel - A couple of fixes to cgroup-related handling of perf events 2022-04-10 07:08:22 -10:00
lib Driver core changes for 5.18-rc2 2022-04-10 09:55:09 -10:00
LICENSES
mm - Allow the compiler to optimize away unused percpu accesses and change 2022-04-10 06:56:46 -10:00
net
samples
scripts
security
sound
tools - Fix the MSI message data struct definition 2022-04-10 07:12:27 -10:00
usr
virt
.clang-format
.cocciconfig
.get_maintainer.ignore
.gitattributes
.gitignore
.mailmap
COPYING
CREDITS
Kbuild
Kconfig
MAINTAINERS MAINTAINERS: update IOMAP FILESYSTEM LIBRARY and XFS FILESYSTEM 2022-04-21 08:45:14 +10:00
Makefile Linux 5.18-rc2 2022-04-10 14:21:36 -10:00
README

Linux kernel
============

There are several guides for kernel developers and users. These guides can
be rendered in a number of formats, like HTML and PDF. Please read
Documentation/admin-guide/README.rst first.

In order to build the documentation, use ``make htmldocs`` or
``make pdfdocs``.  The formatted documentation can also be read online at:

    https://www.kernel.org/doc/html/latest/

There are various text files in the Documentation/ subdirectory,
several of them using the Restructured Text markup notation.

Please read the Documentation/process/changes.rst file, as it contains the
requirements for building and running the kernel, and information about
the problems which may result by upgrading your kernel.