Re: squid3-largeobj: more changes ....

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Re: squid3-largeobj: more changes ....

Tsantilas Christos
Hi,
this patch allows storing large files in cache.
It applies to the squid3-largeobj branch. It must applied after the
previous patch I sent applied.

This patch also changes the format of cache stores so existing caches
must re-created. I don't know if it is valid.  Maybe we can add some
code to keep the compatibility with existing caches like squid2.6 does.
I will try to do it if needed.

This patch must also allows large coss files  but it is not tested
To enable storing large files in cache squid must configured with
"--with-large-files" option.

Regards,
     Christos


Tsantilas Christos wrote:

> A more completed  patch for large objects support
>
> It contains all previous changes plus:
> - HttpReply::bodySize must return 64 bit integer.
> - Some changes inside ClientHttpRequest::mRangeCLen method to use 64bit
> integers.
> - Some changes inside HttpStateData::persistentConnStatus to use 64bit
> integers
> - Remove  or change some castings in file store_Client.cc
>
> This patch apply to the squid3-largeobj branch.
> I test it and worked for me.
> I also test range headers, ftp and ICAP client. Looks good.
> I did not test large objects uploads.
>
> Regards,
>       Christos
>  

diff -r -u -x 'Makefile*' -x '*.Po' -x '*.o' -x '*~' -x '*.la' ../../my-squid3-largeobj/src/cache_cf.cc ./cache_cf.cc
--- ../../my-squid3-largeobj/src/cache_cf.cc 2007-05-02 19:08:48.000000000 +0300
+++ ./cache_cf.cc 2007-05-11 22:11:00.000000000 +0300
@@ -144,6 +144,7 @@
 #endif
 #endif /* USE_SSL */
 static void parse_b_size_t(size_t * var);
+static void parse_b_int64_t(int64_t * var);
 
 /*
  * LegacyParser is a parser for legacy code that uses the global
@@ -163,7 +164,7 @@
 update_maxobjsize(void)
 {
     int i;
-    ssize_t ms = -1;
+    int64_t ms = -1;
 
     for (i = 0; i < Config.cacheSwap.n_configured; i++) {
         assert (Config.cacheSwap.swapDirs[i].getRaw());
@@ -172,7 +173,6 @@
                 max_objsize > ms)
             ms = dynamic_cast<SwapDir *>(Config.cacheSwap.swapDirs[i].getRaw())->max_objsize;
     }
-
     store_maxobjsize = ms;
 }
 
@@ -701,12 +701,51 @@
 }
 
 static void
+parseBytesLine64(int64_t * bptr, const char *units)
+{
+    char *token;
+    double d;
+    int64_t m;
+    int64_t u;
+
+    if ((u = parseBytesUnits(units)) == 0)
+        self_destruct();
+
+    if ((token = strtok(NULL, w_space)) == NULL)
+        self_destruct();
+
+    if (strcmp(token, "none") == 0 || strcmp(token, "-1") == 0) {
+        *bptr = static_cast<size_t>(-1);
+        return;
+    }
+
+    d = xatof(token);
+
+    m = u; /* default to 'units' if none specified */
+
+    if (0.0 == d)
+        (void) 0;
+    else if ((token = strtok(NULL, w_space)) == NULL)
+        debugs(3, 0, "WARNING: No units on '" <<
+                     config_input_line << "', assuming " <<
+                     d << " " <<  units  );
+    else if ((m = parseBytesUnits(token)) == 0)
+        self_destruct();
+
+    *bptr = static_cast<int64_t>(m * d / u);
+
+    if (static_cast<double>(*bptr) * 2 != m * d / u * 2)
+        self_destruct();
+}
+
+
+static void
 parseBytesLine(size_t * bptr, const char *units)
 {
     char *token;
     double d;
-    size_t m;
-    size_t u;
+    int m;
+    int u;
 
     if ((u = parseBytesUnits(units)) == 0)
         self_destruct();
@@ -1029,7 +1068,7 @@
 
     l = cbdataAlloc(acl_size_t);
 
-    parse_b_size_t(&l->size);
+    parse_b_int64_t(&l->size);
 
     aclParseAclList(LegacyParser, &l->aclList);
 
@@ -2287,6 +2326,12 @@
 }
 
 static void
