OpenZFS 7915 - checks in l2arc_evict could use some cleaning up

Authored by: Andriy Gapon <avg@FreeBSD.org>
Reviewed by: Dan Kimmel <dan.kimmel@delphix.com>
Reviewed by: Prakash Surya <prakash.surya@delphix.com>
Approved by: Matthew Ahrens <mahrens@delphix.com>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Ported-by: Giuseppe Di Natale <dinatale2@llnl.gov>

OpenZFS-issue: https://www.illumos.org/issues/7915
OpenZFS-commit: https://github.com/openzfs/openzfs/commit/836a00c
Closes #6375
This commit is contained in:
Andriy Gapon 2017-02-28 23:32:55 +02:00 committed by Brian Behlendorf
parent e98b611725
commit f06f53fa3f

View File

@ -7242,18 +7242,16 @@ top:
goto top; goto top;
} }
if (HDR_L2_WRITE_HEAD(hdr)) {
/* /*
* We hit a write head node. Leave it for * A header can't be on this list if it doesn't have L2 header.
* l2arc_write_done().
*/ */
list_remove(buflist, hdr); ASSERT(HDR_HAS_L2HDR(hdr));
mutex_exit(hash_lock);
continue;
}
if (!all && HDR_HAS_L2HDR(hdr) && /* Ensure this header has finished being written. */
(hdr->b_l2hdr.b_daddr > taddr || ASSERT(!HDR_L2_WRITING(hdr));
ASSERT(!HDR_L2_WRITE_HEAD(hdr));
if (!all && (hdr->b_l2hdr.b_daddr >= taddr ||
hdr->b_l2hdr.b_daddr < dev->l2ad_hand)) { hdr->b_l2hdr.b_daddr < dev->l2ad_hand)) {
/* /*
* We've evicted to the target address, * We've evicted to the target address,
@ -7263,7 +7261,6 @@ top:
break; break;
} }
ASSERT(HDR_HAS_L2HDR(hdr));
if (!HDR_HAS_L1HDR(hdr)) { if (!HDR_HAS_L1HDR(hdr)) {
ASSERT(!HDR_L2_READING(hdr)); ASSERT(!HDR_L2_READING(hdr));
/* /*
@ -7286,9 +7283,6 @@ top:
arc_hdr_set_flags(hdr, ARC_FLAG_L2_EVICTED); arc_hdr_set_flags(hdr, ARC_FLAG_L2_EVICTED);
} }
/* Ensure this header has finished being written */
ASSERT(!HDR_L2_WRITING(hdr));
arc_hdr_l2hdr_destroy(hdr); arc_hdr_l2hdr_destroy(hdr);
} }
mutex_exit(hash_lock); mutex_exit(hash_lock);