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>'].