From George Wilson's original bug report at Delphix:
The arc currently caches extra copies of the same block because when they are accessed from different datasets (i.e. from different clones of the same filesystem). We should evict these extra copies from the arc making the arc more efficient.
This is a simple solution to the problem and further improvements are possible. The approach taken is to request any dbuf which is in the processes of releasing its hold to check to see if it contains a duplicate arc_buf_t. If so, then instead of simply releasing the hold it will instead evict itself.
Updated by Christopher Siden over 8 years ago
- Status changed from In Progress to Resolved
- % Done changed from 90 to 100
user: George Wilson <email@example.com>
date: Thu Sep 27 21:55:09 2012 -0700
3145 single-copy arc
3212 ztest: race condition between vdev_online() and spa_vdev_remove()
Reviewed by: Matt Ahrens <firstname.lastname@example.org>
Reviewed by: Adam Leventhal <email@example.com>
Reviewed by: Eric Schrock <firstname.lastname@example.org>
Reviewed by: Justin T. Gibbs <email@example.com>
Approved by: Eric Schrock <firstname.lastname@example.org>