mirror_zfs/module/zfs
Tom Caputi 440a3eb939 Fixes for #6639
Several issues were uncovered by running stress tests with zfs
encryption and raw sends in particular. The issues and their
associated fixes are as follows:

* arc_read_done() has the ability to chain several requests for
  the same block of data via the arc_callback_t struct. In these
  cases, the ARC would only use the first request's dsobj from
  the bookmark to decrypt the data. This is problematic because
  the first request might be a prefetch zio which is able to
  handle the key not being loaded, while the second might use a
  different key that it is sure will work. The fix here is to
  pass the dsobj with each individual arc_callback_t so that each
  request can attempt to decrypt the data separately.

* DRR_FREE and DRR_FREEOBJECT records in a send file were not
  having their transactions properly tagged as raw during raw
  sends, which caused a panic when the dbuf code attempted to
  decrypt these blocks.

* traverse_prefetch_metadata() did not properly set
  ZIO_FLAG_SPECULATIVE when issuing prefetch IOs.

* Added a few asserts and code cleanups to ensure these issues
  are more detectable in the future.

Signed-off-by: Tom Caputi <tcaputi@datto.com>
2017-10-11 16:55:50 -04:00
..
abd.c Fix abdstats kstat on 32-bit systems 2017-10-06 11:23:12 -07:00
arc.c Fixes for #6639 2017-10-11 16:55:50 -04:00
blkptr.c Use SET_ERROR for constant non-zero return codes 2017-08-02 21:16:12 -07:00
bplist.c Change KM_PUSHPAGE -> KM_SLEEP 2015-01-16 14:41:26 -08:00
bpobj.c Don't dirty bpobj if it has no entries 2017-05-26 11:42:10 -07:00
bptree.c Native Encryption for ZFS on Linux 2017-08-14 10:36:48 -07:00
bqueue.c Call cv_signal() with mutex held 2017-06-26 14:36:49 -07:00
dbuf_stats.c Improved dnode allocation and dmu_hold_impl() 2017-09-05 16:15:04 -07:00
dbuf.c Fixes for #6639 2017-10-11 16:55:50 -04:00
ddt_zap.c
ddt.c Native Encryption for ZFS on Linux 2017-08-14 10:36:48 -07:00
dmu_diff.c
dmu_object.c Improved dnode allocation and dmu_hold_impl() 2017-09-05 16:15:04 -07:00
dmu_objset.c Encryption patch follow-up 2017-10-11 16:54:48 -04:00
dmu_send.c Fixes for #6639 2017-10-11 16:55:50 -04:00
dmu_traverse.c Fixes for #6639 2017-10-11 16:55:50 -04:00
dmu_tx.c Export symbol dmu_tx_mark_netfree() 2017-09-20 09:30:24 -07:00
dmu_zfetch.c
dmu.c Fixes for #6639 2017-10-11 16:55:50 -04:00
dnode_sync.c Native Encryption for ZFS on Linux 2017-08-14 10:36:48 -07:00
dnode.c Improved dnode allocation and dmu_hold_impl() 2017-09-05 16:15:04 -07:00
dsl_bookmark.c
dsl_crypt.c Encryption patch follow-up 2017-10-11 16:54:48 -04:00
dsl_dataset.c Native Encryption for ZFS on Linux 2017-08-14 10:36:48 -07:00
dsl_deadlist.c
dsl_deleg.c
dsl_destroy.c Native Encryption for ZFS on Linux 2017-08-14 10:36:48 -07:00
dsl_dir.c Native Encryption for ZFS on Linux 2017-08-14 10:36:48 -07:00
dsl_pool.c Native Encryption for ZFS on Linux 2017-08-14 10:36:48 -07:00
dsl_prop.c Native Encryption for ZFS on Linux 2017-08-14 10:36:48 -07:00
dsl_scan.c OpenZFS 8414 - Implemented zpool scrub pause/resume 2017-08-24 10:27:20 -07:00
dsl_synctask.c
dsl_userhold.c
edonr_zfs.c
fm.c
gzip.c GZIP compression offloading with QAT accelerator 2017-03-22 17:58:47 -07:00
hkdf.c Encryption patch follow-up 2017-10-11 16:54:48 -04:00
lz4.c
lzjb.c Change KM_PUSHPAGE -> KM_SLEEP 2015-01-16 14:41:26 -08:00
Makefile.in Encryption patch follow-up 2017-10-11 16:54:48 -04:00
metaslab.c Relax ASSERT for #6526 2017-10-11 16:53:37 -04:00
mmp.c Reimplement vdev_random_leaf and rename it 2017-09-22 14:29:26 -07:00
multilist.c OpenZFS 7968 - multi-threaded spa_sync() 2017-03-20 18:36:00 -07:00
pathname.c Add pn_alloc()/pn_free() functions 2016-04-21 09:49:25 -07:00
policy.c codebase style improvements for OpenZFS 6459 port 2017-01-22 13:25:40 -08:00
qat_compress.c
qat_compress.h
range_tree.c
refcount.c Linux 4.11 compat: avoid refcount_t name conflict 2017-02-28 16:10:18 -08:00
rrwlock.c Fix spelling 2017-01-03 11:31:18 -06:00
sa.c Fix coverity defects: CID 147474 2017-10-10 16:41:47 -07:00
sha256.c DLPX-44812 integrate EP-220 large memory scalability 2016-11-29 14:34:27 -08:00
skein_zfs.c
spa_boot.c
spa_config.c Fix false config_cache_write events 2017-09-11 10:25:01 -07:00
spa_errlog.c Native Encryption for ZFS on Linux 2017-08-14 10:36:48 -07:00
spa_history.c Native Encryption for ZFS on Linux 2017-08-14 10:36:48 -07:00
spa_misc.c vdev_mirror: kstat observables for preferred vdev 2017-08-21 10:05:54 -07:00
spa_stats.c Update the default for zfs_txg_history 2017-09-29 15:58:52 -07:00
spa.c Native Encryption for ZFS on Linux 2017-08-14 10:36:48 -07:00
space_map.c
space_reftree.c
trace.c OpenZFS 6531 - Provide mechanism to artificially limit disk performance 2016-05-26 10:11:51 -07:00
txg.c Simplify threads, mutexs, cvs and rwlocks 2017-08-11 08:51:44 -07:00
uberblock.c Multi-modifier protection (MMP) 2017-07-13 13:54:00 -04:00
unique.c Performance optimization of AVL tree comparator functions 2016-08-31 14:35:34 -07:00
vdev_cache.c
vdev_disk.c Fix printk() calls missing log level 2017-09-25 10:38:27 -07:00
vdev_file.c
vdev_label.c Use linear abd in vdev_copy_uberblocks() 2017-10-05 19:30:02 -07:00
vdev_mirror.c vdev_mirror: kstat observables for preferred vdev 2017-08-21 10:05:54 -07:00
vdev_missing.c
vdev_queue.c vdev_mirror: load balancing fixes 2017-08-21 10:05:16 -07:00
vdev_raidz_math_aarch64_neon_common.h
vdev_raidz_math_aarch64_neon.c
vdev_raidz_math_aarch64_neonx2.c
vdev_raidz_math_avx2.c
vdev_raidz_math_avx512bw.c
vdev_raidz_math_avx512f.c
vdev_raidz_math_impl.h
vdev_raidz_math_scalar.c
vdev_raidz_math_sse2.c
vdev_raidz_math_ssse3.c
vdev_raidz_math.c
vdev_raidz.c Native Encryption for ZFS on Linux 2017-08-14 10:36:48 -07:00
vdev_root.c
vdev.c Native Encryption for ZFS on Linux 2017-08-14 10:36:48 -07:00
zap_leaf.c
zap_micro.c
zap.c
zfeature.c Native Encryption for ZFS on Linux 2017-08-14 10:36:48 -07:00
zfs_acl.c Native Encryption for ZFS on Linux 2017-08-14 10:36:48 -07:00
zfs_byteswap.c
zfs_ctldir.c
zfs_debug.c
zfs_dir.c
zfs_fm.c Native Encryption for ZFS on Linux 2017-08-14 10:36:48 -07:00
zfs_fuid.c
zfs_ioctl.c Retire send space estimation via ZFS_IOC_SEND 2017-08-31 09:00:35 -07:00
zfs_log.c
zfs_onexit.c
zfs_ratelimit.c
zfs_replay.c Enhance comments for large dnode project 2017-08-29 09:00:28 -07:00
zfs_rlock.c
zfs_sa.c Modifying XATTRs doesnt change the ctime 2017-09-13 12:20:07 -07:00
zfs_vfsops.c Fix remounting snapshots read-write 2017-08-17 14:28:17 -07:00
zfs_vnops.c Fixes for #6639 2017-10-11 16:55:50 -04:00
zfs_znode.c misc: fix meaningless values 2017-09-19 12:19:08 -07:00
zil.c Encryption patch follow-up 2017-10-11 16:54:48 -04:00
zio_checksum.c Native Encryption for ZFS on Linux 2017-08-14 10:36:48 -07:00
zio_compress.c
zio_crypt.c Encryption patch follow-up 2017-10-11 16:54:48 -04:00
zio_inject.c Add corruption failure option to zinject(8) 2017-08-14 15:17:15 -07:00
zio.c Encryption patch follow-up 2017-10-11 16:54:48 -04:00
zle.c
zpl_ctldir.c
zpl_export.c
zpl_file.c misc: fix meaningless values 2017-09-19 12:19:08 -07:00
zpl_inode.c
zpl_super.c
zpl_xattr.c Modifying XATTRs doesnt change the ctime 2017-09-13 12:20:07 -07:00
zrlock.c OpenZFS 3746 - ZRLs are racy 2017-01-23 10:35:58 -08:00
zvol.c Linux 3.14 compat: IO acct, global_page_state, etc 2017-09-16 11:00:19 -07:00