freebsd-dev/sys
Andriy Gapon 6f2f8727e3 MFV r322238: 7915 checks in l2arc_evict could use some cleaning up
illumos/illumos-gate@267ae6c3a8
267ae6c3a8

https://www.illumos.org/issues/7915
  l2arc_evict() is strictly serialized with respect to
  l2arc_write_buffers() and l2arc_write_done().  Normally, l2arc_evict()
  and l2arc_write_buffers() are called from the same thread, so they can
  not be concurrent.  Also, l2arc_write_buffers() uses zio_wait() on the
  parent zio of all cache zio-s.  That ensures that l2arc_write_done()
  is completed before l2arc_write_buffers() returns.  Finally, if a
  cache device is removed, then l2arc_evict() is called under SCL_ALL in
  the exclusive mode.  That ensures that it can not be concurrent with
  the normal L2ARC accesses to the device (including writing and
  evicting buffers).  Given the above, some checks and actions in
  l2arc_evict() do not make sense.  For instance, it must never
  encounter the write head header let alone remove it from the buffer
  list.

Reviewed by: Dan Kimmel <dan.kimmel@delphix.com>
Reviewed by: Prakash Surya <prakash.surya@delphix.com>
Approved by: Matthew Ahrens <mahrens@delphix.com>
Author: Andriy Gapon <avg@FreeBSD.org>

MFC after:	2 weeks
2017-08-08 11:19:14 +00:00
..
amd64 Avoid DI recursion when reclaim_pv_chunk() is called from 2017-08-07 17:29:54 +00:00
arm arm: Add a GENERIC-NODEBUG kernel config 2017-08-03 19:01:46 +00:00
arm64 Mark each cpu in the appropriate cpuset_domain set. This allows devices to 2017-08-05 20:57:34 +00:00
boot libefi/time.c cstyle cleanup 2017-08-05 05:20:03 +00:00
bsm
cam Add nvd alias to nda ndoes. 2017-08-07 21:12:43 +00:00
cddl MFV r322238: 7915 checks in l2arc_evict could use some cleaning up 2017-08-08 11:19:14 +00:00
compat Add round_jiffies_up(), local_clock() and __setup_timer() to the LinuxKPI. 2017-08-08 04:34:02 +00:00
conf cxgbe(4): Add the T6 and T5 Unified Wire configuration files to the 2017-08-07 14:04:19 +00:00
contrib Fix matchcing of NATed ICMP queries (resolving NATed MTU discovery). 2017-08-05 00:28:42 +00:00
crypto
ddb
dev - If available, use TRIM instead of ERASE for implementing BIO_DELETE. 2017-08-07 23:33:05 +00:00
fs Bump the maximum file name length in pseudofs filesystems to 48. 2017-08-03 21:35:53 +00:00
gdb
geom Eliminate useless adjustments of aliased device. 2017-08-07 22:42:46 +00:00
gnu
i386 Detect hypervisors early. We used to set lower hz on hypervisors by default 2017-08-05 06:56:46 +00:00
isa
kern o Replace __riscv__ with __riscv 2017-08-07 14:09:57 +00:00
kgssapi
libkern
mips
modules o Replace __riscv__ with __riscv 2017-08-07 14:09:57 +00:00
net Add inpcb pointer to struct ipsec_ctx_data and pass it to the pfil hook 2017-07-31 11:04:35 +00:00
net80211 sys/net8021: Add missing braces in setcurchan(). 2017-08-01 03:13:43 +00:00
netgraph
netinet
netinet6
netipsec Add inpcb pointer to struct ipsec_ctx_data and pass it to the pfil hook 2017-07-31 11:04:35 +00:00
netpfil
netsmb
nfs Improve FHA locality control for NFS read/write requests. 2017-07-31 15:23:19 +00:00
nfsclient
nfsserver
nlm
ofed Change reject message type when destroying cm_id in ibore. 2017-08-03 09:31:10 +00:00
opencrypto
powerpc
riscv
rpc
security
sparc64
sys o Replace __riscv__ with __riscv 2017-08-07 14:09:57 +00:00
teken
tests
tools
ufs Avoid reading a snapshot block when it is already in the cache. 2017-07-31 20:41:45 +00:00
vm
x86 Detect hypervisors early. We used to set lower hz on hypervisors by default 2017-08-05 06:56:46 +00:00
xdr
xen
Makefile