This is an automated email from the ASF dual-hosted git repository.

sorber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficserver.git


The following commit(s) were added to refs/heads/master by this push:
     new 338b8ab  Fix sizeofDoc silliness.
338b8ab is described below

commit 338b8ab21a75d957984a5b1af21be67660c010ab
Author: Phil Sorber <sor...@apache.org>
AuthorDate: Wed Sep 6 14:11:31 2017 -0600

    Fix sizeofDoc silliness.
---
 iocore/cache/Cache.cc      | 12 ++++++------
 iocore/cache/CacheDir.cc   |  4 ++--
 iocore/cache/CacheRead.cc  |  4 ++--
 iocore/cache/CacheWrite.cc | 16 ++++++++--------
 iocore/cache/P_CacheBC.h   |  7 +++----
 iocore/cache/P_CacheVol.h  | 15 ++++++---------
 6 files changed, 27 insertions(+), 31 deletions(-)

diff --git a/iocore/cache/Cache.cc b/iocore/cache/Cache.cc
index daa6ea9..60cd63e 100644
--- a/iocore/cache/Cache.cc
+++ b/iocore/cache/Cache.cc
@@ -2215,7 +2215,7 @@ upgrade_doc_version(Ptr<IOBufferData> &buf)
         char *dst;
         char *hdr_limit = doc->data();
         HTTPInfo::FragOffset *frags =
-          reinterpret_cast<HTTPInfo::FragOffset *>(static_cast<char 
*>(buf->data()) + cache_bc::sizeofDoc_v23);
+          reinterpret_cast<HTTPInfo::FragOffset *>(static_cast<char 
*>(buf->data()) + sizeof(cache_bc::Doc_v23));
         int frag_count      = doc->_flen / sizeof(HTTPInfo::FragOffset);
         size_t n            = 0;
         size_t content_size = doc->data_len();
@@ -2229,10 +2229,10 @@ upgrade_doc_version(Ptr<IOBufferData> &buf)
 
         src = buf->data();
         dst = d_buf->data();
-        memcpy(dst, src, sizeofDoc);
-        src += sizeofDoc + doc->_flen;
-        dst += sizeofDoc;
-        n -= sizeofDoc;
+        memcpy(dst, src, sizeof(Doc));
+        src += sizeof(Doc) + doc->_flen;
+        dst += sizeof(Doc);
+        n -= sizeof(Doc);
 
         // We copy the fragment table iff there is a fragment table and there 
is only one alternate.
         if (frag_count > 0 && cache_bc::HTTPInfo_v21::marshalled_length(src) > 
doc->hlen) {
@@ -2247,7 +2247,7 @@ upgrade_doc_version(Ptr<IOBufferData> &buf)
           // Must update new Doc::len and Doc::hlen
           // dst points at the first byte of the content, or one past the last 
byte of the alt header.
           d_doc->len  = (dst - reinterpret_cast<char *>(d_doc)) + content_size;
-          d_doc->hlen = (dst - reinterpret_cast<char *>(d_doc)) - sizeofDoc;
+          d_doc->hlen = (dst - reinterpret_cast<char *>(d_doc)) - sizeof(Doc);
           buf         = d_buf; // replace original buffer with new buffer.
         } else {
           zret = false;
diff --git a/iocore/cache/CacheDir.cc b/iocore/cache/CacheDir.cc
index 2616d81..01c76ef 100644
--- a/iocore/cache/CacheDir.cc
+++ b/iocore/cache/CacheDir.cc
@@ -605,7 +605,7 @@ dir_insert(const CacheKey *key, Vol *d, Dir *to_part)
   ink_assert(d->mutex->thread_holding == this_ethread());
   int s  = key->slice32(0) % d->segments, l;
   int bi = key->slice32(1) % d->buckets;
-  ink_assert(dir_approx_size(to_part) <= MAX_FRAG_SIZE + sizeofDoc);
+  ink_assert(dir_approx_size(to_part) <= MAX_FRAG_SIZE + sizeof(Doc));
   Dir *seg = dir_segment(s, d);
   Dir *e   = nullptr;
   Dir *b   = dir_bucket(bi, seg);
@@ -671,7 +671,7 @@ dir_overwrite(const CacheKey *key, Vol *d, Dir *dir, Dir 
*overwrite, bool must_o
   Vol *vol = d;
   CHECK_DIR(d);
 
-  ink_assert((unsigned int)dir_approx_size(dir) <= (unsigned 
int)(MAX_FRAG_SIZE + sizeofDoc)); // XXX - size should be unsigned
+  ink_assert((unsigned int)dir_approx_size(dir) <= (unsigned 
int)(MAX_FRAG_SIZE + sizeof(Doc))); // XXX - size should be unsigned
 Lagain:
   // find entry to overwrite
   e = b;
diff --git a/iocore/cache/CacheRead.cc b/iocore/cache/CacheRead.cc
index b9a6ccd..1ed7dd0 100644
--- a/iocore/cache/CacheRead.cc
+++ b/iocore/cache/CacheRead.cc
@@ -1094,10 +1094,10 @@ CacheVC::openReadStartHead(int event, Event *e)
             }
           }
           Note("OpenReadHead failed for cachekey %X : vector inconsistency - "
-               "unmarshalled %d expecting %d in %d (base=%d, ver=%d:%d) "
+               "unmarshalled %d expecting %d in %d (base=%" PRIu64 ", 
ver=%d:%d) "
                "- vector n=%d size=%d"
                "first alt=%d[%s]",
