mirror_zfs/module/os/linux/zfs
Ryan Moeller cda6fdd500 Intentionally allow ZFS_READONLY in zfs_write
ZFS_READONLY represents the "DOS R/O" attribute.
When that flag is set, we should behave as if write access
were not granted by anything in the ACL.  In particular:
We _must_ allow writes after opening the file r/w, then
setting the DOS R/O attribute, and writing some more.
(Similar to how you can write after fchmod(fd, 0444).)

Restore these semantics which were lost on FreeBSD when refactoring
zfs_write.  To my knowledge Linux does not actually expose this flag,
but we'll need it to eventually so I've added the supporting checks.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
Closes #11693
2021-03-08 09:07:29 -08:00
..
abd_os.c Include scatter_chunk_waste in arc_size 2020-08-17 20:04:04 -07:00
arc_os.c Linux 5.9 compat: NR_SLAB_RECLAIMABLE 2020-08-30 14:18:50 -07:00
Makefile.in Restore FreeBSD resource usage accounting 2021-03-05 12:50:32 -08:00
mmp_os.c Add zfs_multihost_interval tunable handler for FreeBSD 2020-06-23 13:32:42 -07:00
policy.c Share zfs_fsync, zfs_read, zfs_write, et al between Linux and FreeBSD 2020-12-23 14:34:59 -08:00
qat_compress.c Fix QAT allocation failure return value 2020-01-06 11:17:53 -08:00
qat_crypt.c QAT related bug fixes 2019-09-12 13:33:44 -07:00
qat.c QAT related bug fixes 2019-09-12 13:33:44 -07:00
spa_misc_os.c Make spa_history_zone platform-dependent in kernel 2020-03-02 09:43:30 -08:00
trace.c Enable use of DTRACE_PROBE* macros in "spl" module 2019-11-01 13:13:43 -07:00
vdev_disk.c Linux 5.12 compat: bio->bi_disk member moved 2021-03-05 12:57:46 -08:00
vdev_file.c vdev_ashift should only be set once 2020-09-18 12:40:20 -07:00
zfs_acl.c Intentionally allow ZFS_READONLY in zfs_write 2021-03-08 09:07:29 -08:00
zfs_ctldir.c G/C struct znode -> z_moved 2020-11-11 11:40:15 -08:00
zfs_debug.c FreeBSD: Add support for procfs_list 2020-10-01 12:18:56 -07:00
zfs_dir.c Throw const on some strings 2020-10-16 12:55:56 -07:00
zfs_file_os.c Re-share zfsdev_getminor and zfs_onexit_fd_hold 2020-02-28 14:50:32 -08:00
zfs_ioctl_os.c Linux: increase max nvlist_src size 2021-03-05 12:54:57 -08:00
zfs_racct.c Restore FreeBSD resource usage accounting 2021-03-05 12:50:32 -08:00
zfs_sysfs.c Persistent L2ARC 2020-04-10 10:33:35 -07:00
zfs_uio.c Linux 5.10 compat: restore custom uio_prefaultpages() 2021-01-22 09:58:49 -08:00
zfs_vfsops.c Fix possibly uninitialized 'root_inode' variable warning 2020-12-23 14:34:59 -08:00
zfs_vnops_os.c Fix zrele race in zrele_async that can cause hang 2021-01-28 11:39:13 -08:00
zfs_znode.c Share zfs_fsync, zfs_read, zfs_write, et al between Linux and FreeBSD 2020-12-23 14:34:59 -08:00
zio_crypt.c Initialize ZIL buffers 2021-03-08 09:07:21 -08:00
zpl_ctldir.c Linux: Fix ZFS_ENTER/ZFS_EXIT/ZFS_VERFY_ZP usage 2020-11-14 10:51:27 -08:00
zpl_export.c Eliminate Linux specific inode usage from common code 2019-12-11 11:53:57 -08:00
zpl_file.c VZ 7 kernel compat: introduce ITER-enabled .direct_IO() via IOVECs 2021-01-05 10:33:41 -08:00
zpl_inode.c Linux 5.10 compat: use iov_iter in uio structure 2020-12-23 14:35:39 -08:00
zpl_super.c Linux: Fix ZFS_ENTER/ZFS_EXIT/ZFS_VERFY_ZP usage 2020-11-14 10:51:27 -08:00
zpl_xattr.c Linux 5.10 compat: use iov_iter in uio structure 2020-12-23 14:35:39 -08:00
zvol_os.c Linux 5.12 compat: bio->bi_disk member moved 2021-03-05 12:57:46 -08:00