mirror_zfs/module/os/freebsd/zfs
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
..
abd_os.c FreeBSD: use zero_region instead of allocating a dedicated page 2022-05-04 11:46:37 -07:00
arc_os.c Cleanup: Specify unsignedness on things that should not be signed 2022-09-27 16:42:41 -07:00
crypto_os.c FreeBSD: Improve crypto_dispatch() handling 2022-06-17 15:38:51 -07:00
dmu_os.c Remove bcopy(), bzero(), bcmp() 2022-03-15 15:13:42 -07:00
event_os.c FreeBSD: add knlist_init_sx() for exclusive locks 2022-09-06 09:48:57 -07:00
hkdf.c Remove bcopy(), bzero(), bcmp() 2022-03-15 15:13:42 -07:00
kmod_core.c FreeBSD: Replace legacy make_dev() interface usage 2022-09-08 10:40:18 -07:00
spa_os.c FreeBSD: Fix uninitialized pointer read in spa_import_rootpool() 2022-09-20 14:43:03 -07:00
sysctl_os.c Cleanup: 64-bit kernel module parameters should use fixed width types 2022-10-13 10:03:29 -07:00
vdev_file.c Cleanup: 64-bit kernel module parameters should use fixed width types 2022-10-13 10:03:29 -07:00
vdev_geom.c Improve too large physical ashift handling 2022-09-08 10:30:53 -07:00
vdev_label_os.c Replace dead opensolaris.org license link 2022-07-11 14:16:13 -07:00
zfs_acl.c Support idmapped mount 2022-10-19 11:17:09 -07:00
zfs_ctldir.c FreeBSD: stop passing LK_INTERLOCK to VOP_LOCK 2022-09-19 17:17:27 -07:00
zfs_debug.c Cleanup: Specify unsignedness on things that should not be signed 2022-09-27 16:42:41 -07:00
zfs_dir.c Support idmapped mount 2022-10-19 11:17:09 -07:00
zfs_file_os.c FreeBSD: handle V_PCATCH 2022-09-20 15:22:32 -07:00
zfs_ioctl_compat.c FreeBSD compile fix 2022-07-28 14:19:41 -07:00
zfs_ioctl_os.c libzfs: On FreeBSD, use MNT_NOWAIT with getfsstat 2021-06-08 07:36:43 -06:00
zfs_racct.c module: zfs: fix unused, remove argsused 2021-12-23 09:42:47 -08:00
zfs_vfsops.c FreeBSD: Fix a pair of bugs in zfs_fhtovp() 2022-10-11 12:29:55 -07:00
zfs_vnops_os.c zfs_rename: support RENAME_* flags 2022-10-28 09:49:20 -07:00
zfs_znode.c Support idmapped mount 2022-10-19 11:17:09 -07:00
zio_crypt.c Cleanup: Address Clang's static analyzer's unused code complaints 2022-10-14 13:37:54 -07:00
zvol_os.c FreeBSD: add kqfilter support for zvol cdev 2022-09-06 09:49:33 -07:00