linux-xiaomi-chiron/include
Chuck Lever fb70bf124b NFSD: Instantiate a struct file when creating a regular NFSv4 file
There have been reports of races that cause NFSv4 OPEN(CREATE) to
return an error even though the requested file was created. NFSv4
does not provide a status code for this case.

To mitigate some of these problems, reorganize the NFSv4
OPEN(CREATE) logic to allocate resources before the file is actually
created, and open the new file while the parent directory is still
locked.

Two new APIs are added:

+ Add an API that works like nfsd_file_acquire() but does not open
the underlying file. The OPEN(CREATE) path can use this API when it
already has an open file.

+ Add an API that is kin to dentry_open(). NFSD needs to create a
file and grab an open "struct file *" atomically. The
alloc_empty_file() has to be done before the inode create. If it
fails (for example, because the NFS server has exceeded its
max_files limit), we avoid creating the file and can still return
an error to the NFS client.

BugLink: https://bugzilla.linux-nfs.org/show_bug.cgi?id=382
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Tested-by: JianHong Yin <jiyin@redhat.com>
2022-05-23 11:06:29 -04:00
..
acpi ACPI: bus: Eliminate acpi_bus_get_device() 2022-04-05 19:49:26 +02:00
asm-generic bug: Have __warn() prototype defined unconditionally 2022-04-26 10:59:57 +02:00
clocksource clocksource/drivers/arm_arch_timer: Use event stream scaling when available 2022-03-07 18:27:22 +01:00
crypto Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 2022-03-21 16:02:36 -07:00
drm drm-misc-next for v5.18: 2022-03-04 13:41:57 +10:00
dt-bindings dt-bindings: clk: mpfs: add defines for two new clocks 2022-04-22 18:40:15 -07:00
keys KEYS: Introduce link restriction for machine keys 2022-03-08 13:55:52 +02:00
kunit
kvm Merge branch kvm-arm64/psci-1.1 into kvmarm-master/next 2022-02-25 13:49:48 +00:00
linux NFSD: Instantiate a struct file when creating a regular NFSv4 file 2022-05-23 11:06:29 -04:00
math-emu
media media: m5mols: Convert to use GPIO descriptors 2022-03-04 09:36:26 +02:00
memory memory: renesas-rpc-if: Fix HF/OSPI data transfer in Manual Mode 2022-04-21 17:00:24 +02:00
misc
net Bluetooth: Fix the creation of hdev->name 2022-05-11 17:18:42 -07:00
pcmcia
ras mm/memory-failure.c: fix race with changing page compound again 2022-03-22 15:57:07 -07:00
rdma uaccess: remove CONFIG_SET_FS 2022-02-25 09:36:06 +01:00
scsi scsi: iscsi: Fix NOP handling during conn recovery 2022-04-11 22:09:35 -04:00
soc net: mscc: ocelot: mark traps with a bool instead of keeping them in a list 2022-05-05 19:15:14 -07:00
sound ASoC: Fixes for v5.18 2022-04-19 17:26:01 +02:00
target scsi: target: Add iscsi/cpus_allowed_list in configfs 2022-03-14 23:40:36 -04:00
trace SUNRPC: Remove svc_rqst::rq_xprt_hlen 2022-05-19 12:25:39 -04:00
uapi Networking fixes for 5.18-rc7, including fixes from wireless, 2022-05-12 11:51:45 -07:00
vdso
video drm/exynos: fimd: add BGR support for exynos4/5 2022-03-04 17:13:52 +09:00
xen xen/grant-table: remove readonly parameter from functions 2022-03-15 20:34:40 -05:00