This is an automated email from the ASF dual-hosted git repository. masaori 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 d17fe29b0 Cleanup: const correctness of Vol and Doc (#9165) d17fe29b0 is described below commit d17fe29b0a5c8b130541f4ecb8e193be1831f3dd Author: Masaori Koshiba <masa...@apache.org> AuthorDate: Mon Oct 31 08:56:30 2022 +0900 Cleanup: const correctness of Vol and Doc (#9165) --- iocore/cache/P_CacheDir.h | 4 ++ iocore/cache/P_CacheVol.h | 113 ++++++++++++++++++++++++---------------------- 2 files changed, 64 insertions(+), 53 deletions(-) diff --git a/iocore/cache/P_CacheDir.h b/iocore/cache/P_CacheDir.h index c5992f0ea..70e6bfded 100644 --- a/iocore/cache/P_CacheDir.h +++ b/iocore/cache/P_CacheDir.h @@ -321,12 +321,14 @@ dir_from_offset(int64_t i, Dir *seg) return dir_in_seg(seg, i); #endif } + TS_INLINE Dir * next_dir(Dir *d, Dir *seg) { int i = dir_next(d); return dir_from_offset(i, seg); } + TS_INLINE int64_t dir_to_offset(const Dir *d, const Dir *seg) { @@ -338,11 +340,13 @@ dir_to_offset(const Dir *d, const Dir *seg) return i; #endif } + TS_INLINE Dir * dir_bucket(int64_t b, Dir *seg) { return dir_in_seg(seg, b * DIR_DEPTH); } + TS_INLINE Dir * dir_bucket_row(Dir *b, int64_t i) { diff --git a/iocore/cache/P_CacheVol.h b/iocore/cache/P_CacheVol.h index b2f69b13c..24d9d4313 100644 --- a/iocore/cache/P_CacheVol.h +++ b/iocore/cache/P_CacheVol.h @@ -206,17 +206,9 @@ struct Vol : public Continuation { int dir_check(bool fix); int db_check(bool fix); - bool - evac_bucket_valid(off_t bucket) - { - return (bucket >= 0 && bucket < evacuate_size); - } + bool evac_bucket_valid(off_t bucket) const; - int - is_io_in_progress() - { - return io.aiocb.aio_fildes != AIO_NOT_IN_PROGRESS; - } + int is_io_in_progress() const; int increment_generation() { @@ -227,11 +219,7 @@ struct Vol : public Continuation { header->generation++; return header->generation; } - void - set_io_not_in_progress() - { - io.aiocb.aio_fildes = AIO_NOT_IN_PROGRESS; - } + void set_io_not_in_progress(); int aggWriteDone(int event, Event *e); int aggWrite(int event, void *e); @@ -247,25 +235,25 @@ struct Vol : public Continuation { void evacuate_cleanup_blocks(int i); void evacuate_cleanup(); EvacuationBlock *force_evacuate_head(Dir *dir, int pinned); - int within_hit_evacuate_window(Dir *dir); - uint32_t round_to_approx_size(uint32_t l); + int within_hit_evacuate_window(Dir *dir) const; + uint32_t round_to_approx_size(uint32_t l) const; // inline functions - int headerlen(); // calculates the total length of the vol header and the freelist - int direntries(); // total number of dir entries - Dir *dir_segment(int s); // returns the first dir in the segment s - size_t dirlen(); // calculates the total length of header, directories and footer - int vol_out_of_phase_valid(Dir *e); - - int vol_out_of_phase_agg_valid(Dir *e); - int vol_out_of_phase_write_valid(Dir *e); - int vol_in_phase_valid(Dir *e); - int vol_in_phase_agg_buf_valid(Dir *e); - - off_t vol_offset(Dir *e); - off_t offset_to_vol_offset(off_t pos); - off_t vol_offset_to_offset(off_t pos); - off_t vol_relative_length(off_t start_offset); + int headerlen() const; // calculates the total length of the vol header and the freelist + int direntries() const; // total number of dir entries + Dir *dir_segment(int s) const; // returns the first dir in the segment s + size_t dirlen() const; // calculates the total length of header, directories and footer + int vol_out_of_phase_valid(Dir *e) const; + + int vol_out_of_phase_agg_valid(Dir *e) const; + int vol_out_of_phase_write_valid(Dir *e) const; + int vol_in_phase_valid(Dir *e) const; + int vol_in_phase_agg_buf_valid(Dir *e) const; + + off_t vol_offset(Dir *e) const; + off_t offset_to_vol_offset(off_t pos) const; + off_t vol_offset_to_offset(off_t pos) const; + off_t vol_relative_length(off_t start_offset) const; Vol() : Continuation(new_ProxyMutex()) { @@ -326,9 +314,9 @@ struct Doc { CryptoHash key; ///< Key for this doc. #endif - uint32_t data_len(); - uint32_t prefix_len(); - int single_fragment(); + uint32_t data_len() const; + uint32_t prefix_len() const; + int single_fragment() const; int no_data_in_fragment(); char *hdr(); char *data(); @@ -346,98 +334,99 @@ extern unsigned short *vol_hash_table; // inline Functions TS_INLINE int -Vol::headerlen() +Vol::headerlen() const { return ROUND_TO_STORE_BLOCK(sizeof(VolHeaderFooter) + sizeof(uint16_t) * (this->segments - 1)); } TS_INLINE Dir * -Vol::dir_segment(int s) +Vol::dir_segment(int s) const { return (Dir *)(((char *)this->dir) + (s * this->buckets) * DIR_DEPTH * SIZEOF_DIR); } TS_INLINE size_t -Vol::dirlen() +Vol::dirlen() const { return this->headerlen() + ROUND_TO_STORE_BLOCK(((size_t)this->buckets) * DIR_DEPTH * this->segments * SIZEOF_DIR) + ROUND_TO_STORE_BLOCK(sizeof(VolHeaderFooter)); } TS_INLINE int -Vol::direntries() +Vol::direntries() const { return this->buckets * DIR_DEPTH * this->segments; } TS_INLINE int -Vol::vol_out_of_phase_valid(Dir *e) +Vol::vol_out_of_phase_valid(Dir *e) const { return (dir_offset(e) - 1 >= ((this->header->agg_pos - this->start) / CACHE_BLOCK_SIZE)); } TS_INLINE int -Vol::vol_out_of_phase_agg_valid(Dir *e) +Vol::vol_out_of_phase_agg_valid(Dir *e) const { return (dir_offset(e) - 1 >= ((this->header->agg_pos - this->start + AGG_SIZE) / CACHE_BLOCK_SIZE)); } TS_INLINE int -Vol::vol_out_of_phase_write_valid(Dir *e) +Vol::vol_out_of_phase_write_valid(Dir *e) const { return (dir_offset(e) - 1 >= ((this->header->write_pos - this->start) / CACHE_BLOCK_SIZE)); } TS_INLINE int -Vol::vol_in_phase_valid(Dir *e) +Vol::vol_in_phase_valid(Dir *e) const { return (dir_offset(e) - 1 < ((this->header->write_pos + this->agg_buf_pos - this->start) / CACHE_BLOCK_SIZE)); } TS_INLINE off_t -Vol::vol_offset(Dir *e) +Vol::vol_offset(Dir *e) const { return this->start + (off_t)dir_offset(e) * CACHE_BLOCK_SIZE - CACHE_BLOCK_SIZE; } TS_INLINE off_t -Vol::offset_to_vol_offset(off_t pos) +Vol::offset_to_vol_offset(off_t pos) const { return ((pos - this->start + CACHE_BLOCK_SIZE) / CACHE_BLOCK_SIZE); } TS_INLINE off_t -Vol::vol_offset_to_offset(off_t pos) +Vol::vol_offset_to_offset(off_t pos) const { return this->start + pos * CACHE_BLOCK_SIZE - CACHE_BLOCK_SIZE; } TS_INLINE int -Vol::vol_in_phase_agg_buf_valid(Dir *e) +Vol::vol_in_phase_agg_buf_valid(Dir *e) const { return (this->vol_offset(e) >= this->header->write_pos && this->vol_offset(e) < (this->header->write_pos + this->agg_buf_pos)); } + // length of the partition not including the offset of location 0. TS_INLINE off_t -Vol::vol_relative_length(off_t start_offset) +Vol::vol_relative_length(off_t start_offset) const { return (this->len + this->skip) - start_offset; } TS_INLINE uint32_t -Doc::prefix_len() +Doc::prefix_len() const { return sizeof(Doc) + hlen; } TS_INLINE uint32_t -Doc::data_len() +Doc::data_len() const { return len - sizeof(Doc) - hlen; } TS_INLINE int -Doc::single_fragment() +Doc::single_fragment() const { return data_len() == total_len; } @@ -511,7 +500,7 @@ Vol::open_read(const CryptoHash *key) } TS_INLINE int -Vol::within_hit_evacuate_window(Dir *xdir) +Vol::within_hit_evacuate_window(Dir *xdir) const { off_t oft = dir_offset(xdir) - 1; off_t write_off = (header->write_pos + AGG_SIZE - start) / CACHE_BLOCK_SIZE; @@ -523,8 +512,26 @@ Vol::within_hit_evacuate_window(Dir *xdir) } TS_INLINE uint32_t -Vol::round_to_approx_size(uint32_t l) +Vol::round_to_approx_size(uint32_t l) const { uint32_t ll = round_to_approx_dir_size(l); return ROUND_TO_SECTOR(this, ll); } + +inline bool +Vol::evac_bucket_valid(off_t bucket) const +{ + return (bucket >= 0 && bucket < evacuate_size); +} + +inline int +Vol::is_io_in_progress() const +{ + return io.aiocb.aio_fildes != AIO_NOT_IN_PROGRESS; +} + +inline void +Vol::set_io_not_in_progress() +{ + io.aiocb.aio_fildes = AIO_NOT_IN_PROGRESS; +}