+dump_b_int64_t(StoreEntry * entry, const char *name, int64_t var)
+{
+    storeAppendPrintf(entry, "%s %"PRId64" %s\n", name, var, B_BYTES_STR);
+}
+
+static void
 parse_size_t(size_t * var)
 {
     int i;
@@ -2301,6 +2346,12 @@
 }
 
 static void
+parse_b_int64_t(int64_t * var)
+{
+    parseBytesLine64(var, B_BYTES_STR);
+}
+
+static void
 parse_kb_size_t(size_t * var)
 {
     parseBytesLine(var, B_KBYTES_STR);
@@ -2312,6 +2363,12 @@
     *var = 0;
 }
 
+static void
+free_b_int64_t(int64_t * var)
+{
+    *var = 0;
+}
+
 #define free_b_size_t free_size_t
 #define free_kb_size_t free_size_t
 #define free_mb_size_t free_size_t
diff -r -u -x 'Makefile*' -x '*.Po' -x '*.o' -x '*~' -x '*.la' ../../my-squid3-largeobj/src/cf.data ./cf.data
--- ../../my-squid3-largeobj/src/cf.data 2007-05-09 20:13:51.000000000 +0300
+++ ./cf.data 2007-05-13 11:03:30.000000000 +0300
@@ -936,7 +936,7 @@
 
 NAME: maximum_object_size
 COMMENT: (bytes)
-TYPE: b_size_t
+TYPE: b_int64_t
 DEFAULT: 4096 KB
 LOC: Config.Store.maxObjectSize
 DOC_START
@@ -954,7 +954,7 @@
 
 NAME: minimum_object_size
 COMMENT: (bytes)
-TYPE: b_size_t
+TYPE: b_int64_t
 DEFAULT: 0 KB
 LOC: Config.Store.minObjectSize
 DOC_START
diff -r -u -x 'Makefile*' -x '*.Po' -x '*.o' -x '*~' -x '*.la' ../../my-squid3-largeobj/src/cf.data.pre ./cf.data.pre
--- ../../my-squid3-largeobj/src/cf.data.pre 2007-04-17 02:06:16.000000000 +0300
+++ ./cf.data.pre 2007-05-11 22:22:19.000000000 +0300
@@ -936,7 +936,7 @@
 
 NAME: maximum_object_size
 COMMENT: (bytes)
-TYPE: b_size_t
+TYPE: b_int64_t
 DEFAULT: 4096 KB
 LOC: Config.Store.maxObjectSize
 DOC_START
@@ -954,7 +954,7 @@
 
 NAME: minimum_object_size
 COMMENT: (bytes)
-TYPE: b_size_t
+TYPE: b_int64_t
 DEFAULT: 0 KB
 LOC: Config.Store.minObjectSize
 DOC_START
