=== 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; }