-               key.slice32(0), uml, doc->hlen, doc->len, sizeofDoc, 
doc->v_major, doc->v_minor, vector.count(), alt_length,
+               key.slice32(0), uml, doc->hlen, doc->len, sizeof(Doc), 
doc->v_major, doc->v_minor, vector.count(), alt_length,
                alt->m_magic,
                (CACHE_ALT_MAGIC_ALIVE == alt->m_magic ?
                   "alive" :
diff --git a/iocore/cache/CacheWrite.cc b/iocore/cache/CacheWrite.cc
index 5871980..d633799 100644
--- a/iocore/cache/CacheWrite.cc
+++ b/iocore/cache/CacheWrite.cc
@@ -190,9 +190,9 @@ CacheVC::handleWrite(int event, Event * /* e ATS_UNUSED */)
 
   set_agg_write_in_progress();
   POP_HANDLER;
-  agg_len = vol->round_to_approx_size(write_len + header_len + frag_len + 
sizeofDoc);
+  agg_len = vol->round_to_approx_size(write_len + header_len + frag_len + 
sizeof(Doc));
   vol->agg_todo_size += agg_len;
-  bool agg_error = (agg_len > AGG_SIZE || header_len + sizeofDoc > 
MAX_FRAG_SIZE ||
+  bool agg_error = (agg_len > AGG_SIZE || header_len + sizeof(Doc) > 
MAX_FRAG_SIZE ||
                     (!f.readers && (vol->agg_todo_size > 
cache_config_agg_write_backlog + AGG_SIZE) && write_len));
 #ifdef CACHE_AGG_FAIL_RATE
   agg_error = agg_error || 
((uint32_t)mutex->thread_holding->generator.random() < (uint32_t)(UINT_MAX * 
CACHE_AGG_FAIL_RATE));
@@ -747,8 +747,8 @@ agg_copy(char *p, CacheVC *vc)
     Doc *doc                   = (Doc *)p;
     IOBufferBlock *res_alt_blk = nullptr;
 
-    uint32_t len = vc->write_len + vc->header_len + vc->frag_len + sizeofDoc;
-    ink_assert(vc->frag_type != CACHE_FRAG_TYPE_HTTP || len != sizeofDoc);
+    uint32_t len = vc->write_len + vc->header_len + vc->frag_len + sizeof(Doc);
+    ink_assert(vc->frag_type != CACHE_FRAG_TYPE_HTTP || len != sizeof(Doc));
     ink_assert(vol->round_to_approx_size(len) == vc->agg_len);
     // update copy of directory entry for this document
     dir_set_approx_size(&vc->dir, vc->agg_len);
@@ -792,7 +792,7 @@ agg_copy(char *p, CacheVC *vc)
     if (vc->f.rewrite_resident_alt) {
       ink_assert(vc->f.use_first_key);
       Doc *res_doc   = (Doc *)vc->first_buf->data();
-      res_alt_blk    = new_IOBufferBlock(vc->first_buf, res_doc->data_len(), 
sizeofDoc + res_doc->hlen);
+      res_alt_blk    = new_IOBufferBlock(vc->first_buf, res_doc->data_len(), 
sizeof(Doc) + res_doc->hlen);
       doc->key       = res_doc->key;
       doc->total_len = res_doc->data_len();
     }
@@ -1303,7 +1303,7 @@ CacheVC::openWriteClose(int event, Event *e)
         return openWriteCloseDir(event, e);
       }
     }
