mirror_zfs/include/sys
Brian Behlendorf 664d487a5d Fix lseek(SEEK_DATA/SEEK_HOLE) mmap consistency
When using lseek(2) to report data/holes memory mapped regions of
the file were ignored.  This could result in incorrect results.
To handle this zfs_holey_common() was updated to asynchronously
writeback any dirty mmap(2) regions prior to reporting holes.

Additionally, while not strictly required, the dn_struct_rwlock is
now held over the dirty check to prevent the dnode structure from
changing.  This ensures that a clean dnode can't be dirtied before
the data/hole is located.  The range lock is now also taken to
ensure the call cannot race with zfs_write().

Furthermore, the code was refactored to provide a dnode_is_dirty()
helper function which checks the dnode for any dirty records to
determine its dirtiness.

Reviewed-by: Matthew Ahrens <mahrens@delphix.com>
Reviewed-by: Tony Hutter <hutter2@llnl.gov>
Reviewed-by: Rich Ercolani <rincebrain@gmail.com>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Issue #11900
Closes #12724
2021-11-05 08:08:55 -07:00
..
crypto gcc 11 cleanup 2021-06-24 13:13:40 -07:00
fm file reference counts can get corrupted 2021-09-14 12:37:38 -07:00
fs Add "compatibility" property for zpool feature sets 2021-02-17 21:30:45 -08:00
lua FreeBSD: Reduce stack usage of Lua 2020-09-22 16:03:11 -07:00
sysevent Avoid installing kernel headers on FreeBSD 2020-06-27 17:40:14 -07:00
zstd Fix cross-endian interoperability of zstd 2021-09-14 15:05:55 -07:00
abd_impl.h Fix abd leak, kmem_free correct size of abd_t 2021-09-14 12:22:28 -07:00
abd.h FreeBSD: Hardcode abd_chunk_size to PAGE_SIZE 2021-09-14 12:36:44 -07:00
aggsum.h More aggsum optimizations 2021-06-09 13:05:34 -07:00
arc_impl.h Remove b_pabd/b_rabd allocation from arc_hdr_alloc() 2021-09-14 14:31:50 -07:00
arc.h Restore FreeBSD sysctl processing for arc.min and arc.max 2021-09-14 14:31:01 -07:00
avl_impl.h
avl.h
bitops.h
blkptr.h
bplist.h
bpobj.h
bptree.h
bqueue.h
btree.h
dataset_kstats.h Introduce write-mostly sums 2021-06-09 13:05:34 -07:00
dbuf.h dprintf_dnode: strcpy -> strlcpy 2021-09-14 12:37:38 -07:00
ddt.h Appease GCC sprintf warnings found on Fedora 32/GCC 10.0.1 2020-08-24 10:32:59 -07:00
dmu_impl.h Remove UIO_ZEROCOPY functions structures 2020-10-30 10:00:33 -07:00
dmu_objset.h Re-embed multilist_t storage 2021-06-10 10:50:16 -07:00
dmu_recv.h Removed duplicated includes 2021-03-22 12:34:58 -07:00
dmu_redact.h Suppress cppcheck invalidSyntax warninigs 2021-03-05 17:56:35 -08:00
dmu_send.h Removed duplicated includes 2021-03-22 12:34:58 -07:00
dmu_traverse.h
dmu_tx.h Rename refcount.h to zfs_refcount.h 2020-07-29 16:35:33 -07:00
dmu_zfetch.h Split dmu_zfetch() speculation and execution parts 2021-03-19 22:56:11 -07:00
dmu.h Set aside a metaslab for ZIL blocks 2021-01-21 15:12:54 -08:00
dnode.h Fix lseek(SEEK_DATA/SEEK_HOLE) mmap consistency 2021-11-05 08:08:55 -07:00
dsl_bookmark.h Rename refcount.h to zfs_refcount.h 2020-07-29 16:35:33 -07:00
dsl_crypt.h
dsl_dataset.h implicit conversion from 'boolean_t' to 'ds_hold_flags_t' 2020-12-27 16:31:02 -08:00
dsl_deadlist.h
dsl_deleg.h
dsl_destroy.h
dsl_dir.h Introduce dsl_dir_diduse_transfer_space() 2021-09-14 12:38:51 -07:00
dsl_pool.h
dsl_prop.h
dsl_scan.h Use dsl_scan_setup_check() to setup a scrub 2021-04-14 13:19:49 -07:00
dsl_synctask.h Add upper bound for slop space calculation 2021-02-24 09:52:43 -08:00
dsl_userhold.h
edonr.h
efi_partition.h
frame.h Linux 5.10 compat: frame.h renamed objtool.h 2020-11-02 22:01:10 +00:00
hkdf.h
Makefile.am Restore FreeBSD resource usage accounting 2021-02-19 22:34:33 -08:00
metaslab_impl.h Optimize allocation throttling 2021-09-14 12:40:15 -07:00
metaslab.h Only examine best metaslabs on each vdev 2020-12-16 14:40:05 -08:00
mmp.h Add zfs_multihost_interval tunable handler for FreeBSD 2020-06-23 13:32:42 -07:00
mntent.h
mod.h Replace ZFS on Linux references with OpenZFS 2020-10-08 20:10:13 -07:00
multilist.h Re-embed multilist_t storage 2021-06-10 10:50:16 -07:00
note.h
nvpair_impl.h
nvpair.h FreeBSD: make adjustments for the standalone environment 2020-10-13 21:05:49 -07:00
objlist.h
pathname.h Replace ZFS on Linux references with OpenZFS 2020-10-08 20:10:13 -07:00
qat.h
range_tree.h
rrwlock.h Rename refcount.h to zfs_refcount.h 2020-07-29 16:35:33 -07:00
sa_impl.h Rename refcount.h to zfs_refcount.h 2020-07-29 16:35:33 -07:00
sa.h Extending FreeBSD UIO Struct 2021-01-20 21:27:30 -08:00
skein.h
spa_boot.h
spa_checkpoint.h
spa_checksum.h
spa_impl.h Optimize allocation throttling 2021-09-14 12:40:15 -07:00
spa_log_spacemap.h
spa.h Optimize small random numbers generation 2021-09-14 12:10:17 -07:00
space_map.h Extend zdb to print inconsistencies in livelists and metaslabs 2020-07-14 17:51:05 -07:00
space_reftree.h
sysevent.h
txg_impl.h
txg.h Distributed Spare (dRAID) Feature 2020-11-13 13:51:51 -08:00
u8_textprep_data.h
u8_textprep.h Throw const on some strings 2020-10-02 17:44:10 -07:00
uberblock_impl.h
uberblock.h
uio_impl.h Cleaning up uio headers 2021-02-20 20:16:50 -08:00
unique.h
uuid.h
vdev_disk.h
vdev_draid.h Fix various typos 2021-04-07 13:27:11 -07:00
vdev_file.h
vdev_impl.h Ratelimit deadman zevents as with delay zevents 2021-04-14 13:19:49 -07:00
vdev_indirect_births.h
vdev_indirect_mapping.h
vdev_initialize.h
vdev_raidz_impl.h Fix dRAID sequential resilver silent damage handling 2021-05-27 22:31:56 -07:00
vdev_raidz.h Clean up RAIDZ/DRAID ereport code 2021-03-19 16:22:10 -07:00
vdev_rebuild.h Fix various typos 2021-04-07 13:27:11 -07:00
vdev_removal.h
vdev_trim.h
vdev.h Use a helper function to clarify gang block size 2021-03-26 11:19:35 -07:00
xvattr.h
zap_impl.h
zap_leaf.h
zap.h
zcp_global.h
zcp_iter.h
zcp_prop.h
zcp_set.h
zcp.h filesystem_limit/snapshot_limit is incorrectly enforced against root 2020-07-11 17:18:02 -07:00
zfeature.h
zfs_acl.h
zfs_bootenv.h zfs label bootenv should store data as nvlist 2020-09-15 15:42:27 -07:00
zfs_context.h FreeBSD: fix compilation of FreeBSD world after 29274c9f6 2021-11-02 13:35:47 -07:00
zfs_debug.h Annotated dprintf as printf-like 2021-06-24 13:12:36 -07:00
zfs_delay.h
zfs_file.h file reference counts can get corrupted 2021-09-14 12:37:38 -07:00
zfs_fuid.h
zfs_ioctl_impl.h libzfs: On FreeBSD, use MNT_NOWAIT with getfsstat 2021-06-09 13:05:34 -07:00
zfs_ioctl.h file reference counts can get corrupted 2021-09-14 12:37:38 -07:00
zfs_onexit.h file reference counts can get corrupted 2021-09-14 12:37:38 -07:00
zfs_project.h
zfs_quota.h
zfs_racct.h Restore FreeBSD resource usage accounting 2021-02-19 22:34:33 -08:00
zfs_ratelimit.h
zfs_refcount.h Use more atomics in refcounts 2021-09-14 14:31:01 -07:00
zfs_rlock.h Add a "try" operation for range locks 2020-07-06 11:53:31 -07:00
zfs_sa.h Extending FreeBSD UIO Struct 2021-01-20 21:27:30 -08:00
zfs_stat.h
zfs_sysfs.h
zfs_vfsops.h Add 'zfs rename -u' to rename without remounting 2020-09-01 16:14:16 -07:00
zfs_vnops.h Extending FreeBSD UIO Struct 2021-01-20 21:27:30 -08:00
zfs_znode.h Rename zfs_inode_update to zfs_znode_update_vfs 2021-02-09 11:17:29 -08:00
zil_impl.h
zil.h Fix zfs_get_data access to files with wrong generation 2021-03-19 22:53:31 -07:00
zio_checksum.h
zio_compress.h Add zstd support to zfs 2020-08-20 10:30:06 -07:00
zio_crypt.h Rename refcount.h to zfs_refcount.h 2020-07-29 16:35:33 -07:00
zio_impl.h Add zstd support to zfs 2020-08-20 10:30:06 -07:00
zio_priority.h Add device rebuild feature 2020-07-03 11:05:50 -07:00
zio.h A few fixes of callback typecasting (for the upcoming ClangCFI) 2021-09-14 12:39:48 -07:00
zrlock.h
zthr.h Run arc_evict thread at higher priority 2021-09-14 14:30:13 -07:00
zvol_impl.h Fix zfs_get_data access to files with wrong generation 2021-03-19 22:53:31 -07:00
zvol.h