Re: [PATCH 05/14] Move testquorum to icmap

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Reviewed-by: Steven Dake <sdake@xxxxxxxxxx>

On 12/14/2011 08:41 AM, Jan Friesse wrote:
> Signed-off-by: Jan Friesse <jfriesse@xxxxxxxxxx>
> ---
>  services/testquorum.c |   44 ++++++++++++++++++--------------------------
>  1 files changed, 18 insertions(+), 26 deletions(-)
> 
> diff --git a/services/testquorum.c b/services/testquorum.c
> index 20c4c0b..806040a 100644
> --- a/services/testquorum.c
> +++ b/services/testquorum.c
> @@ -58,6 +58,7 @@
>  #include <qb/qbipc_common.h>
>  #include <corosync/corodefs.h>
>  #include <corosync/engine/logsys.h>
> +#include <corosync/engine/icmap.h>
>  
>  #include <corosync/mar_gen.h>
>  #include <corosync/lcr/lcr_comp.h>
> @@ -111,22 +112,20 @@ __attribute__ ((constructor)) static void corosync_lcr_component_register (void)
>  
>  static quorum_set_quorate_fn_t set_quorum;
>  
> -static void key_change_notify(object_change_type_t change_type,
> -			      hdb_handle_t parent_object_handle,
> -			      hdb_handle_t object_handle,
> -			      const void *object_name_pt, size_t object_name_len,
> -			      const void *key_name_pt, size_t key_len,
> -			      const void *key_value_pt, size_t key_value_len,
> -			      void *priv_data_pt)
> +static void key_change_notify(
> +	int32_t event,
> +	const char *key_name,
> +	struct icmap_notify_value new_val,
> +	struct icmap_notify_value old_val,
> +	void *user_data)
>  {
> -	unsigned int members[1];
>  	struct memb_ring_id ring_id;
> +	unsigned int members[1];
> +	uint8_t u8;
>  
>  	memset(&ring_id, 0, sizeof(ring_id));
> -
> -	/* If the 'quorum.quorate' key changes, then that changes quorum */
> -	if (strncmp(key_name_pt, "quorate", key_len) == 0) {
> -		set_quorum(members, 0, atoi(key_value_pt), &ring_id);
> +	if (icmap_get_uint8(key_name, &u8) == CS_OK) {
> +		set_quorum(members, 0, u8, &ring_id);
>  	}
>  }
>  
> @@ -139,25 +138,18 @@ static void test_init(struct corosync_api_v1 *api,
>  		      quorum_set_quorate_fn_t report)
>  {
>  
> -	hdb_handle_t find_handle;
> -	hdb_handle_t quorum_handle = 0;
> +	icmap_track_t icmap_track;
>  
>  	set_quorum = report;
>  
>  	/*
> -	 * Register for objdb changes on quorum { }
> +	 * Register for icmap changes on quorum.quorate
>  	 */
> -	api->object_find_create(OBJECT_PARENT_HANDLE, "quorum", strlen("quorum"), &find_handle);
> -        api->object_find_next(find_handle, &quorum_handle);
> -	api->object_find_destroy(find_handle);
> -
> -	api->object_track_start(quorum_handle,
> -				1,
> -				key_change_notify,
> -				NULL, // object_create_notify
> -				NULL, // object_destroy_notify
> -				NULL, // object_reload_notify
> -				NULL); // priv_data
> +	icmap_track_add("quorum.quorate",
> +		ICMAP_TRACK_ADD | ICMAP_TRACK_DELETE | ICMAP_TRACK_MODIFY,
> +		key_change_notify,
> +		NULL,
> +		&icmap_track);
>  
>  	/* Register for quorum changes too! */
>  	api->quorum_register_callback(quorum_callback, NULL);

_______________________________________________
discuss mailing list
discuss@xxxxxxxxxxxx
http://lists.corosync.org/mailman/listinfo/discuss


[Index of Archives]     [Linux Clusters]     [Corosync Project]     [Linux USB Devel]     [Linux Audio Users]     [Photo]     [Yosemite News]    [Yosemite Photos]    [Linux Kernel]     [Linux SCSI]     [X.Org]

  Powered by Linux