]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Bootstrapped
authorAutomatic source maintenance <squidadm@squid-cache.org>
Tue, 7 Dec 2010 01:11:16 +0000 (18:11 -0700)
committerAutomatic source maintenance <squidadm@squid-cache.org>
Tue, 7 Dec 2010 01:11:16 +0000 (18:11 -0700)
doc/release-notes/release-3.2.sgml
src/SwapDir.cc
src/SwapDir.h
src/store_dir.cc

index 91d0c23809be24158df03aeafafbed385499a4d0..5216ae3ba65bf33e90cac0629ee115c061984039 100644 (file)
@@ -459,6 +459,9 @@ This section gives a thorough account of those changes in three categories:
           <em>concurrency=N</em> previously called <em>auth_param ... concurrency</em> as a separate option.
        <p>Removed Basic, Digest, NTLM, Negotiate <em>auth_param ... concurrency</em> setting option.
 
+       <tag>cache_dir</tag>
+       <p><em>min-size</em> option ported from Squid-2
+
        <tag>cache_peer</tag>
        <p><em>htcp-*</em> options collapsed into <em>htcp=</em> taking an optional comma-separated list of flags.
           The old form is deprecated but still accepted.
@@ -792,7 +795,6 @@ This section gives an account of those changes in three categories:
        <p>Not yet ported from 2.6
 
        <tag>cache_dir</tag>
-       <p><em>min-size</em> option not yet ported from Squid-2
        <p><em>COSS</em> storage type is lacking stability fixes from 2.6
        <p>COSS <em>overwrite-percent=</em> option not yet ported from 2.6
        <p>COSS <em>max-stripe-waste=</em> option not yet ported from 2.6
index 246a05ed4027b0af2296133b3e61c2071f27d71f..49071206eedd19b8535bdc26755a678c99374220 100644 (file)
@@ -159,7 +159,7 @@ SwapDir::getOptionTree() const
 {
     ConfigOptionVector *result = new ConfigOptionVector;
     result->options.push_back(new ConfigOptionAdapter<SwapDir>(*const_cast<SwapDir *>(this), &SwapDir::optionReadOnlyParse, &SwapDir::optionReadOnlyDump));
-    result->options.push_back(new ConfigOptionAdapter<SwapDir>(*const_cast<SwapDir *>(this), &SwapDir::optionMaxSizeParse, &SwapDir::optionMaxSizeDump));
+    result->options.push_back(new ConfigOptionAdapter<SwapDir>(*const_cast<SwapDir *>(this), &SwapDir::optionObjectSizeParse, &SwapDir::optionObjectSizeDump));
     return result;
 }
 
@@ -236,9 +236,14 @@ SwapDir::optionReadOnlyDump(StoreEntry * e) const
 }
 
 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 @@ SwapDir::optionMaxSizeParse(char const *option, const char *value, int isaReconf
 
     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);
 }
index 408bd5c142c5e5d72debf9c867e326075c0e0d35..340ed30c548beb25a9925e345c7469ab0848f3bf 100644 (file)
@@ -113,7 +113,7 @@ class SwapDir : public Store
 {
 
 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 @@ protected:
 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 @@ public:
     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;
index 4c5120847bb1eb54129d0e50b74faeedcafeaf82..cacf8fa1d0d87eaea05938f5451afac411c2c321 100644 (file)
@@ -146,35 +146,30 @@ StoreController::create()
 #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;
 }