-    if (length && (fragment || length > MAX_FRAG_SIZE)) {
+    if (length && (fragment || length > static_cast<int>(MAX_FRAG_SIZE))) {
       SET_HANDLER(&CacheVC::openWriteCloseDataDone);
       write_len = length;
       if (write_len > MAX_FRAG_SIZE) {
@@ -1370,7 +1370,7 @@ CacheVC::openWriteWriteDone(int event, Event *e)
 static inline int
 target_fragment_size()
 {
-  return cache_config_target_fragment_size - sizeofDoc;
+  return cache_config_target_fragment_size - sizeof(Doc);
 }
 
 int
@@ -1406,7 +1406,7 @@ Lagain:
     avail -= (towrite - ntodo);
     towrite = ntodo;
   }
-  if (towrite > MAX_FRAG_SIZE) {
+  if (towrite > static_cast<int>(MAX_FRAG_SIZE)) {
     avail -= (towrite - MAX_FRAG_SIZE);
     towrite = MAX_FRAG_SIZE;
   }
diff --git a/iocore/cache/P_CacheBC.h b/iocore/cache/P_CacheBC.h
index 5a19ce3..1af43c1 100644
--- a/iocore/cache/P_CacheBC.h
+++ b/iocore/cache/P_CacheBC.h
@@ -119,21 +119,20 @@ struct Doc_v23 {
   size_t data_len();
 };
 
-static size_t const sizeofDoc_v23 = sizeof(Doc_v23);
 char *
 Doc_v23::data()
 {
-  return reinterpret_cast<char *>(this) + sizeofDoc_v23 + _flen + hlen;
+  return reinterpret_cast<char *>(this) + sizeof(Doc_v23) + _flen + hlen;
 }
 size_t
 Doc_v23::data_len()
 {
-  return len - sizeofDoc_v23 - hlen;
+  return len - sizeof(Doc_v23) - hlen;
 }
 char *
 Doc_v23::hdr()
 {
-  return reinterpret_cast<char *>(this) + sizeofDoc_v23;
+  return reinterpret_cast<char *>(this) + sizeof(Doc_v23);
 }
 
 } // namespace cache_bc
diff --git a/iocore/cache/P_CacheVol.h b/iocore/cache/P_CacheVol.h
index 1fbd337..b9e5490 100644
--- a/iocore/cache/P_CacheVol.h
+++ b/iocore/cache/P_CacheVol.h
@@ -41,7 +41,7 @@
 #define MAX_VOL_SIZE ((off_t)512 * 1024 * 1024 * 1024 * 1024)
 #define STORE_BLOCKS_PER_CACHE_BLOCK (STORE_BLOCK_SIZE / CACHE_BLOCK_SIZE)
 #define MAX_VOL_BLOCKS (MAX_VOL_SIZE / CACHE_BLOCK_SIZE)
-#define MAX_FRAG_SIZE (AGG_SIZE - sizeofDoc) // true max
+#define MAX_FRAG_SIZE (AGG_SIZE - sizeof(Doc)) // true max
 #define LEAVE_FREE DEFAULT_MAX_BUFFER_SIZE
 #define PIN_SCAN_EVERY 16 // scan every 1/16 of disk
 #define VOL_HASH_TABLE_SIZE 32707
@@ -52,8 +52,8 @@
 #define RECOVERY_SIZE EVACUATION_SIZE                // 8MB
 #define AIO_NOT_IN_PROGRESS 0
 #define AIO_AGG_WRITE_IN_PROGRESS -1
-#define AUTO_SIZE_RAM_CACHE -1                             // 1-1 with 
directory size
-#define DEFAULT_TARGET_FRAGMENT_SIZE (1048576 - sizeofDoc) // 1MB
+#define AUTO_SIZE_RAM_CACHE -1                               // 1-1 with 
directory size
+#define DEFAULT_TARGET_FRAGMENT_SIZE (1048576 - sizeof(Doc)) // 1MB
 
 #define dir_offset_evac_bucket(_o) (_o / (EVACUATION_BUCKET_SIZE / 
CACHE_BLOCK_SIZE))
 #define dir_evac_bucket(_e) dir_offset_evac_bucket(dir_offset(_e))
@@ -66,8 +66,6 @@
 #define DOC_CORRUPT ((uint32_t)0xDEADBABE)
 #define DOC_NO_CHECKSUM ((uint32_t)0xA0B0C0D0)
 
-#define sizeofDoc (((uint32_t)(uintptr_t) & ((Doc *)0)->checksum) + 
(uint32_t)sizeof(uint32_t))
-
 struct Cache;
 struct Vol;
 struct CacheDisk;
@@ -277,7 +275,6 @@ struct CacheVol {
 };
 
 // Note : hdr() needs to be 8 byte aligned.
-// If you change this, change sizeofDoc above
 struct Doc {
   uint32_t magic;        // DOC_MAGIC
   uint32_t len;          // length of this fragment (including hlen & 
sizeof(Doc), unrounded)
@@ -395,13 +392,13 @@ vol_relative_length(Vol *v, off_t start_offset)
 TS_INLINE uint32_t
 Doc::prefix_len()
 {
-  return sizeofDoc + hlen;
+  return sizeof(Doc) + hlen;
 }
 
 TS_INLINE uint32_t
 Doc::data_len()
 {
-  return len - sizeofDoc - hlen;
+  return len - sizeof(Doc) - hlen;
 }
 
 TS_INLINE int
@@ -413,7 +410,7 @@ Doc::single_fragment()
 TS_INLINE char *
 Doc::hdr()
 {
-  return reinterpret_cast<char *>(this) + sizeofDoc;
+  return reinterpret_cast<char *>(this) + sizeof(Doc);
 }
 
 TS_INLINE char *

-- 
To stop receiving notification emails like this one, please contact
['"commits@trafficserver.apache.org" <commits@trafficserver.apache.org>'].

Reply via email to