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 <behlendorf1@llnl.gov>
Signed-off-by: George Amanakis <gamanakis@gmail.com>
Closes #11522 
Closes #11537
This commit is contained in:
George Amanakis 2021-01-28 18:20:03 +01:00 committed by GitHub
parent 416015ef54
commit 0ae184a6ba
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -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);
}