diff options
Diffstat (limited to 'xlators/mgmt')
35 files changed, 631 insertions, 540 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-brick-ops.c b/xlators/mgmt/glusterd/src/glusterd-brick-ops.c index 7673fa83433..fd4618bb78c 100644 --- a/xlators/mgmt/glusterd/src/glusterd-brick-ops.c +++ b/xlators/mgmt/glusterd/src/glusterd-brick-ops.c @@ -74,14 +74,14 @@ add_brick_at_right_order (glusterd_brickinfo_t *brickinfo, insert_brick: i = 0; - list_for_each_entry (brick, &volinfo->bricks, brick_list) { + cds_list_for_each_entry (brick, &volinfo->bricks, brick_list) { i++; if (i < idx) continue; gf_log (THIS->name, GF_LOG_DEBUG, "brick:%s index=%d, count=%d", brick->path, idx, count); - list_add (&brickinfo->brick_list, &brick->brick_list); + cds_list_add (&brickinfo->brick_list, &brick->brick_list); break; } @@ -581,7 +581,7 @@ subvol_matcher_update (int *subvols, glusterd_volinfo_t *volinfo, int32_t sub_volume = 0; int pos = 0; - list_for_each_entry (tmp, &volinfo->bricks, brick_list) { + cds_list_for_each_entry (tmp, &volinfo->bricks, brick_list) { if (strcmp (tmp->hostname, brickinfo->hostname) || strcmp (tmp->path, brickinfo->path)) { @@ -1085,7 +1085,8 @@ glusterd_op_perform_add_bricks (glusterd_volinfo_t *volinfo, int32_t count, add_brick_at_right_order (brickinfo, volinfo, (i - 1), stripe_count, replica_count); } else { - list_add_tail (&brickinfo->brick_list, &volinfo->bricks); + cds_list_add_tail (&brickinfo->brick_list, + &volinfo->bricks); } brick = strtok_r (NULL, " \n", &saveptr); i++; @@ -1707,7 +1708,8 @@ glusterd_remove_brick_migrate_cbk (glusterd_volinfo_t *volinfo, break; case GF_DEFRAG_STATUS_STOPPED: /* Fall back to the old volume file */ - list_for_each_entry_safe (brickinfo, tmp, &volinfo->bricks, brick_list) { + cds_list_for_each_entry_safe (brickinfo, tmp, &volinfo->bricks, + brick_list) { if (!brickinfo->decommissioned) continue; brickinfo->decommissioned = 0; @@ -1717,7 +1719,8 @@ glusterd_remove_brick_migrate_cbk (glusterd_volinfo_t *volinfo, case GF_DEFRAG_STATUS_COMPLETE: /* Done with the task, you can remove the brick from the volume file */ - list_for_each_entry_safe (brickinfo, tmp, &volinfo->bricks, brick_list) { + cds_list_for_each_entry_safe (brickinfo, tmp, &volinfo->bricks, + brick_list) { if (!brickinfo->decommissioned) continue; gf_log (THIS->name, GF_LOG_INFO, "removing the brick %s", @@ -1909,8 +1912,8 @@ glusterd_op_remove_brick (dict_t *dict, char **op_errstr) case GF_OP_CMD_STOP: { /* Fall back to the old volume file */ - list_for_each_entry_safe (brickinfo, tmp, &volinfo->bricks, - brick_list) { + cds_list_for_each_entry_safe (brickinfo, tmp, &volinfo->bricks, + brick_list) { if (!brickinfo->decommissioned) continue; brickinfo->decommissioned = 0; diff --git a/xlators/mgmt/glusterd/src/glusterd-conn-helper.c b/xlators/mgmt/glusterd/src/glusterd-conn-helper.c index 43c95c3a386..bfa9d02aa1b 100644 --- a/xlators/mgmt/glusterd/src/glusterd-conn-helper.c +++ b/xlators/mgmt/glusterd/src/glusterd-conn-helper.c @@ -11,8 +11,11 @@ #include "glusterd-conn-mgmt.h" #include "glusterd-svc-mgmt.h" +#define _LGPL_SOURCE +#include <urcu/rculist.h> + glusterd_svc_t * glusterd_conn_get_svc_object (glusterd_conn_t *conn) { - return list_entry (conn, glusterd_svc_t, conn); + return cds_list_entry (conn, glusterd_svc_t, conn); } diff --git a/xlators/mgmt/glusterd/src/glusterd-geo-rep.c b/xlators/mgmt/glusterd/src/glusterd-geo-rep.c index 797850743bb..5efd232554e 100644 --- a/xlators/mgmt/glusterd/src/glusterd-geo-rep.c +++ b/xlators/mgmt/glusterd/src/glusterd-geo-rep.c @@ -3640,7 +3640,7 @@ fetch_data: if (ret) gsync_count = 0; - list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { + cds_list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { if (uuid_compare (brickinfo->uuid, MY_UUID)) continue; @@ -4056,7 +4056,7 @@ glusterd_get_gsync_status_all (dict_t *rsp_dict, char *node) GF_ASSERT (priv); - list_for_each_entry (volinfo, &priv->volumes, vol_list) { + cds_list_for_each_entry (volinfo, &priv->volumes, vol_list) { ret = glusterd_get_gsync_status_mst (volinfo, rsp_dict, node); if (ret) goto out; diff --git a/xlators/mgmt/glusterd/src/glusterd-handler.c b/xlators/mgmt/glusterd/src/glusterd-handler.c index 8ba16b7a804..eaa05969656 100644 --- a/xlators/mgmt/glusterd/src/glusterd-handler.c +++ b/xlators/mgmt/glusterd/src/glusterd-handler.c @@ -465,7 +465,7 @@ glusterd_add_volume_detail_to_dict (glusterd_volinfo_t *volinfo, } #endif - list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { + cds_list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { char brick[1024] = {0,}; char brick_uuid[64] = {0,}; snprintf (key, 256, "volume%d.brick%d", count, i); @@ -609,7 +609,7 @@ glusterd_op_txn_begin (rpcsvc_request_t *req, glusterd_op_t op, void *ctx, local_locking_done: - INIT_LIST_HEAD (&priv->xaction_peers); + CDS_INIT_LIST_HEAD (&priv->xaction_peers); npeers = gd_build_peers_list (&priv->peers, &priv->xaction_peers, op); @@ -1162,8 +1162,8 @@ __glusterd_handle_cli_deprobe (rpcsvc_request_t *req) * detached. It's not a problem if a volume contains none or all * of its bricks on the peer being detached */ - list_for_each_entry_safe (volinfo, tmp, &priv->volumes, - vol_list) { + cds_list_for_each_entry_safe (volinfo, tmp, &priv->volumes, + vol_list) { ret = glusterd_friend_contains_vol_bricks (volinfo, uuid); if (ret == 1) { @@ -1379,7 +1379,7 @@ __glusterd_handle_cli_uuid_reset (rpcsvc_request_t *req) */ ret = -1; // Do not allow peer reset if there are any volumes in the cluster - if (!list_empty (&priv->volumes)) { + if (!cds_list_empty (&priv->volumes)) { snprintf (msg_str, sizeof (msg_str), "volumes are already " "present in the cluster. Resetting uuid is not " "allowed"); @@ -1388,7 +1388,7 @@ __glusterd_handle_cli_uuid_reset (rpcsvc_request_t *req) } // Do not allow peer reset if trusted storage pool is already formed - if (!list_empty (&priv->peers)) { + if (!cds_list_empty (&priv->peers)) { snprintf (msg_str, sizeof (msg_str),"trusted storage pool " "has been already formed. Please detach this peer " "from the pool and reset its uuid."); @@ -1550,7 +1550,7 @@ __glusterd_handle_cli_list_volume (rpcsvc_request_t *req) if (!dict) goto out; - list_for_each_entry (volinfo, &priv->volumes, vol_list) { + cds_list_for_each_entry (volinfo, &priv->volumes, vol_list) { memset (key, 0, sizeof (key)); snprintf (key, sizeof (key), "volume%d", count); ret = dict_set_str (dict, key, volinfo->volname); @@ -2550,7 +2550,7 @@ __glusterd_handle_probe_query (rpcsvc_request_t *req) goto out; } peerinfo = glusterd_peerinfo_find (probe_req.uuid, remote_hostname); - if ((peerinfo == NULL) && (!list_empty (&conf->peers))) { + if ((peerinfo == NULL) && (!cds_list_empty (&conf->peers))) { rsp.op_ret = -1; rsp.op_errno = GF_PROBE_ANOTHER_CLUSTER; } else if (peerinfo == NULL) { @@ -3079,7 +3079,7 @@ glusterd_friend_add (const char *hoststr, int port, * invalid peer name). That would mean we're adding something that had * just been free, and we're likely to crash later. */ - list_add_tail (&(*friend)->uuid_list, &conf->peers); + cds_list_add_tail (&(*friend)->uuid_list, &conf->peers); //restore needs to first create the list of peers, then create rpcs //to keep track of quorum in race-free manner. In restore for each peer @@ -3132,7 +3132,7 @@ glusterd_friend_add_from_peerinfo (glusterd_peerinfo_t *friend, * invalid peer name). That would mean we're adding something that had * just been free, and we're likely to crash later. */ - list_add_tail (&friend->uuid_list, &conf->peers); + cds_list_add_tail (&friend->uuid_list, &conf->peers); //restore needs to first create the list of peers, then create rpcs //to keep track of quorum in race-free manner. In restore for each peer @@ -3590,8 +3590,8 @@ glusterd_list_friends (rpcsvc_request_t *req, dict_t *dict, int32_t flags) gf_log ("", GF_LOG_WARNING, "Out of Memory"); goto out; } - if (!list_empty (&priv->peers)) { - list_for_each_entry (entry, &priv->peers, uuid_list) { + if (!cds_list_empty (&priv->peers)) { + cds_list_for_each_entry (entry, &priv->peers, uuid_list) { count++; ret = gd_add_peer_detail_to_dict (entry, friends, count); @@ -3665,13 +3665,13 @@ glusterd_get_volumes (rpcsvc_request_t *req, dict_t *dict, int32_t flags) goto out; } - if (list_empty (&priv->volumes)) { + if (cds_list_empty (&priv->volumes)) { ret = 0; goto respond; } if (flags == GF_CLI_GET_VOLUME_ALL) { - list_for_each_entry (entry, &priv->volumes, vol_list) { + cds_list_for_each_entry (entry, &priv->volumes, vol_list) { ret = glusterd_add_volume_detail_to_dict (entry, volumes, count); if (ret) @@ -3686,17 +3686,17 @@ glusterd_get_volumes (rpcsvc_request_t *req, dict_t *dict, int32_t flags) if (ret) { if (priv->volumes.next) { - entry = list_entry (priv->volumes.next, - typeof (*entry), - vol_list); + entry = cds_list_entry (priv->volumes.next, + typeof (*entry), + vol_list); } } else { ret = glusterd_volinfo_find (volname, &entry); if (ret) goto respond; - entry = list_entry (entry->vol_list.next, - typeof (*entry), - vol_list); + entry = cds_list_entry (entry->vol_list.next, + typeof (*entry), + vol_list); } if (&entry->vol_list == &priv->volumes) { @@ -4508,8 +4508,9 @@ __glusterd_peer_rpc_notify (struct rpc_clnt *rpc, void *mydata, !uuid_compare (peerinfo->uuid, uuid)) glusterd_unlock (peerinfo->uuid); } else { - list_for_each_entry (volinfo, &conf->volumes, - vol_list) { + cds_list_for_each_entry (volinfo, + &conf->volumes, + vol_list) { ret = glusterd_mgmt_v3_unlock (volinfo->volname, peerinfo->uuid, diff --git a/xlators/mgmt/glusterd/src/glusterd-handshake.c b/xlators/mgmt/glusterd/src/glusterd-handshake.c index 4f19d00a3d7..611e9fbf545 100644 --- a/xlators/mgmt/glusterd/src/glusterd-handshake.c +++ b/xlators/mgmt/glusterd/src/glusterd-handshake.c @@ -446,7 +446,7 @@ glusterd_create_missed_snap (glusterd_missed_snap_info *missed_snapinfo, } /* Find the snap_vol */ - list_for_each_entry (volinfo, &snap->volumes, vol_list) { + cds_list_for_each_entry (volinfo, &snap->volumes, vol_list) { if (!strcmp (volinfo->volname, snap_opinfo->snap_vol_id)) { snap_vol = volinfo; @@ -464,7 +464,7 @@ glusterd_create_missed_snap (glusterd_missed_snap_info *missed_snapinfo, } /* Find the missed brick in the snap volume */ - list_for_each_entry (brickinfo, &snap_vol->bricks, brick_list) { + cds_list_for_each_entry (brickinfo, &snap_vol->bricks, brick_list) { i++; if (i == snap_opinfo->brick_num) break; @@ -589,16 +589,17 @@ glusterd_take_missing_brick_snapshots (char *brick_name) my_node_uuid = uuid_utoa (MY_UUID); - list_for_each_entry (missed_snapinfo, &priv->missed_snaps_list, - missed_snaps) { + cds_list_for_each_entry (missed_snapinfo, &priv->missed_snaps_list, + missed_snaps) { /* If the missed snap op is not for the local node * then continue */ if (strcmp (my_node_uuid, missed_snapinfo->node_uuid)) continue; - list_for_each_entry (snap_opinfo, &missed_snapinfo->snap_ops, - snap_ops_list) { + cds_list_for_each_entry (snap_opinfo, + &missed_snapinfo->snap_ops, + snap_ops_list) { /* Check if the missed snap's op is a create for * the brick name in question */ @@ -936,7 +937,7 @@ gd_validate_cluster_op_version (xlator_t *this, int cluster_op_version, * lead to inconsistencies in the cluster */ if ((cluster_op_version < conf->op_version) && - !list_empty (&conf->volumes)) { + !cds_list_empty (&conf->volumes)) { gf_log (this->name, GF_LOG_ERROR, "cannot reduce operating version to %d from current " "version %d as volumes exist (as per peer request from " diff --git a/xlators/mgmt/glusterd/src/glusterd-hooks.c b/xlators/mgmt/glusterd/src/glusterd-hooks.c index f875c8d36d3..569f2743dda 100644 --- a/xlators/mgmt/glusterd/src/glusterd-hooks.c +++ b/xlators/mgmt/glusterd/src/glusterd-hooks.c @@ -213,8 +213,7 @@ glusterd_hooks_add_op_args (runner_t *runner, glusterd_op_t op, int ret = -1; priv = THIS->private; - list_for_each_entry (voliter, &priv->volumes, - vol_list) { + cds_list_for_each_entry (voliter, &priv->volumes, vol_list) { if (glusterd_is_volume_started (voliter)) vol_count++; } @@ -419,7 +418,7 @@ glusterd_hooks_post_stub_enqueue (char *scriptdir, glusterd_op_t op, pthread_mutex_lock (&hooks_priv->mutex); { hooks_priv->waitcount++; - list_add_tail (&stub->all_hooks, &hooks_priv->list); + cds_list_add_tail (&stub->all_hooks, &hooks_priv->list); pthread_cond_signal (&hooks_priv->cond); } pthread_mutex_unlock (&hooks_priv->mutex); @@ -445,7 +444,7 @@ glusterd_hooks_stub_init (glusterd_hooks_stub_t **stub, char *scriptdir, if (!hooks_stub) goto out; - INIT_LIST_HEAD (&hooks_stub->all_hooks); + CDS_INIT_LIST_HEAD (&hooks_stub->all_hooks); hooks_stub->op = op; hooks_stub->scriptdir = gf_strdup (scriptdir); if (!hooks_stub->scriptdir) @@ -498,14 +497,14 @@ hooks_worker (void *args) for (;;) { pthread_mutex_lock (&hooks_priv->mutex); { - while (list_empty (&hooks_priv->list)) { + while (cds_list_empty (&hooks_priv->list)) { pthread_cond_wait (&hooks_priv->cond, &hooks_priv->mutex); } - stub = list_entry (hooks_priv->list.next, - glusterd_hooks_stub_t, - all_hooks); - list_del_init (&stub->all_hooks); + stub = cds_list_entry (hooks_priv->list.next, + glusterd_hooks_stub_t, + all_hooks); + cds_list_del_init (&stub->all_hooks); hooks_priv->waitcount--; } @@ -535,7 +534,7 @@ glusterd_hooks_priv_init (glusterd_hooks_private_t **new) pthread_mutex_init (&hooks_priv->mutex, NULL); pthread_cond_init (&hooks_priv->cond, NULL); - INIT_LIST_HEAD (&hooks_priv->list); + CDS_INIT_LIST_HEAD (&hooks_priv->list); hooks_priv->waitcount = 0; *new = hooks_priv; diff --git a/xlators/mgmt/glusterd/src/glusterd-hooks.h b/xlators/mgmt/glusterd/src/glusterd-hooks.h index c597ddd2a7d..1e99f3472fb 100644 --- a/xlators/mgmt/glusterd/src/glusterd-hooks.h +++ b/xlators/mgmt/glusterd/src/glusterd-hooks.h @@ -33,7 +33,7 @@ typedef enum glusterd_commit_hook_type { } glusterd_commit_hook_type_t; typedef struct hooks_private { - struct list_head list; + struct cds_list_head list; int waitcount; //debug purposes pthread_mutex_t mutex; pthread_cond_t cond; @@ -41,7 +41,7 @@ typedef struct hooks_private { } glusterd_hooks_private_t; typedef struct hooks_stub { - struct list_head all_hooks; + struct cds_list_head all_hooks; char *scriptdir; glusterd_op_t op; dict_t *op_ctx; diff --git a/xlators/mgmt/glusterd/src/glusterd-log-ops.c b/xlators/mgmt/glusterd/src/glusterd-log-ops.c index 33bd95c031a..de685543f2b 100644 --- a/xlators/mgmt/glusterd/src/glusterd-log-ops.c +++ b/xlators/mgmt/glusterd/src/glusterd-log-ops.c @@ -211,7 +211,7 @@ cont: goto out; ret = -1; - list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { + cds_list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { if (uuid_compare (brickinfo->uuid, MY_UUID)) continue; diff --git a/xlators/mgmt/glusterd/src/glusterd-mgmt.c b/xlators/mgmt/glusterd/src/glusterd-mgmt.c index 8d344aa7b9a..1c46e0e334b 100644 --- a/xlators/mgmt/glusterd/src/glusterd-mgmt.c +++ b/xlators/mgmt/glusterd/src/glusterd-mgmt.c @@ -385,7 +385,7 @@ int glusterd_mgmt_v3_initiate_lockdown (glusterd_op_t op, dict_t *dict, char **op_errstr, int npeers, gf_boolean_t *is_acquired, - struct list_head *peers) + struct cds_list_head *peers) { char *volname = NULL; glusterd_peerinfo_t *peerinfo = NULL; @@ -634,7 +634,7 @@ out: int glusterd_mgmt_v3_pre_validate (glusterd_op_t op, dict_t *req_dict, char **op_errstr, int npeers, - struct list_head *peers) + struct cds_list_head *peers) { int32_t ret = -1; int32_t peer_cnt = 0; @@ -867,7 +867,7 @@ out: int glusterd_mgmt_v3_brick_op (glusterd_op_t op, dict_t *req_dict, char **op_errstr, int npeers, - struct list_head *peers) + struct cds_list_head *peers) { int32_t ret = -1; int32_t peer_cnt = 0; @@ -1086,7 +1086,7 @@ out: int glusterd_mgmt_v3_commit (glusterd_op_t op, dict_t *op_ctx, dict_t *req_dict, char **op_errstr, - int npeers, struct list_head *peers) + int npeers, struct cds_list_head *peers) { int32_t ret = -1; int32_t peer_cnt = 0; @@ -1283,7 +1283,7 @@ out: int glusterd_mgmt_v3_post_validate (glusterd_op_t op, int32_t op_ret, dict_t *dict, dict_t *req_dict, char **op_errstr, int npeers, - struct list_head *peers) + struct cds_list_head *peers) { int32_t ret = -1; int32_t peer_cnt = 0; @@ -1472,7 +1472,7 @@ glusterd_mgmt_v3_release_peer_locks (glusterd_op_t op, dict_t *dict, int32_t op_ret, char **op_errstr, int npeers, gf_boolean_t is_acquired, - struct list_head *peers) + struct cds_list_head *peers) { int32_t ret = -1; int32_t peer_cnt = 0; @@ -1538,7 +1538,7 @@ glusterd_mgmt_v3_initiate_all_phases (rpcsvc_request_t *req, glusterd_op_t op, xlator_t *this = NULL; gf_boolean_t is_acquired = _gf_false; uuid_t *originator_uuid = NULL; - struct list_head xaction_peers = {0,}; + struct cds_list_head xaction_peers = {0,}; this = THIS; GF_ASSERT (this); @@ -1547,7 +1547,7 @@ glusterd_mgmt_v3_initiate_all_phases (rpcsvc_request_t *req, glusterd_op_t op, conf = this->private; GF_ASSERT (conf); - INIT_LIST_HEAD (&xaction_peers); + CDS_INIT_LIST_HEAD (&xaction_peers); npeers = gd_build_local_xaction_peers_list (&conf->peers, &xaction_peers, op); if (npeers == -1) { @@ -1758,7 +1758,7 @@ glusterd_mgmt_v3_initiate_snap_phases (rpcsvc_request_t *req, glusterd_op_t op, uuid_t *originator_uuid = NULL; gf_boolean_t success = _gf_false; char *cli_errstr = NULL; - struct list_head xaction_peers = {0,}; + struct cds_list_head xaction_peers = {0,}; this = THIS; GF_ASSERT (this); @@ -1767,7 +1767,7 @@ glusterd_mgmt_v3_initiate_snap_phases (rpcsvc_request_t *req, glusterd_op_t op, conf = this->private; GF_ASSERT (conf); - INIT_LIST_HEAD (&xaction_peers); + CDS_INIT_LIST_HEAD (&xaction_peers); npeers = gd_build_local_xaction_peers_list (&conf->peers, &xaction_peers, op); if (npeers == -1) { diff --git a/xlators/mgmt/glusterd/src/glusterd-mountbroker.c b/xlators/mgmt/glusterd/src/glusterd-mountbroker.c index 30c8d8150c0..3d26b8745cc 100644 --- a/xlators/mgmt/glusterd/src/glusterd-mountbroker.c +++ b/xlators/mgmt/glusterd/src/glusterd-mountbroker.c @@ -545,8 +545,8 @@ glusterd_do_mount (char *label, dict_t *argdict, char **path, int *op_errno) } /* look up spec for label */ - list_for_each_entry (mspec, &priv->mount_specs, - speclist) { + cds_list_for_each_entry (mspec, &priv->mount_specs, + speclist) { if (strcmp (mspec->label, label) != 0) continue; uid = evaluate_mount_request (mspec, argdict); diff --git a/xlators/mgmt/glusterd/src/glusterd-mountbroker.h b/xlators/mgmt/glusterd/src/glusterd-mountbroker.h index 426252ebed8..83267c203ca 100644 --- a/xlators/mgmt/glusterd/src/glusterd-mountbroker.h +++ b/xlators/mgmt/glusterd/src/glusterd-mountbroker.h @@ -24,7 +24,7 @@ struct gf_mount_pattern { typedef struct gf_mount_pattern gf_mount_pattern_t; struct gf_mount_spec { - struct list_head speclist; + struct cds_list_head speclist; char *label; gf_mount_pattern_t *patterns; size_t len; diff --git a/xlators/mgmt/glusterd/src/glusterd-op-sm.c b/xlators/mgmt/glusterd/src/glusterd-op-sm.c index 185454f0b1c..8ba77471646 100644 --- a/xlators/mgmt/glusterd/src/glusterd-op-sm.c +++ b/xlators/mgmt/glusterd/src/glusterd-op-sm.c @@ -72,7 +72,7 @@ } \ } while (0) -static struct list_head gd_op_sm_queue; +static struct cds_list_head gd_op_sm_queue; synclock_t gd_op_sm_lock; glusterd_op_info_t opinfo = {{0},}; @@ -954,8 +954,11 @@ glusterd_op_stage_set_volume (dict_t *dict, char **op_errstr) ret = glusterd_validate_reconfopts (volinfo, val_dict, op_errstr); else if (!all_vol) { voliter = NULL; - list_for_each_entry (voliter, &priv->volumes, vol_list) { - ret = glusterd_validate_globalopts (voliter, val_dict, op_errstr); + cds_list_for_each_entry (voliter, &priv->volumes, + vol_list) { + ret = glusterd_validate_globalopts (voliter, + val_dict, + op_errstr); if (ret) break; } @@ -1709,7 +1712,7 @@ glusterd_stop_bricks (glusterd_volinfo_t *volinfo) { glusterd_brickinfo_t *brickinfo = NULL; - list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { + cds_list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { /*TODO: Need to change @del_brick in brick_stop to _gf_true * once we enable synctask in peer rpc prog */ if (glusterd_brick_stop (volinfo, brickinfo, _gf_false)) @@ -1727,7 +1730,7 @@ glusterd_start_bricks (glusterd_volinfo_t *volinfo) GF_ASSERT (volinfo); - list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { + cds_list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { ret = glusterd_brick_start (volinfo, brickinfo, _gf_false); if (ret) { gf_log (THIS->name, GF_LOG_ERROR, @@ -2006,12 +2009,14 @@ glusterd_op_set_volume (dict_t *dict) quorum_action = _gf_true; if (global_opt) { - list_for_each_entry (voliter, &priv->volumes, vol_list) { - value = gf_strdup (value); - ret = dict_set_dynstr (voliter->dict, key, value); - if (ret) - goto out; - } + cds_list_for_each_entry (voliter, &priv->volumes, + vol_list) { + value = gf_strdup (value); + ret = dict_set_dynstr (voliter->dict, key, + value); + if (ret) + goto out; + } } else { ret = dict_set_dynstr (volinfo->dict, key, value); if (ret) @@ -2074,7 +2079,7 @@ glusterd_op_set_volume (dict_t *dict) } } else { - list_for_each_entry (voliter, &priv->volumes, vol_list) { + cds_list_for_each_entry (voliter, &priv->volumes, vol_list) { volinfo = voliter; gd_update_volume_op_versions (volinfo); @@ -2174,7 +2179,7 @@ glusterd_op_sync_volume (dict_t *dict, char **op_errstr, 1, "volume"); vol_count = 1; } else { - list_for_each_entry (volinfo, &priv->volumes, vol_list) { + cds_list_for_each_entry (volinfo, &priv->volumes, vol_list) { ret = glusterd_add_volume_to_dict (volinfo, rsp_dict, count, "volume"); if (ret) @@ -2674,7 +2679,8 @@ glusterd_op_status_volume (dict_t *dict, char **op_errstr, goto out; } else { - list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { + cds_list_for_each_entry (brickinfo, &volinfo->bricks, + brick_list) { brick_index++; if (uuid_compare (brickinfo->uuid, MY_UUID)) continue; @@ -2824,7 +2830,8 @@ glusterd_op_ac_send_lock (glusterd_op_sm_event_t *event, void *ctx) priv = this->private; GF_ASSERT (priv); - list_for_each_entry (peerinfo, &priv->xaction_peers, op_peers_list) { + cds_list_for_each_entry (peerinfo, &priv->xaction_peers, + op_peers_list) { GF_ASSERT (peerinfo); if (!peerinfo->connected || !peerinfo->mgmt) @@ -2913,7 +2920,8 @@ glusterd_op_ac_send_unlock (glusterd_op_sm_event_t *event, void *ctx) priv = this->private; GF_ASSERT (priv); - list_for_each_entry (peerinfo, &priv->xaction_peers, op_peers_list) { + cds_list_for_each_entry (peerinfo, &priv->xaction_peers, + op_peers_list) { GF_ASSERT (peerinfo); if (!peerinfo->connected || !peerinfo->mgmt || @@ -3458,7 +3466,8 @@ glusterd_op_ac_send_stage_op (glusterd_op_sm_event_t *event, void *ctx) if (op == GD_OP_REPLACE_BRICK) glusterd_rb_use_rsp_dict (NULL, rsp_dict); - list_for_each_entry (peerinfo, &priv->xaction_peers, op_peers_list) { + cds_list_for_each_entry (peerinfo, &priv->xaction_peers, + op_peers_list) { GF_ASSERT (peerinfo); if (!peerinfo->connected || !peerinfo->mgmt) @@ -4108,7 +4117,8 @@ glusterd_op_ac_send_commit_op (glusterd_op_sm_event_t *event, void *ctx) } - list_for_each_entry (peerinfo, &priv->xaction_peers, op_peers_list) { + cds_list_for_each_entry (peerinfo, &priv->xaction_peers, + op_peers_list) { GF_ASSERT (peerinfo); if (!peerinfo->connected || !peerinfo->mgmt) @@ -4958,7 +4968,7 @@ glusterd_op_commit_perform (glusterd_op_t op, dict_t *dict, char **op_errstr, static int glusterd_bricks_select_stop_volume (dict_t *dict, char **op_errstr, - struct list_head *selected) + struct cds_list_head *selected) { int ret = 0; int flags = 0; @@ -4979,7 +4989,7 @@ glusterd_bricks_select_stop_volume (dict_t *dict, char **op_errstr, goto out; } - list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { + cds_list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { if (glusterd_is_brick_started (brickinfo)) { pending_node = GF_CALLOC (1, sizeof (*pending_node), gf_gld_mt_pending_node_t); @@ -4989,7 +4999,8 @@ glusterd_bricks_select_stop_volume (dict_t *dict, char **op_errstr, } else { pending_node->node = brickinfo; pending_node->type = GD_NODE_BRICK; - list_add_tail (&pending_node->list, selected); + cds_list_add_tail (&pending_node->list, + selected); pending_node = NULL; } } @@ -5001,7 +5012,7 @@ out: static int glusterd_bricks_select_remove_brick (dict_t *dict, char **op_errstr, - struct list_head *selected) + struct cds_list_head *selected) { int ret = -1; char *volname = NULL; @@ -5064,7 +5075,8 @@ glusterd_bricks_select_remove_brick (dict_t *dict, char **op_errstr, } else { pending_node->node = brickinfo; pending_node->type = GD_NODE_BRICK; - list_add_tail (&pending_node->list, selected); + cds_list_add_tail (&pending_node->list, + selected); pending_node = NULL; } } @@ -5077,7 +5089,7 @@ out: static int glusterd_bricks_select_profile_volume (dict_t *dict, char **op_errstr, - struct list_head *selected) + struct cds_list_head *selected) { int ret = -1; char *volname = NULL; @@ -5142,14 +5154,15 @@ glusterd_bricks_select_profile_volume (dict_t *dict, char **op_errstr, } pending_node->node = &(priv->nfs_svc); pending_node->type = GD_NODE_NFS; - list_add_tail (&pending_node->list, selected); + cds_list_add_tail (&pending_node->list, selected); pending_node = NULL; ret = 0; goto out; } - list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { + cds_list_for_each_entry (brickinfo, &volinfo->bricks, + brick_list) { if (glusterd_is_brick_started (brickinfo)) { pending_node = GF_CALLOC (1, sizeof (*pending_node), gf_gld_mt_pending_node_t); @@ -5159,8 +5172,8 @@ glusterd_bricks_select_profile_volume (dict_t *dict, char **op_errstr, } else { pending_node->node = brickinfo; pending_node->type = GD_NODE_BRICK; - list_add_tail (&pending_node->list, - selected); + cds_list_add_tail (&pending_node->list, + selected); pending_node = NULL; } } @@ -5184,7 +5197,7 @@ glusterd_bricks_select_profile_volume (dict_t *dict, char **op_errstr, } pending_node->node = &(priv->nfs_svc); pending_node->type = GD_NODE_NFS; - list_add_tail (&pending_node->list, selected); + cds_list_add_tail (&pending_node->list, selected); pending_node = NULL; ret = 0; @@ -5209,14 +5222,15 @@ glusterd_bricks_select_profile_volume (dict_t *dict, char **op_errstr, } else { pending_node->node = brickinfo; pending_node->type = GD_NODE_BRICK; - list_add_tail (&pending_node->list, - selected); + cds_list_add_tail (&pending_node->list, + selected); pending_node = NULL; goto out; } } ret = 0; - list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { + cds_list_for_each_entry (brickinfo, &volinfo->bricks, + brick_list) { if (glusterd_is_brick_started (brickinfo)) { pending_node = GF_CALLOC (1, sizeof (*pending_node), gf_gld_mt_pending_node_t); @@ -5226,8 +5240,8 @@ glusterd_bricks_select_profile_volume (dict_t *dict, char **op_errstr, } else { pending_node->node = brickinfo; pending_node->type = GD_NODE_BRICK; - list_add_tail (&pending_node->list, - selected); + cds_list_add_tail (&pending_node->list, + selected); pending_node = NULL; } } @@ -5297,7 +5311,7 @@ get_replica_index_for_per_replica_cmd (glusterd_volinfo_t *volinfo, replica_count = volinfo->replica_count; - list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { + cds_list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { if (uuid_is_null (brickinfo->uuid)) (void)glusterd_resolve_brick (brickinfo); if (!strcmp (brickinfo->path, path) && @@ -5344,7 +5358,7 @@ _select_rxlators_with_local_bricks (xlator_t *this, glusterd_volinfo_t *volinfo, index = 1; - list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { + cds_list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { if (uuid_is_null (brickinfo->uuid)) (void)glusterd_resolve_brick (brickinfo); @@ -5395,7 +5409,7 @@ _select_rxlators_for_full_self_heal (xlator_t *this, priv = this->private; replica_count = volinfo->replica_count; - list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { + cds_list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { if (uuid_is_null (brickinfo->uuid)) (void)glusterd_resolve_brick (brickinfo); @@ -5420,7 +5434,7 @@ _select_rxlators_for_full_self_heal (xlator_t *this, static int glusterd_bricks_select_snap (dict_t *dict, char **op_errstr, - struct list_head *selected) + struct cds_list_head *selected) { int ret = -1; glusterd_conf_t *priv = NULL; @@ -5446,7 +5460,7 @@ glusterd_bricks_select_snap (dict_t *dict, char **op_errstr, if (ret) goto out; - list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { + cds_list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { brick_index++; if (uuid_compare (brickinfo->uuid, MY_UUID) || !glusterd_is_brick_started (brickinfo)) { @@ -5461,8 +5475,7 @@ glusterd_bricks_select_snap (dict_t *dict, char **op_errstr, pending_node->node = brickinfo; pending_node->type = GD_NODE_BRICK; pending_node->index = brick_index; - list_add_tail (&pending_node->list, - selected); + cds_list_add_tail (&pending_node->list, selected); pending_node = NULL; } @@ -5500,7 +5513,7 @@ fill_shd_status_for_local_bricks (dict_t *dict, glusterd_volinfo_t *volinfo, } } - list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { + cds_list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { if (uuid_is_null (brickinfo->uuid)) (void)glusterd_resolve_brick (brickinfo); @@ -5544,7 +5557,7 @@ out: static int glusterd_bricks_select_heal_volume (dict_t *dict, char **op_errstr, - struct list_head *selected, + struct cds_list_head *selected, dict_t *rsp_dict) { int ret = -1; @@ -5670,7 +5683,7 @@ glusterd_bricks_select_heal_volume (dict_t *dict, char **op_errstr, } else { pending_node->node = &(priv->shd_svc); pending_node->type = GD_NODE_SHD; - list_add_tail (&pending_node->list, selected); + cds_list_add_tail (&pending_node->list, selected); pending_node = NULL; } @@ -5682,7 +5695,7 @@ out: static int glusterd_bricks_select_rebalance_volume (dict_t *dict, char **op_errstr, - struct list_head *selected) + struct cds_list_head *selected) { int ret = -1; char *volname = NULL; @@ -5717,8 +5730,7 @@ glusterd_bricks_select_rebalance_volume (dict_t *dict, char **op_errstr, } else { pending_node->node = volinfo; pending_node->type = GD_NODE_REBALANCE; - list_add_tail (&pending_node->list, - &opinfo.pending_bricks); + cds_list_add_tail (&pending_node->list, &opinfo.pending_bricks); pending_node = NULL; } @@ -5728,7 +5740,7 @@ out: static int glusterd_bricks_select_status_volume (dict_t *dict, char **op_errstr, - struct list_head *selected) + struct cds_list_head *selected) { int ret = -1; int cmd = 0; @@ -5808,7 +5820,7 @@ glusterd_bricks_select_status_volume (dict_t *dict, char **op_errstr, pending_node->node = brickinfo; pending_node->type = GD_NODE_BRICK; pending_node->index = 0; - list_add_tail (&pending_node->list, selected); + cds_list_add_tail (&pending_node->list, selected); ret = 0; } else if ((cmd & GF_CLI_STATUS_NFS) != 0) { @@ -5827,7 +5839,7 @@ glusterd_bricks_select_status_volume (dict_t *dict, char **op_errstr, pending_node->node = &(priv->nfs_svc); pending_node->type = GD_NODE_NFS; pending_node->index = 0; - list_add_tail (&pending_node->list, selected); + cds_list_add_tail (&pending_node->list, selected); ret = 0; } else if ((cmd & GF_CLI_STATUS_SHD) != 0) { @@ -5846,7 +5858,7 @@ glusterd_bricks_select_status_volume (dict_t *dict, char **op_errstr, pending_node->node = &(priv->shd_svc); pending_node->type = GD_NODE_SHD; pending_node->index = 0; - list_add_tail (&pending_node->list, selected); + cds_list_add_tail (&pending_node->list, selected); ret = 0; } else if ((cmd & GF_CLI_STATUS_QUOTAD) != 0) { @@ -5865,7 +5877,7 @@ glusterd_bricks_select_status_volume (dict_t *dict, char **op_errstr, pending_node->node = &(priv->quotad_svc); pending_node->type = GD_NODE_QUOTAD; pending_node->index = 0; - list_add_tail (&pending_node->list, selected); + cds_list_add_tail (&pending_node->list, selected); ret = 0; } else if ((cmd & GF_CLI_STATUS_SNAPD) != 0) { @@ -5887,11 +5899,12 @@ glusterd_bricks_select_status_volume (dict_t *dict, char **op_errstr, pending_node->node = (void *)(&volinfo->snapd); pending_node->type = GD_NODE_SNAPD; pending_node->index = 0; - list_add_tail (&pending_node->list, selected); + cds_list_add_tail (&pending_node->list, selected); ret = 0; } else { - list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { + cds_list_for_each_entry (brickinfo, &volinfo->bricks, + brick_list) { brick_index++; if (uuid_compare (brickinfo->uuid, MY_UUID) || !glusterd_is_brick_started (brickinfo)) { @@ -5908,7 +5921,7 @@ glusterd_bricks_select_status_volume (dict_t *dict, char **op_errstr, pending_node->node = brickinfo; pending_node->type = GD_NODE_BRICK; pending_node->index = brick_index; - list_add_tail (&pending_node->list, selected); + cds_list_add_tail (&pending_node->list, selected); pending_node = NULL; } } @@ -5921,7 +5934,7 @@ out: * and are running */ static int -glusterd_bricks_select_barrier (dict_t *dict, struct list_head *selected) +glusterd_bricks_select_barrier (dict_t *dict, struct cds_list_head *selected) { int ret = -1; char *volname = NULL; @@ -5944,7 +5957,7 @@ glusterd_bricks_select_barrier (dict_t *dict, struct list_head *selected) goto out; } - list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { + cds_list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { if (uuid_compare (brickinfo->uuid, MY_UUID) || !glusterd_is_brick_started (brickinfo)) { continue; @@ -5957,7 +5970,7 @@ glusterd_bricks_select_barrier (dict_t *dict, struct list_head *selected) } pending_node->node = brickinfo; pending_node->type = GD_NODE_BRICK; - list_add_tail (&pending_node->list, selected); + cds_list_add_tail (&pending_node->list, selected); pending_node = NULL; } @@ -6079,7 +6092,7 @@ out: int32_t glusterd_op_bricks_select (glusterd_op_t op, dict_t *dict, char **op_errstr, - struct list_head *selected, dict_t *rsp_dict) + struct cds_list_head *selected, dict_t *rsp_dict) { int ret = 0; @@ -6439,7 +6452,7 @@ glusterd_op_sm_new_event (glusterd_op_sm_event_type_t event_type, *new_event = event; event->event = event_type; - INIT_LIST_HEAD (&event->list); + CDS_INIT_LIST_HEAD (&event->list); return 0; } @@ -6466,7 +6479,7 @@ glusterd_op_sm_inject_event (glusterd_op_sm_event_type_t event_type, gf_log (THIS->name, GF_LOG_DEBUG, "Enqueue event: '%s'", glusterd_op_sm_event_name_get (event->event)); - list_add_tail (&event->list, &gd_op_sm_queue); + cds_list_add_tail (&event->list, &gd_op_sm_queue); out: return ret; @@ -6537,11 +6550,12 @@ glusterd_op_sm () goto lock_failed; } - while (!list_empty (&gd_op_sm_queue)) { + while (!cds_list_empty (&gd_op_sm_queue)) { - list_for_each_entry_safe (event, tmp, &gd_op_sm_queue, list) { + cds_list_for_each_entry_safe (event, tmp, &gd_op_sm_queue, + list) { - list_del_init (&event->list); + cds_list_del_init (&event->list); event_type = event->event; gf_log (this->name, GF_LOG_DEBUG, "Dequeued event of " "type: '%s'", @@ -6714,7 +6728,7 @@ glusterd_op_get_ctx () int glusterd_op_sm_init () { - INIT_LIST_HEAD (&gd_op_sm_queue); + CDS_INIT_LIST_HEAD (&gd_op_sm_queue); synclock_init (&gd_op_sm_lock); return 0; } diff --git a/xlators/mgmt/glusterd/src/glusterd-op-sm.h b/xlators/mgmt/glusterd/src/glusterd-op-sm.h index e306ccc6bde..0ca1b5bb1dc 100644 --- a/xlators/mgmt/glusterd/src/glusterd-op-sm.h +++ b/xlators/mgmt/glusterd/src/glusterd-op-sm.h @@ -70,7 +70,7 @@ typedef enum glusterd_op_sm_event_type_ { struct glusterd_op_sm_event_ { - struct list_head list; + struct cds_list_head list; void *ctx; glusterd_op_sm_event_type_t event; uuid_t txn_id; @@ -96,13 +96,13 @@ struct glusterd_op_info_ { int32_t brick_pending_count; int32_t op_count; glusterd_op_t op; - struct list_head op_peers; + struct cds_list_head op_peers; void *op_ctx; rpcsvc_request_t *req; int32_t op_ret; int32_t op_errno; char *op_errstr; - struct list_head pending_bricks; + struct cds_list_head pending_bricks; }; typedef struct glusterd_op_info_ glusterd_op_info_t; @@ -239,7 +239,7 @@ char* glusterd_op_sm_event_name_get (int event); int32_t glusterd_op_bricks_select (glusterd_op_t op, dict_t *dict, char **op_errstr, - struct list_head *selected, dict_t *rsp_dict); + struct cds_list_head *selected, dict_t *rsp_dict); int glusterd_brick_op_build_payload (glusterd_op_t op, glusterd_brickinfo_t *brickinfo, gd1_mgmt_brick_op_req **req, dict_t *dict); diff --git a/xlators/mgmt/glusterd/src/glusterd-peer-utils.c b/xlators/mgmt/glusterd/src/glusterd-peer-utils.c index be8ae76c77a..3a145264b79 100644 --- a/xlators/mgmt/glusterd/src/glusterd-peer-utils.c +++ b/xlators/mgmt/glusterd/src/glusterd-peer-utils.c @@ -49,7 +49,7 @@ glusterd_peerinfo_destroy (glusterd_peerinfo_t *peerinfo) if (!peerinfo) goto out; - list_del_init (&peerinfo->uuid_list); + cds_list_del_init (&peerinfo->uuid_list); ret = glusterd_store_delete_peerinfo (peerinfo); if (ret) { @@ -59,8 +59,8 @@ glusterd_peerinfo_destroy (glusterd_peerinfo_t *peerinfo) GF_FREE (peerinfo->hostname); peerinfo->hostname = NULL; - list_for_each_entry_safe (hostname, tmp, &peerinfo->hostnames, - hostname_list) { + cds_list_for_each_entry_safe (hostname, tmp, &peerinfo->hostnames, + hostname_list) { glusterd_peer_hostname_free (hostname); } @@ -178,7 +178,7 @@ glusterd_peerinfo_find_by_uuid (uuid_t uuid) if (uuid_is_null (uuid)) return NULL; - list_for_each_entry (entry, &priv->peers, uuid_list) { + cds_list_for_each_entry (entry, &priv->peers, uuid_list) { if (!uuid_compare (entry->uuid, uuid)) { gf_log (this->name, GF_LOG_DEBUG, @@ -252,11 +252,11 @@ glusterd_peerinfo_new (glusterd_friend_sm_state_t state, uuid_t *uuid, if (!new_peer) goto out; - INIT_LIST_HEAD (&new_peer->uuid_list); + CDS_INIT_LIST_HEAD (&new_peer->uuid_list); new_peer->state.state = state; - INIT_LIST_HEAD (&new_peer->hostnames); + CDS_INIT_LIST_HEAD (&new_peer->hostnames); if (hostname) { ret = gd_add_address_to_peer (new_peer, hostname); if (ret) @@ -303,7 +303,7 @@ glusterd_chk_peers_connected_befriended (uuid_t skip_uuid) priv= THIS->private; GF_ASSERT (priv); - list_for_each_entry (peerinfo, &priv->peers, uuid_list) { + cds_list_for_each_entry (peerinfo, &priv->peers, uuid_list) { if (!uuid_is_null (skip_uuid) && !uuid_compare (skip_uuid, peerinfo->uuid)) @@ -336,8 +336,8 @@ glusterd_uuid_to_hostname (uuid_t uuid) if (!uuid_compare (MY_UUID, uuid)) { hostname = gf_strdup ("localhost"); } - if (!list_empty (&priv->peers)) { - list_for_each_entry (entry, &priv->peers, uuid_list) { + if (!cds_list_empty (&priv->peers)) { + cds_list_for_each_entry (entry, &priv->peers, uuid_list) { if (!uuid_compare (entry->uuid, uuid)) { hostname = gf_strdup (entry->hostname); break; @@ -362,18 +362,18 @@ gd_peer_uuid_str (glusterd_peerinfo_t *peerinfo) gf_boolean_t glusterd_are_vol_all_peers_up (glusterd_volinfo_t *volinfo, - struct list_head *peers, + struct cds_list_head *peers, char **down_peerstr) { glusterd_peerinfo_t *peerinfo = NULL; glusterd_brickinfo_t *brickinfo = NULL; gf_boolean_t ret = _gf_false; - list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { + cds_list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { if (!uuid_compare (brickinfo->uuid, MY_UUID)) continue; - list_for_each_entry (peerinfo, peers, uuid_list) { + cds_list_for_each_entry (peerinfo, peers, uuid_list) { if (uuid_compare (peerinfo->uuid, brickinfo->uuid)) continue; @@ -413,7 +413,7 @@ glusterd_peer_hostname_new (const char *hostname, goto out; peer_hostname->hostname = gf_strdup (hostname); - INIT_LIST_HEAD (&peer_hostname->hostname_list); + CDS_INIT_LIST_HEAD (&peer_hostname->hostname_list); *name = peer_hostname; ret = 0; @@ -429,7 +429,7 @@ glusterd_peer_hostname_free (glusterd_peer_hostname_t *name) if (!name) return; - list_del_init (&name->hostname_list); + cds_list_del_init (&name->hostname_list); GF_FREE (name->hostname); name->hostname = NULL; @@ -448,7 +448,8 @@ gd_peer_has_address (glusterd_peerinfo_t *peerinfo, const char *address) GF_VALIDATE_OR_GOTO ("glusterd", (peerinfo != NULL), out); GF_VALIDATE_OR_GOTO ("glusterd", (address != NULL), out); - list_for_each_entry (hostname, &peerinfo->hostnames, hostname_list) { + cds_list_for_each_entry (hostname, &peerinfo->hostnames, + hostname_list) { if (strcmp (hostname->hostname, address) == 0) { ret = _gf_true; break; @@ -478,7 +479,7 @@ gd_add_address_to_peer (glusterd_peerinfo_t *peerinfo, const char *address) if (ret) goto out; - list_add_tail (&hostname->hostname_list, &peerinfo->hostnames); + cds_list_add_tail (&hostname->hostname_list, &peerinfo->hostnames); ret = 0; out: @@ -525,8 +526,8 @@ gd_add_friend_to_dict (glusterd_peerinfo_t *friend, dict_t *dict, */ memset (key, 0, sizeof (key)); snprintf (key, sizeof (key), "%s.hostname", prefix); - address = list_entry (&friend->hostnames, glusterd_peer_hostname_t, - hostname_list); + address = cds_list_entry (&friend->hostnames, glusterd_peer_hostname_t, + hostname_list); if (!address) { ret = -1; gf_log (this->name, GF_LOG_ERROR, "Could not retrieve first " @@ -547,7 +548,7 @@ gd_add_friend_to_dict (glusterd_peerinfo_t *friend, dict_t *dict, address = NULL; count = 0; - list_for_each_entry (address, &friend->hostnames, hostname_list) { + cds_list_for_each_entry (address, &friend->hostnames, hostname_list) { GF_VALIDATE_OR_GOTO (this->name, (address != NULL), out); memset (key, 0, sizeof (key)); @@ -592,8 +593,9 @@ gd_peerinfo_find_from_hostname (const char *hoststr) GF_VALIDATE_OR_GOTO (this->name, (hoststr != NULL), out); - list_for_each_entry (peer, &priv->peers, uuid_list) { - list_for_each_entry (tmphost, &peer->hostnames,hostname_list) { + cds_list_for_each_entry (peer, &priv->peers, uuid_list) { + cds_list_for_each_entry (tmphost, &peer->hostnames, + hostname_list) { if (!strncasecmp (tmphost->hostname, hoststr, 1024)) { gf_log (this->name, GF_LOG_DEBUG, "Friend %s found.. state: %d", @@ -634,8 +636,9 @@ gd_peerinfo_find_from_addrinfo (const struct addrinfo *addr) GF_VALIDATE_OR_GOTO (this->name, (addr != NULL), out); - list_for_each_entry (peer, &conf->peers, uuid_list) { - list_for_each_entry (address, &peer->hostnames, hostname_list) { + cds_list_for_each_entry (peer, &conf->peers, uuid_list) { + cds_list_for_each_entry (address, &peer->hostnames, + hostname_list) { /* TODO: Cache the resolved addrinfos to improve * performance */ @@ -827,7 +830,7 @@ gd_add_peer_hostnames_to_dict (glusterd_peerinfo_t *peerinfo, dict_t *dict, GF_VALIDATE_OR_GOTO (this->name, (dict != NULL), out); GF_VALIDATE_OR_GOTO (this->name, (prefix != NULL), out); - list_for_each_entry (addr, &peerinfo->hostnames, hostname_list) { + cds_list_for_each_entry (addr, &peerinfo->hostnames, hostname_list) { memset (key, 0, sizeof (key)); snprintf (key, sizeof (key), "%s.hostname%d", prefix, count); ret = dict_set_dynstr_with_alloc (dict, key, addr->hostname); diff --git a/xlators/mgmt/glusterd/src/glusterd-peer-utils.h b/xlators/mgmt/glusterd/src/glusterd-peer-utils.h index 9877d861af7..f4039620b28 100644 --- a/xlators/mgmt/glusterd/src/glusterd-peer-utils.h +++ b/xlators/mgmt/glusterd/src/glusterd-peer-utils.h @@ -47,7 +47,8 @@ gd_peer_uuid_str (glusterd_peerinfo_t *peerinfo); gf_boolean_t glusterd_are_vol_all_peers_up (glusterd_volinfo_t *volinfo, - struct list_head *peers, char **down_peerstr); + struct cds_list_head *peers, + char **down_peerstr); int32_t glusterd_peer_hostname_new (const char *hostname, diff --git a/xlators/mgmt/glusterd/src/glusterd-quota.c b/xlators/mgmt/glusterd/src/glusterd-quota.c index 48dc4b7b39e..462064819ac 100644 --- a/xlators/mgmt/glusterd/src/glusterd-quota.c +++ b/xlators/mgmt/glusterd/src/glusterd-quota.c @@ -1222,7 +1222,7 @@ glusterd_get_gfid_from_brick (dict_t *dict, glusterd_volinfo_t *volinfo, goto out; } - list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { + cds_list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { ret = glusterd_resolve_brick (brickinfo); if (ret) { gf_log (this->name, GF_LOG_ERROR, FMTSTR_RESOLVE_BRICK, diff --git a/xlators/mgmt/glusterd/src/glusterd-rebalance.c b/xlators/mgmt/glusterd/src/glusterd-rebalance.c index c986fc12e7b..ba67df436ff 100644 --- a/xlators/mgmt/glusterd/src/glusterd-rebalance.c +++ b/xlators/mgmt/glusterd/src/glusterd-rebalance.c @@ -759,8 +759,8 @@ glusterd_op_rebalance (dict_t *dict, char **op_errstr, dict_t *rsp_dict) volinfo->rebal.op = GD_OP_NONE; /* Fall back to the old volume file in case of decommission*/ - list_for_each_entry_safe (brickinfo, tmp, &volinfo->bricks, - brick_list) { + cds_list_for_each_entry_safe (brickinfo, tmp, &volinfo->bricks, + brick_list) { if (!brickinfo->decommissioned) continue; brickinfo->decommissioned = 0; diff --git a/xlators/mgmt/glusterd/src/glusterd-replace-brick.c b/xlators/mgmt/glusterd/src/glusterd-replace-brick.c index 0c0f171303f..a6e48ca14b8 100644 --- a/xlators/mgmt/glusterd/src/glusterd-replace-brick.c +++ b/xlators/mgmt/glusterd/src/glusterd-replace-brick.c @@ -1556,8 +1556,8 @@ glusterd_op_perform_replace_brick (glusterd_volinfo_t *volinfo, sizeof(new_brickinfo->mount_dir)); } - list_add_tail (&new_brickinfo->brick_list, - &old_brickinfo->brick_list); + cds_list_add_tail (&new_brickinfo->brick_list, + &old_brickinfo->brick_list); volinfo->brick_count++; diff --git a/xlators/mgmt/glusterd/src/glusterd-rpc-ops.c b/xlators/mgmt/glusterd/src/glusterd-rpc-ops.c index 8f29d26ed24..8dd65168bb6 100644 --- a/xlators/mgmt/glusterd/src/glusterd-rpc-ops.c +++ b/xlators/mgmt/glusterd/src/glusterd-rpc-ops.c @@ -2009,7 +2009,7 @@ glusterd_brick_op (call_frame_t *frame, xlator_t *this, req_ctx = data; GF_ASSERT (req_ctx); - INIT_LIST_HEAD (&opinfo.pending_bricks); + CDS_INIT_LIST_HEAD (&opinfo.pending_bricks); ret = dict_get_bin (req_ctx->dict, "transaction_id", (void **)&txn_id); gf_log (this->name, GF_LOG_DEBUG, "transaction ID = %s", @@ -2026,7 +2026,7 @@ glusterd_brick_op (call_frame_t *frame, xlator_t *this, goto out; } - list_for_each_entry (pending_node, &opinfo.pending_bricks, list) { + cds_list_for_each_entry (pending_node, &opinfo.pending_bricks, list) { dummy_frame = create_frame (this, this->ctx->pool); if (!dummy_frame) continue; diff --git a/xlators/mgmt/glusterd/src/glusterd-sm.c b/xlators/mgmt/glusterd/src/glusterd-sm.c index d3640c0aaa9..9d0c49f04c2 100644 --- a/xlators/mgmt/glusterd/src/glusterd-sm.c +++ b/xlators/mgmt/glusterd/src/glusterd-sm.c @@ -37,7 +37,7 @@ #include "glusterd-store.h" #include "glusterd-snapshot-utils.h" -static struct list_head gd_friend_sm_queue; +static struct cds_list_head gd_friend_sm_queue; static char *glusterd_friend_sm_state_names[] = { "Establishing Connection", @@ -156,7 +156,7 @@ glusterd_broadcast_friend_delete (char *hostname, uuid_t uuid) if (ret) goto out; - list_for_each_entry (peerinfo, &priv->peers, uuid_list) { + cds_list_for_each_entry (peerinfo, &priv->peers, uuid_list) { if (!peerinfo->connected || !peerinfo->peer) continue; @@ -479,7 +479,7 @@ glusterd_ac_send_friend_update (glusterd_friend_sm_event_t *event, void *ctx) if (ret) goto out; - list_for_each_entry (peerinfo, &priv->peers, uuid_list) { + cds_list_for_each_entry (peerinfo, &priv->peers, uuid_list) { if (!glusterd_should_update_peer (peerinfo, cur_peerinfo)) continue; @@ -496,7 +496,7 @@ glusterd_ac_send_friend_update (glusterd_friend_sm_event_t *event, void *ctx) if (ret) goto out; - list_for_each_entry (peerinfo, &priv->peers, uuid_list) { + cds_list_for_each_entry (peerinfo, &priv->peers, uuid_list) { if (!peerinfo->connected || !peerinfo->peer) continue; @@ -536,8 +536,8 @@ glusterd_peer_detach_cleanup (glusterd_conf_t *priv) GF_ASSERT (priv); - list_for_each_entry_safe (volinfo,tmp_volinfo, - &priv->volumes, vol_list) { + cds_list_for_each_entry_safe (volinfo, tmp_volinfo, &priv->volumes, + vol_list) { /* The peer detach checks make sure that, at this point in the * detach process, there are only volumes contained completely * within or completely outside the detached peer. @@ -583,7 +583,7 @@ glusterd_ac_handle_friend_remove_req (glusterd_friend_sm_event_t *event, ret = glusterd_xfer_friend_remove_resp (ev_ctx->req, ev_ctx->hostname, ev_ctx->port); - list_for_each_entry (peerinfo, &priv->peers, uuid_list) { + cds_list_for_each_entry (peerinfo, &priv->peers, uuid_list) { ret = glusterd_friend_sm_new_event (GD_FRIEND_EVENT_REMOVE_FRIEND, &new_event); @@ -963,7 +963,7 @@ glusterd_friend_sm_new_event (glusterd_friend_sm_event_type_t event_type, *new_event = event; event->event = event_type; - INIT_LIST_HEAD (&event->list); + CDS_INIT_LIST_HEAD (&event->list); return 0; } @@ -974,7 +974,7 @@ glusterd_friend_sm_inject_event (glusterd_friend_sm_event_t *event) GF_ASSERT (event); gf_log ("glusterd", GF_LOG_DEBUG, "Enqueue event: '%s'", glusterd_friend_sm_event_name_get (event->event)); - list_add_tail (&event->list, &gd_friend_sm_queue); + cds_list_add_tail (&event->list, &gd_friend_sm_queue); return 0; } @@ -1043,10 +1043,11 @@ glusterd_friend_sm () priv = this->private; GF_ASSERT (priv); - while (!list_empty (&gd_friend_sm_queue)) { - list_for_each_entry_safe (event, tmp, &gd_friend_sm_queue, list) { + while (!cds_list_empty (&gd_friend_sm_queue)) { + cds_list_for_each_entry_safe (event, tmp, &gd_friend_sm_queue, + list) { - list_del_init (&event->list); + cds_list_del_init (&event->list); event_type = event->event; peerinfo = event->peerinfo; if (!peerinfo) { @@ -1152,6 +1153,6 @@ out: int glusterd_friend_sm_init () { - INIT_LIST_HEAD (&gd_friend_sm_queue); + CDS_INIT_LIST_HEAD (&gd_friend_sm_queue); return 0; } diff --git a/xlators/mgmt/glusterd/src/glusterd-sm.h b/xlators/mgmt/glusterd/src/glusterd-sm.h index fb873f75601..8dc6146baf2 100644 --- a/xlators/mgmt/glusterd/src/glusterd-sm.h +++ b/xlators/mgmt/glusterd/src/glusterd-sm.h @@ -29,6 +29,8 @@ #include "rpcsvc.h" #include "store.h" +#include <urcu/rculist.h> + typedef enum gd_quorum_contribution_ { QUORUM_NONE, QUORUM_WAITING, @@ -58,7 +60,7 @@ typedef struct glusterd_peer_state_info_ { typedef struct glusterd_peer_hostname_ { char *hostname; - struct list_head hostname_list; + struct cds_list_head hostname_list; } glusterd_peer_hostname_t; typedef struct glusterd_sm_transition_ { @@ -84,10 +86,10 @@ struct glusterd_peerinfo_ { */ glusterd_peer_state_info_t state; char *hostname; - struct list_head hostnames; + struct cds_list_head hostnames; int port; - struct list_head uuid_list; - struct list_head op_peers_list; + struct cds_list_head uuid_list; + struct cds_list_head op_peers_list; struct rpc_clnt *rpc; rpc_clnt_prog_t *mgmt; rpc_clnt_prog_t *peer; @@ -105,7 +107,7 @@ typedef struct glusterd_peerinfo_ glusterd_peerinfo_t; typedef struct glusterd_local_peers_ { glusterd_peerinfo_t *peerinfo; - struct list_head op_peers_list; + struct cds_list_head op_peers_list; } glusterd_local_peers_t; typedef enum glusterd_ev_gen_mode_ { @@ -151,7 +153,7 @@ typedef enum glusterd_friend_update_op_ { struct glusterd_friend_sm_event_ { - struct list_head list; + struct cds_list_head list; glusterd_peerinfo_t *peerinfo; void *ctx; glusterd_friend_sm_event_type_t event; diff --git a/xlators/mgmt/glusterd/src/glusterd-snapd-svc.c b/xlators/mgmt/glusterd/src/glusterd-snapd-svc.c index 7d265d1ac35..d1a7da7e0ae 100644 --- a/xlators/mgmt/glusterd/src/glusterd-snapd-svc.c +++ b/xlators/mgmt/glusterd/src/glusterd-snapd-svc.c @@ -210,7 +210,7 @@ glusterd_snapdsvc_start (glusterd_svc_t *svc, int flags) } /* Get volinfo->snapd from svc object */ - snapd = list_entry (svc, glusterd_snapdsvc_t, svc); + snapd = cds_list_entry (svc, glusterd_snapdsvc_t, svc); if (!snapd) { gf_log (this->name, GF_LOG_ERROR, "Failed to get snapd object " "from snapd service"); @@ -218,7 +218,7 @@ glusterd_snapdsvc_start (glusterd_svc_t *svc, int flags) } /* Get volinfo from snapd */ - volinfo = list_entry (snapd, glusterd_volinfo_t, snapd); + volinfo = cds_list_entry (snapd, glusterd_volinfo_t, snapd); if (!volinfo) { gf_log (this->name, GF_LOG_ERROR, "Failed to get volinfo from " "from snapd"); @@ -318,7 +318,7 @@ glusterd_snapdsvc_restart () conf = this->private; GF_ASSERT (conf); - list_for_each_entry (volinfo, &conf->volumes, vol_list) { + cds_list_for_each_entry (volinfo, &conf->volumes, vol_list) { /* Init per volume snapd svc */ ret = glusterd_snapdsvc_init (volinfo); if (ret) { @@ -359,7 +359,7 @@ glusterd_snapdsvc_rpc_notify (glusterd_conn_t *conn, rpc_clnt_event_t event) this = THIS; GF_ASSERT (this); - svc = list_entry (conn, glusterd_svc_t, conn); + svc = cds_list_entry (conn, glusterd_svc_t, conn); if (!svc) { gf_log (this->name, GF_LOG_ERROR, "Failed to get the service"); return -1; @@ -382,14 +382,14 @@ glusterd_snapdsvc_rpc_notify (glusterd_conn_t *conn, rpc_clnt_event_t event) break; case RPC_CLNT_DESTROY: - snapd = list_entry (svc, glusterd_snapdsvc_t, svc); + snapd = cds_list_entry (svc, glusterd_snapdsvc_t, svc); if (!snapd) { gf_log (this->name, GF_LOG_ERROR, "Failed to get the " "snapd object"); return -1; } - volinfo = list_entry (snapd, glusterd_volinfo_t, snapd); + volinfo = cds_list_entry (snapd, glusterd_volinfo_t, snapd); if (!volinfo) { gf_log (this->name, GF_LOG_ERROR, "Failed to get the " "volinfo object"); diff --git a/xlators/mgmt/glusterd/src/glusterd-snapshot-utils.c b/xlators/mgmt/glusterd/src/glusterd-snapshot-utils.c index aa9010f20b2..077d48852a1 100644 --- a/xlators/mgmt/glusterd/src/glusterd-snapshot-utils.c +++ b/xlators/mgmt/glusterd/src/glusterd-snapshot-utils.c @@ -121,7 +121,7 @@ glusterd_snap_volinfo_restore (dict_t *dict, dict_t *rsp_dict, GF_VALIDATE_OR_GOTO (this->name, snap_volinfo, out); brick_count = 0; - list_for_each_entry (brickinfo, &snap_volinfo->bricks, brick_list) { + cds_list_for_each_entry (brickinfo, &snap_volinfo->bricks, brick_list) { brick_count++; ret = glusterd_brickinfo_new (&new_brickinfo); if (ret) { @@ -218,8 +218,8 @@ glusterd_snap_volinfo_restore (dict_t *dict, dict_t *rsp_dict, } } - list_add_tail (&new_brickinfo->brick_list, - &new_volinfo->bricks); + cds_list_add_tail (&new_brickinfo->brick_list, + &new_volinfo->bricks); /* ownership of new_brickinfo is passed to new_volinfo */ new_brickinfo = NULL; } @@ -268,8 +268,8 @@ glusterd_snap_volinfo_find_by_volume_id (uuid_t volume_id, goto out; } - list_for_each_entry (snap, &priv->snapshots, snap_list) { - list_for_each_entry (voliter, &snap->volumes, vol_list) { + cds_list_for_each_entry (snap, &priv->snapshots, snap_list) { + cds_list_for_each_entry (voliter, &snap->volumes, vol_list) { if (uuid_compare (volume_id, voliter->volume_id)) continue; *volinfo = voliter; @@ -299,7 +299,7 @@ glusterd_snap_volinfo_find (char *snap_volname, glusterd_snap_t *snap, GF_ASSERT (snap); GF_ASSERT (snap_volname); - list_for_each_entry (snap_vol, &snap->volumes, vol_list) { + cds_list_for_each_entry (snap_vol, &snap->volumes, vol_list) { if (!strcmp (snap_vol->volname, snap_volname)) { ret = 0; *volinfo = snap_vol; @@ -330,7 +330,7 @@ glusterd_snap_volinfo_find_from_parent_volname (char *origin_volname, GF_ASSERT (snap); GF_ASSERT (origin_volname); - list_for_each_entry (snap_vol, &snap->volumes, vol_list) { + cds_list_for_each_entry (snap_vol, &snap->volumes, vol_list) { if (!strcmp (snap_vol->parent_volname, origin_volname)) { ret = 0; *volinfo = snap_vol; @@ -514,11 +514,11 @@ glusterd_add_missed_snaps_to_export_dict (dict_t *peer_data) GF_ASSERT (priv); /* Add the missed_entries in the dict */ - list_for_each_entry (missed_snapinfo, &priv->missed_snaps_list, - missed_snaps) { - list_for_each_entry (snap_opinfo, - &missed_snapinfo->snap_ops, - snap_ops_list) { + cds_list_for_each_entry (missed_snapinfo, &priv->missed_snaps_list, + missed_snaps) { + cds_list_for_each_entry (snap_opinfo, + &missed_snapinfo->snap_ops, + snap_ops_list) { snprintf (name_buf, sizeof(name_buf), "missed_snaps_%d", missed_snap_count); snprintf (value, sizeof(value), "%s:%s=%s:%d:%s:%d:%d", @@ -575,7 +575,7 @@ glusterd_add_snap_to_dict (glusterd_snap_t *snap, dict_t *peer_data, snprintf (prefix, sizeof(prefix), "snap%d", snap_count); - list_for_each_entry (volinfo, &snap->volumes, vol_list) { + cds_list_for_each_entry (volinfo, &snap->volumes, vol_list) { volcount++; ret = glusterd_add_volume_to_dict (volinfo, peer_data, volcount, prefix); @@ -603,7 +603,8 @@ glusterd_add_snap_to_dict (glusterd_snap_t *snap, dict_t *peer_data, } } - list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { + cds_list_for_each_entry (brickinfo, &volinfo->bricks, + brick_list) { if (!uuid_compare (brickinfo->uuid, MY_UUID)) { host_bricks = _gf_true; break; @@ -706,7 +707,7 @@ glusterd_add_snapshots_to_export_dict (dict_t *peer_data) GF_ASSERT (priv); GF_ASSERT (peer_data); - list_for_each_entry (snap, &priv->snapshots, snap_list) { + cds_list_for_each_entry (snap, &priv->snapshots, snap_list) { snap_count++; ret = glusterd_add_snap_to_dict (snap, peer_data, snap_count); if (ret) { @@ -905,8 +906,8 @@ glusterd_perform_missed_op (glusterd_snap_t *snap, int32_t op) break; case GF_SNAP_OPTION_TYPE_RESTORE: - list_for_each_entry_safe (snap_volinfo, tmp, - &snap->volumes, vol_list) { + cds_list_for_each_entry_safe (snap_volinfo, tmp, &snap->volumes, + vol_list) { parent_volname = gf_strdup (snap_volinfo->parent_volname); if (!parent_volname) @@ -956,7 +957,7 @@ glusterd_perform_missed_op (glusterd_snap_t *snap, int32_t op) /* Detach the volinfo from priv->volumes, so that no new * command can ref it any more and then unref it. */ - list_del_init (&volinfo->vol_list); + cds_list_del_init (&volinfo->vol_list); glusterd_volinfo_unref (volinfo); ret = glusterd_snapshot_restore_cleanup (dict, @@ -1014,8 +1015,8 @@ glusterd_perform_missed_snap_ops () priv = this->private; GF_ASSERT (priv); - list_for_each_entry (missed_snapinfo, &priv->missed_snaps_list, - missed_snaps) { + cds_list_for_each_entry (missed_snapinfo, &priv->missed_snaps_list, + missed_snaps) { /* If the pending snap_op is not for this node then continue */ if (strcmp (missed_snapinfo->node_uuid, uuid_utoa (MY_UUID))) continue; @@ -1034,8 +1035,9 @@ glusterd_perform_missed_snap_ops () } op_status = GD_MISSED_SNAP_PENDING; - list_for_each_entry (snap_opinfo, &missed_snapinfo->snap_ops, - snap_ops_list) { + cds_list_for_each_entry (snap_opinfo, + &missed_snapinfo->snap_ops, + snap_ops_list) { /* If the snap_op is create or its status is * GD_MISSED_SNAP_DONE then continue */ @@ -1195,8 +1197,9 @@ glusterd_are_snap_bricks_local (glusterd_snap_t *snap) GF_ASSERT (this); GF_ASSERT (snap); - list_for_each_entry (volinfo, &snap->volumes, vol_list) { - list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { + cds_list_for_each_entry (volinfo, &snap->volumes, vol_list) { + cds_list_for_each_entry (brickinfo, &volinfo->bricks, + brick_list) { if (!uuid_compare (brickinfo->uuid, MY_UUID)) { is_local = _gf_true; goto out; @@ -1232,8 +1235,8 @@ glusterd_peer_has_missed_snap_delete (glusterd_peerinfo_t *peerinfo, peer_uuid = uuid_utoa (peerinfo->uuid); - list_for_each_entry (missed_snapinfo, &priv->missed_snaps_list, - missed_snaps) { + cds_list_for_each_entry (missed_snapinfo, &priv->missed_snaps_list, + missed_snaps) { /* Look for missed snap for the same peer, and * the same snap_id */ @@ -1242,9 +1245,9 @@ glusterd_peer_has_missed_snap_delete (glusterd_peerinfo_t *peerinfo, /* Check if the missed snap's op is delete and the * status is pending */ - list_for_each_entry (snap_opinfo, - &missed_snapinfo->snap_ops, - snap_ops_list) { + cds_list_for_each_entry (snap_opinfo, + &missed_snapinfo->snap_ops, + snap_ops_list) { if (((snap_opinfo->op == GF_SNAP_OPTION_TYPE_DELETE) || (snap_opinfo->op == @@ -1434,8 +1437,9 @@ glusterd_import_friend_snap (dict_t *peer_data, int32_t snap_count, goto out; } - list_add_order (&snap->snap_list, &priv->snapshots, - glusterd_compare_snap_time); + glusterd_list_add_order (&snap->snap_list, &priv->snapshots, + glusterd_compare_snap_time); + for (i = 1; i <= volcount; i++) { ret = glusterd_import_volinfo (peer_data, i, @@ -2199,7 +2203,8 @@ out: } int -glusterd_compare_snap_time(struct list_head *list1, struct list_head *list2) +glusterd_compare_snap_time (struct cds_list_head *list1, + struct cds_list_head *list2) { glusterd_snap_t *snap1 = NULL; glusterd_snap_t *snap2 = NULL; @@ -2208,15 +2213,16 @@ glusterd_compare_snap_time(struct list_head *list1, struct list_head *list2) GF_ASSERT (list1); GF_ASSERT (list2); - snap1 = list_entry(list1, glusterd_snap_t, snap_list); - snap2 = list_entry(list2, glusterd_snap_t, snap_list); + snap1 = cds_list_entry (list1, glusterd_snap_t, snap_list); + snap2 = cds_list_entry (list2, glusterd_snap_t, snap_list); diff_time = difftime(snap1->time_stamp, snap2->time_stamp); return (int)diff_time; } int -glusterd_compare_snap_vol_time(struct list_head *list1, struct list_head *list2) +glusterd_compare_snap_vol_time (struct cds_list_head *list1, + struct cds_list_head *list2) { glusterd_volinfo_t *snapvol1 = NULL; glusterd_volinfo_t *snapvol2 = NULL; @@ -2225,8 +2231,8 @@ glusterd_compare_snap_vol_time(struct list_head *list1, struct list_head *list2) GF_ASSERT (list1); GF_ASSERT (list2); - snapvol1 = list_entry(list1, glusterd_volinfo_t, snapvol_list); - snapvol2 = list_entry(list2, glusterd_volinfo_t, snapvol_list); + snapvol1 = cds_list_entry (list1, glusterd_volinfo_t, snapvol_list); + snapvol2 = cds_list_entry (list2, glusterd_volinfo_t, snapvol_list); diff_time = difftime(snapvol1->snapshot->time_stamp, snapvol2->snapshot->time_stamp); @@ -2250,8 +2256,8 @@ glusterd_missed_snapinfo_new (glusterd_missed_snap_info **missed_snapinfo) if (!new_missed_snapinfo) goto out; - INIT_LIST_HEAD (&new_missed_snapinfo->missed_snaps); - INIT_LIST_HEAD (&new_missed_snapinfo->snap_ops); + CDS_INIT_LIST_HEAD (&new_missed_snapinfo->missed_snaps); + CDS_INIT_LIST_HEAD (&new_missed_snapinfo->snap_ops); *missed_snapinfo = new_missed_snapinfo; @@ -2282,7 +2288,7 @@ glusterd_missed_snap_op_new (glusterd_snap_op_t **snap_op) new_snap_op->brick_num = -1; new_snap_op->op = -1; new_snap_op->status = -1; - INIT_LIST_HEAD (&new_snap_op->snap_ops_list); + CDS_INIT_LIST_HEAD (&new_snap_op->snap_ops_list); *snap_op = new_snap_op; @@ -2556,7 +2562,7 @@ out: int32_t glusterd_snap_quorum_check_for_create (dict_t *dict, gf_boolean_t snap_volume, char **op_errstr, - struct list_head *peers_list) + struct cds_list_head *peers_list) { int8_t snap_force = 0; int32_t force = 0; @@ -2745,7 +2751,7 @@ out: int32_t glusterd_snap_quorum_check (dict_t *dict, gf_boolean_t snap_volume, char **op_errstr, - struct list_head *peers_list) + struct cds_list_head *peers_list) { int32_t ret = -1; xlator_t *this = NULL; diff --git a/xlators/mgmt/glusterd/src/glusterd-snapshot-utils.h b/xlators/mgmt/glusterd/src/glusterd-snapshot-utils.h index 41f316625d0..3f50a061b18 100644 --- a/xlators/mgmt/glusterd/src/glusterd-snapshot-utils.h +++ b/xlators/mgmt/glusterd/src/glusterd-snapshot-utils.h @@ -28,10 +28,10 @@ glusterd_add_snapd_to_dict (glusterd_volinfo_t *volinfo, dict_t *dict, int32_t count); int -glusterd_compare_snap_time(struct list_head *, struct list_head *); +glusterd_compare_snap_time (struct cds_list_head *, struct cds_list_head *); int -glusterd_compare_snap_vol_time(struct list_head *, struct list_head *); +glusterd_compare_snap_vol_time (struct cds_list_head *, struct cds_list_head *); int32_t glusterd_snap_volinfo_restore (dict_t *dict, dict_t *rsp_dict, @@ -120,12 +120,12 @@ gd_import_volume_snap_details (dict_t *dict, glusterd_volinfo_t *volinfo, int32_t glusterd_snap_quorum_check (dict_t *dict, gf_boolean_t snap_volume, char **op_errstr, - struct list_head *peers_list); + struct cds_list_head *peers_list); int32_t glusterd_snap_quorum_check_for_create (dict_t *dict, gf_boolean_t snap_volume, char **op_errstr, - struct list_head *peers_list); + struct cds_list_head *peers_list); int32_t glusterd_snap_brick_create (glusterd_volinfo_t *snap_volinfo, diff --git a/xlators/mgmt/glusterd/src/glusterd-snapshot.c b/xlators/mgmt/glusterd/src/glusterd-snapshot.c index 171d071efc3..2ce81da200f 100644 --- a/xlators/mgmt/glusterd/src/glusterd-snapshot.c +++ b/xlators/mgmt/glusterd/src/glusterd-snapshot.c @@ -147,7 +147,7 @@ out: /* Look for disconnected peers, for missed snap creates or deletes */ static int32_t glusterd_find_missed_snap (dict_t *rsp_dict, glusterd_volinfo_t *vol, - struct list_head *peers, int32_t op) + struct cds_list_head *peers, int32_t op) { int32_t brick_count = -1; int32_t ret = -1; @@ -162,14 +162,14 @@ glusterd_find_missed_snap (dict_t *rsp_dict, glusterd_volinfo_t *vol, GF_ASSERT (vol); brick_count = 0; - list_for_each_entry (brickinfo, &vol->bricks, brick_list) { + cds_list_for_each_entry (brickinfo, &vol->bricks, brick_list) { if (!uuid_compare (brickinfo->uuid, MY_UUID)) { /* If the brick belongs to the same node */ brick_count++; continue; } - list_for_each_entry (peerinfo, peers, uuid_list) { + cds_list_for_each_entry (peerinfo, peers, uuid_list) { if (uuid_compare (peerinfo->uuid, brickinfo->uuid)) { /* If the brick doesnt belong to this peer */ continue; @@ -244,7 +244,7 @@ snap_max_limits_display_commit (dict_t *rsp_dict, char *volname, if (!volname) { /* For system limit */ - list_for_each_entry (volinfo, &conf->volumes, vol_list) { + cds_list_for_each_entry (volinfo, &conf->volumes, vol_list) { if (volinfo->is_snap_volume == _gf_true) continue; @@ -764,7 +764,8 @@ glusterd_snapshot_restore (dict_t *dict, char **op_errstr, dict_t *rsp_dict) } volcount = 0; - list_for_each_entry_safe (snap_volinfo, tmp, &snap->volumes, vol_list) { + cds_list_for_each_entry_safe (snap_volinfo, tmp, &snap->volumes, + vol_list) { volcount++; ret = glusterd_volinfo_find (snap_volinfo->parent_volname, &parent_volinfo); @@ -854,7 +855,7 @@ glusterd_snapshot_restore (dict_t *dict, char **op_errstr, dict_t *rsp_dict) /* Detach the volinfo from priv->volumes, so that no new * command can ref it any more and then unref it. */ - list_del_init (&parent_volinfo->vol_list); + cds_list_del_init (&parent_volinfo->vol_list); glusterd_volinfo_unref (parent_volinfo); } @@ -985,10 +986,11 @@ glusterd_snapshot_restore_prevalidate (dict_t *dict, char **op_errstr, /* Get brickinfo for snap_volumes */ volcount = 0; - list_for_each_entry (volinfo, &snap->volumes, vol_list) { + cds_list_for_each_entry (volinfo, &snap->volumes, vol_list) { volcount++; brick_count = 0; - list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { + cds_list_for_each_entry (brickinfo, &volinfo->bricks, + brick_list) { brick_count++; if (uuid_compare (brickinfo->uuid, MY_UUID)) continue; @@ -1984,7 +1986,8 @@ glusterd_snapshot_create_prevalidate (dict_t *dict, char **op_errstr, brick_count = 0; brick_order = 0; /* Adding snap bricks mount paths to the dict */ - list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { + cds_list_for_each_entry (brickinfo, &volinfo->bricks, + brick_list) { if (uuid_compare (brickinfo->uuid, MY_UUID)) { brick_order++; continue; @@ -2167,8 +2170,8 @@ glusterd_new_snap_object() return NULL; } - INIT_LIST_HEAD (&snap->snap_list); - INIT_LIST_HEAD (&snap->volumes); + CDS_INIT_LIST_HEAD (&snap->snap_list); + CDS_INIT_LIST_HEAD (&snap->volumes); snap->snapname[0] = 0; snap->snap_status = GD_SNAP_STATUS_INIT; } @@ -2192,12 +2195,13 @@ glusterd_list_add_snapvol (glusterd_volinfo_t *origin_vol, snap = snap_vol->snapshot; GF_ASSERT (snap); - list_add_tail (&snap_vol->vol_list, &snap->volumes); + cds_list_add_tail (&snap_vol->vol_list, &snap->volumes); LOCK (&origin_vol->lock); { - list_add_order (&snap_vol->snapvol_list, - &origin_vol->snap_volumes, - glusterd_compare_snap_vol_time); + glusterd_list_add_order (&snap_vol->snapvol_list, + &origin_vol->snap_volumes, + glusterd_compare_snap_vol_time); + origin_vol->snap_count++; } UNLOCK (&origin_vol->lock); @@ -2219,7 +2223,7 @@ glusterd_find_snap_by_name (char *snapname) GF_ASSERT (priv); GF_ASSERT (snapname); - list_for_each_entry (snap, &priv->snapshots, snap_list) { + cds_list_for_each_entry (snap, &priv->snapshots, snap_list) { if (!strcmp (snap->snapname, snapname)) { gf_log (THIS->name, GF_LOG_DEBUG, "Found " "snap %s (%s)", snap->snapname, @@ -2244,7 +2248,7 @@ glusterd_find_snap_by_id (uuid_t snap_id) if (uuid_is_null(snap_id)) goto out; - list_for_each_entry (snap, &priv->snapshots, snap_list) { + cds_list_for_each_entry (snap, &priv->snapshots, snap_list) { if (!uuid_compare (snap->snap_id, snap_id)) { gf_log (THIS->name, GF_LOG_DEBUG, "Found " "snap %s (%s)", snap->snapname, @@ -2391,7 +2395,7 @@ glusterd_lvm_snapshot_remove (dict_t *rsp_dict, glusterd_volinfo_t *snap_vol) } brick_count = -1; - list_for_each_entry (brickinfo, &snap_vol->bricks, brick_list) { + cds_list_for_each_entry (brickinfo, &snap_vol->bricks, brick_list) { brick_count++; if (uuid_compare (brickinfo->uuid, MY_UUID)) { gf_log (this->name, GF_LOG_DEBUG, @@ -2568,7 +2572,7 @@ glusterd_snap_volume_remove (dict_t *rsp_dict, goto out; } - list_for_each_entry (brickinfo, &snap_vol->bricks, brick_list) { + cds_list_for_each_entry (brickinfo, &snap_vol->bricks, brick_list) { if (uuid_compare (brickinfo->uuid, MY_UUID)) continue; @@ -2606,7 +2610,7 @@ glusterd_snap_volume_remove (dict_t *rsp_dict, goto out; } - if (!list_empty(&snap_vol->snapvol_list)) { + if (!cds_list_empty (&snap_vol->snapvol_list)) { ret = glusterd_volinfo_find (snap_vol->parent_volname, &origin_vol); if (ret) { @@ -2644,8 +2648,8 @@ glusterd_snapobject_delete (glusterd_snap_t *snap) return -1; } - list_del_init (&snap->snap_list); - list_del_init (&snap->volumes); + cds_list_del_init (&snap->snap_list); + cds_list_del_init (&snap->volumes); if (LOCK_DESTROY(&snap->lock)) gf_log (THIS->name, GF_LOG_WARNING, "Failed destroying lock" "of snap %s", snap->snapname); @@ -2679,7 +2683,7 @@ glusterd_snap_remove (dict_t *rsp_dict, goto out; } - list_for_each_entry_safe (snap_vol, tmp, &snap->volumes, vol_list) { + cds_list_for_each_entry_safe (snap_vol, tmp, &snap->volumes, vol_list) { ret = glusterd_snap_volume_remove (rsp_dict, snap_vol, remove_lvm, force); if (ret && !force) { @@ -2992,7 +2996,8 @@ glusterd_snapshot_get_snap_detail (dict_t *dict, glusterd_snap_t *snap, goto done; } - list_for_each_entry_safe (snap_vol, tmp_vol, &snap->volumes, vol_list) { + cds_list_for_each_entry_safe (snap_vol, tmp_vol, &snap->volumes, + vol_list) { volcount++; snprintf (key, sizeof (key), "%s.vol%d", keyprefix, volcount); ret = glusterd_snapshot_get_snapvol_detail (dict, @@ -3040,7 +3045,8 @@ glusterd_snapshot_get_all_snap_info (dict_t *dict) /* General parameter validation */ GF_ASSERT (dict); - list_for_each_entry_safe (snap, tmp_snap, &priv->snapshots, snap_list) { + cds_list_for_each_entry_safe (snap, tmp_snap, &priv->snapshots, + snap_list) { snapcount++; snprintf (key, sizeof (key), "snap%d", snapcount); ret = glusterd_snapshot_get_snap_detail (dict, snap, key, NULL); @@ -3142,8 +3148,8 @@ glusterd_snapshot_get_info_by_volume (dict_t *dict, char *volname, } value = NULL; - list_for_each_entry_safe (snap_vol, tmp_vol, &volinfo->snap_volumes, - snapvol_list) { + cds_list_for_each_entry_safe (snap_vol, tmp_vol, &volinfo->snap_volumes, + snapvol_list) { snapcount++; snprintf (key, sizeof (key), "snap%d", snapcount); ret = glusterd_snapshot_get_snap_detail (dict, @@ -3316,7 +3322,8 @@ glusterd_snapshot_get_all_snapnames (dict_t *dict) GF_ASSERT (priv); GF_ASSERT (dict); - list_for_each_entry_safe (snap, tmp_snap, &priv->snapshots, snap_list) { + cds_list_for_each_entry_safe (snap, tmp_snap, &priv->snapshots, + snap_list) { snapcount++; snapname = gf_strdup (snap->snapname); if (!snapname) { @@ -3363,7 +3370,7 @@ glusterd_snapshot_get_vol_snapnames (dict_t *dict, glusterd_volinfo_t *volinfo) GF_ASSERT (dict); GF_ASSERT (volinfo); - list_for_each_entry_safe (snap_vol, tmp_vol, + cds_list_for_each_entry_safe (snap_vol, tmp_vol, &volinfo->snap_volumes, snapvol_list) { snapcount++; snprintf (key, sizeof (key), "snapname%d", snapcount); @@ -3695,7 +3702,7 @@ glusterd_handle_snapshot_restore (rpcsvc_request_t *req, glusterd_op_t op, goto out; } - list_for_each_entry (snap_volinfo, &snap->volumes, vol_list) { + cds_list_for_each_entry (snap_volinfo, &snap->volumes, vol_list) { i++; snprintf (key, sizeof (key), "volname%d", i); buf = gf_strdup (snap_volinfo->parent_volname); @@ -3780,7 +3787,7 @@ glusterd_create_snap_object (dict_t *dict, dict_t *rsp_dict) goto out; } - list_for_each_entry (snap, &priv->snapshots, snap_list) { + cds_list_for_each_entry (snap, &priv->snapshots, snap_list) { if (!strcmp (snap->snapname, snapname) || !uuid_compare (snap->snap_id, *snap_id)) { gf_log (THIS->name, GF_LOG_ERROR, @@ -3828,8 +3835,8 @@ glusterd_create_snap_object (dict_t *dict, dict_t *rsp_dict) goto out; } - list_add_order (&snap->snap_list, &priv->snapshots, - glusterd_compare_snap_time); + glusterd_list_add_order (&snap->snap_list, &priv->snapshots, + glusterd_compare_snap_time); gf_log (this->name, GF_LOG_TRACE, "Snapshot %s added to the list", snap->snapname); @@ -4221,7 +4228,7 @@ glusterd_add_brick_to_snap_volume (dict_t *dict, dict_t *rsp_dict, /* AFR changelog names are based on brick_id and hence the snap * volume's bricks must retain the same ID */ strcpy (snap_brickinfo->brick_id, original_brickinfo->brick_id); - list_add_tail (&snap_brickinfo->brick_list, &snap_vol->bricks); + cds_list_add_tail (&snap_brickinfo->brick_list, &snap_vol->bricks); out: if (ret && snap_brickinfo) @@ -4464,7 +4471,7 @@ glusterd_do_snap_vol (glusterd_volinfo_t *origin_vol, glusterd_snap_t *snap, /* Adding snap brickinfos to the snap volinfo */ brick_count = 0; - list_for_each_entry (brickinfo, &origin_vol->bricks, brick_list) { + cds_list_for_each_entry (brickinfo, &origin_vol->bricks, brick_list) { ret = glusterd_add_brick_to_snap_volume (dict, rsp_dict, snap_vol, brickinfo, volcount, brick_count); @@ -4602,8 +4609,8 @@ glusterd_snapshot_activate_deactivate_prevalidate (dict_t *dict, /* TODO : As of now there is only volume in snapshot. * Change this when multiple volume snapshot is introduced */ - snap_volinfo = list_entry (snap->volumes.next, glusterd_volinfo_t, - vol_list); + snap_volinfo = cds_list_entry (snap->volumes.next, glusterd_volinfo_t, + vol_list); if (!snap_volinfo) { gf_log (this->name, GF_LOG_ERROR, "Unable to fetch snap_volinfo"); @@ -4710,7 +4717,8 @@ glusterd_handle_snapshot_delete_all (dict_t *dict) GF_ASSERT (dict); - list_for_each_entry_safe (snap, tmp_snap, &priv->snapshots, snap_list) { + cds_list_for_each_entry_safe (snap, tmp_snap, &priv->snapshots, + snap_list) { /* indexing from 1 to n, to keep it uniform with other code * paths */ @@ -4780,7 +4788,7 @@ glusterd_handle_snapshot_delete_type_snap (rpcsvc_request_t *req, } /* Set volnames in the dict to get mgmt_v3 lock */ - list_for_each_entry_safe (snap_vol, tmp, &snap->volumes, vol_list) { + cds_list_for_each_entry_safe (snap_vol, tmp, &snap->volumes, vol_list) { volcount++; volname = gf_strdup (snap_vol->parent_volname); if (!volname) { @@ -5086,8 +5094,8 @@ glusterd_snapshot_activate_commit (dict_t *dict, char **op_errstr, /* TODO : As of now there is only volume in snapshot. * Change this when multiple volume snapshot is introduced */ - snap_volinfo = list_entry (snap->volumes.next, glusterd_volinfo_t, - vol_list); + snap_volinfo = cds_list_entry (snap->volumes.next, glusterd_volinfo_t, + vol_list); if (!snap_volinfo) { gf_log (this->name, GF_LOG_ERROR, "Unable to fetch snap_volinfo"); @@ -5157,8 +5165,8 @@ glusterd_snapshot_deactivate_commit (dict_t *dict, char **op_errstr, /* TODO : As of now there is only volume in snapshot. * Change this when multiple volume snapshot is introduced */ - snap_volinfo = list_entry (snap->volumes.next, glusterd_volinfo_t, - vol_list); + snap_volinfo = cds_list_entry (snap->volumes.next, glusterd_volinfo_t, + vol_list); if (!snap_volinfo) { gf_log (this->name, GF_LOG_ERROR, "Unable to fetch snap_volinfo"); @@ -5254,9 +5262,9 @@ glusterd_snapshot_remove_commit (dict_t *dict, char **op_errstr, /* TODO : As of now there is only volume in snapshot. * Change this when multiple volume snapshot is introduced */ - snap_volinfo = list_entry (snap->volumes.next, - glusterd_volinfo_t, - vol_list); + snap_volinfo = cds_list_entry (snap->volumes.next, + glusterd_volinfo_t, + vol_list); if (!snap_volinfo) { gf_log (this->name, GF_LOG_ERROR, "Unable to fetch snap_volinfo"); @@ -5482,11 +5490,12 @@ glusterd_schedule_brick_snapshot (dict_t *dict, dict_t *rsp_dict, GF_ASSERT(snap); synctask_barrier_init ((&args)); - list_for_each_entry (snap_vol, &snap->volumes, vol_list) { + cds_list_for_each_entry (snap_vol, &snap->volumes, vol_list) { volcount++; brickcount = 0; brickorder = 0; - list_for_each_entry (brickinfo, &snap_vol->bricks, brick_list) { + cds_list_for_each_entry (brickinfo, &snap_vol->bricks, + brick_list) { snprintf (key, sizeof(key) - 1, "snap-vol%d.brick%d.order", volcount, brickcount); @@ -5698,7 +5707,7 @@ glusterd_snapshot_create_commit (dict_t *dict, char **op_errstr, GLUSTERD_STORE_KEY_SNAP_ACTIVATE, _gf_false); if (!snap_activate) { - list_for_each_entry (snap_vol, &snap->volumes, vol_list) { + cds_list_for_each_entry (snap_vol, &snap->volumes, vol_list) { snap_vol->status = GLUSTERD_STATUS_STOPPED; ret = glusterd_store_volinfo (snap_vol, GLUSTERD_VOLINFO_VER_AC_INCREMENT); @@ -5713,8 +5722,9 @@ glusterd_snapshot_create_commit (dict_t *dict, char **op_errstr, goto out; } - list_for_each_entry (snap_vol, &snap->volumes, vol_list) { - list_for_each_entry (brickinfo, &snap_vol->bricks, brick_list) { + cds_list_for_each_entry (snap_vol, &snap->volumes, vol_list) { + cds_list_for_each_entry (brickinfo, &snap_vol->bricks, + brick_list) { ret = glusterd_brick_start (snap_vol, brickinfo, _gf_false); if (ret) { @@ -6287,15 +6297,15 @@ glusterd_get_single_snap_status (char **op_errstr, dict_t *rsp_dict, GF_ASSERT (keyprefix); GF_ASSERT (snap); - list_for_each_entry_safe (snap_volinfo, tmp_volinfo, &snap->volumes, - vol_list) { + cds_list_for_each_entry_safe (snap_volinfo, tmp_volinfo, &snap->volumes, + vol_list) { ret = snprintf (key, sizeof (key), "%s.vol%d", keyprefix, volcount); if (ret < 0) { goto out; } - list_for_each_entry (brickinfo, &snap_volinfo->bricks, - brick_list) { + cds_list_for_each_entry (brickinfo, &snap_volinfo->bricks, + brick_list) { if (!glusterd_is_local_brick (this, snap_volinfo, brickinfo)) { brickcount++; @@ -6457,8 +6467,8 @@ glusterd_get_snap_status_of_volume (char **op_errstr, dict_t *rsp_dict, goto out; } - list_for_each_entry_safe (snap_volinfo, temp_volinfo, - &volinfo->snap_volumes, snapvol_list) { + cds_list_for_each_entry_safe (snap_volinfo, temp_volinfo, + &volinfo->snap_volumes, snapvol_list) { ret = snprintf (key, sizeof (key), "status.snap%d.snapname", i); if (ret < 0) { @@ -6506,8 +6516,8 @@ glusterd_get_all_snapshot_status (dict_t *dict, char **op_errstr, GF_ASSERT (dict); GF_ASSERT (op_errstr); - list_for_each_entry_safe (snap, tmp_snap, - &priv->snapshots, snap_list) { + cds_list_for_each_entry_safe (snap, tmp_snap, &priv->snapshots, + snap_list) { ret = snprintf (key, sizeof (key), "status.snap%d.snapname", i); if (ret < 0) { @@ -6717,8 +6727,8 @@ glusterd_handle_snap_limit (dict_t *dict, dict_t *rsp_dict) if (count <= 0) goto out; - tmp_volinfo = list_entry (volinfo->snap_volumes.next, - glusterd_volinfo_t, snapvol_list); + tmp_volinfo = cds_list_entry (volinfo->snap_volumes.next, + glusterd_volinfo_t, snapvol_list); snap = tmp_volinfo->snapshot; GF_ASSERT (snap); @@ -7280,10 +7290,10 @@ glusterd_snapshot_revert_partial_restored_vol (glusterd_volinfo_t *volinfo) /* Retrieve the snap_volumes list from the older volinfo */ reverted_vol->snap_count = volinfo->snap_count; - list_for_each_entry_safe (snap_vol, tmp_vol, &volinfo->snap_volumes, - snapvol_list) { - list_add_tail (&snap_vol->snapvol_list, - &reverted_vol->snap_volumes); + cds_list_for_each_entry_safe (snap_vol, tmp_vol, &volinfo->snap_volumes, + snapvol_list) { + cds_list_add_tail (&snap_vol->snapvol_list, + &reverted_vol->snap_volumes); } /* Since we retrieved the volinfo from store now we don't @@ -7323,8 +7333,8 @@ glusterd_snapshot_revert_restore_from_snap (glusterd_snap_t *snap) /* TODO : As of now there is only one volume in snapshot. * Change this when multiple volume snapshot is introduced */ - snap_volinfo = list_entry (snap->volumes.next, glusterd_volinfo_t, - vol_list); + snap_volinfo = cds_list_entry (snap->volumes.next, glusterd_volinfo_t, + vol_list); strcpy (volname, snap_volinfo->parent_volname); @@ -7798,9 +7808,9 @@ glusterd_free_missed_snapinfo (glusterd_missed_snap_info *missed_snapinfo) glusterd_snap_op_t *tmp = NULL; if (missed_snapinfo) { - list_for_each_entry_safe (snap_opinfo, tmp, - &missed_snapinfo->snap_ops, - snap_ops_list) { + cds_list_for_each_entry_safe (snap_opinfo, tmp, + &missed_snapinfo->snap_ops, + snap_ops_list) { glusterd_free_snap_op (snap_opinfo); snap_opinfo = NULL; } @@ -7830,8 +7840,8 @@ glusterd_update_missed_snap_entry (glusterd_missed_snap_info *missed_snapinfo, GF_ASSERT(missed_snapinfo); GF_ASSERT(missed_snap_op); - list_for_each_entry (snap_opinfo, &missed_snapinfo->snap_ops, - snap_ops_list) { + cds_list_for_each_entry (snap_opinfo, &missed_snapinfo->snap_ops, + snap_ops_list) { /* If the entry is not for the same snap_vol_id * then continue */ @@ -7894,8 +7904,8 @@ glusterd_update_missed_snap_entry (glusterd_missed_snap_info *missed_snapinfo, "Duplicate entry. Not updating"); glusterd_free_snap_op (missed_snap_op); } else { - list_add_tail (&missed_snap_op->snap_ops_list, - &missed_snapinfo->snap_ops); + cds_list_add_tail (&missed_snap_op->snap_ops_list, + &missed_snapinfo->snap_ops); } ret = 0; @@ -7955,8 +7965,8 @@ glusterd_add_new_entry_to_list (char *missed_info, char *snap_vol_id, missed_snap_op->status = snap_status; /* Look for other entries for the same node and same snap */ - list_for_each_entry (missed_snapinfo, &priv->missed_snaps_list, - missed_snaps) { + cds_list_for_each_entry (missed_snapinfo, &priv->missed_snaps_list, + missed_snaps) { snprintf (node_snap_info, sizeof(node_snap_info), "%s:%s", missed_snapinfo->node_uuid, missed_snapinfo->snap_uuid); @@ -7999,10 +8009,10 @@ glusterd_add_new_entry_to_list (char *missed_info, char *snap_vol_id, goto out; } - list_add_tail (&missed_snap_op->snap_ops_list, - &missed_snapinfo->snap_ops); - list_add_tail (&missed_snapinfo->missed_snaps, - &priv->missed_snaps_list); + cds_list_add_tail (&missed_snap_op->snap_ops_list, + &missed_snapinfo->snap_ops); + cds_list_add_tail (&missed_snapinfo->missed_snaps, + &priv->missed_snaps_list); ret = 0; goto out; @@ -8253,7 +8263,7 @@ gd_restore_snap_volume (dict_t *dict, dict_t *rsp_dict, * set the status to the original volume's status. */ glusterd_set_volume_status (new_volinfo, orig_vol->status); - list_add_tail (&new_volinfo->vol_list, &conf->volumes); + cds_list_add_tail (&new_volinfo->vol_list, &conf->volumes); ret = glusterd_store_volinfo (new_volinfo, GLUSTERD_VOLINFO_VER_AC_INCREMENT); @@ -8272,10 +8282,11 @@ out: if (new_volinfo) (void)glusterd_volinfo_delete (new_volinfo); } else { - list_for_each_entry_safe (voliter, temp_volinfo, - &orig_vol->snap_volumes, snapvol_list) { - list_add_tail (&voliter->snapvol_list, - &new_volinfo->snap_volumes); + cds_list_for_each_entry_safe (voliter, temp_volinfo, + &orig_vol->snap_volumes, + snapvol_list) { + cds_list_add_tail (&voliter->snapvol_list, + &new_volinfo->snap_volumes); } } @@ -8317,8 +8328,8 @@ glusterd_snapshot_get_volnames_uuids (dict_t *dict, goto out; } - list_for_each_entry_safe (snap_vol, tmp_vol, &volinfo->snap_volumes, - snapvol_list) { + cds_list_for_each_entry_safe (snap_vol, tmp_vol, &volinfo->snap_volumes, + snapvol_list) { if (GLUSTERD_STATUS_STARTED != snap_vol->status) continue; diff --git a/xlators/mgmt/glusterd/src/glusterd-store.c b/xlators/mgmt/glusterd/src/glusterd-store.c index 70e3536af85..047ff942cec 100644 --- a/xlators/mgmt/glusterd/src/glusterd-store.c +++ b/xlators/mgmt/glusterd/src/glusterd-store.c @@ -622,7 +622,7 @@ glusterd_store_remove_bricks (glusterd_volinfo_t *volinfo, char *delete_path) GF_ASSERT (volinfo); - list_for_each_entry (tmp, &volinfo->bricks, brick_list) { + cds_list_for_each_entry (tmp, &volinfo->bricks, brick_list) { ret = glusterd_store_delete_brick (tmp, delete_path); if (ret) goto out; @@ -1238,7 +1238,7 @@ glusterd_store_brickinfos (glusterd_volinfo_t *volinfo, int vol_fd) GF_ASSERT (volinfo); - list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { + cds_list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { ret = glusterd_store_brickinfo (volinfo, brickinfo, brick_count, vol_fd); if (ret) @@ -1476,7 +1476,7 @@ glusterd_store_bricks_cleanup_tmp (glusterd_volinfo_t *volinfo) GF_ASSERT (volinfo); - list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { + cds_list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { gf_store_unlink_tmppath (brickinfo->shandle); } } @@ -1505,7 +1505,7 @@ glusterd_store_brickinfos_atomic_update (glusterd_volinfo_t *volinfo) GF_ASSERT (volinfo); - list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { + cds_list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { ret = gf_store_rename_tmppath (brickinfo->shandle); if (ret) goto out; @@ -2373,7 +2373,7 @@ glusterd_store_retrieve_bricks (glusterd_volinfo_t *volinfo) brickid++); } - list_add_tail (&brickinfo->brick_list, &volinfo->bricks); + cds_list_add_tail (&brickinfo->brick_list, &volinfo->bricks); brick_count++; } @@ -2901,8 +2901,9 @@ glusterd_store_retrieve_volume (char *volname, glusterd_snap_t *snap) if (!snap) { - list_add_order (&volinfo->vol_list, &priv->volumes, - glusterd_compare_volume_name); + glusterd_list_add_order (&volinfo->vol_list, &priv->volumes, + glusterd_compare_volume_name); + } else { ret = glusterd_volinfo_find (volinfo->parent_volname, &origin_volinfo); @@ -3231,7 +3232,7 @@ glusterd_recreate_vol_brick_mounts (xlator_t *this, GF_ASSERT (volinfo); brick_count = 0; - list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { + cds_list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { brick_count++; /* If the brick is not of this node, or its * snapshot is pending, or the brick is not @@ -3309,8 +3310,9 @@ glusterd_resolve_snap_bricks (xlator_t *this, glusterd_snap_t *snap) GF_ASSERT (this); GF_VALIDATE_OR_GOTO (this->name, snap, out); - list_for_each_entry (volinfo, &snap->volumes, vol_list) { - list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { + cds_list_for_each_entry (volinfo, &snap->volumes, vol_list) { + cds_list_for_each_entry (brickinfo, &volinfo->bricks, + brick_list) { ret = glusterd_resolve_brick (brickinfo); if (ret) { gf_log (this->name, GF_LOG_ERROR, @@ -3453,8 +3455,8 @@ glusterd_store_retrieve_snap (char *snapname) /* TODO: list_add_order can do 'N-square' comparisions and is not efficient. Find a better solution to store the snap in order */ - list_add_order (&snap->snap_list, &priv->snapshots, - glusterd_compare_snap_time); + glusterd_list_add_order (&snap->snap_list, &priv->snapshots, + glusterd_compare_snap_time); out: gf_log (this->name, GF_LOG_TRACE, "Returning with %d", ret); @@ -3635,11 +3637,11 @@ glusterd_store_write_missed_snapinfo (int32_t fd) GF_ASSERT (priv); /* Write the missed_snap_entry */ - list_for_each_entry (missed_snapinfo, &priv->missed_snaps_list, - missed_snaps) { - list_for_each_entry (snap_opinfo, - &missed_snapinfo->snap_ops, - snap_ops_list) { + cds_list_for_each_entry (missed_snapinfo, &priv->missed_snaps_list, + missed_snaps) { + cds_list_for_each_entry (snap_opinfo, + &missed_snapinfo->snap_ops, + snap_ops_list) { snprintf (key, sizeof(key), "%s:%s", missed_snapinfo->node_uuid, missed_snapinfo->snap_uuid); @@ -3911,7 +3913,8 @@ glusterd_store_peer_write (int fd, glusterd_peerinfo_t *peerinfo) if (ret) goto out; - list_for_each_entry (hostname, &peerinfo->hostnames, hostname_list) { + cds_list_for_each_entry (hostname, &peerinfo->hostnames, + hostname_list) { ret = gf_asprintf (&key, GLUSTERD_STORE_KEY_PEER_HOSTNAME"%d", i); if (ret < 0) @@ -4074,8 +4077,9 @@ glusterd_store_retrieve_peers (xlator_t *this) /* Set first hostname from peerinfo->hostnames to * peerinfo->hostname */ - address = list_entry (peerinfo->hostnames.next, - glusterd_peer_hostname_t, hostname_list); + address = cds_list_entry (peerinfo->hostnames.next, + glusterd_peer_hostname_t, + hostname_list); if (!address) { ret = -1; goto out; @@ -4092,7 +4096,7 @@ glusterd_store_retrieve_peers (xlator_t *this) } args.mode = GD_MODE_ON; - list_for_each_entry (peerinfo, &priv->peers, uuid_list) { + cds_list_for_each_entry (peerinfo, &priv->peers, uuid_list) { ret = glusterd_friend_rpc_create (this, peerinfo, &args); if (ret) goto out; @@ -4128,7 +4132,7 @@ glusterd_recreate_all_snap_brick_mounts (xlator_t *this) GF_ASSERT (priv); /* Recreate bricks of volumes restored from snaps */ - list_for_each_entry (volinfo, &priv->volumes, vol_list) { + cds_list_for_each_entry (volinfo, &priv->volumes, vol_list) { /* If the volume is not a restored volume then continue */ if (uuid_is_null (volinfo->restored_from_snap)) continue; @@ -4143,8 +4147,8 @@ glusterd_recreate_all_snap_brick_mounts (xlator_t *this) } /* Recreate bricks of snapshot volumes */ - list_for_each_entry (snap, &priv->snapshots, snap_list) { - list_for_each_entry (volinfo, &snap->volumes, vol_list) { + cds_list_for_each_entry (snap, &priv->snapshots, snap_list) { + cds_list_for_each_entry (volinfo, &snap->volumes, vol_list) { ret = glusterd_recreate_vol_brick_mounts (this, volinfo); if (ret) { @@ -4195,7 +4199,8 @@ glusterd_snap_cleanup (xlator_t *this) goto out; } - list_for_each_entry_safe (snap, tmp_snap, &priv->snapshots, snap_list) { + cds_list_for_each_entry_safe (snap, tmp_snap, &priv->snapshots, + snap_list) { if (snap->snap_status == GD_SNAP_STATUS_RESTORED) { ret = glusterd_snapshot_revert_restore_from_snap (snap); if (ret) { @@ -4238,8 +4243,9 @@ glusterd_resolve_all_bricks (xlator_t *this) GF_ASSERT (priv); /* Resolve bricks of volumes */ - list_for_each_entry (volinfo, &priv->volumes, vol_list) { - list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { + cds_list_for_each_entry (volinfo, &priv->volumes, vol_list) { + cds_list_for_each_entry (brickinfo, &volinfo->bricks, + brick_list) { ret = glusterd_resolve_brick (brickinfo); if (ret) { gf_log ("glusterd", GF_LOG_ERROR, @@ -4250,7 +4256,7 @@ glusterd_resolve_all_bricks (xlator_t *this) } /* Resolve bricks of snapshot volumes */ - list_for_each_entry (snap, &priv->snapshots, snap_list) { + cds_list_for_each_entry (snap, &priv->snapshots, snap_list) { ret = glusterd_resolve_snap_bricks (this, snap); if (ret) { gf_log (this->name, GF_LOG_ERROR, diff --git a/xlators/mgmt/glusterd/src/glusterd-svc-mgmt.c b/xlators/mgmt/glusterd/src/glusterd-svc-mgmt.c index 83eeda30c81..af4272231d2 100644 --- a/xlators/mgmt/glusterd/src/glusterd-svc-mgmt.c +++ b/xlators/mgmt/glusterd/src/glusterd-svc-mgmt.c @@ -307,7 +307,7 @@ glusterd_svc_common_rpc_notify (glusterd_conn_t *conn, GF_ASSERT (this); /* Get the parent onject i.e. svc using list_entry macro */ - svc = list_entry (conn, glusterd_svc_t, conn); + svc = cds_list_entry (conn, glusterd_svc_t, conn); if (!svc) { gf_log (this->name, GF_LOG_ERROR, "Failed to get the service"); return -1; diff --git a/xlators/mgmt/glusterd/src/glusterd-syncop.c b/xlators/mgmt/glusterd/src/glusterd-syncop.c index f37aa483a00..15b713d2296 100644 --- a/xlators/mgmt/glusterd/src/glusterd-syncop.c +++ b/xlators/mgmt/glusterd/src/glusterd-syncop.c @@ -1067,8 +1067,8 @@ out: int -gd_build_peers_list (struct list_head *peers, struct list_head *xact_peers, - glusterd_op_t op) +gd_build_peers_list (struct cds_list_head *peers, + struct cds_list_head *xact_peers, glusterd_op_t op) { glusterd_peerinfo_t *peerinfo = NULL; int npeers = 0; @@ -1076,22 +1076,22 @@ gd_build_peers_list (struct list_head *peers, struct list_head *xact_peers, GF_ASSERT (peers); GF_ASSERT (xact_peers); - list_for_each_entry (peerinfo, peers, uuid_list) { + cds_list_for_each_entry (peerinfo, peers, uuid_list) { if (!peerinfo->connected) continue; if (op != GD_OP_SYNC_VOLUME && peerinfo->state.state != GD_FRIEND_STATE_BEFRIENDED) continue; - list_add_tail (&peerinfo->op_peers_list, xact_peers); + cds_list_add_tail (&peerinfo->op_peers_list, xact_peers); npeers++; } return npeers; } int -gd_build_local_xaction_peers_list (struct list_head *peers, - struct list_head *xact_peers, +gd_build_local_xaction_peers_list (struct cds_list_head *peers, + struct cds_list_head *xact_peers, glusterd_op_t op) { glusterd_peerinfo_t *peerinfo = NULL; @@ -1101,7 +1101,7 @@ gd_build_local_xaction_peers_list (struct list_head *peers, GF_ASSERT (peers); GF_ASSERT (xact_peers); - list_for_each_entry (peerinfo, peers, uuid_list) { + cds_list_for_each_entry (peerinfo, peers, uuid_list) { if (!peerinfo->connected) continue; if (op != GD_OP_SYNC_VOLUME && @@ -1113,26 +1113,27 @@ gd_build_local_xaction_peers_list (struct list_head *peers, if (!local_peers) { return -1; } - INIT_LIST_HEAD (&local_peers->op_peers_list); + CDS_INIT_LIST_HEAD (&local_peers->op_peers_list); local_peers->peerinfo = peerinfo; - list_add_tail (&local_peers->op_peers_list, xact_peers); + cds_list_add_tail (&local_peers->op_peers_list, xact_peers); npeers++; } return npeers; } void -gd_cleanup_local_xaction_peers_list (struct list_head *xact_peers) +gd_cleanup_local_xaction_peers_list (struct cds_list_head *xact_peers) { glusterd_local_peers_t *local_peers = NULL; glusterd_local_peers_t *tmp = NULL; GF_ASSERT (xact_peers); - if (list_empty (xact_peers)) + if (cds_list_empty (xact_peers)) return; - list_for_each_entry_safe (local_peers, tmp, xact_peers, op_peers_list) { + cds_list_for_each_entry_safe (local_peers, tmp, xact_peers, + op_peers_list) { GF_FREE (local_peers); /* local_peers->peerinfo need not be freed because it does not * ownership of peerinfo, but merely refer it */ @@ -1142,7 +1143,7 @@ gd_cleanup_local_xaction_peers_list (struct list_head *xact_peers) int gd_lock_op_phase (glusterd_conf_t *conf, glusterd_op_t op, dict_t *op_ctx, char **op_errstr, int npeers, uuid_t txn_id, - struct list_head *peers) + struct cds_list_head *peers) { int ret = -1; int peer_cnt = 0; @@ -1197,8 +1198,9 @@ out: } int -gd_stage_op_phase (struct list_head *peers, glusterd_op_t op, dict_t *op_ctx, - dict_t *req_dict, char **op_errstr, int npeers) +gd_stage_op_phase (struct cds_list_head *peers, glusterd_op_t op, + dict_t *op_ctx, dict_t *req_dict, char **op_errstr, + int npeers) { int ret = -1; int peer_cnt = 0; @@ -1304,8 +1306,9 @@ out: } int -gd_commit_op_phase (struct list_head *peers, glusterd_op_t op, dict_t *op_ctx, - dict_t *req_dict, char **op_errstr, int npeers) +gd_commit_op_phase (struct cds_list_head *peers, glusterd_op_t op, + dict_t *op_ctx, dict_t *req_dict, char **op_errstr, + int npeers) { dict_t *rsp_dict = NULL; int peer_cnt = -1; @@ -1407,7 +1410,7 @@ int gd_unlock_op_phase (glusterd_conf_t *conf, glusterd_op_t op, int *op_ret, rpcsvc_request_t *req, dict_t *op_ctx, char *op_errstr, int npeers, char *volname, gf_boolean_t is_acquired, - uuid_t txn_id, struct list_head *peers) + uuid_t txn_id, struct cds_list_head *peers) { glusterd_peerinfo_t *peerinfo = NULL; uuid_t tmp_uuid = {0}; @@ -1505,11 +1508,11 @@ out: } int -gd_get_brick_count (struct list_head *bricks) +gd_get_brick_count (struct cds_list_head *bricks) { glusterd_pending_node_t *pending_node = NULL; int npeers = 0; - list_for_each_entry (pending_node, bricks, list) { + cds_list_for_each_entry (pending_node, bricks, list) { npeers++; } return npeers; @@ -1520,7 +1523,7 @@ gd_brick_op_phase (glusterd_op_t op, dict_t *op_ctx, dict_t *req_dict, char **op_errstr) { glusterd_pending_node_t *pending_node = NULL; - struct list_head selected = {0,}; + struct cds_list_head selected = {0,}; xlator_t *this = NULL; int brick_count = 0; int ret = -1; @@ -1536,7 +1539,7 @@ gd_brick_op_phase (glusterd_op_t op, dict_t *op_ctx, dict_t *req_dict, goto out; } - INIT_LIST_HEAD (&selected); + CDS_INIT_LIST_HEAD (&selected); ret = glusterd_op_bricks_select (op, req_dict, op_errstr, &selected, rsp_dict); if (ret) { @@ -1555,7 +1558,7 @@ gd_brick_op_phase (glusterd_op_t op, dict_t *op_ctx, dict_t *req_dict, rsp_dict = NULL; brick_count = 0; - list_for_each_entry (pending_node, &selected, list) { + cds_list_for_each_entry (pending_node, &selected, list) { rpc = glusterd_pending_node_get_rpc (pending_node); if (!rpc) { if (pending_node->type == GD_NODE_REBALANCE) { @@ -1603,7 +1606,7 @@ gd_sync_task_begin (dict_t *op_ctx, rpcsvc_request_t * req) xlator_t *this = NULL; gf_boolean_t is_acquired = _gf_false; uuid_t *txn_id = NULL; - struct list_head xaction_peers = {0,}; + struct cds_list_head xaction_peers = {0,}; glusterd_op_info_t txn_opinfo; this = THIS; @@ -1611,7 +1614,7 @@ gd_sync_task_begin (dict_t *op_ctx, rpcsvc_request_t * req) conf = this->private; GF_ASSERT (conf); - INIT_LIST_HEAD (&xaction_peers); + CDS_INIT_LIST_HEAD (&xaction_peers); ret = dict_get_int32 (op_ctx, GD_SYNC_OPCODE_KEY, &tmp_op); if (ret) { diff --git a/xlators/mgmt/glusterd/src/glusterd-syncop.h b/xlators/mgmt/glusterd/src/glusterd-syncop.h index e0733dc8006..18bb1a1ecd8 100644 --- a/xlators/mgmt/glusterd/src/glusterd-syncop.h +++ b/xlators/mgmt/glusterd/src/glusterd-syncop.h @@ -37,15 +37,15 @@ } while (0) -#define list_for_each_local_xaction_peers(xact_peer, xact_peers_head) \ - glusterd_local_peers_t *pos = NULL; \ - for (pos = list_entry((xact_peers_head)->next, glusterd_local_peers_t,\ - op_peers_list), \ - xact_peer = pos->peerinfo; \ - &pos->op_peers_list != (xact_peers_head); \ - pos = list_entry(pos->op_peers_list.next, glusterd_local_peers_t,\ - op_peers_list), \ - xact_peer = pos->peerinfo) +#define list_for_each_local_xaction_peers(xact_peer, xact_peers_head) \ + glusterd_local_peers_t *pos = NULL; \ + for (pos = cds_list_entry ((xact_peers_head)->next, \ + glusterd_local_peers_t, op_peers_list), \ + xact_peer = pos->peerinfo; \ + &pos->op_peers_list != (xact_peers_head); \ + pos = cds_list_entry(pos->op_peers_list.next, \ + glusterd_local_peers_t, op_peers_list), \ + xact_peer = pos->peerinfo) int gd_syncop_submit_request (struct rpc_clnt *rpc, void *req, void *local, void *cookie, rpc_clnt_prog_t *prog, int procnum, @@ -70,16 +70,16 @@ void gd_synctask_barrier_wait (struct syncargs *args, int count); int -gd_build_peers_list (struct list_head *peers, struct list_head *xact_peers, - glusterd_op_t op); +gd_build_peers_list (struct cds_list_head *peers, + struct cds_list_head *xact_peers, glusterd_op_t op); int -gd_build_local_xaction_peers_list (struct list_head *peers, - struct list_head *xact_peers, +gd_build_local_xaction_peers_list (struct cds_list_head *peers, + struct cds_list_head *xact_peers, glusterd_op_t op); void -gd_cleanup_local_xaction_peers_list (struct list_head *peers); +gd_cleanup_local_xaction_peers_list (struct cds_list_head *peers); int gd_brick_op_phase (glusterd_op_t op, dict_t *op_ctx, dict_t *req_dict, diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c index 04fa67c6df1..84cdfca3049 100644 --- a/xlators/mgmt/glusterd/src/glusterd-utils.c +++ b/xlators/mgmt/glusterd/src/glusterd-utils.c @@ -477,10 +477,10 @@ glusterd_volinfo_new (glusterd_volinfo_t **volinfo) goto out; LOCK_INIT (&new_volinfo->lock); - INIT_LIST_HEAD (&new_volinfo->vol_list); - INIT_LIST_HEAD (&new_volinfo->snapvol_list); - INIT_LIST_HEAD (&new_volinfo->bricks); - INIT_LIST_HEAD (&new_volinfo->snap_volumes); + CDS_INIT_LIST_HEAD (&new_volinfo->vol_list); + CDS_INIT_LIST_HEAD (&new_volinfo->snapvol_list); + CDS_INIT_LIST_HEAD (&new_volinfo->bricks); + CDS_INIT_LIST_HEAD (&new_volinfo->snap_volumes); new_volinfo->dict = dict_new (); if (!new_volinfo->dict) { @@ -709,7 +709,7 @@ glusterd_brickinfo_delete (glusterd_brickinfo_t *brickinfo) GF_ASSERT (brickinfo); - list_del_init (&brickinfo->brick_list); + cds_list_del_init (&brickinfo->brick_list); GF_FREE (brickinfo->logfile); GF_FREE (brickinfo); @@ -728,8 +728,8 @@ glusterd_volume_brickinfos_delete (glusterd_volinfo_t *volinfo) GF_ASSERT (volinfo); - list_for_each_entry_safe (brickinfo, tmp, &volinfo->bricks, - brick_list) { + cds_list_for_each_entry_safe (brickinfo, tmp, &volinfo->bricks, + brick_list) { ret = glusterd_brickinfo_delete (brickinfo); if (ret) goto out; @@ -743,7 +743,7 @@ out: int glusterd_volinfo_remove (glusterd_volinfo_t *volinfo) { - list_del_init (&volinfo->vol_list); + cds_list_del_init (&volinfo->vol_list); glusterd_volinfo_unref (volinfo); return 0; } @@ -755,8 +755,8 @@ glusterd_volinfo_delete (glusterd_volinfo_t *volinfo) GF_ASSERT (volinfo); - list_del_init (&volinfo->vol_list); - list_del_init (&volinfo->snapvol_list); + cds_list_del_init (&volinfo->vol_list); + cds_list_del_init (&volinfo->snapvol_list); ret = glusterd_volume_brickinfos_delete (volinfo); if (ret) @@ -798,7 +798,7 @@ glusterd_brickinfo_new (glusterd_brickinfo_t **brickinfo) if (!new_brickinfo) goto out; - INIT_LIST_HEAD (&new_brickinfo->brick_list); + CDS_INIT_LIST_HEAD (&new_brickinfo->brick_list); *brickinfo = new_brickinfo; @@ -818,7 +818,7 @@ glusterd_get_next_available_brickid (glusterd_volinfo_t *volinfo) int max_brickid = -1; int ret = -1; - list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { + cds_list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { token = strrchr (brickinfo->brick_id, '-'); ret = gf_string2int32 (++token, &brickid); if (ret < 0) { @@ -1025,8 +1025,9 @@ glusterd_is_brickpath_available (uuid_t uuid, char *path) strncpy(tmp_path,path,PATH_MAX); } - list_for_each_entry (volinfo, &priv->volumes, vol_list) { - list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { + cds_list_for_each_entry (volinfo, &priv->volumes, vol_list) { + cds_list_for_each_entry (brickinfo, &volinfo->bricks, + brick_list) { if (uuid_compare (uuid, brickinfo->uuid)) continue; @@ -1331,7 +1332,7 @@ glusterd_volume_brickinfo_get (uuid_t uuid, char *hostname, char *path, goto out; } ret = -1; - list_for_each_entry (brickiter, &volinfo->bricks, brick_list) { + cds_list_for_each_entry (brickiter, &volinfo->bricks, brick_list) { if ((uuid_is_null (brickiter->uuid)) && (glusterd_resolve_brick (brickiter) != 0)) @@ -1410,7 +1411,7 @@ glusterd_volinfo_find_by_volume_id (uuid_t volume_id, glusterd_volinfo_t **volin this = THIS; priv = this->private; - list_for_each_entry (voliter, &priv->volumes, vol_list) { + cds_list_for_each_entry (voliter, &priv->volumes, vol_list) { if (uuid_compare (volume_id, voliter->volume_id)) continue; *volinfo = voliter; @@ -1437,7 +1438,7 @@ glusterd_volinfo_find (char *volname, glusterd_volinfo_t **volinfo) priv = this->private; GF_ASSERT (priv); - list_for_each_entry (tmp_volinfo, &priv->volumes, vol_list) { + cds_list_for_each_entry (tmp_volinfo, &priv->volumes, vol_list) { if (!strcmp (tmp_volinfo->volname, volname)) { gf_log (this->name, GF_LOG_DEBUG, "Volume %s found", volname); @@ -1845,7 +1846,7 @@ glusterd_volume_stop_glusterfs (glusterd_volinfo_t *volinfo, priv = this->private; if (del_brick) - list_del_init (&brickinfo->brick_list); + cds_list_del_init (&brickinfo->brick_list); if (GLUSTERD_STATUS_STARTED == volinfo->status) { (void) glusterd_brick_disconnect (brickinfo); @@ -2145,7 +2146,7 @@ glusterd_add_bricks_hname_path_to_dict (dict_t *dict, int index = 0; - list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { + cds_list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { snprintf (key, sizeof (key), "%d-hostname", index); ret = dict_set_str (dict, key, brickinfo->hostname); if (ret) @@ -2420,7 +2421,7 @@ glusterd_add_volume_to_dict (glusterd_volinfo_t *volinfo, if (ret) goto out; - list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { + cds_list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { memset (key, 0, sizeof (key)); snprintf (key, sizeof (key), "%s%d.brick%d.hostname", prefix, count, i); @@ -2598,7 +2599,7 @@ glusterd_add_volumes_to_export_dict (dict_t **peer_data) if (!dict) goto out; - list_for_each_entry (volinfo, &priv->volumes, vol_list) { + cds_list_for_each_entry (volinfo, &priv->volumes, vol_list) { count++; ret = glusterd_add_volume_to_dict (volinfo, dict, count, "volume"); @@ -2898,7 +2899,7 @@ _does_quorum_meet (int active_count, int quorum_count) int glusterd_get_quorum_cluster_counts (xlator_t *this, int *active_count, int *quorum_count, - struct list_head *peer_list, + struct cds_list_head *peer_list, gf_boolean_t _local_xaction_peers) { glusterd_peerinfo_t *peerinfo = NULL; @@ -2918,7 +2919,7 @@ glusterd_get_quorum_cluster_counts (xlator_t *this, int *active_count, *active_count = 1; if (!peer_list) { - list_for_each_entry (peerinfo, &conf->peers, uuid_list) { + cds_list_for_each_entry (peerinfo, &conf->peers, uuid_list) { glusterd_quorum_count(peerinfo, inquorum_count, active_count, out); } @@ -2930,8 +2931,8 @@ glusterd_get_quorum_cluster_counts (xlator_t *this, int *active_count, active_count, out); } } else { - list_for_each_entry (peerinfo, peer_list, - op_peers_list) { + cds_list_for_each_entry (peerinfo, peer_list, + op_peers_list) { glusterd_quorum_count(peerinfo, inquorum_count, active_count, out); } @@ -2981,7 +2982,7 @@ glusterd_is_any_volume_in_server_quorum (xlator_t *this) glusterd_volinfo_t *volinfo = NULL; conf = this->private; - list_for_each_entry (volinfo, &conf->volumes, vol_list) { + cds_list_for_each_entry (volinfo, &conf->volumes, vol_list) { if (glusterd_is_volume_in_server_quorum (volinfo)) { return _gf_true; } @@ -2990,7 +2991,7 @@ glusterd_is_any_volume_in_server_quorum (xlator_t *this) } gf_boolean_t -does_gd_meet_server_quorum (xlator_t *this, struct list_head *peers_list, +does_gd_meet_server_quorum (xlator_t *this, struct cds_list_head *peers_list, gf_boolean_t _local_xaction_peers) { int quorum_count = 0; @@ -3085,7 +3086,7 @@ glusterd_do_volume_quorum_action (xlator_t *this, glusterd_volinfo_t *volinfo, "bricks.", volinfo->volname); } - list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { + cds_list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { if (!glusterd_is_local_brick (this, volinfo, brickinfo)) continue; if (quorum_status == DOESNT_MEET_QUORUM) @@ -3126,7 +3127,7 @@ glusterd_do_quorum_action () if (_does_quorum_meet (active_count, quorum_count)) meets = _gf_true; - list_for_each_entry (volinfo, &conf->volumes, vol_list) { + cds_list_for_each_entry (volinfo, &conf->volumes, vol_list) { glusterd_do_volume_quorum_action (this, volinfo, meets); } } @@ -3309,7 +3310,8 @@ glusterd_import_bricks (dict_t *peer_data, int32_t vol_count, GLUSTERD_ASSIGN_BRICKID_TO_BRICKINFO (new_brickinfo, new_volinfo, brickid++); - list_add_tail (&new_brickinfo->brick_list, &new_volinfo->bricks); + cds_list_add_tail (&new_brickinfo->brick_list, + &new_volinfo->bricks); brick_count++; } ret = 0; @@ -3821,7 +3823,7 @@ glusterd_volume_disconnect_all_bricks (glusterd_volinfo_t *volinfo) glusterd_brickinfo_t *brickinfo = NULL; GF_ASSERT (volinfo); - list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { + cds_list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { if (glusterd_is_brick_started (brickinfo)) { ret = glusterd_brick_disconnect (brickinfo); if (ret) { @@ -3857,11 +3859,13 @@ glusterd_volinfo_copy_brick_portinfo (glusterd_volinfo_t *new_volinfo, if (_gf_false == glusterd_is_volume_started (new_volinfo)) goto out; - list_for_each_entry (new_brickinfo, &new_volinfo->bricks, brick_list) { + cds_list_for_each_entry (new_brickinfo, &new_volinfo->bricks, + brick_list) { ret = glusterd_volume_brickinfo_get (new_brickinfo->uuid, new_brickinfo->hostname, new_brickinfo->path, - old_volinfo, &old_brickinfo); + old_volinfo, + &old_brickinfo); if (ret == 0) { GLUSTERD_GET_BRICK_PIDFILE (pidfile, old_volinfo, old_brickinfo, priv); @@ -3887,11 +3891,13 @@ glusterd_volinfo_stop_stale_bricks (glusterd_volinfo_t *new_volinfo, GF_ASSERT (old_volinfo); if (_gf_false == glusterd_is_volume_started (old_volinfo)) goto out; - list_for_each_entry (old_brickinfo, &old_volinfo->bricks, brick_list) { + cds_list_for_each_entry (old_brickinfo, &old_volinfo->bricks, + brick_list) { ret = glusterd_volume_brickinfo_get (old_brickinfo->uuid, old_brickinfo->hostname, old_brickinfo->path, - new_volinfo, &new_brickinfo); + new_volinfo, + &new_brickinfo); /* If the brick is stale, i.e it's not a part of the new volume * or if it's part of the new volume and is pending a snap, * then stop the brick process @@ -3932,10 +3938,11 @@ glusterd_delete_stale_volume (glusterd_volinfo_t *stale_volinfo, /* Copy snap_volumes list from stale_volinfo to valid_volinfo */ valid_volinfo->snap_count = 0; - list_for_each_entry_safe (voliter, temp_volinfo, - &stale_volinfo->snap_volumes, snapvol_list) { - list_add_tail (&voliter->snapvol_list, - &valid_volinfo->snap_volumes); + cds_list_for_each_entry_safe (voliter, temp_volinfo, + &stale_volinfo->snap_volumes, + snapvol_list) { + cds_list_add_tail (&voliter->snapvol_list, + &valid_volinfo->snap_volumes); valid_volinfo->snap_count++; } @@ -4110,8 +4117,9 @@ glusterd_import_friend_volume (dict_t *peer_data, size_t count) if (ret) goto out; - list_add_order (&new_volinfo->vol_list, &priv->volumes, - glusterd_compare_volume_name); + glusterd_list_add_order (&new_volinfo->vol_list, &priv->volumes, + glusterd_compare_volume_name); + out: gf_log ("", GF_LOG_DEBUG, "Returning with ret: %d", ret); return ret; @@ -4534,7 +4542,7 @@ glusterd_are_all_volumes_stopped () priv = this->private; GF_ASSERT (priv); - list_for_each_entry (voliter, &priv->volumes, vol_list) { + cds_list_for_each_entry (voliter, &priv->volumes, vol_list) { if (voliter->status == GLUSTERD_STATUS_STARTED) return _gf_false; } @@ -4555,7 +4563,7 @@ glusterd_all_shd_compatible_volumes_stopped () priv = this->private; GF_ASSERT (priv); - list_for_each_entry (voliter, &priv->volumes, vol_list) { + cds_list_for_each_entry (voliter, &priv->volumes, vol_list) { if (!glusterd_is_shd_compatible_volume (voliter)) continue; if (voliter->status == GLUSTERD_STATUS_STARTED) @@ -4577,7 +4585,7 @@ glusterd_all_volumes_with_quota_stopped () priv = this->private; GF_ASSERT (priv); - list_for_each_entry (voliter, &priv->volumes, vol_list) { + cds_list_for_each_entry (voliter, &priv->volumes, vol_list) { if (!glusterd_is_volume_quota_enabled (voliter)) continue; if (voliter->status == GLUSTERD_STATUS_STARTED) @@ -4600,7 +4608,7 @@ glusterd_volume_count_get (void) priv = this->private; - list_for_each_entry (tmp_volinfo, &priv->volumes, vol_list) { + cds_list_for_each_entry (tmp_volinfo, &priv->volumes, vol_list) { ret++; } @@ -4626,7 +4634,7 @@ glusterd_brickinfo_get (uuid_t uuid, char *hostname, char *path, priv = this->private; - list_for_each_entry (volinfo, &priv->volumes, vol_list) { + cds_list_for_each_entry (volinfo, &priv->volumes, vol_list) { ret = glusterd_volume_brickinfo_get (uuid, hostname, path, volinfo, brickinfo); @@ -4690,26 +4698,27 @@ glusterd_restart_bricks (glusterd_conf_t *conf) this = THIS; GF_ASSERT (this); - list_for_each_entry (volinfo, &conf->volumes, vol_list) { + cds_list_for_each_entry (volinfo, &conf->volumes, vol_list) { if (volinfo->status != GLUSTERD_STATUS_STARTED) continue; start_svcs = _gf_true; gf_log (this->name, GF_LOG_DEBUG, "starting the volume %s", volinfo->volname); - list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { + cds_list_for_each_entry (brickinfo, &volinfo->bricks, + brick_list) { glusterd_brick_start (volinfo, brickinfo, _gf_false); } } - list_for_each_entry (snap, &conf->snapshots, snap_list) { - list_for_each_entry (volinfo, &snap->volumes, vol_list) { + cds_list_for_each_entry (snap, &conf->snapshots, snap_list) { + cds_list_for_each_entry (volinfo, &snap->volumes, vol_list) { if (volinfo->status != GLUSTERD_STATUS_STARTED) continue; start_svcs = _gf_true; gf_log (this->name, GF_LOG_DEBUG, "starting the snap " "volume %s", volinfo->volname); - list_for_each_entry (brickinfo, &volinfo->bricks, - brick_list) { + cds_list_for_each_entry (brickinfo, &volinfo->bricks, + brick_list) { glusterd_brick_start (volinfo, brickinfo, _gf_false); } @@ -4911,7 +4920,7 @@ glusterd_restart_gsyncds (glusterd_conf_t *conf) glusterd_volinfo_t *volinfo = NULL; int ret = 0; - list_for_each_entry (volinfo, &conf->volumes, vol_list) { + cds_list_for_each_entry (volinfo, &conf->volumes, vol_list) { glusterd_volume_restart_gsyncds (volinfo); } return ret; @@ -4942,9 +4951,9 @@ glusterd_get_brickinfo (xlator_t *this, const char *brickname, int port, GF_ASSERT (this); priv = this->private; - list_for_each_entry (volinfo, &priv->volumes, vol_list) { - list_for_each_entry (tmpbrkinfo, &volinfo->bricks, - brick_list) { + cds_list_for_each_entry (volinfo, &priv->volumes, vol_list) { + cds_list_for_each_entry (tmpbrkinfo, &volinfo->bricks, + brick_list) { if (localhost && !gf_is_local_addr (tmpbrkinfo->hostname)) continue; if (!strcmp(tmpbrkinfo->path, brickname) && @@ -4962,8 +4971,7 @@ glusterd_get_brickinfo_by_position (glusterd_volinfo_t *volinfo, uint32_t pos) { glusterd_brickinfo_t *tmpbrkinfo = NULL; - list_for_each_entry (tmpbrkinfo, &volinfo->bricks, - brick_list) { + cds_list_for_each_entry (tmpbrkinfo, &volinfo->bricks, brick_list) { if (pos == 0) return tmpbrkinfo; pos--; @@ -5540,7 +5548,7 @@ glusterd_get_all_volnames (dict_t *dict) priv = THIS->private; GF_ASSERT (priv); - list_for_each_entry (entry, &priv->volumes, vol_list) { + cds_list_for_each_entry (entry, &priv->volumes, vol_list) { memset (key, 0, sizeof (key)); snprintf (key, sizeof (key), "vol%d", vol_count); ret = dict_set_str (dict, key, entry->volname); @@ -5572,9 +5580,9 @@ glusterd_all_volume_cond_check (glusterd_condition_func func, int status, this = THIS; priv = this->private; - list_for_each_entry (volinfo, &priv->volumes, vol_list) { - list_for_each_entry (brickinfo, &volinfo->bricks, - brick_list) { + cds_list_for_each_entry (volinfo, &priv->volumes, vol_list) { + cds_list_for_each_entry (brickinfo, &volinfo->bricks, + brick_list) { ret = func (volinfo, brickinfo, ctx); if (ret != status) { ret = -1; @@ -6135,15 +6143,15 @@ out: } int -glusterd_remove_pending_entry (struct list_head *list, void *elem) +glusterd_remove_pending_entry (struct cds_list_head *list, void *elem) { glusterd_pending_node_t *pending_node = NULL; glusterd_pending_node_t *tmp = NULL; int ret = 0; - list_for_each_entry_safe (pending_node, tmp, list, list) { + cds_list_for_each_entry_safe (pending_node, tmp, list, list) { if (elem == pending_node->node) { - list_del_init (&pending_node->list); + cds_list_del_init (&pending_node->list); GF_FREE (pending_node); ret = 0; goto out; @@ -6156,13 +6164,13 @@ out: } int -glusterd_clear_pending_nodes (struct list_head *list) +glusterd_clear_pending_nodes (struct cds_list_head *list) { glusterd_pending_node_t *pending_node = NULL; glusterd_pending_node_t *tmp = NULL; - list_for_each_entry_safe (pending_node, tmp, list, list) { - list_del_init (&pending_node->list); + cds_list_for_each_entry_safe (pending_node, tmp, list, list) { + cds_list_del_init (&pending_node->list); GF_FREE (pending_node); } @@ -6214,7 +6222,8 @@ glusterd_delete_all_bricks (glusterd_volinfo_t* volinfo) GF_ASSERT (volinfo); - list_for_each_entry_safe (brickinfo, tmp, &volinfo->bricks, brick_list) { + cds_list_for_each_entry_safe (brickinfo, tmp, &volinfo->bricks, + brick_list) { ret = glusterd_delete_brick (volinfo, brickinfo); } return ret; @@ -6244,7 +6253,7 @@ glusterd_get_local_brickpaths (glusterd_volinfo_t *volinfo, char **pathlist) goto out; } - list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { + cds_list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { if (uuid_compare (brickinfo->uuid, MY_UUID)) continue; @@ -6400,7 +6409,7 @@ glusterd_recreate_volfiles (glusterd_conf_t *conf) int op_ret = 0; GF_ASSERT (conf); - list_for_each_entry (volinfo, &conf->volumes, vol_list) { + cds_list_for_each_entry (volinfo, &conf->volumes, vol_list) { ret = generate_brick_volfiles (volinfo); if (ret) { gf_log ("glusterd", GF_LOG_ERROR, "Failed to " @@ -6800,7 +6809,7 @@ glusterd_friend_contains_vol_bricks (glusterd_volinfo_t *volinfo, GF_ASSERT (volinfo); - list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { + cds_list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { if (!uuid_compare (brickinfo->uuid, friend_uuid)) { count++; } @@ -6831,8 +6840,8 @@ glusterd_friend_remove_cleanup_vols (uuid_t uuid) priv = THIS->private; GF_ASSERT (priv); - list_for_each_entry_safe (volinfo, tmp_volinfo, - &priv->volumes, vol_list) { + cds_list_for_each_entry_safe (volinfo, tmp_volinfo, &priv->volumes, + vol_list) { if (glusterd_friend_contains_vol_bricks (volinfo, uuid) == 2) { gf_log (THIS->name, GF_LOG_INFO, "Deleting stale volume %s", volinfo->volname); @@ -6965,7 +6974,7 @@ glusterd_restart_rebalance (glusterd_conf_t *conf) int ret = 0; char op_errstr[256]; - list_for_each_entry (volinfo, &conf->volumes, vol_list) { + cds_list_for_each_entry (volinfo, &conf->volumes, vol_list) { if (!volinfo->rebal.defrag_cmd) continue; if (!gd_should_i_start_rebalance (volinfo)) @@ -8067,7 +8076,7 @@ glusterd_volume_rebalance_use_rsp_dict (dict_t *aggr, dict_t *rsp_dict) node_uuid_str = gf_strdup (node_uuid); /* Finding the index of the node-uuid in the peer-list */ - list_for_each_entry (peerinfo, &conf->peers, uuid_list) { + cds_list_for_each_entry (peerinfo, &conf->peers, uuid_list) { peer_uuid_str = gd_peer_uuid_str (peerinfo); if (strcmp (peer_uuid_str, node_uuid_str) == 0) break; @@ -9093,7 +9102,7 @@ gd_should_i_start_rebalance (glusterd_volinfo_t *volinfo) { switch (volinfo->rebal.op) { case GD_OP_REBALANCE: - list_for_each_entry (brick, &volinfo->bricks, brick_list) { + cds_list_for_each_entry (brick, &volinfo->bricks, brick_list) { if (uuid_compare (MY_UUID, brick->uuid) == 0) { retval = _gf_true; break; @@ -9393,13 +9402,14 @@ glusterd_rpc_clnt_unref (glusterd_conf_t *conf, rpc_clnt_t *rpc) } int32_t -glusterd_compare_volume_name(struct list_head *list1, struct list_head *list2) +glusterd_compare_volume_name(struct cds_list_head *list1, + struct cds_list_head *list2) { glusterd_volinfo_t *volinfo1 = NULL; glusterd_volinfo_t *volinfo2 = NULL; - volinfo1 = list_entry(list1, glusterd_volinfo_t, vol_list); - volinfo2 = list_entry(list2, glusterd_volinfo_t, vol_list); + volinfo1 = cds_list_entry (list1, glusterd_volinfo_t, vol_list); + volinfo2 = cds_list_entry (list2, glusterd_volinfo_t, vol_list); return strcmp(volinfo1->volname, volinfo2->volname); } @@ -9557,7 +9567,7 @@ glusterd_get_value_for_vme_entry (struct volopt_map_entry *vme, char **def_val) this = THIS; GF_ASSERT (this); - INIT_LIST_HEAD (&vol_opt_handle.list); + CDS_INIT_LIST_HEAD (&vol_opt_handle.list); if (_get_xlator_opt_key_from_vme (vme, &key)) { gf_log (this->name, GF_LOG_ERROR, "Failed to get %s key from " @@ -9715,7 +9725,7 @@ glusterd_get_volopt_content (dict_t * ctx, gf_boolean_t xml_out) } #endif - INIT_LIST_HEAD (&vol_opt_handle.list); + CDS_INIT_LIST_HEAD (&vol_opt_handle.list); for (vme = &glusterd_volopt_map[0]; vme->key; vme++) { @@ -9863,7 +9873,7 @@ glusterd_have_peers () conf = this->private; GF_ASSERT (conf); - return !list_empty (&conf->peers); + return !cds_list_empty (&conf->peers); } void @@ -9880,10 +9890,10 @@ glusterd_op_clear_xaction_peers () GF_ASSERT (this); GF_ASSERT (priv); - list_for_each_entry_safe (peerinfo, tmp, &priv->xaction_peers, - op_peers_list) { + cds_list_for_each_entry_safe (peerinfo, tmp, &priv->xaction_peers, + op_peers_list) { GF_ASSERT (peerinfo); - list_del_init (&peerinfo->op_peers_list); + cds_list_del_init (&peerinfo->op_peers_list); } } @@ -9895,3 +9905,23 @@ glusterd_is_volume_started (glusterd_volinfo_t *volinfo) return (volinfo->status == GLUSTERD_STATUS_STARTED); } +/* This function will insert the element to the list in a order. + Order will be based on the compare function provided as a input. + If element to be inserted in ascending order compare should return: + 0: if both the arguments are equal + >0: if first argument is greater than second argument + <0: if first argument is less than second argument */ +void +glusterd_list_add_order (struct cds_list_head *new, struct cds_list_head *head, + int (*compare)(struct cds_list_head *, + struct cds_list_head *)) +{ + struct cds_list_head *pos = NULL; + + cds_list_for_each_rcu (pos, head) { + if (compare (new, pos) >= 0) + break; + } + + cds_list_add_rcu (new, pos); +} diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.h b/xlators/mgmt/glusterd/src/glusterd-utils.h index 62e2da03ad3..4cfb51a9904 100644 --- a/xlators/mgmt/glusterd/src/glusterd-utils.h +++ b/xlators/mgmt/glusterd/src/glusterd-utils.h @@ -295,9 +295,9 @@ int glusterd_sm_tr_log_add_to_dict (dict_t *dict, glusterd_sm_tr_log_t *circular_log); int -glusterd_remove_pending_entry (struct list_head *list, void *elem); +glusterd_remove_pending_entry (struct cds_list_head *list, void *elem); int -glusterd_clear_pending_nodes (struct list_head *list); +glusterd_clear_pending_nodes (struct cds_list_head *list); int32_t glusterd_brick_connect (glusterd_volinfo_t *volinfo, glusterd_brickinfo_t *brickinfo, char *socketpath); @@ -476,7 +476,7 @@ glusterd_do_quorum_action (); int glusterd_get_quorum_cluster_counts (xlator_t *this, int *active_count, int *quorum_count, - struct list_head *peer_list, + struct cds_list_head *peer_list, gf_boolean_t _local__xaction_peers); int @@ -488,8 +488,7 @@ glusterd_is_volume_in_server_quorum (glusterd_volinfo_t *volinfo); gf_boolean_t glusterd_is_any_volume_in_server_quorum (xlator_t *this); gf_boolean_t -does_gd_meet_server_quorum (xlator_t *this, - struct list_head *peers_list, +does_gd_meet_server_quorum (xlator_t *this, struct cds_list_head *peers_list, gf_boolean_t _local__xaction_peers); int @@ -581,7 +580,7 @@ rpc_clnt_t * glusterd_rpc_clnt_unref (glusterd_conf_t *conf, rpc_clnt_t *rpc); int32_t -glusterd_compare_volume_name(struct list_head *, struct list_head *); +glusterd_compare_volume_name(struct cds_list_head *, struct cds_list_head *); char* glusterd_get_brick_mount_device (char *brick_path); @@ -689,4 +688,9 @@ glusterd_nfs_pmap_deregister (); gf_boolean_t glusterd_is_volume_started (glusterd_volinfo_t *volinfo); +void +glusterd_list_add_order (struct cds_list_head *new, struct cds_list_head *head, + int (*compare)(struct cds_list_head *, + struct cds_list_head *)); + #endif diff --git a/xlators/mgmt/glusterd/src/glusterd-volgen.c b/xlators/mgmt/glusterd/src/glusterd-volgen.c index d63416192d7..bdee0bf591b 100644 --- a/xlators/mgmt/glusterd/src/glusterd-volgen.c +++ b/xlators/mgmt/glusterd/src/glusterd-volgen.c @@ -80,7 +80,7 @@ xlator_instantiate_va (const char *type, const char *format, va_list arg) if (!xl->options) goto error; xl->name = volname; - INIT_LIST_HEAD (&xl->volume_options); + CDS_INIT_LIST_HEAD (&xl->volume_options); xl->ctx = THIS->ctx; @@ -2555,7 +2555,7 @@ volgen_graph_build_clients (volgen_graph_t *graph, glusterd_volinfo_t *volinfo, strcpy (transt, "tcp"); i = 0; - list_for_each_entry (brick, &volinfo->bricks, brick_list) { + cds_list_for_each_entry (brick, &volinfo->bricks, brick_list) { xl = volgen_graph_build_client (graph, volinfo, brick->hostname, brick->path, brick->brick_id, @@ -3721,7 +3721,7 @@ build_shd_graph (volgen_graph_t *graph, dict_t *mod_dict) goto out; } - list_for_each_entry (voliter, &priv->volumes, vol_list) { + cds_list_for_each_entry (voliter, &priv->volumes, vol_list) { ret = build_shd_volume_graph (this, graph, voliter, mod_dict, set_dict, graph_check, &valid_config); @@ -3782,7 +3782,7 @@ build_nfs_graph (volgen_graph_t *graph, dict_t *mod_dict) if (ret) goto out; - list_for_each_entry (voliter, &priv->volumes, vol_list) { + cds_list_for_each_entry (voliter, &priv->volumes, vol_list) { if (voliter->status != GLUSTERD_STATUS_STARTED) continue; @@ -3880,7 +3880,7 @@ build_nfs_graph (volgen_graph_t *graph, dict_t *mod_dict) goto out; } - list_for_each_entry (voliter, &priv->volumes, vol_list) { + cds_list_for_each_entry (voliter, &priv->volumes, vol_list) { if (mod_dict) { ret = volgen_graph_set_options_generic (graph, mod_dict, voliter, @@ -4016,7 +4016,7 @@ build_quotad_graph (volgen_graph_t *graph, dict_t *mod_dict) goto out; } - list_for_each_entry (voliter, &priv->volumes, vol_list) { + cds_list_for_each_entry (voliter, &priv->volumes, vol_list) { if (voliter->status != GLUSTERD_STATUS_STARTED) continue; @@ -4175,7 +4175,7 @@ generate_brick_volfiles (glusterd_volinfo_t *volinfo) } } - list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { + cds_list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { gf_log (this->name, GF_LOG_DEBUG, "Found a brick - %s:%s", brickinfo->hostname, brickinfo->path); @@ -4659,7 +4659,7 @@ glusterd_validate_brickreconf (glusterd_volinfo_t *volinfo, glusterd_brickinfo_t *brickinfo = NULL; int ret = -1; - list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { + cds_list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { gf_log ("", GF_LOG_DEBUG, "Validating %s", brickinfo->hostname); @@ -4864,7 +4864,7 @@ _gd_get_option_type (char *key) vmep = _gd_get_vmep (key); if (vmep) { - INIT_LIST_HEAD (&vol_opt_list.list); + CDS_INIT_LIST_HEAD (&vol_opt_list.list); ret = xlator_volopt_dynload (vmep->voltype, &dl_handle, &vol_opt_list); if (ret) diff --git a/xlators/mgmt/glusterd/src/glusterd-volume-ops.c b/xlators/mgmt/glusterd/src/glusterd-volume-ops.c index 99c658a7d48..6ca3e55a122 100644 --- a/xlators/mgmt/glusterd/src/glusterd-volume-ops.c +++ b/xlators/mgmt/glusterd/src/glusterd-volume-ops.c @@ -113,7 +113,7 @@ glusterd_check_brick_order(dict_t *dict, char *err_str) ai_list = malloc (sizeof (addrinfo_list_t)); ai_list->info = NULL; - INIT_LIST_HEAD (&ai_list->list); + CDS_INIT_LIST_HEAD (&ai_list->list); ret = dict_get_str (dict, "volname", &volname); if (ret) { @@ -189,19 +189,20 @@ glusterd_check_brick_order(dict_t *dict, char *err_str) goto out; } ai_list_tmp1->info = ai_info; - list_add_tail (&ai_list_tmp1->list, &ai_list->list); + cds_list_add_tail (&ai_list_tmp1->list, &ai_list->list); ai_list_tmp1 = NULL; } i = 0; - ai_list_tmp1 = list_entry (ai_list->list.next, addrinfo_list_t, list); + ai_list_tmp1 = cds_list_entry (ai_list->list.next, + addrinfo_list_t, list); /* Check for bad brick order */ while (i < brick_count) { ++i; ai_info = ai_list_tmp1->info; - ai_list_tmp1 = list_entry (ai_list_tmp1->list.next, - addrinfo_list_t, list); + ai_list_tmp1 = cds_list_entry (ai_list_tmp1->list.next, + addrinfo_list_t, list); if (0 == i % sub_count) { j = 0; continue; @@ -216,8 +217,8 @@ glusterd_check_brick_order(dict_t *dict, char *err_str) goto check_failed; if (GF_AI_COMPARE_MATCH == ret) goto found_bad_brick_order; - ai_list_tmp2 = list_entry (ai_list_tmp2->list.next, - addrinfo_list_t, list); + ai_list_tmp2 = cds_list_entry (ai_list_tmp2->list.next, + addrinfo_list_t, list); } ++j; } @@ -238,7 +239,7 @@ found_bad_brick_order: out: ai_list_tmp2 = NULL; GF_FREE (brick_list_ptr); - list_for_each_entry (ai_list_tmp1, &ai_list->list, list) { + cds_list_for_each_entry (ai_list_tmp1, &ai_list->list, list) { if (ai_list_tmp1->info) freeaddrinfo (ai_list_tmp1->info); free (ai_list_tmp2); @@ -1328,7 +1329,7 @@ glusterd_op_stage_start_volume (dict_t *dict, char **op_errstr, } } - list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { + cds_list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { brick_count++; ret = glusterd_resolve_brick (brickinfo); if (ret) { @@ -1585,7 +1586,8 @@ glusterd_op_stage_delete_volume (dict_t *dict, char **op_errstr) goto out; } - if (volinfo->snap_count > 0 || !list_empty(&volinfo->snap_volumes)) { + if (volinfo->snap_count > 0 || + !cds_list_empty (&volinfo->snap_volumes)) { snprintf (msg, sizeof (msg), "Cannot delete Volume %s ," "as it has %"PRIu64" snapshots. " "To delete the volume, " @@ -2122,7 +2124,7 @@ glusterd_op_create_volume (dict_t *dict, char **op_errstr) #endif - list_add_tail (&brickinfo->brick_list, &volinfo->bricks); + cds_list_add_tail (&brickinfo->brick_list, &volinfo->bricks); brick = strtok_r (NULL, " \n", &saveptr); i++; } @@ -2159,8 +2161,8 @@ glusterd_op_create_volume (dict_t *dict, char **op_errstr) } volinfo->rebal.defrag_status = 0; - list_add_order (&volinfo->vol_list, &priv->volumes, - glusterd_compare_volume_name); + glusterd_list_add_order (&volinfo->vol_list, &priv->volumes, + glusterd_compare_volume_name); vol_added = _gf_true; out: @@ -2184,7 +2186,7 @@ glusterd_start_volume (glusterd_volinfo_t *volinfo, int flags, GF_ASSERT (this); GF_ASSERT (volinfo); - list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { + cds_list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { ret = glusterd_brick_start (volinfo, brickinfo, wait); /* If 'force' try to start all bricks regardless of success or * failure @@ -2252,7 +2254,8 @@ glusterd_op_start_volume (dict_t *dict, char **op_errstr) * introduced in gluster-3.6.0 */ if (conf->op_version >= GD_OP_VERSION_3_6_0) { - list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { + cds_list_for_each_entry (brickinfo, &volinfo->bricks, + brick_list) { brick_count++; /* Don't check bricks that are not owned by you */ @@ -2308,7 +2311,7 @@ glusterd_stop_volume (glusterd_volinfo_t *volinfo) GF_VALIDATE_OR_GOTO (this->name, volinfo, out); - list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { + cds_list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { ret = glusterd_brick_stop (volinfo, brickinfo, _gf_false); if (ret) { gf_log (this->name, GF_LOG_ERROR, "Failed to stop " @@ -2471,8 +2474,8 @@ glusterd_op_statedump_volume (dict_t *dict, char **op_errstr) if (ret) goto out; } else { - list_for_each_entry (brickinfo, &volinfo->bricks, - brick_list) { + cds_list_for_each_entry (brickinfo, &volinfo->bricks, + brick_list) { ret = glusterd_brick_statedump (volinfo, brickinfo, options, option_cnt, op_errstr); @@ -2663,7 +2666,7 @@ glusterd_clearlocks_get_local_client_ports (glusterd_volinfo_t *volinfo, priv = THIS->private; index = -1; - list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { + cds_list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { index++; if (uuid_compare (brickinfo->uuid, MY_UUID)) continue; diff --git a/xlators/mgmt/glusterd/src/glusterd.c b/xlators/mgmt/glusterd/src/glusterd.c index c977dc1c1c4..979ae7ab328 100644 --- a/xlators/mgmt/glusterd/src/glusterd.c +++ b/xlators/mgmt/glusterd/src/glusterd.c @@ -969,7 +969,7 @@ _install_mount_spec (dict_t *opts, char *key, data_t *value, void *data) } else if (parse_mount_pattern_desc (mspec, pdesc) != 0) goto err; - list_add_tail (&mspec->speclist, &priv->mount_specs); + cds_list_add_tail (&mspec->speclist, &priv->mount_specs); return 0; err: @@ -1507,11 +1507,11 @@ init (xlator_t *this) gf_gld_mt_glusterd_conf_t); GF_VALIDATE_OR_GOTO(this->name, conf, out); - INIT_LIST_HEAD (&conf->peers); - INIT_LIST_HEAD (&conf->xaction_peers); - INIT_LIST_HEAD (&conf->volumes); - INIT_LIST_HEAD (&conf->snapshots); - INIT_LIST_HEAD (&conf->missed_snaps_list); + CDS_INIT_LIST_HEAD (&conf->peers); + CDS_INIT_LIST_HEAD (&conf->xaction_peers); + CDS_INIT_LIST_HEAD (&conf->volumes); + CDS_INIT_LIST_HEAD (&conf->snapshots); + CDS_INIT_LIST_HEAD (&conf->missed_snaps_list); pthread_mutex_init (&conf->mutex, NULL); conf->rpc = rpc; @@ -1567,7 +1567,7 @@ init (xlator_t *this) } } - INIT_LIST_HEAD (&conf->mount_specs); + CDS_INIT_LIST_HEAD (&conf->mount_specs); ret = dict_foreach (this->options, _install_mount_spec, NULL); if (ret) @@ -1613,7 +1613,7 @@ init (xlator_t *this) * spawn process/bricks that may need (re)starting since last * time (this) glusterd was up.*/ - if (list_empty (&conf->peers)) { + if (cds_list_empty (&conf->peers)) { glusterd_launch_synctask (glusterd_spawn_daemons, NULL); } ret = glusterd_options_init (this); diff --git a/xlators/mgmt/glusterd/src/glusterd.h b/xlators/mgmt/glusterd/src/glusterd.h index 941a587d175..5e80bb636aa 100644 --- a/xlators/mgmt/glusterd/src/glusterd.h +++ b/xlators/mgmt/glusterd/src/glusterd.h @@ -127,8 +127,8 @@ struct glusterd_volgen { typedef struct { struct _volfile_ctx *volfile; pthread_mutex_t mutex; - struct list_head peers; - struct list_head xaction_peers; + struct cds_list_head peers; + struct cds_list_head xaction_peers; gf_boolean_t verify_volfile_checksum; gf_boolean_t trace; uuid_t uuid; @@ -138,8 +138,8 @@ typedef struct { glusterd_svc_t nfs_svc; glusterd_svc_t quotad_svc; struct pmap_registry *pmap; - struct list_head volumes; - struct list_head snapshots; /*List of snap volumes */ + struct cds_list_head volumes; + struct cds_list_head snapshots; /*List of snap volumes */ pthread_mutex_t xprt_lock; struct list_head xprt_list; gf_store_handle_t *handle; @@ -155,7 +155,7 @@ typedef struct { * cluster with no * transaction ids */ - struct list_head mount_specs; + struct cds_list_head mount_specs; gf_boolean_t valgrind; pthread_t brick_thread; void *hooks_priv; @@ -171,7 +171,7 @@ typedef struct { uint32_t base_port; char *snap_bricks_directory; gf_store_handle_t *missed_snaps_list_shandle; - struct list_head missed_snaps_list; + struct cds_list_head missed_snaps_list; int ping_timeout; } glusterd_conf_t; @@ -189,7 +189,7 @@ struct glusterd_brickinfo { char brick_id[1024];/*Client xlator name, AFR changelog name*/ char fstype [NAME_MAX]; /* Brick file-system type */ char mnt_opts [1024]; /* Brick mount options */ - struct list_head brick_list; + struct cds_list_head brick_list; uuid_t uuid; int port; int rdma_port; @@ -313,17 +313,17 @@ struct glusterd_volinfo_ { int brick_count; uint64_t snap_count; uint64_t snap_max_hard_limit; - struct list_head vol_list; + struct cds_list_head vol_list; /* In case of a snap volume i.e (is_snap_volume == TRUE) this is linked to glusterd_snap_t->volumes. In case of a non-snap volume, this is linked to glusterd_conf_t->volumes */ - struct list_head snapvol_list; + struct cds_list_head snapvol_list; /* This is a current pointer for glusterd_volinfo_t->snap_volumes */ - struct list_head bricks; - struct list_head snap_volumes; + struct cds_list_head bricks; + struct cds_list_head snap_volumes; /* TODO : Need to remove this, as this * is already part of snapshot object. */ @@ -390,8 +390,8 @@ typedef enum gd_snap_status_ { struct glusterd_snap_ { gf_lock_t lock; - struct list_head volumes; - struct list_head snap_list; + struct cds_list_head volumes; + struct cds_list_head snap_list; char snapname[GLUSTERD_MAX_SNAP_NAME]; uuid_t snap_id; char *description; @@ -407,14 +407,14 @@ typedef struct glusterd_snap_op_ { char *brick_path; int32_t op; int32_t status; - struct list_head snap_ops_list; + struct cds_list_head snap_ops_list; } glusterd_snap_op_t; typedef struct glusterd_missed_snap_ { char *node_uuid; char *snap_uuid; - struct list_head missed_snaps; - struct list_head snap_ops; + struct cds_list_head missed_snaps; + struct cds_list_head snap_ops; } glusterd_missed_snap_info; typedef enum gd_node_type_ { @@ -434,7 +434,7 @@ typedef enum missed_snap_stat { } missed_snap_stat; typedef struct glusterd_pending_node_ { - struct list_head list; + struct cds_list_head list; void *node; gd_node_type type; int32_t index; @@ -459,7 +459,7 @@ enum glusterd_vol_comp_status_ { }; typedef struct addrinfo_list { - struct list_head list; + struct cds_list_head list; struct addrinfo *info; } addrinfo_list_t; @@ -629,7 +629,7 @@ typedef ssize_t (*gd_serialize_t) (struct iovec outmsg, void *args); snprintf (key, sizeof (key), \ "glusterd.xaction_peer"); \ \ - list_for_each_entry (_peerinfo, head, member) { \ + cds_list_for_each_entry (_peerinfo, head, member) { \ glusterd_dump_peer (_peerinfo, key, index, xpeers); \ if (!xpeers) \ glusterd_dump_peer_rpcstat (_peerinfo, key, \ |