diff -r 48cd1ddf61c9 external/cddl/osnet/dist/uts/common/fs/zfs/arc.c
--- external/cddl/osnet/dist/uts/common/fs/zfs/arc.c	Tue Apr 20 12:09:47 2021 +0200
+++ external/cddl/osnet/dist/uts/common/fs/zfs/arc.c	Tue Apr 20 12:16:30 2021 +0200
@@ -7238,7 +7238,7 @@ l2arc_feed_thread(void *dummy __unused)
 	l2arc_dev_t *dev;
 	spa_t *spa;
 	uint64_t size, wrote;
-	clock_t begin, next = ddi_get_lbolt() + hz;
+	clock_t begin, now, next = ddi_get_lbolt() + hz;
 
 	CALLB_CPR_INIT(&cpr, &l2arc_feed_thr_lock, callb_generic_cpr, FTAG);
 
@@ -7246,8 +7246,10 @@ l2arc_feed_thread(void *dummy __unused)
 
 	while (l2arc_thread_exit == 0) {
 		CALLB_CPR_SAFE_BEGIN(&cpr);
-		(void) cv_timedwait(&l2arc_feed_thr_cv, &l2arc_feed_thr_lock,
-		    next - ddi_get_lbolt());
+		now = ddi_get_lbolt();
+		if (next > now)
+			(void) cv_timedwait(&l2arc_feed_thr_cv,
+			    &l2arc_feed_thr_lock, next - now);
 		CALLB_CPR_SAFE_END(&cpr, &l2arc_feed_thr_lock);
 		next = ddi_get_lbolt() + hz;
 
