]> git.pld-linux.org Git - packages/squid.git/commitdiff
- fix for cachemgr vm_objects segfault
authorhawk <hawk@pld-linux.org>
Mon, 13 Dec 2004 19:55:37 +0000 (19:55 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    squid-2.5.STABLE7-cachemgr_vmobjects.patch -> 1.1

squid-2.5.STABLE7-cachemgr_vmobjects.patch [new file with mode: 0644]

diff --git a/squid-2.5.STABLE7-cachemgr_vmobjects.patch b/squid-2.5.STABLE7-cachemgr_vmobjects.patch
new file mode 100644 (file)
index 0000000..1072484
--- /dev/null
@@ -0,0 +1,179 @@
+Index: squid/src/stat.c
+diff -c squid/src/stat.c:1.351.2.10 squid/src/stat.c:1.351.2.11
+*** squid/src/stat.c:1.351.2.10        Sat Jul 17 14:09:23 2004
+--- squid/src/stat.c   Tue Dec  7 18:00:56 2004
+***************
+*** 58,64 ****
+  static void statCountersClean(StatCounters *);
+  static void statCountersCopy(StatCounters * dest, const StatCounters * orig);
+  static double statMedianSvc(int, int);
+! static void statStoreEntry(StoreEntry * s, StoreEntry * e);
+  static double statCPUUsage(int minutes);
+  static OBJH stat_io_get;
+  static OBJH stat_objects_get;
+--- 58,64 ----
+  static void statCountersClean(StatCounters *);
+  static void statCountersCopy(StatCounters * dest, const StatCounters * orig);
+  static double statMedianSvc(int, int);
+! static void statStoreEntry(MemBuf * mb, StoreEntry * e);
+  static double statCPUUsage(int minutes);
+  static OBJH stat_io_get;
+  static OBJH stat_objects_get;
+***************
+*** 254,308 ****
+  }
+  
+  static void
+! statStoreEntry(StoreEntry * s, StoreEntry * e)
+  {
+      MemObject *mem = e->mem_obj;
+      int i;
+      struct _store_client *sc;
+      dlink_node *node;
+!     storeAppendPrintf(s, "KEY %s\n", storeKeyText(e->hash.key));
+      if (mem)
+!      storeAppendPrintf(s, "\t%s %s\n",
+           RequestMethodStr[mem->method], mem->log_url);
+!     storeAppendPrintf(s, "\t%s\n", describeStatuses(e));
+!     storeAppendPrintf(s, "\t%s\n", storeEntryFlags(e));
+!     storeAppendPrintf(s, "\t%s\n", describeTimestamps(e));
+!     storeAppendPrintf(s, "\t%d locks, %d clients, %d refs\n",
+       (int) e->lock_count,
+       storePendingNClients(e),
+       (int) e->refcount);
+!     storeAppendPrintf(s, "\tSwap Dir %d, File %#08X\n",
+       e->swap_dirn, e->swap_filen);
+      if (mem != NULL) {
+!      storeAppendPrintf(s, "\tinmem_lo: %d\n", (int) mem->inmem_lo);
+!      storeAppendPrintf(s, "\tinmem_hi: %d\n", (int) mem->inmem_hi);
+!      storeAppendPrintf(s, "\tswapout: %d bytes queued\n",
+           (int) mem->swapout.queue_offset);
+       if (mem->swapout.sio)
+!          storeAppendPrintf(s, "\tswapout: %d bytes written\n",
+               (int) storeOffset(mem->swapout.sio));
+       for (i = 0, node = mem->clients.head; node; node = node->next, i++) {
+           sc = (store_client *) node->data;
+           if (sc->callback_data == NULL)
+               continue;
+!          storeAppendPrintf(s, "\tClient #%d, %p\n", i, sc->callback_data);
+!          storeAppendPrintf(s, "\t\tcopy_offset: %d\n",
+               (int) sc->copy_offset);
+!          storeAppendPrintf(s, "\t\tseen_offset: %d\n",
+               (int) sc->seen_offset);
+!          storeAppendPrintf(s, "\t\tcopy_size: %d\n",
+               (int) sc->copy_size);
+!          storeAppendPrintf(s, "\t\tflags:");
+           if (sc->flags.disk_io_pending)
+!              storeAppendPrintf(s, " disk_io_pending");
+           if (sc->flags.store_copying)
+!              storeAppendPrintf(s, " store_copying");
+           if (sc->flags.copy_event_pending)
+!              storeAppendPrintf(s, " copy_event_pending");
+!          storeAppendPrintf(s, "\n");
+       }
+      }
+!     storeAppendPrintf(s, "\n");
+  }
+  
+  /* process objects list */
+--- 254,308 ----
+  }
+  
+  static void
+! statStoreEntry(MemBuf * mb, StoreEntry * e)
+  {
+      MemObject *mem = e->mem_obj;
+      int i;
+      struct _store_client *sc;
+      dlink_node *node;
+!     memBufPrintf(mb, "KEY %s\n", storeKeyText(e->hash.key));
+      if (mem)
+!      memBufPrintf(mb, "\t%s %s\n",
+           RequestMethodStr[mem->method], mem->log_url);
+!     memBufPrintf(mb, "\t%s\n", describeStatuses(e));
+!     memBufPrintf(mb, "\t%s\n", storeEntryFlags(e));
+!     memBufPrintf(mb, "\t%s\n", describeTimestamps(e));
+!     memBufPrintf(mb, "\t%d locks, %d clients, %d refs\n",
+       (int) e->lock_count,
+       storePendingNClients(e),
+       (int) e->refcount);
+!     memBufPrintf(mb, "\tSwap Dir %d, File %#08X\n",
+       e->swap_dirn, e->swap_filen);
+      if (mem != NULL) {
+!      memBufPrintf(mb, "\tinmem_lo: %d\n", (int) mem->inmem_lo);
+!      memBufPrintf(mb, "\tinmem_hi: %d\n", (int) mem->inmem_hi);
+!      memBufPrintf(mb, "\tswapout: %d bytes queued\n",
+           (int) mem->swapout.queue_offset);
+       if (mem->swapout.sio)
+!          memBufPrintf(mb, "\tswapout: %d bytes written\n",
+               (int) storeOffset(mem->swapout.sio));
+       for (i = 0, node = mem->clients.head; node; node = node->next, i++) {
+           sc = (store_client *) node->data;
+           if (sc->callback_data == NULL)
+               continue;
+!          memBufPrintf(mb, "\tClient #%d, %p\n", i, sc->callback_data);
+!          memBufPrintf(mb, "\t\tcopy_offset: %d\n",
+               (int) sc->copy_offset);
+!          memBufPrintf(mb, "\t\tseen_offset: %d\n",
+               (int) sc->seen_offset);
+!          memBufPrintf(mb, "\t\tcopy_size: %d\n",
+               (int) sc->copy_size);
+!          memBufPrintf(mb, "\t\tflags:");
+           if (sc->flags.disk_io_pending)
+!              memBufPrintf(mb, " disk_io_pending");
+           if (sc->flags.store_copying)
+!              memBufPrintf(mb, " store_copying");
+           if (sc->flags.copy_event_pending)
+!              memBufPrintf(mb, " copy_event_pending");
+!          memBufPrintf(mb, "\n");
+       }
+      }
+!     memBufPrintf(mb, "\n");
+  }
+  
+  /* process objects list */
+***************
+*** 326,344 ****
+       eventAdd("statObjects", statObjects, state, 0.1, 1);
+       return;
+      }
+-     storeBuffer(state->sentry);
+      debug(49, 3) ("statObjects: Bucket #%d\n", state->bucket);
+      link_next = hash_get_bucket(store_table, state->bucket);
+!     while (NULL != (link_ptr = link_next)) {
+!      link_next = link_ptr->next;
+!      e = (StoreEntry *) link_ptr;
+!      if (state->filter && 0 == state->filter(e))
+!          continue;
+!      statStoreEntry(state->sentry, e);
+      }
+      state->bucket++;
+      eventAdd("statObjects", statObjects, state, 0.0, 1);
+-     storeBufferFlush(state->sentry);
+  }
+  
+  static void
+--- 326,348 ----
+       eventAdd("statObjects", statObjects, state, 0.1, 1);
+       return;
+      }
+      debug(49, 3) ("statObjects: Bucket #%d\n", state->bucket);
+      link_next = hash_get_bucket(store_table, state->bucket);
+!     if (link_next) {
+!      MemBuf mb;
+!      memBufDefInit(&mb);
+!      while (NULL != (link_ptr = link_next)) {
+!          link_next = link_ptr->next;
+!          e = (StoreEntry *) link_ptr;
+!          if (state->filter && 0 == state->filter(e))
+!              continue;
+!          statStoreEntry(&mb, e);
+!      }
+!      storeAppend(state->sentry, mb.buf, mb.size);
+!      memBufClean(&mb);
+      }
+      state->bucket++;
+      eventAdd("statObjects", statObjects, state, 0.0, 1);
+  }
+  
+  static void
This page took 0.47765 seconds and 4 git commands to generate.