From a1a13869654a038e8a64ae8583494b5d8af24fdd Mon Sep 17 00:00:00 2001 From: George Amanakis Date: Thu, 28 Jan 2021 18:20:03 +0100 Subject: [PATCH] Avoid updating the L2ARC device header unnecessarily If we do not write any buffers to the cache device and the evict hand has not advanced do not update the cache device header. Reviewed-by: Brian Behlendorf Signed-off-by: George Amanakis Closes #11522 Closes #11537 --- module/zfs/arc.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/module/zfs/arc.c b/module/zfs/arc.c index a6c2939334..0e40d1fc50 100644 --- a/module/zfs/arc.c +++ b/module/zfs/arc.c @@ -8925,6 +8925,7 @@ l2arc_write_buffers(spa_t *spa, l2arc_dev_t *dev, uint64_t target_sz) l2arc_write_callback_t *cb = NULL; zio_t *pio, *wzio; uint64_t guid = spa_load_guid(spa); + l2arc_dev_hdr_phys_t *l2dhdr = dev->l2ad_dev_hdr; ASSERT3P(dev->l2ad_vdev, !=, NULL); @@ -9153,7 +9154,8 @@ l2arc_write_buffers(spa_t *spa, l2arc_dev_t *dev, uint64_t target_sz) * Although we did not write any buffers l2ad_evict may * have advanced. */ - l2arc_dev_hdr_update(dev); + if (dev->l2ad_evict != l2dhdr->dh_evict) + l2arc_dev_hdr_update(dev); return (0); }