mirror of
https://github.com/isc-projects/bind9.git
synced 2026-06-11 12:20:00 -04:00
[v9_9] accept >4g max-{,a}cache-size
3505. [bug] When setting "max-cache-size" and "max-acache-size",
larger values than 4 gigabytes could not be set
explicitly, though larger sizes were available
when setting cache size to 0. This has been
corrected; the full range is now available.
[RT #32358]
(cherry picked from commit 2a184ff865)
This commit is contained in:
parent
1f83863b9b
commit
d5f677ea47
10 changed files with 47 additions and 44 deletions
7
CHANGES
7
CHANGES
|
|
@ -1,3 +1,10 @@
|
|||
3505. [bug] When setting "max-cache-size" and "max-acache-size",
|
||||
larger values than 4 gigabytes could not be set
|
||||
explicitly, though larger sizes were available
|
||||
when setting cache size to 0. This has been
|
||||
corrected; the full range is now available.
|
||||
[RT #32358]
|
||||
|
||||
3503. [doc] Clarify size_spec syntax. [RT #32449]
|
||||
|
||||
3501. [func] zone-statistics now takes three options: full,
|
||||
|
|
|
|||
|
|
@ -1399,7 +1399,7 @@ static isc_boolean_t
|
|||
cache_sharable(dns_view_t *originview, dns_view_t *view,
|
||||
isc_boolean_t new_zero_no_soattl,
|
||||
unsigned int new_cleaning_interval,
|
||||
isc_uint32_t new_max_cache_size)
|
||||
isc_uint64_t new_max_cache_size)
|
||||
{
|
||||
/*
|
||||
* If the cache cannot even reused for the same view, it cannot be
|
||||
|
|
@ -1666,10 +1666,10 @@ configure_view(dns_view_t *view, cfg_obj_t *config, cfg_obj_t *vconfig,
|
|||
in_port_t port;
|
||||
dns_cache_t *cache = NULL;
|
||||
isc_result_t result;
|
||||
isc_uint32_t max_adb_size;
|
||||
unsigned int cleaning_interval;
|
||||
isc_uint32_t max_cache_size;
|
||||
isc_uint32_t max_acache_size;
|
||||
size_t max_cache_size;
|
||||
size_t max_acache_size;
|
||||
size_t max_adb_size;
|
||||
isc_uint32_t lame_ttl;
|
||||
dns_tsig_keyring_t *ring = NULL;
|
||||
dns_view_t *pview = NULL; /* Production view */
|
||||
|
|
@ -1775,18 +1775,18 @@ configure_view(dns_view_t *view, cfg_obj_t *config, cfg_obj_t *vconfig,
|
|||
max_acache_size = ISC_UINT32_MAX;
|
||||
} else {
|
||||
isc_resourcevalue_t value;
|
||||
|
||||
value = cfg_obj_asuint64(obj);
|
||||
if (value > ISC_UINT32_MAX) {
|
||||
cfg_obj_log(obj, ns_g_lctx, ISC_LOG_ERROR,
|
||||
if (value > SIZE_MAX) {
|
||||
cfg_obj_log(obj, ns_g_lctx,
|
||||
ISC_LOG_WARNING,
|
||||
"'max-acache-size "
|
||||
"%" ISC_PRINT_QUADFORMAT
|
||||
"d' is too large",
|
||||
value);
|
||||
result = ISC_R_RANGE;
|
||||
goto cleanup;
|
||||
"%" ISC_PRINT_QUADFORMAT "u' "
|
||||
"is too large for this "
|
||||
"system; reducing to %lu",
|
||||
value, SIZE_MAX);
|
||||
value = SIZE_MAX;
|
||||
}
|
||||
max_acache_size = (isc_uint32_t)value;
|
||||
max_cache_size = (size_t) value;
|
||||
}
|
||||
dns_acache_setcachesize(view->acache, max_acache_size);
|
||||
}
|
||||
|
|
@ -1973,15 +1973,17 @@ configure_view(dns_view_t *view, cfg_obj_t *config, cfg_obj_t *vconfig,
|
|||
} else {
|
||||
isc_resourcevalue_t value;
|
||||
value = cfg_obj_asuint64(obj);
|
||||
if (value > ISC_UINT32_MAX) {
|
||||
cfg_obj_log(obj, ns_g_lctx, ISC_LOG_ERROR,
|
||||
if (value > SIZE_MAX) {
|
||||
cfg_obj_log(obj, ns_g_lctx,
|
||||
ISC_LOG_WARNING,
|
||||
"'max-cache-size "
|
||||
"%" ISC_PRINT_QUADFORMAT "d' is too large",
|
||||
value);
|
||||
result = ISC_R_RANGE;
|
||||
goto cleanup;
|
||||
"%" ISC_PRINT_QUADFORMAT "u' "
|
||||
"is too large for this "
|
||||
"system; reducing to %lu",
|
||||
value, SIZE_MAX);
|
||||
value = SIZE_MAX;
|
||||
}
|
||||
max_cache_size = (isc_uint32_t)value;
|
||||
max_cache_size = (size_t) value;
|
||||
}
|
||||
|
||||
/* Check-names. */
|
||||
|
|
|
|||
|
|
@ -66,6 +66,7 @@ options {
|
|||
serial-queries 10;
|
||||
serial-query-rate 100;
|
||||
server-id none;
|
||||
max-cache-size 20000000000000;
|
||||
zone-statistics none;
|
||||
};
|
||||
view "first" {
|
||||
|
|
|
|||
|
|
@ -8259,8 +8259,10 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
|
|||
approaches
|
||||
the specified size, some of the oldest transactions in the
|
||||
journal
|
||||
will be automatically removed. The default is
|
||||
<literal>unlimited</literal>.
|
||||
will be automatically removed. The largest permitted
|
||||
value is 2 gigabytes. The default is
|
||||
<literal>unlimited</literal>, which also
|
||||
means 2 gigabytes.
|
||||
This may also be set on a per-zone basis.
|
||||
</para>
|
||||
</listitem>
|
||||
|
|
|
|||
|
|
@ -1769,9 +1769,8 @@ dns_acache_setcleaninginterval(dns_acache_t *acache, unsigned int t) {
|
|||
* function for more details about the logic.
|
||||
*/
|
||||
void
|
||||
dns_acache_setcachesize(dns_acache_t *acache, isc_uint32_t size) {
|
||||
isc_uint32_t lowater;
|
||||
isc_uint32_t hiwater;
|
||||
dns_acache_setcachesize(dns_acache_t *acache, size_t size) {
|
||||
size_t hiwater, lowater;
|
||||
|
||||
REQUIRE(DNS_ACACHE_VALID(acache));
|
||||
|
||||
|
|
|
|||
|
|
@ -4128,9 +4128,8 @@ water(void *arg, int mark) {
|
|||
}
|
||||
|
||||
void
|
||||
dns_adb_setadbsize(dns_adb_t *adb, isc_uint32_t size) {
|
||||
isc_uint32_t hiwater;
|
||||
isc_uint32_t lowater;
|
||||
dns_adb_setadbsize(dns_adb_t *adb, size_t size) {
|
||||
size_t hiwater, lowater;
|
||||
|
||||
INSIST(DNS_ADB_VALID(adb));
|
||||
|
||||
|
|
|
|||
|
|
@ -136,7 +136,7 @@ struct dns_cache {
|
|||
char *db_type;
|
||||
int db_argc;
|
||||
char **db_argv;
|
||||
isc_uint32_t size;
|
||||
size_t size;
|
||||
|
||||
/* Locked by 'filelock'. */
|
||||
char *filename;
|
||||
|
|
@ -1028,9 +1028,8 @@ water(void *arg, int mark) {
|
|||
}
|
||||
|
||||
void
|
||||
dns_cache_setcachesize(dns_cache_t *cache, isc_uint32_t size) {
|
||||
isc_uint32_t lowater;
|
||||
isc_uint32_t hiwater;
|
||||
dns_cache_setcachesize(dns_cache_t *cache, size_t size) {
|
||||
size_t hiwater, lowater;
|
||||
|
||||
REQUIRE(VALID_CACHE(cache));
|
||||
|
||||
|
|
@ -1068,9 +1067,9 @@ dns_cache_setcachesize(dns_cache_t *cache, isc_uint32_t size) {
|
|||
isc_mem_setwater(cache->mctx, water, cache, hiwater, lowater);
|
||||
}
|
||||
|
||||
isc_uint32_t
|
||||
size_t
|
||||
dns_cache_getcachesize(dns_cache_t *cache) {
|
||||
isc_uint32_t size;
|
||||
size_t size;
|
||||
|
||||
REQUIRE(VALID_CACHE(cache));
|
||||
|
||||
|
|
|
|||
|
|
@ -238,7 +238,7 @@ dns_acache_setcleaninginterval(dns_acache_t *acache, unsigned int t);
|
|||
*/
|
||||
|
||||
void
|
||||
dns_acache_setcachesize(dns_acache_t *acache, isc_uint32_t size);
|
||||
dns_acache_setcachesize(dns_acache_t *acache, size_t size);
|
||||
/*
|
||||
* Set the maximum additional cache size. 0 means unlimited.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -607,7 +607,7 @@ dns_adb_flush(dns_adb_t *adb);
|
|||
*/
|
||||
|
||||
void
|
||||
dns_adb_setadbsize(dns_adb_t *adb, isc_uint32_t size);
|
||||
dns_adb_setadbsize(dns_adb_t *adb, size_t size);
|
||||
/*%<
|
||||
* Set a target memory size. If memory usage exceeds the target
|
||||
* size entries will be removed before they would have expired on
|
||||
|
|
|
|||
|
|
@ -245,12 +245,6 @@ dns_cache_getcleaninginterval(dns_cache_t *cache);
|
|||
* Get the periodic cache cleaning interval to 'interval' seconds.
|
||||
*/
|
||||
|
||||
isc_uint32_t
|
||||
dns_cache_getcachesize(dns_cache_t *cache);
|
||||
/*%<
|
||||
* Get the maximum cache size.
|
||||
*/
|
||||
|
||||
const char *
|
||||
dns_cache_getname(dns_cache_t *cache);
|
||||
/*%<
|
||||
|
|
@ -258,12 +252,12 @@ dns_cache_getname(dns_cache_t *cache);
|
|||
*/
|
||||
|
||||
void
|
||||
dns_cache_setcachesize(dns_cache_t *cache, isc_uint32_t size);
|
||||
dns_cache_setcachesize(dns_cache_t *cache, size_t size);
|
||||
/*%<
|
||||
* Set the maximum cache size. 0 means unlimited.
|
||||
*/
|
||||
|
||||
isc_uint32_t
|
||||
size_t
|
||||
dns_cache_getcachesize(dns_cache_t *cache);
|
||||
/*%<
|
||||
* Get the maximum cache size.
|
||||
|
|
|
|||
Loading…
Reference in a new issue