mirror_zfs/module/zfs
George Wilson 7a61440761 Illumos #3552
3552 condensing one space map burns 3 seconds of CPU in spa_sync()
     thread (fix race condition)

References:
  https://www.illumos.org/issues/3552
  illumos/illumos-gate@03f8c36688

Ported-by: Richard Yao <ryao@gentoo.org>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>

Porting notes:

This fixes an upstream regression that was introduced in commit
zfsonlinux/zfs@e51be06697, which
ported the Illumos 3552 changes. This fix was added to upstream
rather quickly, but at the time of the port, no one spotted it and
the race was rare enough that it passed our regression tests. I
discovered this when comparing our metaslab.c to the illumos
metaslab.c.

Without this change it is possible for metaslab_group_alloc() to
consume a large amount of cpu time.  Since this occurs under a
mutex in a rcu critical section the kernel will log this to the
console as a self-detected cpu stall as follows:

  INFO: rcu_sched self-detected stall on CPU { 0}
  (t=60000 jiffies g=11431890 c=11431889 q=18271)

Closes #1687
Closes #1720
Closes #1731
Closes #1747
2013-10-18 14:34:01 -07:00
..
arc.c Illumos #3464 2013-09-04 16:01:24 -07:00
bplist.c Illumos #3464 2013-09-04 16:01:24 -07:00
bpobj.c Illumos #3464 2013-09-04 16:01:24 -07:00
bptree.c Illumos #3498 panic in arc_read() 2013-07-02 13:34:31 -07:00
dbuf.c Illumos #3464 2013-09-04 16:01:24 -07:00
ddt_zap.c Add ddt_object_count() error handling 2012-10-29 08:57:45 -07:00
ddt.c Fix incorrect assertions in ddt_phys_decref and ddt_sync_entry 2013-05-06 14:10:55 -07:00
dmu_diff.c Illumos #3464 2013-09-04 16:01:24 -07:00
dmu_object.c Add linux kernel module support 2010-08-31 13:41:58 -07:00
dmu_objset.c Fix dmu_objset_find_dp() KM_SLEEP warning 2013-09-11 11:49:32 -07:00
dmu_send.c Illumos #3464 2013-09-04 16:01:24 -07:00
dmu_traverse.c Illumos #3464 2013-09-04 16:01:24 -07:00
dmu_tx.c Illumos #3464 2013-09-04 16:01:24 -07:00
dmu_zfetch.c Switch KM_SLEEP to KM_PUSHPAGE 2012-08-27 12:01:37 -07:00
dmu.c Illumos #3464 2013-09-04 16:01:24 -07:00
dnode_sync.c Illumos #3464 2013-09-04 16:01:24 -07:00
dnode.c Illumos #3464 2013-09-04 16:01:24 -07:00
dsl_dataset.c Illumos #3464 2013-09-04 16:01:24 -07:00
dsl_deadlist.c Illumos #3104: eliminate empty bpobjs 2013-01-08 10:35:43 -08:00
dsl_deleg.c Illumos #3464 2013-09-04 16:01:24 -07:00
dsl_destroy.c Reduce the stack usage of dsl_dataset_remove_clones_key 2013-09-25 15:18:32 -07:00
dsl_dir.c Illumos #3464 2013-09-04 16:01:24 -07:00
dsl_pool.c Export symbols dsl_pool_config_{enter,exit} 2013-10-10 16:56:51 -07:00
dsl_prop.c Export addition dsl_prop_* symbols 2013-09-25 15:44:22 -07:00
dsl_scan.c Illumos #3464 2013-09-04 16:01:24 -07:00
dsl_synctask.c Illumos #3464 2013-09-04 16:01:24 -07:00
dsl_userhold.c Fix several new KM_SLEEP warnings 2013-09-25 15:44:22 -07:00
fm.c Condition variable usage, zevent_cv 2012-10-15 16:01:54 -07:00
gzip.c Fix zmod.h usage in userspace 2010-08-31 08:38:46 -07:00
lz4.c Linux 3.9 compat: Undefine GCC_VERSION 2013-03-06 15:48:48 -08:00
lzjb.c Switch KM_SLEEP to KM_PUSHPAGE 2012-08-27 12:01:37 -07:00
Makefile.in Illumos #3464 2013-09-04 16:01:24 -07:00
metaslab.c Illumos #3552 2013-10-18 14:34:01 -07:00
refcount.c Illumos #3464 2013-09-04 16:01:24 -07:00
rrwlock.c Fix several new KM_SLEEP warnings 2013-09-25 15:44:22 -07:00
sa.c Illumos #3464 2013-09-04 16:01:24 -07:00
sha256.c Add linux sha2 support 2010-08-31 13:41:59 -07:00
spa_boot.c Add linux kernel module support 2010-08-31 13:41:58 -07:00
spa_config.c Illumos #3639 zpool.cache should skip over readonly pools 2013-08-07 16:13:56 -07:00
spa_errlog.c Add linux kernel module support 2010-08-31 13:41:58 -07:00
spa_history.c Fix memory leak false positive in log_internal() 2013-10-09 09:16:36 -07:00
spa_misc.c Fix spa_deadman() TQ_SLEEP warning 2013-09-25 15:38:44 -07:00
spa.c Fix spa_deadman() TQ_SLEEP warning 2013-09-25 15:38:44 -07:00
space_map.c Illumos #3464 2013-09-04 16:01:24 -07:00
txg.c Illumos #3464 2013-09-04 16:01:24 -07:00
uberblock.c Update core ZFS code from build 121 to build 141. 2010-05-28 13:45:14 -07:00
unique.c Switch KM_SLEEP to KM_PUSHPAGE 2012-08-27 12:01:37 -07:00
vdev_cache.c Switch KM_SLEEP to KM_PUSHPAGE 2012-08-27 12:01:37 -07:00
vdev_disk.c Use GFP_NOIO in vdev_disk_io_flush() 2013-07-10 14:12:21 -07:00
vdev_file.c Illumos #3581 spa_zio_taskq[ZIO_TYPE_FREE][ZIO_TASKQ_ISSUE]->tq_lock contention 2013-05-06 14:05:37 -07:00
vdev_label.c Illumos #3090 and #3102 2013-01-08 10:35:42 -08:00
vdev_mirror.c Removing unneeded mutex for reading vq_pending_tree size 2013-09-25 15:29:45 -07:00
vdev_missing.c Illumos #1948: zpool list should show more detailed pool info 2012-09-19 13:39:05 -07:00
vdev_queue.c Illumos #3618 ::zio dcmd does not show timestamp data 2013-08-12 16:46:50 -07:00
vdev_raidz.c Illumos #3006 2013-06-19 15:14:10 -07:00
vdev_root.c Illumos #1948: zpool list should show more detailed pool info 2012-09-19 13:39:05 -07:00
vdev.c Illumos #3618 ::zio dcmd does not show timestamp data 2013-08-12 16:46:50 -07:00
zap_leaf.c Switch KM_SLEEP to KM_PUSHPAGE 2012-09-05 08:44:58 -07:00
zap_micro.c Illumos #3006 2013-06-19 15:14:10 -07:00
zap.c Illumos #3006 2013-06-19 15:14:10 -07:00
zfeature_common.c Illumos #3035 LZ4 compression support in ZFS and GRUB 2013-01-29 09:28:20 -08:00
zfeature.c Illumos #3104: eliminate empty bpobjs 2013-01-08 10:35:43 -08:00
zfs_acl.c Avoid gcc -Werror=maybe-uninitialized warnings 2013-01-28 09:10:29 -08:00
zfs_byteswap.c Add linux kernel module support 2010-08-31 13:41:58 -07:00
zfs_ctldir.c Illumos #3464 2013-09-04 16:01:24 -07:00
zfs_debug.c Illumos #3006 2013-06-19 15:14:10 -07:00
zfs_dir.c Trivial spelling fix 2013-04-19 15:43:16 -07:00
zfs_fm.c 3246 ZFS I/O deadman thread 2013-05-01 17:05:52 -07:00
zfs_fuid.c Drop HAVE_XVATTR macros 2011-03-02 11:44:34 -08:00
zfs_ioctl.c Allocate the ioctl "output" nvlist with KM_PUSHPAGE. 2013-09-25 15:44:22 -07:00
zfs_log.c Revert "Remove TSD zfs_fsyncer_key" 2012-12-20 09:56:28 -08:00
zfs_onexit.c Fix several new KM_SLEEP warnings 2013-09-25 15:44:22 -07:00
zfs_replay.c Constify structures containing function pointers 2013-03-04 08:49:32 -08:00
zfs_rlock.c Illumos #3006 2013-06-19 15:14:10 -07:00
zfs_sa.c Revert "Use SA_HDL_PRIVATE for SA xattrs" 2012-08-25 09:25:56 -07:00
zfs_vfsops.c Illumos #3464 2013-09-04 16:01:24 -07:00
zfs_vnops.c Linux 3.11 compat: fops->iterate() 2013-08-15 16:19:07 -07:00
zfs_znode.c Fix uninitialized variables 2013-09-13 13:31:24 -07:00
zil.c Illumos #3464 2013-09-04 16:01:24 -07:00
zio_checksum.c Update core ZFS code from build 121 to build 141. 2010-05-28 13:45:14 -07:00
zio_compress.c Illumos #3035 LZ4 compression support in ZFS and GRUB 2013-01-29 09:28:20 -08:00
zio_inject.c 3246 ZFS I/O deadman thread 2013-05-01 17:05:52 -07:00
zio.c Illumos #3464 2013-09-04 16:01:24 -07:00
zle.c Update core ZFS code from build 121 to build 141. 2010-05-28 13:45:14 -07:00
zpl_ctldir.c Linux 3.11 compat: fops->iterate() 2013-08-15 16:19:07 -07:00
zpl_export.c Implement .commit_metadata hook for NFS export 2012-10-03 10:49:45 -07:00
zpl_file.c Linux 3.11 compat: fops->iterate() 2013-08-15 16:19:07 -07:00
zpl_inode.c Fix zpl_mknod() return values 2013-09-13 13:31:24 -07:00
zpl_super.c Fix arc_adapt() spinning in iterate_supers_type() 2013-07-17 09:28:06 -07:00
zpl_xattr.c Use directory xattrs for symlinks 2013-08-22 13:30:44 -07:00
zrlock.c Export ZFS symbols needed by Lustre. 2010-09-17 16:24:15 -07:00
zvol.c Illumos #3464 2013-09-04 16:01:24 -07:00