summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKrishnan Parthasarathi <kparthas@redhat.com>2013-12-04 15:55:01 +0530
committerAnand Avati <avati@redhat.com>2013-12-05 16:44:06 -0800
commitb58810f5df92873ddd658efaae1caddddce96ae2 (patch)
treece15ebe464001ac1532a60427648792541b422f5
parent9a9f73e411e96ae6fef24bb0475e7462c0a19d38 (diff)
glusterd: create rpc obj for rebalance only if absentv3.5.0qa3
Change-Id: Iff305023577ff92a8f43f24dafcf201f86805769 BUG: 1038051 Signed-off-by: Krishnan Parthasarathi <kparthas@redhat.com> Reviewed-on: http://review.gluster.org/6424 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Anand Avati <avati@redhat.com>
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-rebalance.c48
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-utils.c2
-rw-r--r--xlators/mgmt/glusterd/src/glusterd.h3
3 files changed, 15 insertions, 38 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-rebalance.c b/xlators/mgmt/glusterd/src/glusterd-rebalance.c
index 1b6ee293ae3..7911c3d210d 100644
--- a/xlators/mgmt/glusterd/src/glusterd-rebalance.c
+++ b/xlators/mgmt/glusterd/src/glusterd-rebalance.c
@@ -195,7 +195,6 @@ glusterd_handle_defrag_start (glusterd_volinfo_t *volinfo, char *op_errstr,
char sockfile[PATH_MAX] = {0,};
char pidfile[PATH_MAX] = {0,};
char logfile[PATH_MAX] = {0,};
- dict_t *options = NULL;
char valgrind_logfile[PATH_MAX] = {0,};
priv = THIS->private;
@@ -286,26 +285,10 @@ glusterd_handle_defrag_start (glusterd_volinfo_t *volinfo, char *op_errstr,
sleep (5);
- /* Setting frame-timeout to 10mins (600seconds).
- * Unix domain sockets ensures that the connection is reliable. The
- * default timeout of 30mins used for unreliable network connections is
- * too long for unix domain socket connections.
- */
- ret = rpc_transport_unix_options_build (&options, sockfile, 600);
- if (ret) {
- gf_log (THIS->name, GF_LOG_ERROR, "Unix options build failed");
- goto out;
- }
-
- synclock_unlock (&priv->big_lock);
- ret = glusterd_rpc_create (&defrag->rpc, options,
- glusterd_defrag_notify, volinfo);
- synclock_lock (&priv->big_lock);
- if (ret) {
- gf_log (THIS->name, GF_LOG_ERROR, "RPC create failed");
- goto out;
- }
+ ret = glusterd_rebalance_rpc_create (volinfo);
+ //FIXME: this cbk is passed as NULL in all occurrences. May be
+ //we never needed it.
if (cbk)
defrag->cbk_fn = cbk;
@@ -316,28 +299,23 @@ out:
int
-glusterd_rebalance_rpc_create (glusterd_volinfo_t *volinfo,
- glusterd_conf_t *priv, int cmd)
+glusterd_rebalance_rpc_create (glusterd_volinfo_t *volinfo)
{
dict_t *options = NULL;
char sockfile[PATH_MAX] = {0,};
int ret = -1;
- glusterd_defrag_info_t *defrag = NULL;
+ glusterd_defrag_info_t *defrag = volinfo->rebal.defrag;
+ glusterd_conf_t *priv = THIS->private;
- if (!volinfo->rebal.defrag)
- volinfo->rebal.defrag =
- GF_CALLOC (1, sizeof (*volinfo->rebal.defrag),
- gf_gld_mt_defrag_info);
-
- if (!volinfo->rebal.defrag)
+ //rebalance process is not started
+ if (!defrag)
goto out;
- defrag = volinfo->rebal.defrag;
-
- defrag->cmd = cmd;
-
- LOCK_INIT (&defrag->lock);
-
+ //rpc obj for rebalance process already in place.
+ if (defrag->rpc) {
+ ret = 0;
+ goto out;
+ }
GLUSTERD_GET_DEFRAG_SOCK_FILE (sockfile, volinfo, priv);
/* Setting frame-timeout to 10mins (600seconds).
diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c
index aba37c7fd9b..8cbff80f7de 100644
--- a/xlators/mgmt/glusterd/src/glusterd-utils.c
+++ b/xlators/mgmt/glusterd/src/glusterd-utils.c
@@ -6708,7 +6708,7 @@ glusterd_volume_defrag_restart (glusterd_volinfo_t *volinfo, char *op_errstr,
glusterd_handle_defrag_start (volinfo, op_errstr, len, cmd,
cbk, volinfo->rebal.op);
} else {
- glusterd_rebalance_rpc_create (volinfo, priv, cmd);
+ glusterd_rebalance_rpc_create (volinfo);
}
return ret;
diff --git a/xlators/mgmt/glusterd/src/glusterd.h b/xlators/mgmt/glusterd/src/glusterd.h
index d1c03d37b3b..e1e9e591f39 100644
--- a/xlators/mgmt/glusterd/src/glusterd.h
+++ b/xlators/mgmt/glusterd/src/glusterd.h
@@ -725,8 +725,7 @@ int glusterd_handle_defrag_start (glusterd_volinfo_t *volinfo, char *op_errstr,
size_t len, int cmd, defrag_cbk_fn_t cbk,
glusterd_op_t op);
int
-glusterd_rebalance_rpc_create (glusterd_volinfo_t *volinfo,
- glusterd_conf_t *priv, int cmd);
+glusterd_rebalance_rpc_create (glusterd_volinfo_t *volinfo);
int glusterd_handle_cli_heal_volume (rpcsvc_request_t *req);
354'>354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822
/*
  Copyright (c) 2007-2011 Gluster, Inc. <http://www.gluster.com>
  This file is part of GlusterFS.

  GlusterFS is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published
  by the Free Software Foundation; either version 3 of the License,
  or (at your option) any later version.

  GlusterFS is distributed in the hope that it will be useful, but
  WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  General Public License for more details.

  You should have received a copy of the GNU General Public License
  along with this program.  If not, see
  <http://www.gnu.org/licenses/>.
*/

#include "xdr-common.h"
#include "compat.h"

#if defined(__GNUC__)
#if __GNUC__ >= 4
#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
#endif
#endif

/*
 * Please do not edit this file.
 * It was generated using rpcgen.
 */

#ifndef _CLI1_XDR_H_RPCGEN
#define _CLI1_XDR_H_RPCGEN

#include <rpc/rpc.h>


#ifdef __cplusplus
extern "C" {
#endif


enum gf_cli_defrag_type {
	GF_DEFRAG_CMD_START = 1,
	GF_DEFRAG_CMD_STOP = 1 + 1,
	GF_DEFRAG_CMD_STATUS = 1 + 2,
	GF_DEFRAG_CMD_START_LAYOUT_FIX = 1 + 3,
	GF_DEFRAG_CMD_START_MIGRATE_DATA = 1 + 4,
	GF_DEFRAG_CMD_START_MIGRATE_DATA_FORCE = 1 + 5,
	GF_DEFRAG_CMD_START_FORCE = 1 + 6,
};
typedef enum gf_cli_defrag_type gf_cli_defrag_type;

enum gf_defrag_status_t {
	GF_DEFRAG_STATUS_NOT_STARTED = 0,
	GF_DEFRAG_STATUS_LAYOUT_FIX_STARTED = 1,
	GF_DEFRAG_STATUS_MIGRATE_DATA_STARTED = 2,
	GF_DEFRAG_STATUS_STOPPED = 3,
	GF_DEFRAG_STATUS_COMPLETE = 4,
	GF_DEFRAG_STATUS_FAILED = 5,
	GF_DEFRAG_STATUS_LAYOUT_FIX_COMPLETE = 6,
	GF_DEFRAG_STATUS_MIGRATE_DATA_COMPLETE = 7,
	GF_DEFRAG_STATUS_PAUSED = 8,
};
typedef enum gf_defrag_status_t gf_defrag_status_t;

enum gf1_cluster_type {
	GF_CLUSTER_TYPE_NONE = 0,
	GF_CLUSTER_TYPE_STRIPE = 0 + 1,
	GF_CLUSTER_TYPE_REPLICATE = 0 + 2,
	GF_CLUSTER_TYPE_STRIPE_REPLICATE = 0 + 3,
};
typedef enum gf1_cluster_type gf1_cluster_type;

enum gf1_cli_replace_op {
	GF_REPLACE_OP_NONE = 0,
	GF_REPLACE_OP_START = 0 + 1,
	GF_REPLACE_OP_COMMIT = 0 + 2,
	GF_REPLACE_OP_PAUSE = 0 + 3,
	GF_REPLACE_OP_ABORT = 0 + 4,
	GF_REPLACE_OP_STATUS = 0 + 5,
	GF_REPLACE_OP_COMMIT_FORCE = 0 + 6,
};
typedef enum gf1_cli_replace_op gf1_cli_replace_op;

enum gf1_op_commands {
	GF_OP_CMD_NONE = 0,
	GF_OP_CMD_START = 0 + 1,
	GF_OP_CMD_COMMIT = 0 + 2,
	GF_OP_CMD_PAUSE = 0 + 3,
	GF_OP_CMD_ABORT = 0 + 4,
	GF_OP_CMD_STATUS = 0 + 5,
	GF_OP_CMD_COMMIT_FORCE = 0 + 6,
};
typedef enum gf1_op_commands gf1_op_commands;

enum gf_quota_type {
	GF_QUOTA_OPTION_TYPE_NONE = 0,
	GF_QUOTA_OPTION_TYPE_ENABLE = 0 + 1,
	GF_QUOTA_OPTION_TYPE_DISABLE = 0 + 2,
	GF_QUOTA_OPTION_TYPE_LIMIT_USAGE = 0 + 3,
	GF_QUOTA_OPTION_TYPE_REMOVE = 0 + 4,
	GF_QUOTA_OPTION_TYPE_LIST = 0 + 5,
	GF_QUOTA_OPTION_TYPE_VERSION = 0 + 6,
};
typedef enum gf_quota_type gf_quota_type;

enum gf1_cli_friends_list {
	GF_CLI_LIST_ALL = 1,
};
typedef enum gf1_cli_friends_list gf1_cli_friends_list;

enum gf1_cli_get_volume {
	GF_CLI_GET_VOLUME_ALL = 1,
	GF_CLI_GET_VOLUME = 1 + 1,
	GF_CLI_GET_NEXT_VOLUME = 1 + 2,
};
typedef enum gf1_cli_get_volume gf1_cli_get_volume;

enum gf1_cli_sync_volume {
	GF_CLI_SYNC_ALL = 1,
};
typedef enum gf1_cli_sync_volume gf1_cli_sync_volume;

enum gf1_cli_op_flags {
	GF_CLI_FLAG_OP_FORCE = 1,
};
typedef enum gf1_cli_op_flags gf1_cli_op_flags;

enum gf1_cli_gsync_set {
	GF_GSYNC_OPTION_TYPE_NONE = 0,
	GF_GSYNC_OPTION_TYPE_START = 1,
	GF_GSYNC_OPTION_TYPE_STOP = 2,
	GF_GSYNC_OPTION_TYPE_CONFIG = 3,
	GF_GSYNC_OPTION_TYPE_STATUS = 4,
        GF_GSYNC_OPTION_TYPE_ROTATE = 5,
};
typedef enum gf1_cli_gsync_set gf1_cli_gsync_set;

enum gf1_cli_stats_op {
	GF_CLI_STATS_NONE = 0,
	GF_CLI_STATS_START = 1,
	GF_CLI_STATS_STOP = 2,
	GF_CLI_STATS_INFO = 3,
	GF_CLI_STATS_TOP = 4,
};
typedef enum gf1_cli_stats_op gf1_cli_stats_op;

enum gf1_cli_top_op {
	GF_CLI_TOP_NONE = 0,
	GF_CLI_TOP_OPEN = 0 + 1,
	GF_CLI_TOP_READ = 0 + 2,
	GF_CLI_TOP_WRITE = 0 + 3,
	GF_CLI_TOP_OPENDIR = 0 + 4,
	GF_CLI_TOP_READDIR = 0 + 5,
	GF_CLI_TOP_READ_PERF = 0 + 6,
	GF_CLI_TOP_WRITE_PERF = 0 + 7,
};
typedef enum gf1_cli_top_op gf1_cli_top_op;

struct gf1_cli_probe_req {
	char *hostname;
	int port;
};
typedef struct gf1_cli_probe_req gf1_cli_probe_req;

struct gf1_cli_probe_rsp {
	int op_ret;
	int op_errno;
	int port;
	char *hostname;
};
typedef struct gf1_cli_probe_rsp gf1_cli_probe_rsp;

struct gf1_cli_deprobe_req {
	char *hostname;
	int port;
	int flags;
};
typedef struct gf1_cli_deprobe_req gf1_cli_deprobe_req;

struct gf1_cli_deprobe_rsp {
	int op_ret;
	int op_errno;
	char *hostname;
};
typedef struct gf1_cli_deprobe_rsp gf1_cli_deprobe_rsp;

struct gf1_cli_peer_list_req {
	int flags;
	struct {
		u_int dict_len;
		char *dict_val;
	} dict;
};
typedef struct gf1_cli_peer_list_req gf1_cli_peer_list_req;

struct gf1_cli_peer_list_rsp {
	int op_ret;
	int op_errno;
	struct {
		u_int friends_len;
		char *friends_val;
	} friends;
};
typedef struct gf1_cli_peer_list_rsp gf1_cli_peer_list_rsp;

struct gf1_cli_get_vol_req {
	int flags;
	struct {
		u_int dict_len;
		char *dict_val;
	} dict;
};
typedef struct gf1_cli_get_vol_req gf1_cli_get_vol_req;

struct gf1_cli_get_vol_rsp {
	int op_ret;
	int op_errno;
	struct {
		u_int volumes_len;
		char *volumes_val;
	} volumes;
};
typedef struct gf1_cli_get_vol_rsp gf1_cli_get_vol_rsp;

struct gf1_cli_create_vol_req {
	char *volname;
	gf1_cluster_type type;
	int count;
	struct {
		u_int bricks_len;
		char *bricks_val;
	} bricks;
};
typedef struct gf1_cli_create_vol_req gf1_cli_create_vol_req;

struct gf1_cli_create_vol_rsp {
	int op_ret;
	int op_errno;
	char *volname;
	char *op_errstr;
};
typedef struct gf1_cli_create_vol_rsp gf1_cli_create_vol_rsp;

struct gf1_cli_delete_vol_req {
	char *volname;
};
typedef struct gf1_cli_delete_vol_req gf1_cli_delete_vol_req;

struct gf1_cli_delete_vol_rsp {
	int op_ret;
	int op_errno;
	char *volname;
	char *op_errstr;
};
typedef struct gf1_cli_delete_vol_rsp gf1_cli_delete_vol_rsp;

struct gf1_cli_start_vol_req {
	char *volname;
	int flags;
};
typedef struct gf1_cli_start_vol_req gf1_cli_start_vol_req;

struct gf1_cli_start_vol_rsp {
	int op_ret;
	int op_errno;
	char *volname;
	char *op_errstr;
};
typedef struct gf1_cli_start_vol_rsp gf1_cli_start_vol_rsp;

struct gf1_cli_stop_vol_req {
	char *volname;
	int flags;
};
typedef struct gf1_cli_stop_vol_req gf1_cli_stop_vol_req;

struct gf1_cli_stop_vol_rsp {
	int op_ret;
	int op_errno;
	char *volname;
	char *op_errstr;
};
typedef struct gf1_cli_stop_vol_rsp gf1_cli_stop_vol_rsp;

struct gf1_cli_rename_vol_req {
	char *old_volname;
	char *new_volname;
};
typedef struct gf1_cli_rename_vol_req gf1_cli_rename_vol_req;

struct gf1_cli_rename_vol_rsp {
	int op_ret;
	int op_errno;
	char *volname;
};
typedef struct gf1_cli_rename_vol_rsp gf1_cli_rename_vol_rsp;

struct gf1_cli_defrag_vol_req {
	int cmd;
	char *volname;
};
typedef struct gf1_cli_defrag_vol_req gf1_cli_defrag_vol_req;

struct gf1_cli_defrag_vol_rsp {
	int op_ret;
	int op_errno;
	char *volname;
	u_quad_t files;
	u_quad_t size;
	u_quad_t lookedup_files;
};
typedef struct gf1_cli_defrag_vol_rsp gf1_cli_defrag_vol_rsp;

struct gf2_cli_defrag_vol_rsp {
	int op_ret;
	int op_errno;
	char *op_errstr;
	char *volname;
	u_quad_t files;
	u_quad_t size;
	u_quad_t lookedup_files;
};
typedef struct gf2_cli_defrag_vol_rsp gf2_cli_defrag_vol_rsp;

struct gf1_cli_add_brick_req {
	char *volname;
	int count;
	struct {
		u_int bricks_len;
		char *bricks_val;
	} bricks;
};
typedef struct gf1_cli_add_brick_req gf1_cli_add_brick_req;

struct gf1_cli_add_brick_rsp {
	int op_ret;
	int op_errno;
	char *volname;
	char *op_errstr;
};
typedef struct gf1_cli_add_brick_rsp gf1_cli_add_brick_rsp;

struct gf1_cli_remove_brick_req {
	char *volname;
	int count;
	struct {
		u_int bricks_len;
		char *bricks_val;
	} bricks;
};
typedef struct gf1_cli_remove_brick_req gf1_cli_remove_brick_req;

struct gf1_cli_remove_brick_rsp {
	int op_ret;
	int op_errno;
	char *volname;
	char *op_errstr;
};
typedef struct gf1_cli_remove_brick_rsp gf1_cli_remove_brick_rsp;

struct gf1_cli_replace_brick_req {
	char *volname;
	gf1_cli_replace_op op;
	struct {
		u_int bricks_len;
		char *bricks_val;
	} bricks;
};
typedef struct gf1_cli_replace_brick_req gf1_cli_replace_brick_req;

struct gf1_cli_replace_brick_rsp {
	int op_ret;
	int op_errno;
	char *op_errstr;
	char *volname;
	char *status;
};
typedef struct gf1_cli_replace_brick_rsp gf1_cli_replace_brick_rsp;

struct gf1_cli_reset_vol_req {
	char *volname;
	struct {
		u_int dict_len;
		char *dict_val;
	} dict;
};
typedef struct gf1_cli_reset_vol_req gf1_cli_reset_vol_req;

struct gf1_cli_reset_vol_rsp {
	int op_ret;
	int op_errno;
	char *volname;
	char *op_errstr;
};
typedef struct gf1_cli_reset_vol_rsp gf1_cli_reset_vol_rsp;

struct gf1_cli_set_vol_req {
	char *volname;
	struct {
		u_int dict_len;
		char *dict_val;
	} dict;
};
typedef struct gf1_cli_set_vol_req gf1_cli_set_vol_req;

struct gf1_cli_set_vol_rsp {
	int op_ret;
	int op_errno;
	char *volname;
	char *op_errstr;
	struct {
		u_int dict_len;
		char *dict_val;
	} dict;
};
typedef struct gf1_cli_set_vol_rsp gf1_cli_set_vol_rsp;

struct gf1_cli_log_filename_req {
	char *volname;
	char *brick;
	char *path;
};
typedef struct gf1_cli_log_filename_req gf1_cli_log_filename_req;

struct gf1_cli_log_filename_rsp {
	int op_ret;
	int op_errno;
	char *errstr;
};
typedef struct gf1_cli_log_filename_rsp gf1_cli_log_filename_rsp;

struct gf1_cli_log_locate_req {
	char *volname;
	char *brick;
};
typedef struct gf1_cli_log_locate_req gf1_cli_log_locate_req;

struct gf1_cli_sync_volume_req {
	int flags;
	char *volname;
	char *hostname;
};
typedef struct gf1_cli_sync_volume_req gf1_cli_sync_volume_req;

struct gf1_cli_log_locate_rsp {
	int op_ret;
	int op_errno;
	char *path;
};
typedef struct gf1_cli_log_locate_rsp gf1_cli_log_locate_rsp;

struct gf1_cli_log_rotate_req {
	char *volname;
	char *brick;
};
typedef struct gf1_cli_log_rotate_req gf1_cli_log_rotate_req;

struct gf1_cli_log_rotate_rsp {
	int op_ret;
	int op_errno;
	char *errstr;
};
typedef struct gf1_cli_log_rotate_rsp gf1_cli_log_rotate_rsp;

struct gf1_cli_sync_volume_rsp {
	int op_ret;
	int op_errno;
	char *op_errstr;
};
typedef struct gf1_cli_sync_volume_rsp gf1_cli_sync_volume_rsp;

struct gf1_cli_fsm_log_req {
	char *name;
};
typedef struct gf1_cli_fsm_log_req gf1_cli_fsm_log_req;

struct gf1_cli_fsm_log_rsp {
	int op_ret;
	int op_errno;
	char *op_errstr;
	struct {
		u_int fsm_log_len;
		char *fsm_log_val;
	} fsm_log;
};
typedef struct gf1_cli_fsm_log_rsp gf1_cli_fsm_log_rsp;

struct gf1_cli_gsync_set_req {
	struct {
		u_int dict_len;
		char *dict_val;
	} dict;
};
typedef struct gf1_cli_gsync_set_req gf1_cli_gsync_set_req;

struct gf1_cli_gsync_set_rsp {
	int op_ret;
	int op_errno;
	char *op_errstr;
	int type;
	struct {
		u_int dict_len;
		char *dict_val;
	} dict;
};
typedef struct gf1_cli_gsync_set_rsp gf1_cli_gsync_set_rsp;

struct gf1_cli_stats_volume_req {
	char *volname;
	gf1_cli_stats_op op;
	struct {
		u_int dict_req_len;
		char *dict_req_val;
	} dict_req;
};
typedef struct gf1_cli_stats_volume_req gf1_cli_stats_volume_req;

struct gf1_cli_stats_volume_rsp {
	int op_ret;
	int op_errno;
	char *op_errstr;
	struct {
		u_int stats_info_len;
		char *stats_info_val;
	} stats_info;
};
typedef struct gf1_cli_stats_volume_rsp gf1_cli_stats_volume_rsp;

struct gf1_cli_quota_req {
	char *volname;
	struct {
		u_int dict_len;
		char *dict_val;
	} dict;
};
typedef struct gf1_cli_quota_req gf1_cli_quota_req;

struct gf1_cli_quota_rsp {
	int op_ret;
	int op_errno;
	char *volname;
	char *op_errstr;
	char *limit_list;
	gf_quota_type type;
};
typedef struct gf1_cli_quota_rsp gf1_cli_quota_rsp;

struct gf1_cli_getwd_req {
	int unused;
};
typedef struct gf1_cli_getwd_req gf1_cli_getwd_req;

struct gf1_cli_getwd_rsp {
	int op_ret;
	int op_errno;
	char *wd;
};
typedef struct gf1_cli_getwd_rsp gf1_cli_getwd_rsp;

struct gf1_cli_log_level_req {
	char *volname;
	char *xlator;
	char *loglevel;
};
typedef struct gf1_cli_log_level_req gf1_cli_log_level_req;

struct gf1_cli_log_level_rsp {
	int op_ret;
	int op_errno;
	char *op_errstr;
};
typedef struct gf1_cli_log_level_rsp gf1_cli_log_level_rsp;

struct gf1_cli_status_volume_req {
	char *volname;
	struct {
		u_int dict_len;
		char *dict_val;
	} dict;
};
typedef struct gf1_cli_status_volume_req gf1_cli_status_volume_req;

struct gf1_cli_status_volume_rsp {
	int op_ret;
	int op_errno;
	char *op_errstr;
	struct {
		u_int dict_len;
		char *dict_val;
	} dict;
};
typedef struct gf1_cli_status_volume_rsp gf1_cli_status_volume_rsp;

struct gf1_cli_mount_req {
	char *label;
	struct {
		u_int dict_len;
		char *dict_val;
	} dict;
};
typedef struct gf1_cli_mount_req gf1_cli_mount_req;

struct gf1_cli_mount_rsp {
	int op_ret;
	int op_errno;
	char *path;
};
typedef struct gf1_cli_mount_rsp gf1_cli_mount_rsp;

struct gf1_cli_umount_req {
	int lazy;
	char *path;
};
typedef struct gf1_cli_umount_req gf1_cli_umount_req;

struct gf1_cli_umount_rsp {
	int op_ret;
	int op_errno;
};
typedef struct gf1_cli_umount_rsp gf1_cli_umount_rsp;

struct gf1_cli_heal_vol_req {
	char *volname;
};
typedef struct gf1_cli_heal_vol_req gf1_cli_heal_vol_req;

struct gf1_cli_heal_vol_rsp {
	int op_ret;
	int op_errno;
	char *volname;
	char *op_errstr;
	struct {
		u_int dict_len;
		char *dict_val;
	} dict;
};
typedef struct gf1_cli_heal_vol_rsp gf1_cli_heal_vol_rsp;

struct gf1_cli_statedump_vol_req {
	char *volname;
	char *options;
	int option_cnt;
};
typedef struct gf1_cli_statedump_vol_req gf1_cli_statedump_vol_req;

struct gf1_cli_statedump_vol_rsp {
	int op_ret;
	int op_errno;
	char *volname;
	char *op_errstr;
	struct {
		u_int dict_len;
		char *dict_val;
	} dict;
};
typedef struct gf1_cli_statedump_vol_rsp gf1_cli_statedump_vol_rsp;

/* the xdr functions */

#if defined(__STDC__) || defined(__cplusplus)
extern  bool_t xdr_gf_cli_defrag_type (XDR *, gf_cli_defrag_type*);
extern  bool_t xdr_gf_defrag_status_t (XDR *, gf_defrag_status_t*);
extern  bool_t xdr_gf1_cluster_type (XDR *, gf1_cluster_type*);
extern  bool_t xdr_gf1_cli_replace_op (XDR *, gf1_cli_replace_op*);
extern  bool_t xdr_gf1_op_commands (XDR *, gf1_op_commands*);
extern  bool_t xdr_gf_quota_type (XDR *, gf_quota_type*);
extern  bool_t xdr_gf1_cli_friends_list (XDR *, gf1_cli_friends_list*);
extern  bool_t xdr_gf1_cli_get_volume (XDR *, gf1_cli_get_volume*);
extern  bool_t xdr_gf1_cli_sync_volume (XDR *, gf1_cli_sync_volume*);
extern  bool_t xdr_gf1_cli_op_flags (XDR *, gf1_cli_op_flags*);
extern  bool_t xdr_gf1_cli_gsync_set (XDR *, gf1_cli_gsync_set*);
extern  bool_t xdr_gf1_cli_stats_op (XDR *, gf1_cli_stats_op*);
extern  bool_t xdr_gf1_cli_top_op (XDR *, gf1_cli_top_op*);
extern  bool_t xdr_gf1_cli_probe_req (XDR *, gf1_cli_probe_req*);
extern  bool_t xdr_gf1_cli_probe_rsp (XDR *, gf1_cli_probe_rsp*);
extern  bool_t xdr_gf1_cli_deprobe_req (XDR *, gf1_cli_deprobe_req*);
extern  bool_t xdr_gf1_cli_deprobe_rsp (XDR *, gf1_cli_deprobe_rsp*);
extern  bool_t xdr_gf1_cli_peer_list_req (XDR *, gf1_cli_peer_list_req*);
extern  bool_t xdr_gf1_cli_peer_list_rsp (XDR *, gf1_cli_peer_list_rsp*);
extern  bool_t xdr_gf1_cli_get_vol_req (XDR *, gf1_cli_get_vol_req*);
extern  bool_t xdr_gf1_cli_get_vol_rsp (XDR *, gf1_cli_get_vol_rsp*);
extern  bool_t xdr_gf1_cli_create_vol_req (XDR *, gf1_cli_create_vol_req*);
extern  bool_t xdr_gf1_cli_create_vol_rsp (XDR *, gf1_cli_create_vol_rsp*);
extern  bool_t xdr_gf1_cli_delete_vol_req (XDR *, gf1_cli_delete_vol_req*);
extern  bool_t xdr_gf1_cli_delete_vol_rsp (XDR *, gf1_cli_delete_vol_rsp*);
extern  bool_t xdr_gf1_cli_start_vol_req (XDR *, gf1_cli_start_vol_req*);
extern  bool_t xdr_gf1_cli_start_vol_rsp (XDR *, gf1_cli_start_vol_rsp*);
extern  bool_t xdr_gf1_cli_stop_vol_req (XDR *, gf1_cli_stop_vol_req*);
extern  bool_t xdr_gf1_cli_stop_vol_rsp (XDR *, gf1_cli_stop_vol_rsp*);
extern  bool_t xdr_gf1_cli_rename_vol_req (XDR *, gf1_cli_rename_vol_req*);
extern  bool_t xdr_gf1_cli_rename_vol_rsp (XDR *, gf1_cli_rename_vol_rsp*);
extern  bool_t xdr_gf1_cli_defrag_vol_req (XDR *, gf1_cli_defrag_vol_req*);
extern  bool_t xdr_gf1_cli_defrag_vol_rsp (XDR *, gf1_cli_defrag_vol_rsp*);
extern  bool_t xdr_gf2_cli_defrag_vol_rsp (XDR *, gf2_cli_defrag_vol_rsp*);
extern  bool_t xdr_gf1_cli_add_brick_req (XDR *, gf1_cli_add_brick_req*);
extern  bool_t xdr_gf1_cli_add_brick_rsp (XDR *, gf1_cli_add_brick_rsp*);
extern  bool_t xdr_gf1_cli_remove_brick_req (XDR *, gf1_cli_remove_brick_req*);
extern  bool_t xdr_gf1_cli_remove_brick_rsp (XDR *, gf1_cli_remove_brick_rsp*);
extern  bool_t xdr_gf1_cli_replace_brick_req (XDR *, gf1_cli_replace_brick_req*);
extern  bool_t xdr_gf1_cli_replace_brick_rsp (XDR *, gf1_cli_replace_brick_rsp*);
extern  bool_t xdr_gf1_cli_reset_vol_req (XDR *, gf1_cli_reset_vol_req*);
extern  bool_t xdr_gf1_cli_reset_vol_rsp (XDR *, gf1_cli_reset_vol_rsp*);
extern  bool_t xdr_gf1_cli_set_vol_req (XDR *, gf1_cli_set_vol_req*);
extern  bool_t xdr_gf1_cli_set_vol_rsp (XDR *, gf1_cli_set_vol_rsp*);
extern  bool_t xdr_gf1_cli_log_filename_req (XDR *, gf1_cli_log_filename_req*);
extern  bool_t xdr_gf1_cli_log_filename_rsp (XDR *, gf1_cli_log_filename_rsp*);
extern  bool_t xdr_gf1_cli_log_locate_req (XDR *, gf1_cli_log_locate_req*);
extern  bool_t xdr_gf1_cli_sync_volume_req (XDR *, gf1_cli_sync_volume_req*);
extern  bool_t xdr_gf1_cli_log_locate_rsp (XDR *, gf1_cli_log_locate_rsp*);
extern  bool_t xdr_gf1_cli_log_rotate_req (XDR *, gf1_cli_log_rotate_req*);
extern  bool_t xdr_gf1_cli_log_rotate_rsp (XDR *, gf1_cli_log_rotate_rsp*);
extern  bool_t xdr_gf1_cli_sync_volume_rsp (XDR *, gf1_cli_sync_volume_rsp*);
extern  bool_t xdr_gf1_cli_fsm_log_req (XDR *, gf1_cli_fsm_log_req*);
extern  bool_t xdr_gf1_cli_fsm_log_rsp (XDR *, gf1_cli_fsm_log_rsp*);
extern  bool_t xdr_gf1_cli_gsync_set_req (XDR *, gf1_cli_gsync_set_req*);
extern  bool_t xdr_gf1_cli_gsync_set_rsp (XDR *, gf1_cli_gsync_set_rsp*);
extern  bool_t xdr_gf1_cli_stats_volume_req (XDR *, gf1_cli_stats_volume_req*);
extern  bool_t xdr_gf1_cli_stats_volume_rsp (XDR *, gf1_cli_stats_volume_rsp*);
extern  bool_t xdr_gf1_cli_quota_req (XDR *, gf1_cli_quota_req*);
extern  bool_t xdr_gf1_cli_quota_rsp (XDR *, gf1_cli_quota_rsp*);
extern  bool_t xdr_gf1_cli_getwd_req (XDR *, gf1_cli_getwd_req*);
extern  bool_t xdr_gf1_cli_getwd_rsp (XDR *, gf1_cli_getwd_rsp*);
extern  bool_t xdr_gf1_cli_log_level_req (XDR *, gf1_cli_log_level_req*);
extern  bool_t xdr_gf1_cli_log_level_rsp (XDR *, gf1_cli_log_level_rsp*);
extern  bool_t xdr_gf1_cli_status_volume_req (XDR *, gf1_cli_status_volume_req*);
extern  bool_t xdr_gf1_cli_status_volume_rsp (XDR *, gf1_cli_status_volume_rsp*);
extern  bool_t xdr_gf1_cli_mount_req (XDR *, gf1_cli_mount_req*);
extern  bool_t xdr_gf1_cli_mount_rsp (XDR *, gf1_cli_mount_rsp*);
extern  bool_t xdr_gf1_cli_umount_req (XDR *, gf1_cli_umount_req*);
extern  bool_t xdr_gf1_cli_umount_rsp (XDR *, gf1_cli_umount_rsp*);
extern  bool_t xdr_gf1_cli_heal_vol_req (XDR *, gf1_cli_heal_vol_req*);
extern  bool_t xdr_gf1_cli_heal_vol_rsp (XDR *, gf1_cli_heal_vol_rsp*);
extern  bool_t xdr_gf1_cli_statedump_vol_req (XDR *, gf1_cli_statedump_vol_req*);
extern  bool_t xdr_gf1_cli_statedump_vol_rsp (XDR *, gf1_cli_statedump_vol_rsp*);

#else /* K&R C */
extern bool_t xdr_gf_cli_defrag_type ();
extern bool_t xdr_gf_defrag_status_t ();
extern bool_t xdr_gf1_cluster_type ();
extern bool_t xdr_gf1_cli_replace_op ();
extern bool_t xdr_gf1_op_commands ();
extern bool_t xdr_gf_quota_type ();
extern bool_t xdr_gf1_cli_friends_list ();
extern bool_t xdr_gf1_cli_get_volume ();
extern bool_t xdr_gf1_cli_sync_volume ();
extern bool_t xdr_gf1_cli_op_flags ();
extern bool_t xdr_gf1_cli_gsync_set ();
extern bool_t xdr_gf1_cli_stats_op ();
extern bool_t xdr_gf1_cli_top_op ();
extern bool_t xdr_gf1_cli_probe_req ();
extern bool_t xdr_gf1_cli_probe_rsp ();
extern bool_t xdr_gf1_cli_deprobe_req ();
extern bool_t xdr_gf1_cli_deprobe_rsp ();
extern bool_t xdr_gf1_cli_peer_list_req ();
extern bool_t xdr_gf1_cli_peer_list_rsp ();
extern bool_t xdr_gf1_cli_get_vol_req ();
extern bool_t xdr_gf1_cli_get_vol_rsp ();
extern bool_t xdr_gf1_cli_create_vol_req ();
extern bool_t xdr_gf1_cli_create_vol_rsp ();
extern bool_t xdr_gf1_cli_delete_vol_req ();
extern bool_t xdr_gf1_cli_delete_vol_rsp ();
extern bool_t xdr_gf1_cli_start_vol_req ();
extern bool_t xdr_gf1_cli_start_vol_rsp ();
extern bool_t xdr_gf1_cli_stop_vol_req ();
extern bool_t xdr_gf1_cli_stop_vol_rsp ();
extern bool_t xdr_gf1_cli_rename_vol_req ();
extern bool_t xdr_gf1_cli_rename_vol_rsp ();
extern bool_t xdr_gf1_cli_defrag_vol_req ();
extern bool_t xdr_gf1_cli_defrag_vol_rsp ();
extern bool_t xdr_gf2_cli_defrag_vol_rsp ();
extern bool_t xdr_gf1_cli_add_brick_req ();
extern bool_t xdr_gf1_cli_add_brick_rsp ();
extern bool_t xdr_gf1_cli_remove_brick_req ();
extern bool_t xdr_gf1_cli_remove_brick_rsp ();
extern bool_t xdr_gf1_cli_replace_brick_req ();
extern bool_t xdr_gf1_cli_replace_brick_rsp ();
extern bool_t xdr_gf1_cli_reset_vol_req ();
extern bool_t xdr_gf1_cli_reset_vol_rsp ();
extern bool_t xdr_gf1_cli_set_vol_req ();
extern bool_t xdr_gf1_cli_set_vol_rsp ();
extern bool_t xdr_gf1_cli_log_filename_req ();
extern bool_t xdr_gf1_cli_log_filename_rsp ();
extern bool_t xdr_gf1_cli_log_locate_req ();
extern bool_t xdr_gf1_cli_sync_volume_req ();
extern bool_t xdr_gf1_cli_log_locate_rsp ();
extern bool_t xdr_gf1_cli_log_rotate_req ();
extern bool_t xdr_gf1_cli_log_rotate_rsp ();
extern bool_t xdr_gf1_cli_sync_volume_rsp ();
extern bool_t xdr_gf1_cli_fsm_log_req ();
extern bool_t xdr_gf1_cli_fsm_log_rsp ();
extern bool_t xdr_gf1_cli_gsync_set_req ();
extern bool_t xdr_gf1_cli_gsync_set_rsp ();
extern bool_t xdr_gf1_cli_stats_volume_req ();
extern bool_t xdr_gf1_cli_stats_volume_rsp ();
extern bool_t xdr_gf1_cli_quota_req ();
extern bool_t xdr_gf1_cli_quota_rsp ();
extern bool_t xdr_gf1_cli_getwd_req ();
extern bool_t xdr_gf1_cli_getwd_rsp ();
extern bool_t xdr_gf1_cli_log_level_req ();
extern bool_t xdr_gf1_cli_log_level_rsp ();
extern bool_t xdr_gf1_cli_status_volume_req ();
extern bool_t xdr_gf1_cli_status_volume_rsp ();
extern bool_t xdr_gf1_cli_mount_req ();
extern bool_t xdr_gf1_cli_mount_rsp ();
extern bool_t xdr_gf1_cli_umount_req ();
extern bool_t xdr_gf1_cli_umount_rsp ();
extern bool_t xdr_gf1_cli_heal_vol_req ();
extern bool_t xdr_gf1_cli_heal_vol_rsp ();
extern bool_t xdr_gf1_cli_statedump_vol_req ();
extern bool_t xdr_gf1_cli_statedump_vol_rsp ();

#endif /* K&R C */

#ifdef __cplusplus
}
#endif

#endif /* !_CLI1_XDR_H_RPCGEN */