-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
ZoL had lowered the minimum ARC size to 4MiB to better accommodate tiny systems such as the raspberry pi, however, as of addition of large block support, the arc_adapt() function depends on arc_c being >= 32MiB (2 * SPA_MAXBLOCKSIZE). This patch raises the minimum ARC size to 32MiB and adds a VERIFY test to arc_adapt() for future-proofing.
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3088,8 +3088,8 @@ arc_adapt_thread(void) | |
zfs_arc_max != arc_c_max) | ||
arc_c_max = zfs_arc_max; | ||
|
||
if (zfs_arc_min > 0 && | ||
zfs_arc_min < arc_c_max && | ||
if (zfs_arc_min >= 2ULL << SPA_MAXBLOCKSHIFT && | ||
zfs_arc_min <= arc_c_max && | ||
zfs_arc_min != arc_c_min) | ||
arc_c_min = zfs_arc_min; | ||
|
||
|
@@ -3355,6 +3355,7 @@ arc_adapt(int bytes, arc_state_t *state) | |
* If we're within (2 * maxblocksize) bytes of the target | ||
* cache size, increment the target cache size | ||
*/ | ||
VERIFY3U(arc_c, >=, 2ULL << SPA_MAXBLOCKSHIFT); | ||
if (arc_size > arc_c - (2ULL << SPA_MAXBLOCKSHIFT)) { | ||
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong.
behlendorf
Owner
|
||
atomic_add_64(&arc_c, (int64_t)bytes); | ||
if (arc_c > arc_c_max) | ||
|
@@ -4826,8 +4827,8 @@ arc_init(void) | |
spl_register_shrinker(&arc_shrinker); | ||
#endif | ||
|
||
/* set min cache to zero */ | ||
arc_c_min = 4<<20; | ||
/* set min cache to allow safe operation of arc_adapt() */ | ||
arc_c_min = 2ULL << SPA_MAXBLOCKSHIFT; | ||
/* set max to 1/2 of all memory */ | ||
arc_c_max = arc_c * 4; | ||
|
||
|
@@ -4837,7 +4838,8 @@ arc_init(void) | |
*/ | ||
if (zfs_arc_max > 64<<20 && zfs_arc_max < physmem * PAGESIZE) | ||
arc_c_max = zfs_arc_max; | ||
if (zfs_arc_min > 0 && zfs_arc_min <= arc_c_max) | ||
if (zfs_arc_min >= 2ULL << SPA_MAXBLOCKSHIFT && | ||
zfs_arc_min <= arc_c_max) | ||
arc_c_min = zfs_arc_min; | ||
|
||
arc_c = arc_c_max; | ||
|
This needs to be
>= arc_c - (2ULL ...