=== modified file 'doc/release-notes/release-3.2.sgml'
--- doc/release-notes/release-3.2.sgml 2010-11-22 11:19:17 +0000
+++ doc/release-notes/release-3.2.sgml 2010-12-05 06:48:31 +0000
@@ -459,6 +459,9 @@
concurrency=N previously called auth_param ... concurrency as a separate option.
Removed Basic, Digest, NTLM, Negotiate auth_param ... concurrency setting option.
+ cache_dir
+
min-size option ported from Squid-2
+
cache_peer
htcp-* options collapsed into htcp= taking an optional comma-separated list of flags.
The old form is deprecated but still accepted.
@@ -792,7 +795,6 @@
Not yet ported from 2.6
cache_dir
-
min-size option not yet ported from Squid-2
COSS storage type is lacking stability fixes from 2.6
COSS overwrite-percent= option not yet ported from 2.6
COSS max-stripe-waste= option not yet ported from 2.6
=== modified file 'src/SwapDir.cc'
--- src/SwapDir.cc 2010-12-04 01:41:43 +0000
+++ src/SwapDir.cc 2010-12-05 06:56:23 +0000
@@ -159,7 +159,7 @@
{
ConfigOptionVector *result = new ConfigOptionVector;
result->options.push_back(new ConfigOptionAdapter(*const_cast(this), &SwapDir::optionReadOnlyParse, &SwapDir::optionReadOnlyDump));
- result->options.push_back(new ConfigOptionAdapter(*const_cast(this), &SwapDir::optionMaxSizeParse, &SwapDir::optionMaxSizeDump));
+ result->options.push_back(new ConfigOptionAdapter(*const_cast(this), &SwapDir::optionObjectSizeParse, &SwapDir::optionObjectSizeDump));
return result;
}
@@ -236,9 +236,14 @@
}
bool
-SwapDir::optionMaxSizeParse(char const *option, const char *value, int isaReconfig)
+SwapDir::optionObjectSizeParse(char const *option, const char *value, int isaReconfig)
{
- if (strcmp(option, "max-size") != 0)
+ int64_t *val;
+ if (strcmp(option, "max-size") == 0) {
+ val = &max_objsize;
+ } else if (strcmp(option, "min-size") == 0) {
+ val = &min_objsize;
+ } else
return false;
if (!value)
@@ -246,17 +251,20 @@
int64_t size = strtoll(value, NULL, 10);
- if (isaReconfig && max_objsize != size)
- debugs(3, 1, "Cache dir '" << path << "' max object size now " << size);
+ if (isaReconfig && *val != size)
+ debugs(3, 1, "Cache dir '" << path << "' object " << option << " now " << size);
- max_objsize = size;
+ *val = size;
return true;
}
void
-SwapDir::optionMaxSizeDump(StoreEntry * e) const
+SwapDir::optionObjectSizeDump(StoreEntry * e) const
{
+ if (min_objsize != -1)
+ storeAppendPrintf(e, " min-size=%"PRId64, min_objsize);
+
if (max_objsize != -1)
storeAppendPrintf(e, " max-size=%"PRId64, max_objsize);
}
=== modified file 'src/SwapDir.h'
--- src/SwapDir.h 2010-12-04 01:41:43 +0000
+++ src/SwapDir.h 2010-12-05 06:28:58 +0000
@@ -113,7 +113,7 @@
{
public:
- SwapDir(char const *aType) : theType (aType), cur_size(0), max_size(0), max_objsize (-1), cleanLog(NULL) {
+ SwapDir(char const *aType) : theType (aType), cur_size(0), max_size(0), min_objsize(-1), max_objsize(-1), cleanLog(NULL) {
fs.blksize = 1024;
path = NULL;
}
@@ -148,8 +148,8 @@
private:
bool optionReadOnlyParse(char const *option, const char *value, int reconfiguring);
void optionReadOnlyDump(StoreEntry * e) const;
- bool optionMaxSizeParse(char const *option, const char *value, int reconfiguring);
- void optionMaxSizeDump(StoreEntry * e) const;
+ bool optionObjectSizeParse(char const *option, const char *value, int reconfiguring);
+ void optionObjectSizeDump(StoreEntry * e) const;
char const *theType;
public:
@@ -157,6 +157,7 @@
uint64_t max_size; ///< maximum allocatable size of the storage area
char *path;
int index; /* This entry's index into the swapDirs array */
+ int64_t min_objsize;
int64_t max_objsize;
RemovalPolicy *repl;
int removals;
=== modified file 'src/store_dir.cc'
--- src/store_dir.cc 2010-12-04 01:41:43 +0000
+++ src/store_dir.cc 2010-12-05 06:44:54 +0000
@@ -146,35 +146,30 @@
#endif
}
-/*
+/**
* Determine whether the given directory can handle this object
* size
*
* Note: if the object size is -1, then the only swapdirs that
- * will return true here are ones that have max_obj_size = -1,
+ * will return true here are ones that have min and max unset,
* ie any-sized-object swapdirs. This is a good thing.
*/
bool
SwapDir::objectSizeIsAcceptable(int64_t objsize) const
{
- /*
- * If the swapdir's max_obj_size is -1, then it definitely can
- */
-
- if (max_objsize == -1)
+ // If the swapdir has no range limits, then it definitely can
+ if (min_objsize == -1 && max_objsize == -1)
return true;
/*
- * If the object size is -1, then if the storedir isn't -1 we
- * can't store it
+ * If the object size is -1 and the storedir has limits we
+ * can't store it there.
*/
- if ((objsize == -1) && (max_objsize != -1))
+ if (objsize == -1)
return false;
- /*
- * Else, make sure that the max object size is larger than objsize
- */
- return max_objsize > objsize;
+ // Else, make sure that the object size will fit.
+ return min_objsize <= objsize && max_objsize > objsize;
}