From: Liu Yuan <[email protected]> This is a preparation patch to dissociate util.h and utli.c from sheepdog, in order to be used by shared lib.
Signed-off-by: Liu Yuan <[email protected]> --- configure.ac | 11 ----------- include/logger.h | 7 +++++++ include/util.h | 17 +---------------- lib/fec.c | 14 +++++++------- lib/logger.c | 4 ++-- lib/work.c | 2 +- sheep/cluster/corosync.c | 2 +- sheep/cluster/shepherd.c | 4 ++-- sheep/cluster/zookeeper.c | 2 +- sheep/group.c | 6 +++--- sheep/md.c | 4 ++-- sheep/migrate.c | 2 +- sheep/object_cache.c | 6 +++--- sheep/ops.c | 6 +++--- sheep/plain_store.c | 2 +- sheep/request.c | 10 +++++----- sheep/sheep.c | 2 +- sheep/trace/trace.c | 4 ++-- sheep/vdi.c | 16 ++++++++-------- 19 files changed, 51 insertions(+), 70 deletions(-) diff --git a/configure.ac b/configure.ac index cece3d8..3635dc8 100644 --- a/configure.ac +++ b/configure.ac @@ -206,10 +206,6 @@ AC_ARG_ENABLE([debug], [ --enable-debug : enable debug build. ], [ default="no" ]) -AC_ARG_ENABLE([assert], - [ --enable-assert : enable assert. ],, - [ enable_assert="yes" ],) - AC_ARG_ENABLE([unittest], [ --enable-unittest : enable unittest. ], [ default="no" ]) @@ -342,13 +338,6 @@ else OPT_CFLAGS="-DNDEBUG" fi -if test "x${enable_assert}" = xyes; then - AC_DEFINE_UNQUOTED([ASSERT], [1], [Enabling assert]) - PACKAGE_FEATURES="$PACKAGE_FEATURES assert" -else - OPT_CFLAGS="-DNASSERT" -fi - # gdb flags if test "x${GCC}" = xyes; then GDB_FLAGS="-ggdb3" diff --git a/include/logger.h b/include/logger.h index f360342..df69faf 100644 --- a/include/logger.h +++ b/include/logger.h @@ -94,6 +94,13 @@ void sd_backtrace(void); abort(); \ }) +#define sd_assert(expr) \ +({ \ + if (!(expr)) { \ + sd_emerg("Asserting `%s' failed.", #expr); \ + abort(); \ + } \ +}) static inline int loglevel_str2num(const char *str) { diff --git a/include/util.h b/include/util.h index c5b5ac9..632a193 100644 --- a/include/util.h +++ b/include/util.h @@ -13,6 +13,7 @@ #include <pthread.h> #include <errno.h> #include <sys/param.h> +#include <assert.h> #include "logger.h" #include "list.h" @@ -214,22 +215,6 @@ double get_time_interval(const struct timespec *start, __removed; \ }) -#ifdef assert -#error "Don't include assert.h, use util.h for assert()" -#endif - -#ifndef NASSERT -#define assert(expr) \ -({ \ - if (!(expr)) { \ - sd_emerg("Asserting `%s' failed.", #expr); \ - abort(); \ - } \ -}) -#else -#define assert(expr) ((void)0) -#endif /* NASSERT */ - #define SWAP(a, b) { typeof(a) tmp; tmp = a; a = b; b = tmp; } /* urcu helpers */ diff --git a/lib/fec.c b/lib/fec.c index fb40773..268bce6 100644 --- a/lib/fec.c +++ b/lib/fec.c @@ -313,7 +313,7 @@ static void _invert_mat(uint8_t *src, unsigned d) goto found_piv; } } else - assert(ipiv[ix] <= 1); + sd_assert(ipiv[ix] <= 1); } } } @@ -331,7 +331,7 @@ found_piv: indxc[col] = icol; pivot_row = &src[icol * d]; c = pivot_row[icol]; - assert(c != 0); + sd_assert(c != 0); if (c != 1) { /* otherwise this is a NOP */ /* * this is done often , but optimizing is not so @@ -451,7 +451,7 @@ void init_fec(void) void fec_free(struct fec *p) { - assert(p != NULL && p->magic == (((FEC_MAGIC ^ p->d) ^ p->dp) ^ + sd_assert(p != NULL && p->magic == (((FEC_MAGIC ^ p->d) ^ p->dp) ^ (unsigned long) (p->enc_matrix))); free(p->enc_matrix); if (cpu_has_ssse3) @@ -528,7 +528,7 @@ void fec_encode(const struct fec *code, size_t stride = ((sz-d) < STRIDE) ? (sz-d) : STRIDE; for (i = 0; i < num_block_nums; i++) { fecnum = block_nums[i]; - assert(fecnum >= code->d); + sd_assert(fecnum >= code->d); memset(fecs[i]+d, 0, stride); p = &(code->enc_matrix[fecnum * code->d]); for (j = 0; j < code->d; j++) @@ -570,7 +570,7 @@ void fec_decode(const struct fec *code, unsigned char row = 0; unsigned char col = 0; - assert(code->d * code->d < 8 * 1024 * 1024); + sd_assert(code->d * code->d < 8 * 1024 * 1024); build_decode_matrix_into_space(code, idx, code->d, m_dec); for (row = 0; row < code->d; row++) { @@ -578,7 +578,7 @@ void fec_decode(const struct fec *code, * If the block whose number is i is present, then it is * required to be in the i'th element. */ - assert((idx[row] >= code->d) || (idx[row] == row)); + sd_assert((idx[row] >= code->d) || (idx[row] == row)); if (idx[row] >= code->d) { memset(outpkts[outix], 0, sz); for (col = 0; col < code->d; col++) @@ -614,7 +614,7 @@ static inline void decode_prepare(struct fec *ctx, const uint8_t *dp[], out[i] = dp[i]; outidx[i] = i; } else { - assert(p < ctx->dp); + sd_assert(p < ctx->dp); out[i] = dp[p]; outidx[i] = p; while (++p < ctx->dp && !dp[p]) diff --git a/lib/logger.c b/lib/logger.c index da0ebac..39d3283 100644 --- a/lib/logger.c +++ b/lib/logger.c @@ -214,7 +214,7 @@ static int json_log_formatter(char *buff, size_t size, char *p = buff; ssize_t len; - assert(logger_user_info); + sd_assert(logger_user_info); len = snprintf(p, size, "{ \"user_info\": " "{\"program_name\": \"%s\", \"port\": %d}," @@ -854,7 +854,7 @@ fallback: void set_loglevel(int new_loglevel) { - assert(SDOG_EMERG <= new_loglevel && new_loglevel <= SDOG_DEBUG); + sd_assert(SDOG_EMERG <= new_loglevel && new_loglevel <= SDOG_DEBUG); sd_log_level = new_loglevel; } diff --git a/lib/work.c b/lib/work.c index 25260b4..14e3117 100644 --- a/lib/work.c +++ b/lib/work.c @@ -133,7 +133,7 @@ static void suspend(int num, siginfo_t *info, void *context) eventfd_xwrite(ack_efd, 1); /* ack of suspend */ value = eventfd_xread(resume_efd); - assert(value == 1); + sd_assert(value == 1); eventfd_xwrite(ack_efd, 1); /* ack of resume */ } diff --git a/sheep/cluster/corosync.c b/sheep/cluster/corosync.c index b7fc025..ea65603 100644 --- a/sheep/cluster/corosync.c +++ b/sheep/cluster/corosync.c @@ -317,7 +317,7 @@ static bool __corosync_dispatch_one(struct corosync_event *cevent) this_node = cevent->sender; idx = find_sd_node(cpg_nodes, nr_cpg_nodes, node); - assert(idx >= 0); + sd_assert(idx >= 0); cpg_nodes[idx].node = *node; sd_update_node_handler(node); break; diff --git a/sheep/cluster/shepherd.c b/sheep/cluster/shepherd.c index 45a85c1..570bff5 100644 --- a/sheep/cluster/shepherd.c +++ b/sheep/cluster/shepherd.c @@ -454,8 +454,8 @@ static void read_msg_from_shepherd(void) static void shepherd_comm_handler(int fd, int events, void *data) { - assert(fd == sph_comm_fd); - assert(data == NULL); + sd_assert(fd == sph_comm_fd); + sd_assert(data == NULL); if (events & EPOLLIN) read_msg_from_shepherd(); diff --git a/sheep/cluster/zookeeper.c b/sheep/cluster/zookeeper.c index bf94871..70f87b2 100644 --- a/sheep/cluster/zookeeper.c +++ b/sheep/cluster/zookeeper.c @@ -1197,7 +1197,7 @@ static void zk_handle_update_node(struct zk_event *ev) sd_read_lock(&zk_tree_lock); t = zk_tree_search_nolock(&snode->nid); - assert(t); + sd_assert(t); t->node = *snode; build_node_list(); sd_rw_unlock(&zk_tree_lock); diff --git a/sheep/group.c b/sheep/group.c index 0fce7c0..7c7cb6d 100644 --- a/sheep/group.c +++ b/sheep/group.c @@ -225,7 +225,7 @@ static struct vdi_op_message *prepare_cluster_msg(struct request *req, /* notify data that was set in process_work */ size = sizeof(*msg) + req->rp.data_length; - assert(size <= SD_MAX_EVENT_BUF_SIZE); + sd_assert(size <= SD_MAX_EVENT_BUF_SIZE); msg = xzalloc(size); memcpy(&msg->req, &req->rq, sizeof(struct sd_req)); @@ -745,7 +745,7 @@ static void cinfo_collection_work(struct work *work) sd_debug("start collection of cinfo..."); - assert(w == collect_work); + sd_assert(w == collect_work); rb_for_each_entry(n, &w->members->nroot, rb) { if (node_is_local(n)) @@ -786,7 +786,7 @@ static void cinfo_collection_done(struct work *work) struct cinfo_collection_work *w = container_of(work, struct cinfo_collection_work, work); - assert(w == collect_work); + sd_assert(w == collect_work); for (int i = 0; i < w->nr_vdi_states; i++) { struct vdi_state *vs = &w->result[i]; diff --git a/sheep/md.c b/sheep/md.c index c00d7a5..bcdfb73 100644 --- a/sheep/md.c +++ b/sheep/md.c @@ -119,7 +119,7 @@ static void remove_vdisks(const struct disk *disk) hval = sd_hash_next(hval); v = hval_to_vdisk(hval); - assert(v->hash == hval); + sd_assert(v->hash == hval); vdisk_free(v); } @@ -127,7 +127,7 @@ static void remove_vdisks(const struct disk *disk) static inline void trim_last_slash(char *path) { - assert(path[0]); + sd_assert(path[0]); while (path[strlen(path) - 1] == '/') path[strlen(path) - 1] = '\0'; } diff --git a/sheep/migrate.c b/sheep/migrate.c index f01eaf6..2841e87 100644 --- a/sheep/migrate.c +++ b/sheep/migrate.c @@ -529,7 +529,7 @@ int sd_migrate_store(int from, int to) { int ver, ret; - assert(to <= sizeof(migrate)); + sd_assert(to <= sizeof(migrate)); ret = backup_store(); if (ret != 0) { diff --git a/sheep/object_cache.c b/sheep/object_cache.c index 3794c19..7f626c4 100644 --- a/sheep/object_cache.c +++ b/sheep/object_cache.c @@ -319,7 +319,7 @@ static int read_cache_object_noupdate(uint32_t vid, uint64_t idx, void *buf, vid, idx); if (sys->object_cache_directio && !idx_has_vdi_bit(idx)) { - assert(is_aligned_to_pagesize(buf)); + sd_assert(is_aligned_to_pagesize(buf)); flags |= O_DIRECT; } @@ -355,7 +355,7 @@ static int write_cache_object_noupdate(uint32_t vid, uint64_t idx, void *buf, snprintf(p, sizeof(p), "%s/%06"PRIx32"/%016"PRIx64, object_cache_dir, vid, idx); if (sys->object_cache_directio && !idx_has_vdi_bit(idx)) { - assert(is_aligned_to_pagesize(buf)); + sd_assert(is_aligned_to_pagesize(buf)); flags |= O_DIRECT; } @@ -1323,7 +1323,7 @@ int object_cache_remove(uint64_t oid) * in the DISCARD context, which means normally no other read/write * requests. */ - assert(refcount_read(&entry->refcnt) == 1); + sd_assert(refcount_read(&entry->refcnt) == 1); ret = remove_cache_object(oc, entry_idx(entry)); if (ret != SD_RES_SUCCESS) { unlock_cache(oc); diff --git a/sheep/ops.c b/sheep/ops.c index 0e5ac64..a63fed7 100644 --- a/sheep/ops.c +++ b/sheep/ops.c @@ -862,7 +862,7 @@ static int local_md_info(struct request *request) { struct sd_rsp *rsp = &request->rp; - assert(request->rq.data_length == sizeof(struct sd_md_info)); + sd_assert(request->rq.data_length == sizeof(struct sd_md_info)); rsp->data_length = md_get_info((struct sd_md_info *)request->data); return rsp->data_length ? SD_RES_SUCCESS : SD_RES_UNKNOWN; @@ -900,7 +900,7 @@ static int local_get_cache_info(struct request *request) { struct sd_rsp *rsp = &request->rp; - assert(request->rq.data_length == sizeof(struct object_cache_info)); + sd_assert(request->rq.data_length == sizeof(struct object_cache_info)); rsp->data_length = object_cache_get_info((struct object_cache_info *) request->data); @@ -2139,6 +2139,6 @@ static int map_table[] = { int gateway_to_peer_opcode(int opcode) { - assert(opcode < ARRAY_SIZE(map_table)); + sd_assert(opcode < ARRAY_SIZE(map_table)); return map_table[opcode]; } diff --git a/sheep/plain_store.c b/sheep/plain_store.c index 4c19832..efbf129 100644 --- a/sheep/plain_store.c +++ b/sheep/plain_store.c @@ -599,7 +599,7 @@ static int check_stale_objects(uint64_t oid, const char *wd, uint32_t epoch, int default_update_epoch(uint32_t epoch) { - assert(epoch); + sd_assert(epoch); return for_each_object_in_wd(check_stale_objects, false, &epoch); } diff --git a/sheep/request.c b/sheep/request.c index b826f0f..f12ca6b 100644 --- a/sheep/request.c +++ b/sheep/request.c @@ -97,7 +97,7 @@ static void gateway_op_done(struct work *work) struct request *rq; sys->nr_ongoing_inode_update_request--; - assert(0 <= sys->nr_ongoing_inode_update_request); + sd_assert(0 <= sys->nr_ongoing_inode_update_request); sd_debug("a number of ongoing inode update request: %d", sys->nr_ongoing_inode_update_request); @@ -235,7 +235,7 @@ void wakeup_requests_on_epoch(void) * Gateway retries to send the request when * its epoch changes. */ - assert(is_gateway_op(req->op)); + sd_assert(is_gateway_op(req->op)); sd_debug("gateway %"PRIx64, req->rq.obj.oid); req->rq.epoch = sys->cinfo.epoch; del_requeue_request(req); @@ -245,7 +245,7 @@ void wakeup_requests_on_epoch(void) * Peer retries the request locally when its epoch * changes. */ - assert(!is_gateway_op(req->op)); + sd_assert(!is_gateway_op(req->op)); sd_debug("peer %"PRIx64, req->rq.obj.oid); del_requeue_request(req); break; @@ -364,7 +364,7 @@ queue_work: &sys->prevented_inode_update_request_queue); return; } else { - assert(0 <= sys->nr_ongoing_inode_update_request); + sd_assert(0 <= sys->nr_ongoing_inode_update_request); sys->nr_ongoing_inode_update_request++; sd_debug("a number of ongoing inode update request: %d", sys->nr_ongoing_inode_update_request); @@ -1024,7 +1024,7 @@ static void client_handler(int fd, int events, void *data) return; } - assert(ci->tx_req == NULL); + sd_assert(ci->tx_req == NULL); ci->tx_req = list_first_entry(&ci->done_reqs, struct request, request_list); list_del(&ci->tx_req->request_list); diff --git a/sheep/sheep.c b/sheep/sheep.c index fc53ec9..2745560 100644 --- a/sheep/sheep.c +++ b/sheep/sheep.c @@ -240,7 +240,7 @@ static void signal_handler(int listen_fd, int events, void *data) int uninitialized_var(ret); ret = read(sigfd, &siginfo, sizeof(siginfo)); - assert(ret == sizeof(siginfo)); + sd_assert(ret == sizeof(siginfo)); sd_debug("signal %d, ssi pid %d", siginfo.ssi_signo, siginfo.ssi_pid); switch (siginfo.ssi_signo) { case SIGTERM: diff --git a/sheep/trace/trace.c b/sheep/trace/trace.c index 57c2b4c..60c224d 100644 --- a/sheep/trace/trace.c +++ b/sheep/trace/trace.c @@ -111,7 +111,7 @@ void trace_function_enter(unsigned long ip, unsigned long *ret_addr) return; in_trace = true; - assert(ret_stack_index < ARRAY_SIZE(trace_ret_stack)); + sd_assert(ret_stack_index < ARRAY_SIZE(trace_ret_stack)); caller = trace_lookup_ip(ip); @@ -136,7 +136,7 @@ unsigned long trace_function_exit(void) { struct tracer *tracer; - assert(!in_trace); + sd_assert(!in_trace); in_trace = true; ret_stack_index--; diff --git a/sheep/vdi.c b/sheep/vdi.c index 8114fb5..6e4fb75 100644 --- a/sheep/vdi.c +++ b/sheep/vdi.c @@ -479,7 +479,7 @@ static struct vdi_state *fill_vdi_state_list_with_alloc(int *result_nr) vs[i].participants[j] = entry->participants[j]; } - assert(i < nr); + sd_assert(i < nr); i++; } @@ -562,7 +562,7 @@ static bool add_new_participant(struct vdi_state_entry *entry, int idx; if (entry->lock_state == LOCK_STATE_UNLOCKED) { - assert(!entry->nr_participants); + sd_assert(!entry->nr_participants); sd_debug("%s is first owner of %"PRIx32, node_id_to_str(owner), entry->vid); @@ -575,8 +575,8 @@ static bool add_new_participant(struct vdi_state_entry *entry, return true; } - assert(entry->lock_state == LOCK_STATE_SHARED); - assert(0 < entry->nr_participants); + sd_assert(entry->lock_state == LOCK_STATE_SHARED); + sd_assert(0 < entry->nr_participants); if (entry->nr_participants == SD_MAX_COPIES) { sd_err("VDI: %"PRIx32 " already has SD_MAX_COPIES participants", @@ -860,7 +860,7 @@ void play_logged_vdi_ops(void) apply_vdi_lock_state(&entry); } else { - assert(op->type == LOCK_TYPE_SHARED); + sd_assert(op->type == LOCK_TYPE_SHARED); apply_vdi_lock_state_shared(op->vid, op->lock, &op->owner); @@ -1023,7 +1023,7 @@ main_fn int inode_coherence_update(uint32_t vid, bool validate, goto out; } - assert(entry->lock_state == LOCK_STATE_SHARED); + sd_assert(entry->lock_state == LOCK_STATE_SHARED); if (validate) { for (int i = 0; i < entry->nr_participants; i++) { @@ -1100,7 +1100,7 @@ static struct sd_inode *alloc_inode(const struct vdi_iocb *iocb, sd_inode_init(new->data_vdi_id, 1); if (gref) { - assert(data_vdi_id); + sd_assert(data_vdi_id); for (int i = 0; i < SD_INODE_DATA_INDEX; i++) { if (!data_vdi_id[i]) @@ -1589,7 +1589,7 @@ int vdi_snapshot(const struct vdi_iocb *iocb, uint32_t *new_vid) return ret; } - assert(info.snapid > 0); + sd_assert(info.snapid > 0); *new_vid = info.free_bit; ret = notify_vdi_add(*new_vid, iocb->nr_copies, info.vid, iocb->copy_policy, iocb->block_size_shift); -- 1.9.1 -- sheepdog mailing list [email protected] https://lists.wpkg.org/mailman/listinfo/sheepdog