diff -r -u -x 'Makefile*' -x '*.Po' -x '*.o' -x '*~' -x '*.la' ../../my-squid3-largeobj/src/cf_parser.h ./cf_parser.h
--- ../../my-squid3-largeobj/src/cf_parser.h 2007-05-09 20:13:51.000000000 +0300
+++ ./cf_parser.h 2007-05-13 11:03:30.000000000 +0300
@@ -667,11 +667,11 @@
  return 1;
  };
  if (!strcmp(token, "maximum_object_size")) {
- parse_b_size_t(&Config.Store.maxObjectSize);
+ parse_b_int64_t(&Config.Store.maxObjectSize);
  return 1;
  };
  if (!strcmp(token, "minimum_object_size")) {
- parse_b_size_t(&Config.Store.minObjectSize);
+ parse_b_int64_t(&Config.Store.minObjectSize);
  return 1;
  };
  if (!strcmp(token, "maximum_object_size_in_memory")) {
@@ -1784,8 +1784,8 @@
  dump_b_size_t(entry, "cache_mem", Config.memMaxSize);
  dump_int(entry, "cache_swap_low", Config.Swap.lowWaterMark);
  dump_int(entry, "cache_swap_high", Config.Swap.highWaterMark);
- dump_b_size_t(entry, "maximum_object_size", Config.Store.maxObjectSize);
- dump_b_size_t(entry, "minimum_object_size", Config.Store.minObjectSize);
+ dump_b_int64_t(entry, "maximum_object_size", Config.Store.maxObjectSize);
+ dump_b_int64_t(entry, "minimum_object_size", Config.Store.minObjectSize);
  dump_b_size_t(entry, "maximum_object_size_in_memory", Config.Store.maxInMemObjSize);
  dump_int(entry, "ipcache_size", Config.ipcache.size);
  dump_int(entry, "ipcache_low", Config.ipcache.low);
@@ -2199,8 +2199,8 @@
  free_b_size_t(&Config.memMaxSize);
  free_int(&Config.Swap.lowWaterMark);
  free_int(&Config.Swap.highWaterMark);
- free_b_size_t(&Config.Store.maxObjectSize);
- free_b_size_t(&Config.Store.minObjectSize);
+ free_b_int64_t(&Config.Store.maxObjectSize);
+ free_b_int64_t(&Config.Store.minObjectSize);
  free_b_size_t(&Config.Store.maxInMemObjSize);
  free_int(&Config.ipcache.size);
  free_int(&Config.ipcache.low);
diff -r -u -x 'Makefile*' -x '*.Po' -x '*.o' -x '*~' -x '*.la' ../../my-squid3-largeobj/src/fs/coss/CossSwapDir.h ./fs/coss/CossSwapDir.h
--- ../../my-squid3-largeobj/src/fs/coss/CossSwapDir.h 2006-05-23 03:45:42.000000000 +0300
+++ ./fs/coss/CossSwapDir.h 2007-05-12 19:58:20.000000000 +0300
@@ -73,9 +73,9 @@
     unsigned int blksz_mask;  /* just 1<<blksz_bits - 1*/
     DiskIOStrategy *io;
     RefCount<DiskFile> theFile;
-    char *storeCossMemPointerFromDiskOffset(size_t offset, CossMemBuf ** mb);
+    char *storeCossMemPointerFromDiskOffset(off_t offset, CossMemBuf ** mb);
     void storeCossMemBufUnlock(StoreIOState::Pointer);
-    CossMemBuf *createMemBuf(size_t start, sfileno curfn, int *collision);
+    CossMemBuf *createMemBuf(off_t start, sfileno curfn, int *collision);
     sfileno allocate(const StoreEntry * e, int which);
     void startMembuf();
 
diff -r -u -x 'Makefile*' -x '*.Po' -x '*.o' -x '*~' -x '*.la' ../../my-squid3-largeobj/src/fs/coss/store_coss.h ./fs/coss/store_coss.h
--- ../../my-squid3-largeobj/src/fs/coss/store_coss.h 2006-09-19 11:52:40.000000000 +0300
+++ ./fs/coss/store_coss.h 2007-05-12 21:41:55.000000000 +0300
@@ -24,8 +24,8 @@
     void maybeWrite(CossSwapDir * SD);
     void write(CossSwapDir * SD);
     dlink_node node;
-    size_t diskstart; /* in blocks */
-    size_t diskend; /* in blocks */
+    off_t diskstart; /* in blocks */
+    off_t diskend; /* in blocks */
     CossSwapDir *SD;
     int lockcount;
     char buffer[COSS_MEMBUF_SZ];
@@ -61,7 +61,7 @@
     char *requestbuf;
     size_t requestlen;
     size_t requestoffset; /* in blocks */
-    sfileno reqdiskoffset; /* in blocks */
+    int64_t reqdiskoffset; /* in blocks */
 
     struct
     {
@@ -76,7 +76,7 @@
     flags;
 
     CossMemBuf *locked_membuf;
-    size_t st_size;
+    off_t st_size;
     void read_(char *buf, size_t size, off_t offset, STRCB * callback, void *callback_data);
     void write(char const *buf, size_t size, off_t offset, FREE * free_func);
     void close();
diff -r -u -x 'Makefile*' -x '*.Po' -x '*.o' -x '*~' -x '*.la' ../../my-squid3-largeobj/src/fs/coss/store_dir_coss.cc ./fs/coss/store_dir_coss.cc
--- ../../my-squid3-largeobj/src/fs/coss/store_dir_coss.cc 2007-05-02 19:09:03.000000000 +0300
+++ ./fs/coss/store_dir_coss.cc 2007-05-13 11:04:28.000000000 +0300
@@ -81,7 +81,7 @@
 static EVH storeCossRebuildFromSwapLog;
 static StoreEntry *storeCossAddDiskRestore(CossSwapDir * SD, const cache_key * key,
         int file_number,
-        size_t swap_file_sz,
+        uint64_t swap_file_sz,
         time_t expires,
         time_t timestamp,
         time_t lastref,
@@ -514,7 +514,7 @@
 static StoreEntry *
 storeCossAddDiskRestore(CossSwapDir * SD, const cache_key * key,
                         int file_number,
-                        size_t swap_file_sz,
+                        uint64_t swap_file_sz,
                         time_t expires,
                         time_t timestamp,
                         time_t lastref,
@@ -1034,7 +1034,7 @@
 {
     unsigned int i;
     unsigned int size;
-    unsigned long max_offset;
+    off_t max_offset;
 
     i = GetInteger();
     size = i << 10; /* Mbytes to Kbytes */
@@ -1066,9 +1066,9 @@
      * largest possible sfileno, assuming sfileno is a 25-bit
      * signed integer, as defined in structs.h.
      */
-    max_offset = (unsigned long) 0xFFFFFF << blksz_bits;
+    max_offset = (off_t) 0xFFFFFF << blksz_bits;
 
-    if ((unsigned long)max_size > (unsigned long)(max_offset>>10)) {
+    if ((off_t)max_size > (max_offset>>10)) {
         debugs(47, 0, "COSS block-size = " << (1<<blksz_bits) << " bytes");
         debugs(47,0, "COSS largest file offset = " << (max_offset >> 10) << " KB");
         debugs(47, 0, "COSS cache_dir size = " << max_size << " KB");
diff -r -u -x 'Makefile*' -x '*.Po' -x '*.o' -x '*~' -x '*.la' ../../my-squid3-largeobj/src/fs/coss/store_io_coss.cc ./fs/coss/store_io_coss.cc
--- ../../my-squid3-largeobj/src/fs/coss/store_io_coss.cc 2007-05-02 19:09:03.000000000 +0300
+++ ./fs/coss/store_io_coss.cc 2007-05-12 22:16:18.000000000 +0300
@@ -163,9 +163,9 @@
     sio->swap_dirn = index;
     sio->swap_filen = allocate(&e, COSS_ALLOC_ALLOCATE);
     debugs(79, 3, "storeCossCreate: offset " <<
-           (long int) storeCossFilenoToDiskOffset(sio->swap_filen) <<
+           storeCossFilenoToDiskOffset(sio->swap_filen) <<
            ", size " << (long int) cstate->st_size << ", end " <<
-           (long int) (sio->swap_filen + cstate->st_size));
+           (sio->swap_filen + cstate->st_size));
 
     /* assume allocate() always succeeds */
     assert(-1 != sio->swap_filen);
@@ -431,7 +431,7 @@
 }
 
 char *
-CossSwapDir::storeCossMemPointerFromDiskOffset(size_t offset, CossMemBuf ** mb)
+CossSwapDir::storeCossMemPointerFromDiskOffset(off_t offset, CossMemBuf ** mb)
 {
     CossMemBuf *t;
     dlink_node *m;
@@ -539,7 +539,7 @@
 }
 
 CossMemBuf *
-CossSwapDir::createMemBuf(size_t start, sfileno curfn, int *collision)
+CossSwapDir::createMemBuf(off_t start, sfileno curfn, int *collision)
 {
     CossMemBuf *newmb;
     CossMemBuf *t;
diff -r -u -x 'Makefile*' -x '*.Po' -x '*.o' -x '*~' -x '*.la' ../../my-squid3-largeobj/src/fs/ufs/store_dir_ufs.cc ./fs/ufs/store_dir_ufs.cc
--- ../../my-squid3-largeobj/src/fs/ufs/store_dir_ufs.cc 2007-05-02 19:09:03.000000000 +0300
+++ ./fs/ufs/store_dir_ufs.cc 2007-05-12 10:12:14.000000000 +0300
@@ -682,7 +682,7 @@
 StoreEntry *
 UFSSwapDir::addDiskRestore(const cache_key * key,
                            sfileno file_number,
-                           size_t swap_file_sz,
+                           int64_t swap_file_sz,
                            time_t expires,
                            time_t timestamp,
                            time_t lastref,
diff -r -u -x 'Makefile*' -x '*.Po' -x '*.o' -x '*~' -x '*.la' ../../my-squid3-largeobj/src/fs/ufs/ufscommon.cc ./fs/ufs/ufscommon.cc
--- ../../my-squid3-largeobj/src/fs/ufs/ufscommon.cc 2007-05-02 19:09:04.000000000 +0300
+++ ./fs/ufs/ufscommon.cc 2007-05-12 21:46:40.000000000 +0300
@@ -230,13 +230,13 @@
         /* check sizes */
 
         if (tmpe.swap_file_sz == 0) {
-            tmpe.swap_file_sz = (size_t) sb.st_size;
-        } else if (tmpe.swap_file_sz == (size_t)(sb.st_size - swap_hdr_len)) {
-            tmpe.swap_file_sz = (size_t) sb.st_size;
-        } else if (tmpe.swap_file_sz != (size_t)sb.st_size) {
+            tmpe.swap_file_sz = (uint64_t) sb.st_size;
+        } else if (tmpe.swap_file_sz == (uint64_t)(sb.st_size - swap_hdr_len)) {
+            tmpe.swap_file_sz = (uint64_t) sb.st_size;
+        } else if (tmpe.swap_file_sz != (uint64_t)sb.st_size) {
             debugs(47, 1, "commonUfsDirRebuildFromDirectory: SIZE MISMATCH " <<
-                   (long int) tmpe.swap_file_sz << "!=" <<
-                   (long int) sb.st_size);
+                   tmpe.swap_file_sz << "!=" <<
+                   sb.st_size);
 
             sd->unlinkFile(filn);
             continue;
diff -r -u -x 'Makefile*' -x '*.Po' -x '*.o' -x '*~' -x '*.la' ../../my-squid3-largeobj/src/fs/ufs/ufscommon.h ./fs/ufs/ufscommon.h
--- ../../my-squid3-largeobj/src/fs/ufs/ufscommon.h 2006-09-14 04:50:33.000000000 +0300
+++ ./fs/ufs/ufscommon.h 2007-05-12 10:12:52.000000000 +0300
@@ -97,7 +97,7 @@
     void mapBitSet(sfileno filn);
     StoreEntry *addDiskRestore(const cache_key * key,
                                sfileno file_number,
-                               size_t swap_file_sz,
+                               int64_t swap_file_sz,
                                time_t expires,
                                time_t timestamp,
                                time_t lastref,
diff -r -u -x 'Makefile*' -x '*.Po' -x '*.o' -x '*~' -x '*.la' ../../my-squid3-largeobj/src/globals.cc ./globals.cc
--- ../../my-squid3-largeobj/src/globals.cc 2007-04-28 16:21:04.000000000 +0300
+++ ./globals.cc 2007-05-10 20:34:00.000000000 +0300
@@ -142,7 +142,7 @@
 int store_swap_low = 0;
 int store_swap_high = 0;
 size_t store_pages_max = 0;
-ssize_t store_maxobjsize = -1;
+int64_t store_maxobjsize = -1;
 hash_table *proxy_auth_username_cache = NULL;
 int incoming_sockets_accepted;
 #ifdef _SQUID_MSWIN_
diff -r -u -x 'Makefile*' -x '*.Po' -x '*.o' -x '*~' -x '*.la' ../../my-squid3-largeobj/src/globals.h ./globals.h
--- ../../my-squid3-largeobj/src/globals.h 2007-04-15 18:00:41.000000000 +0300
+++ ./globals.h 2007-05-10 20:33:37.000000000 +0300
@@ -156,7 +156,7 @@
     extern int store_swap_low; /* 0 */
     extern int store_swap_high; /* 0 */
     extern size_t store_pages_max; /* 0 */
-    extern ssize_t store_maxobjsize; /* -1 */
+    extern int64_t store_maxobjsize; /* -1 */
     extern hash_table *proxy_auth_username_cache; /* NULL */
     extern int incoming_sockets_accepted;
 #ifdef _SQUID_MSWIN_
diff -r -u -x 'Makefile*' -x '*.Po' -x '*.o' -x '*~' -x '*.la' ../../my-squid3-largeobj/src/MemObject.h ./MemObject.h
--- ../../my-squid3-largeobj/src/MemObject.h 2007-04-21 01:53:46.000000000 +0300
+++ ./MemObject.h 2007-05-10 21:31:54.000000000 +0300
@@ -130,7 +130,7 @@
     char *log_url;
     RemovalPolicyNode repl;
     int id;
-    ssize_t object_sz;
+    int64_t object_sz;
     size_t swap_hdr_sz;
 #if URL_CHECKSUM_DEBUG
 
diff -r -u -x 'Makefile*' -x '*.Po' -x '*.o' -x '*~' -x '*.la' ../../my-squid3-largeobj/src/store.cc ./store.cc
--- ../../my-squid3-largeobj/src/store.cc 2007-05-09 18:48:17.000000000 +0300
+++ ./store.cc 2007-05-12 12:19:22.000000000 +0300
@@ -940,11 +940,10 @@
 
     if (STORE_OK == store_status)
         if (mem_obj->object_sz < 0 ||
-                static_cast<size_t>(mem_obj->object_sz)
-                < Config.Store.minObjectSize)
+    mem_obj->object_sz < Config.Store.minObjectSize)
             return 1;
     if (getReply()->content_length > -1)
-        if (getReply()->content_length < (int) Config.Store.minObjectSize)
+        if (getReply()->content_length < Config.Store.minObjectSize)
             return 1;
     return 0;
 }
@@ -970,12 +969,12 @@
             store_check_cachable_hist.no.negative_cached++;
             return 0;           /* avoid release call below */
         } else if ((getReply()->content_length > 0 &&
-                    static_cast<size_t>(getReply()->content_length)
+                    getReply()->content_length
                     > Config.Store.maxObjectSize) ||
-                   static_cast<size_t>(mem_obj->endOffset()) > Config.Store.maxObjectSize) {
+                   mem_obj->endOffset() > Config.Store.maxObjectSize) {
             debugs(20, 2, "StoreEntry::checkCachable: NO: too big");
             store_check_cachable_hist.no.too_big++;
-        } else if (getReply()->content_length > (int) Config.Store.maxObjectSize) {
+        } else if (getReply()->content_length > Config.Store.maxObjectSize) {
             debugs(20, 2, "StoreEntry::checkCachable: NO: too big");
             store_check_cachable_hist.no.too_big++;
         } else if (checkTooSmall()) {
@@ -1356,7 +1355,7 @@
 bool
 StoreEntry::validLength() const
 {
-    int diff;
+    int64_t diff;
     const HttpReply *reply;
     assert(mem_obj != NULL);
     reply = getReply();
@@ -1659,7 +1658,7 @@
     }
 }
 
-ssize_t
+int64_t
 StoreEntry::objectLen() const
 {
     assert(mem_obj != NULL);
diff -r -u -x 'Makefile*' -x '*.Po' -x '*.o' -x '*~' -x '*.la' ../../my-squid3-largeobj/src/store_digest.cc ./store_digest.cc
--- ../../my-squid3-largeobj/src/store_digest.cc 2007-05-02 19:09:00.000000000 +0300
+++ ./store_digest.cc 2007-05-12 22:01:54.000000000 +0300
@@ -247,7 +247,7 @@
     }
 
     /* do not digest huge objects */
-    if (e->swap_file_sz > Config.Store.maxObjectSize) {
+    if (e->swap_file_sz > (uint64_t )Config.Store.maxObjectSize) {
         debugs(71, 6, "storeDigestAddable: NO: too big");
         return 0;
     }
diff -r -u -x 'Makefile*' -x '*.Po' -x '*.o' -x '*~' -x '*.la' ../../my-squid3-largeobj/src/store_dir.cc ./store_dir.cc
--- ../../my-squid3-largeobj/src/store_dir.cc 2007-05-02 19:09:00.000000000 +0300
+++ ./store_dir.cc 2007-05-10 21:48:22.000000000 +0300
@@ -330,13 +330,13 @@
 }
 
 void
-StoreController::updateSize(size_t size, int sign)
+StoreController::updateSize(int64_t size, int sign)
 {
     fatal("StoreController has no independent size\n");
 }
 
 void
-SwapDir::updateSize(size_t size, int sign)
+SwapDir::updateSize(int64_t size, int sign)
 {
     int blks = (size + fs.blksize - 1) / fs.blksize;
     int k = (blks * fs.blksize >> 10) * sign;
@@ -882,7 +882,7 @@
 }
 
 void
-StoreHashIndex::updateSize(size_t, int)
+StoreHashIndex::updateSize(int64_t, int)
 {}
 
 void
diff -r -u -x 'Makefile*' -x '*.Po' -x '*.o' -x '*~' -x '*.la' ../../my-squid3-largeobj/src/Store.h ./Store.h
--- ../../my-squid3-largeobj/src/Store.h 2007-04-23 09:19:30.000000000 +0300
+++ ./Store.h 2007-05-12 17:58:13.000000000 +0300
@@ -127,7 +127,7 @@
     time_t lastref;
     time_t expires;
     time_t lastmod;
-    size_t swap_file_sz;
+    uint64_t swap_file_sz;
     u_short refcount;
     u_short flags;
     /* END OF ON-DISK STORE_META_STD */
@@ -178,7 +178,7 @@
     /* reduce the memory lock count on the entry */
     virtual int unlock();
     /* increate the memory lock count on the entry */
-    virtual ssize_t objectLen() const;
+    virtual int64_t objectLen() const;
     virtual int64_t contentLen() const;
 
     virtual void lock()
@@ -292,7 +292,7 @@
     virtual void maintain() = 0; /* perform regular maintenance should be private and self registered ... */
 
     /* These should really be private */
-    virtual void updateSize(size_t size, int sign) = 0;
+    virtual void updateSize(int64_t size, int sign) = 0;
 
 private:
     static RefCount<Store> CurrentRoot;
diff -r -u -x 'Makefile*' -x '*.Po' -x '*.o' -x '*~' -x '*.la' ../../my-squid3-largeobj/src/StoreHashIndex.h ./StoreHashIndex.h
--- ../../my-squid3-largeobj/src/StoreHashIndex.h 2005-07-04 05:14:11.000000000 +0300
+++ ./StoreHashIndex.h 2007-05-10 21:47:21.000000000 +0300
@@ -75,7 +75,7 @@
 
     virtual void maintain();
 
-    virtual void updateSize(size_t, int);
+    virtual void updateSize(int64_t, int);
 
     virtual StoreSearch *search(String const url, HttpRequest *);
 
diff -r -u -x 'Makefile*' -x '*.Po' -x '*.o' -x '*~' -x '*.la' ../../my-squid3-largeobj/src/StoreSwapLogData.h ./StoreSwapLogData.h
--- ../../my-squid3-largeobj/src/StoreSwapLogData.h 2004-08-31 05:14:26.000000000 +0300
+++ ./StoreSwapLogData.h 2007-05-12 17:58:20.000000000 +0300
@@ -57,7 +57,7 @@
     time_t lastref;
     time_t expires;
     time_t lastmod;
-    size_t swap_file_sz;
+    uint64_t swap_file_sz;
     u_short refcount;
     u_short flags;
     unsigned char key[MD5_DIGEST_CHARS];
diff -r -u -x 'Makefile*' -x '*.Po' -x '*.o' -x '*~' -x '*.la' ../../my-squid3-largeobj/src/structs.h ./structs.h
--- ../../my-squid3-largeobj/src/structs.h 2007-04-16 21:05:01.000000000 +0300
+++ ./structs.h 2007-05-11 22:06:39.000000000 +0300
@@ -107,7 +107,7 @@
 {
     acl_size_t *next;
     acl_list *aclList;
-    size_t size;
+    int64_t size;
 };
 
 struct _ushortlist
@@ -476,8 +476,8 @@
     {
         int objectsPerBucket;
         size_t avgObjectSize;
-        size_t maxObjectSize;
-        size_t minObjectSize;
+        int64_t maxObjectSize;
+        int64_t minObjectSize;
         size_t maxInMemObjSize;
     }
 
diff -r -u -x 'Makefile*' -x '*.Po' -x '*.o' -x '*~' -x '*.la' ../../my-squid3-largeobj/src/SwapDir.cc ./SwapDir.cc
--- ../../my-squid3-largeobj/src/SwapDir.cc 2007-05-02 19:08:48.000000000 +0300
+++ ./SwapDir.cc 2007-05-10 20:51:00.000000000 +0300
@@ -245,7 +245,7 @@
     if (!value)
         self_destruct();
 
-    ssize_t size = xatoi(value);
+    int64_t size = strtoll(value, NULL, 10);
 
     if (reconfiguring && max_objsize != size)
         debugs(3, 1, "Cache dir '" << path << "' max object size now " << size);
@@ -259,7 +259,7 @@
 SwapDir::optionMaxSizeDump(StoreEntry * e) const
 {
     if (max_objsize != -1)
-        storeAppendPrintf(e, " max-size=%ld", (long int) max_objsize);
+        storeAppendPrintf(e, " max-size=%"PRId64, max_objsize);
 }
 
 /* Swapdirs do not have an index of their own - thus they ask their parent..
diff -r -u -x 'Makefile*' -x '*.Po' -x '*.o' -x '*~' -x '*.la' ../../my-squid3-largeobj/src/SwapDir.h ./SwapDir.h
--- ../../my-squid3-largeobj/src/SwapDir.h 2006-08-21 04:51:49.000000000 +0300
+++ ./SwapDir.h 2007-05-10 21:47:51.000000000 +0300
@@ -80,7 +80,7 @@
 
     virtual void dereference(StoreEntry &); /* Unreference this object */
 
-    virtual void updateSize(size_t size, int sign);
+    virtual void updateSize(int64_t size, int sign);
 
     /* the number of store dirs being rebuilt. */
     static int store_dirs_rebuilding;
@@ -142,7 +142,7 @@
     virtual void stat (StoreEntry &anEntry) const;
     virtual StoreSearch *search(String const url, HttpRequest *) = 0;
 
-    virtual void updateSize(size_t size, int sign);
+    virtual void updateSize(int64_t size, int sign);
 
     /* migrated from store_dir.cc */
     bool objectSizeIsAcceptable(ssize_t objsize) const;
@@ -164,7 +164,7 @@
     int max_size;
     char *path;
     int index; /* This entry's index into the swapDirs array */
-    ssize_t max_objsize;
+    int64_t max_objsize;
     RemovalPolicy *repl;
     int removals;
     int scanned;