=== modified file 'src/SquidMath.cc'
--- src/SquidMath.cc	2009-12-02 22:39:11 +0000
+++ src/SquidMath.cc	2010-10-16 23:31:39 +0000
@@ -7,6 +7,12 @@
     return b ? ((int) (100.0 * a / b + 0.5)) : 0;
 }
 
+int64_t
+Math::int64Percent(const int64_t a, const int64_t b)
+{
+    return b ? ((int64_t) (100.0 * a / b + 0.5)) : 0;
+}
+
 double
 Math::doublePercent(const double a, const double b)
 {

=== modified file 'src/SquidMath.h'
--- src/SquidMath.h	2009-12-03 22:34:46 +0000
+++ src/SquidMath.h	2010-10-16 23:32:10 +0000
@@ -6,6 +6,7 @@
 {
 
 extern int intPercent(const int a, const int b);
+extern int64_t int64Percent(const int64_t a, const int64_t b);
 extern double doublePercent(const double, const double);
 extern int intAverage(const int, const int, int, const int);
 extern double doubleAverage(const double, const double, int, const int);

=== modified file 'src/Store.h'
--- src/Store.h	2009-12-26 00:25:57 +0000
+++ src/Store.h	2010-10-17 11:22:15 +0000
@@ -273,10 +273,10 @@
      * The maximum size the store will support in normal use. Inaccuracy is permitted,
      * but may throw estimates for memory etc out of whack.
      */
-    virtual size_t maxSize() const = 0;
+    virtual uint64_t maxSize() const = 0;
 
     /** The minimum size the store will shrink to via normal housekeeping */
-    virtual size_t minSize() const = 0;
+    virtual uint64_t minSize() const = 0;
 
     /**
      * Output stats to the provided store entry.

=== modified file 'src/StoreHashIndex.h'
--- src/StoreHashIndex.h	2009-09-02 13:09:29 +0000
+++ src/StoreHashIndex.h	2010-10-17 11:29:26 +0000
@@ -63,9 +63,9 @@
 
     virtual void sync();
 
-    virtual size_t maxSize() const;
+    virtual uint64_t maxSize() const;
 
-    virtual size_t minSize() const;
+    virtual uint64_t minSize() const;
 
     virtual void stat(StoreEntry&) const;
 

=== modified file 'src/SwapDir.cc'
--- src/SwapDir.cc	2010-03-22 13:05:28 +0000
+++ src/SwapDir.cc	2010-10-17 11:47:40 +0000
@@ -81,11 +81,10 @@
 void
 SwapDir::maintain() {}
 
-size_t
+uint64_t
 SwapDir::minSize() const
 {
-    return (size_t) (((float) maxSize() *
-                      (float) Config.Swap.lowWaterMark) / 100.0);
+    return ((maxSize() * Config.Swap.lowWaterMark) / 100);
 }
 
 void

=== modified file 'src/SwapDir.h'
--- src/SwapDir.h	2010-10-01 05:29:18 +0000
+++ src/SwapDir.h	2010-10-17 11:21:19 +0000
@@ -62,9 +62,9 @@
 
     virtual void maintain(); /* perform regular maintenance should be private and self registered ... */
 
-    virtual size_t maxSize() const;
+    virtual uint64_t maxSize() const;
 
-    virtual size_t minSize() const;
+    virtual uint64_t minSize() const;
 
     virtual void stat(StoreEntry &) const;
 
@@ -129,9 +129,9 @@
 
     virtual void get(String const, STOREGETCLIENT, void * cbdata);
 
-    virtual size_t maxSize() const { return max_size;}
+    virtual uint64_t maxSize() const { return max_size;}
 
-    virtual size_t minSize() const;
+    virtual uint64_t minSize() const;
     virtual void stat (StoreEntry &anEntry) const;
     virtual StoreSearch *search(String const url, HttpRequest *) = 0;
 
@@ -153,8 +153,8 @@
     char const *theType;
 
 public:
-    size_t cur_size;
-    size_t max_size;
+    uint64_t cur_size;        ///< currently used space in the storage area
+    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 max_objsize;

=== modified file 'src/fs/coss/store_dir_coss.cc'
--- src/fs/coss/store_dir_coss.cc	2010-10-01 05:29:18 +0000
+++ src/fs/coss/store_dir_coss.cc	2010-10-16 23:27:53 +0000
@@ -997,8 +997,8 @@
 CossSwapDir::statfs(StoreEntry & sentry) const
 {
     storeAppendPrintf(&sentry, "\n");
-    storeAppendPrintf(&sentry, "Maximum Size: %Zu KB\n", max_size);
-    storeAppendPrintf(&sentry, "Current Size: %Zu KB\n", cur_size);
+    storeAppendPrintf(&sentry, "Maximum Size: %lu KB\n", max_size);
+    storeAppendPrintf(&sentry, "Current Size: %lu KB\n", cur_size);
     storeAppendPrintf(&sentry, "Percent Used: %0.2f%%\n",
                       (100.0 * (double)cur_size / (double)max_size) );
     storeAppendPrintf(&sentry, "Number of object collisions: %d\n", (int) numcollisions);
@@ -1096,7 +1096,7 @@
 void
 CossSwapDir::dump(StoreEntry &entry)const
 {
-    storeAppendPrintf(&entry, " %Zu", (max_size >> 10));
+    storeAppendPrintf(&entry, " %lu", (max_size >> 10));
     dumpOptions(&entry);
 }
 

=== modified file 'src/fs/ufs/store_dir_ufs.cc'
--- src/fs/ufs/store_dir_ufs.cc	2010-10-01 05:29:18 +0000
+++ src/fs/ufs/store_dir_ufs.cc	2010-10-17 06:51:39 +0000
@@ -312,8 +312,8 @@
     int x;
     storeAppendPrintf(&sentry, "First level subdirectories: %d\n", l1);
     storeAppendPrintf(&sentry, "Second level subdirectories: %d\n", l2);
-    storeAppendPrintf(&sentry, "Maximum Size: %Zu KB\n", max_size);
-    storeAppendPrintf(&sentry, "Current Size: %Zu KB\n", cur_size);
+    storeAppendPrintf(&sentry, "Maximum Size: %"PRIu64" KB\n", max_size);
+    storeAppendPrintf(&sentry, "Current Size: %"PRIu64" KB\n", cur_size);
     storeAppendPrintf(&sentry, "Percent Used: %0.2f%%\n",
                       (double)(100.0 * cur_size) / (double)max_size);
     storeAppendPrintf(&sentry, "Filemap bits in use: %d of %d (%d%%)\n",
@@ -1323,7 +1323,7 @@
 void
 UFSSwapDir::dump(StoreEntry & entry) const
 {
-    storeAppendPrintf(&entry, " %Zu %d %d", (max_size >> 10), l1, l2);
+    storeAppendPrintf(&entry, " %"PRIu64" %d %d", (max_size >> 10), l1, l2);
     dumpOptions(&entry);
 }
 

=== modified file 'src/store_dir.cc'
--- src/store_dir.cc	2010-10-01 05:29:18 +0000
+++ src/store_dir.cc	2010-10-17 11:34:44 +0000
@@ -361,14 +361,13 @@
     storeAppendPrintf(&output, "Store Directory Statistics:\n");
     storeAppendPrintf(&output, "Store Entries          : %lu\n",
                       (unsigned long int)StoreEntry::inUseCount());
-    storeAppendPrintf(&output, "Maximum Swap Size      : %8ld KB\n",
-                      (long int) maxSize());
+    storeAppendPrintf(&output, "Maximum Swap Size      : %"PRIu64" KB\n",
+                      maxSize());
     storeAppendPrintf(&output, "Current Store Swap Size: %8lu KB\n",
                       store_swap_size);
-    // XXX : below capacity display calculation breaks with int overflow on 64-bit systems
-    storeAppendPrintf(&output, "Current Capacity       : %d%% used, %d%% free\n",
-                      Math::intPercent((int) store_swap_size, (int) maxSize()),
-                      Math::intPercent((int) (maxSize() - store_swap_size), (int) maxSize()));
+    storeAppendPrintf(&output, "Current Capacity       : %"PRId64"%% used, %"PRId64"%% free\n",
+                      Math::int64Percent(store_swap_size, maxSize()),
+                      Math::int64Percent((maxSize() - store_swap_size), maxSize()));
     /* FIXME Here we should output memory statistics */
 
     /* now the swapDir */
@@ -376,14 +375,14 @@
 }
 
 /* if needed, this could be taught to cache the result */
-size_t
+uint64_t
 StoreController::maxSize() const
 {
     /* TODO: include memory cache ? */
     return swapDir->maxSize();
 }
 
-size_t
+uint64_t
 StoreController::minSize() const
 {
     /* TODO: include memory cache ? */
@@ -829,22 +828,21 @@
     }
 }
 
-size_t
+uint64_t
 StoreHashIndex::maxSize() const
 {
-    int i;
-    size_t result = 0;
+    uint64_t result = 0;
 
-    for (i = 0; i < Config.cacheSwap.n_configured; i++)
+    for (int i = 0; i < Config.cacheSwap.n_configured; i++)
         result += store(i)->maxSize();
 
     return result;
 }
 
-size_t
+uint64_t
 StoreHashIndex::minSize() const
 {
-    size_t result = 0;
+    uint64_t result = 0;
 
     for (int i = 0; i < Config.cacheSwap.n_configured; i++)
         result += store(i)->minSize();

=== modified file 'src/tests/TestSwapDir.cc'
--- src/tests/TestSwapDir.cc	2007-05-29 19:31:36 +0000
+++ src/tests/TestSwapDir.cc	2010-10-18 00:29:47 +0000
@@ -3,7 +3,7 @@
 #include "squid.h"
 #include "TestSwapDir.h"
 
-size_t
+uint64_t
 TestSwapDir::maxSize() const
 {
     return 3;

=== modified file 'src/tests/TestSwapDir.h'
--- src/tests/TestSwapDir.h	2007-05-29 19:31:36 +0000
+++ src/tests/TestSwapDir.h	2010-10-18 00:28:35 +0000
@@ -12,7 +12,7 @@
 
     bool statsCalled;
 
-    virtual size_t maxSize() const;
+    virtual uint64_t maxSize() const;
     virtual void stat(StoreEntry &) const; /* output stats to the provided store entry */
 
     virtual void reconfigure(int, char*);

=== modified file 'src/tests/testStore.cc'
--- src/tests/testStore.cc	2008-10-10 08:02:53 +0000
+++ src/tests/testStore.cc	2010-10-18 00:26:55 +0000
@@ -31,13 +31,13 @@
 TestStore::init()
 {}
 
-size_t
+uint64_t
 TestStore::maxSize() const
 {
     return 3;
 }
 
-size_t
+uint64_t
 TestStore::minSize() const
 {
     return 1;

=== modified file 'src/tests/testStore.h'
--- src/tests/testStore.h	2008-10-10 08:02:53 +0000
+++ src/tests/testStore.h	2010-10-17 22:57:54 +0000
@@ -55,9 +55,9 @@
 
     virtual void maintain() {};
 
-    virtual size_t maxSize() const;
+    virtual uint64_t maxSize() const;
 
-    virtual size_t minSize() const;
+    virtual uint64_t minSize() const;
 
     virtual void stat(StoreEntry &) const; /* output stats to the provided store entry */
 


