zfs/include/os/linux/spl/sys
Aleksa Sarai dbf6108b4d zfs_rename: support RENAME_* flags
Implement support for Linux's RENAME_* flags (for renameat2). Aside from
being quite useful for userspace (providing race-free ways to exchange
paths and implement mv --no-clobber), they are used by overlayfs and are
thus required in order to use overlayfs-on-ZFS.

In order for us to represent the new renameat2(2) flags in the ZIL, we
create two new transaction types for the two flags which need
transactional-level support (RENAME_EXCHANGE and RENAME_WHITEOUT).
RENAME_NOREPLACE does not need any ZIL support because we know that if
the operation succeeded before creating the ZIL entry, there was no file
to be clobbered and thus it can be treated as a regular TX_RENAME.

Reviewed-by: Ryan Moeller <ryan@iXsystems.com>
Reviewed-by: Alexander Motin <mav@FreeBSD.org>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Pavel Snajdr <snajpa@snajpa.net>
Signed-off-by: Aleksa Sarai <cyphar@cyphar.com>
Closes #12209
Closes #14070
2022-10-28 09:49:20 -07:00
..
acl.h Clean up CSTYLEDs 2022-01-26 11:38:52 -08:00
atomic.h More aggsum optimizations 2021-06-07 09:02:47 -07:00
byteorder.h Reduce false positives from Static Analyzers 2022-09-30 15:30:12 -07:00
callb.h Replace ZFS on Linux references with OpenZFS 2020-10-08 20:10:13 -07:00
callo.h Replace ZFS on Linux references with OpenZFS 2020-10-08 20:10:13 -07:00
cmn_err.h Reduce false positives from Static Analyzers 2022-09-30 15:30:12 -07:00
condvar.h Replace ZFS on Linux references with OpenZFS 2020-10-08 20:10:13 -07:00
cred.h Support idmapped mount 2022-10-19 11:17:09 -07:00
ctype.h Replace ZFS on Linux references with OpenZFS 2020-10-08 20:10:13 -07:00
debug.h debug: add VERIFY_{IMPLY,EQUIV} variants 2022-10-28 09:48:43 -07:00
disp.h Cleanup: Use OpenSolaris functions to call scheduler 2022-09-12 09:55:37 -07:00
dkio.h Replace ZFS on Linux references with OpenZFS 2020-10-08 20:10:13 -07:00
errno.h Replace dead opensolaris.org license link 2022-07-11 14:16:13 -07:00
fcntl.h Replace ZFS on Linux references with OpenZFS 2020-10-08 20:10:13 -07:00
file.h Replace ZFS on Linux references with OpenZFS 2020-10-08 20:10:13 -07:00
inttypes.h Replace ZFS on Linux references with OpenZFS 2020-10-08 20:10:13 -07:00
isa_defs.h Handle aarch64 defines seperate from arm 2022-03-07 17:49:34 -08:00
kmem.h Reduce false positives from Static Analyzers 2022-09-30 15:30:12 -07:00
kmem_cache.h Enable -Wwrite-strings 2022-06-29 14:08:54 -07:00
kstat.h Cleanup: Switch to strlcpy from strncpy 2022-09-27 16:35:29 -07:00
list.h Replace ZFS on Linux references with OpenZFS 2020-10-08 20:10:13 -07:00
misc.h zed: mark disks as REMOVED when they are removed 2022-09-28 09:48:46 -07:00
mod_os.h Replace ZFS on Linux references with OpenZFS 2020-10-08 20:10:13 -07:00
mutex.h Clean up CSTYLEDs 2022-01-26 11:38:52 -08:00
param.h Replace ZFS on Linux references with OpenZFS 2020-10-08 20:10:13 -07:00
proc.h Replace ZFS on Linux references with OpenZFS 2020-10-08 20:10:13 -07:00
processor.h Replace ZFS on Linux references with OpenZFS 2020-10-08 20:10:13 -07:00
procfs_list.h Replace dead opensolaris.org license link 2022-07-11 14:16:13 -07:00
random.h FreeBSD: fix compilation of FreeBSD world after 29274c9f6 2021-06-25 10:28:51 -07:00
rwlock.h Clean up CSTYLEDs 2022-01-26 11:38:52 -08:00
shrinker.h Linux 6.0 compat: register_shrinker() now var-arg 2022-08-08 16:18:30 -07:00
sid.h Replace ZFS on Linux references with OpenZFS 2020-10-08 20:10:13 -07:00
signal.h Add SIGSTOP and SIGTSTP handling to issig 2021-04-15 13:34:35 -07:00
simd.h Replace ZFS on Linux references with OpenZFS 2020-10-08 20:10:13 -07:00
stat.h Replace ZFS on Linux references with OpenZFS 2020-10-08 20:10:13 -07:00
string.h Forbid b{copy,zero,cmp}(). Don't include <strings.h> for <string.h> 2022-03-15 15:13:48 -07:00
sunddi.h Remove hw_serial, ddi_strtoul() 2022-05-13 10:15:31 -07:00
sysmacros.h zfs_rename: support RENAME_* flags 2022-10-28 09:49:20 -07:00
systeminfo.h Replace ZFS on Linux references with OpenZFS 2020-10-08 20:10:13 -07:00
taskq.h module: icp: remove other provider types 2022-02-15 16:23:53 -08:00
thread.h Switch from _Noreturn to __attribute__((noreturn)) 2022-03-23 08:51:00 -07:00
time.h Replace ZFS on Linux references with OpenZFS 2020-10-08 20:10:13 -07:00
timer.h Replace ZFS on Linux references with OpenZFS 2020-10-08 20:10:13 -07:00
trace.h Replace dead opensolaris.org license link 2022-07-11 14:16:13 -07:00
trace_spl.h Replace dead opensolaris.org license link 2022-07-11 14:16:13 -07:00
trace_taskq.h Replace dead opensolaris.org license link 2022-07-11 14:16:13 -07:00
tsd.h Replace ZFS on Linux references with OpenZFS 2020-10-08 20:10:13 -07:00
types.h Support idmapped mount 2022-10-19 11:17:09 -07:00
types32.h Replace ZFS on Linux references with OpenZFS 2020-10-08 20:10:13 -07:00
uio.h zvol: Support blk-mq for better performance 2022-06-09 08:10:38 -06:00
user.h Replace ZFS on Linux references with OpenZFS 2020-10-08 20:10:13 -07:00
vfs.h Replace ZFS on Linux references with OpenZFS 2020-10-08 20:10:13 -07:00
vmem.h Replace ZFS on Linux references with OpenZFS 2020-10-08 20:10:13 -07:00
vmsystm.h Add membar_sync 2022-09-20 15:32:44 -07:00
vnode.h Consolidate zfs_holey and zfs_access 2020-10-31 09:40:08 -07:00
wait.h Replace ZFS on Linux references with OpenZFS 2020-10-08 20:10:13 -07:00
wmsum.h Introduce write-mostly sums 2021-05-27 14:27:29 -06:00
zmod.h Replace ZFS on Linux references with OpenZFS 2020-10-08 20:10:13 -07:00
zone.h Add Linux namespace delegation support 2022-06-10 09:51:46 -07:00