change type of arcs_size from uint64_t to refcount_t
As a way to make it more difficult to introduce bugs into the ARC, and to make it easier to diagnose issues when bugs do creep in, it would be beneficial to change the type of the arc_state_t's arcs_size field to be a refcount_t instead of a uint64_t. This would allow us to make stricter checks when incrementing and decrementing the value with debugging enabled, but still fallback to simple, fast atomic operations when debugging is disabled.
This patch changes the type for arcs_size within the arc_state_t
structure from a uint64_t to a refcount_t. This will allows stricter
checks to occur when incrementing and decrementing the size (on DEBUG
builds), and hopefully allow us to track down regressions more quickly.
On non-DEBUG builds, this should not have an impact to performance
since the refcount_t operations devolve into simple atomic operations
(i.e. the same as what we're doing now).
Some future work remains to convert the arcs_lsize field within the
arc_state_t to use refcount_t's as well.
Updated by Electric Monk about 5 years ago
- % Done changed from 0 to 100
- Status changed from New to Closed
commit 2fd872a734cf486007a8dba532cec52bfb4d40e5 Author: Prakash Surya <email@example.com> Date: 2015-04-11T18:36:27.000Z 5817 change type of arcs_size from uint64_t to refcount_t Reviewed by: Matthew Ahrens <firstname.lastname@example.org> Reviewed by: Paul Dagnelie <email@example.com> Reviewed by: Adam Leventhal <firstname.lastname@example.org> Reviewed by: Alex Reece <email@example.com> Reviewed by: Richard Elling <firstname.lastname@example.org> Approved by: Garrett D'Amore <email@example.com>