summaryrefslogtreecommitdiffstats
path: root/module
diff options
context:
space:
mode:
authorGeorge Amanakis <[email protected]>2021-01-28 18:20:03 +0100
committerGitHub <[email protected]>2021-01-28 09:20:03 -0800
commit0ae184a6baaf71e155e9b19af81b75474622ff58 (patch)
tree8fbbe339d80c749dabdc04c1dda1fdcf1c0f0637 /module
parent416015ef544183aa1310d7353f28b369f8b89928 (diff)
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 <[email protected]> Signed-off-by: George Amanakis <[email protected]> Closes #11522 Closes #11537
Diffstat (limited to 'module')
-rw-r--r--module/zfs/arc.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/module/zfs/arc.c b/module/zfs/arc.c
index 216a985fe..b4f0c8a85 100644
--- a/module/zfs/arc.c
+++ b/module/zfs/arc.c
@@ -9068,6 +9068,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);
@@ -9299,7 +9300,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);
}