diff --git a/glusterfs-3.2.7.xlators.mgmt.glusterd.glusterd-rpc-ops.c.patch b/glusterfs-3.2.7.xlators.mgmt.glusterd.glusterd-rpc-ops.c.patch new file mode 100644 index 0000000..d19799b --- /dev/null +++ b/glusterfs-3.2.7.xlators.mgmt.glusterd.glusterd-rpc-ops.c.patch @@ -0,0 +1,474 @@ +--- xlators/mgmt/glusterd/src/glusterd-rpc-ops.c ++++ xlators/mgmt/glusterd/src/glusterd-rpc-ops.c +@@ -51,9 +51,26 @@ glusterd_op_send_cli_response (glusterd_op_t op, int32_t op_ret, + int32_t op_errno, rpcsvc_request_t *req, + void *op_ctx, char *op_errstr) + { +- int32_t ret = -1; +- gd_serialize_t sfunc = NULL; +- void *cli_rsp = NULL; ++ union { ++ gf1_cli_create_vol_rsp createv_rsp; ++ gf1_cli_start_vol_rsp startv_rsp; ++ gf1_cli_stop_vol_rsp stopv_rsp; ++ gf1_cli_delete_vol_rsp delv_rsp; ++ gf1_cli_defrag_vol_rsp defragv_rsp; ++ gf1_cli_set_vol_rsp setv_rsp; ++ gf1_cli_reset_vol_rsp resetv_rsp; ++ gf1_cli_sync_volume_rsp syncv_rsp; ++ gf1_cli_stats_volume_rsp statsv_rsp; ++ gf1_cli_add_brick_rsp addb_rsp; ++ gf1_cli_remove_brick_rsp rmb_rsp; ++ gf1_cli_replace_brick_rsp replb_rsp; ++ gf1_cli_log_filename_rsp logfn_rsp; ++ gf1_cli_log_rotate_rsp logrot_rsp; ++ gf1_cli_gsync_set_rsp gsyncs_rsp; ++ gf1_cli_quota_rsp quota_rsp; ++ } cli_rsp; ++ int32_t ret = -1; ++ gd_serialize_t sfunc = NULL; + dict_t *ctx = NULL; + char *free_ptr = NULL; + glusterd_conf_t *conf = NULL; +@@ -67,145 +84,103 @@ glusterd_op_send_cli_response (glusterd_op_t op, int32_t op_ret, + switch (op) { + case GD_OP_CREATE_VOLUME: + { +- gf1_cli_create_vol_rsp rsp = {0,}; +- rsp.op_ret = op_ret; +- rsp.op_errno = op_errno; +- rsp.volname = ""; +- if (op_errstr) +- rsp.op_errstr = op_errstr; +- else +- rsp.op_errstr = ""; +- cli_rsp = &rsp; ++ cli_rsp.createv_rsp.op_ret = op_ret; ++ cli_rsp.createv_rsp.op_errno = op_errno; ++ cli_rsp.createv_rsp.volname = ""; ++ cli_rsp.createv_rsp.op_errstr = op_errstr ? op_errstr : ""; + sfunc = gf_xdr_serialize_cli_create_vol_rsp; + break; + } + + case GD_OP_START_VOLUME: + { +- gf1_cli_start_vol_rsp rsp = {0,}; +- rsp.op_ret = op_ret; +- rsp.op_errno = op_errno; +- rsp.volname = ""; +- if (op_errstr) +- rsp.op_errstr = op_errstr; +- else +- rsp.op_errstr = ""; +- cli_rsp = &rsp; ++ cli_rsp.startv_rsp.op_ret = op_ret; ++ cli_rsp.startv_rsp.op_errno = op_errno; ++ cli_rsp.startv_rsp.volname = ""; ++ cli_rsp.startv_rsp.op_errstr = op_errstr ? op_errstr : ""; + sfunc = gf_xdr_serialize_cli_start_vol_rsp; + break; + } + + case GD_OP_STOP_VOLUME: + { +- gf1_cli_stop_vol_rsp rsp = {0,}; +- rsp.op_ret = op_ret; +- rsp.op_errno = op_errno; +- rsp.volname = ""; +- if (op_errstr) +- rsp.op_errstr = op_errstr; +- else +- rsp.op_errstr = ""; +- cli_rsp = &rsp; ++ cli_rsp.stopv_rsp.op_ret = op_ret; ++ cli_rsp.stopv_rsp.op_errno = op_errno; ++ cli_rsp.stopv_rsp.volname = ""; ++ cli_rsp.stopv_rsp.op_errstr = op_errstr ? op_errstr : ""; + sfunc = gf_xdr_serialize_cli_stop_vol_rsp; + break; + } + + case GD_OP_DELETE_VOLUME: + { +- gf1_cli_delete_vol_rsp rsp = {0,}; +- rsp.op_ret = op_ret; +- rsp.op_errno = op_errno; +- rsp.volname = ""; +- if (op_errstr) +- rsp.op_errstr = op_errstr; +- else +- rsp.op_errstr = ""; +- cli_rsp = &rsp; ++ cli_rsp.delv_rsp.op_ret = op_ret; ++ cli_rsp.delv_rsp.op_errno = op_errno; ++ cli_rsp.delv_rsp.volname = ""; ++ cli_rsp.delv_rsp.op_errstr = op_errstr ? op_errstr : ""; + sfunc = gf_xdr_serialize_cli_delete_vol_rsp; + break; + } + + case GD_OP_DEFRAG_VOLUME: + { +- gf1_cli_defrag_vol_rsp rsp = {0,}; +- rsp.op_ret = op_ret; +- rsp.op_errno = op_errno; +- //rsp.volname = ""; +- cli_rsp = &rsp; ++ cli_rsp.defragv_rsp.op_ret = op_ret; ++ cli_rsp.defragv_rsp.op_errno = op_errno; ++ //cli_rsp.defragv_rsp.volname = ""; + sfunc = gf_xdr_serialize_cli_defrag_vol_rsp; + break; + } + + case GD_OP_ADD_BRICK: + { +- gf1_cli_add_brick_rsp rsp = {0,}; +- rsp.op_ret = op_ret; +- rsp.op_errno = op_errno; +- rsp.volname = ""; +- if (op_errstr) +- rsp.op_errstr = op_errstr; +- else +- rsp.op_errstr = ""; +- cli_rsp = &rsp; ++ cli_rsp.addb_rsp.op_ret = op_ret; ++ cli_rsp.addb_rsp.op_errno = op_errno; ++ cli_rsp.addb_rsp.volname = ""; ++ cli_rsp.addb_rsp.op_errstr = op_errstr ? op_errstr : ""; + sfunc = gf_xdr_serialize_cli_add_brick_rsp; + break; + } + + case GD_OP_REMOVE_BRICK: + { +- gf1_cli_remove_brick_rsp rsp = {0,}; + ctx = op_ctx; + if (ctx && +- dict_get_str (ctx, "errstr", &rsp.op_errstr)) +- rsp.op_errstr = ""; +- rsp.op_ret = op_ret; +- rsp.op_errno = op_errno; +- rsp.volname = ""; +- cli_rsp = &rsp; ++ dict_get_str (ctx, "errstr", &cli_rsp.rmb_rsp.op_errstr)) ++ cli_rsp.rmb_rsp.op_errstr = ""; ++ cli_rsp.rmb_rsp.op_ret = op_ret; ++ cli_rsp.rmb_rsp.op_errno = op_errno; ++ cli_rsp.rmb_rsp.volname = ""; + sfunc = gf_xdr_serialize_cli_remove_brick_rsp; + break; + } + + case GD_OP_REPLACE_BRICK: + { +- gf1_cli_replace_brick_rsp rsp = {0,}; + ctx = op_ctx; + if (ctx && +- dict_get_str (ctx, "status-reply", &rsp.status)) +- rsp.status = ""; +- rsp.op_ret = op_ret; +- rsp.op_errno = op_errno; +- if (op_errstr) +- rsp.op_errstr = op_errstr; +- else +- rsp.op_errstr = ""; +- rsp.volname = ""; +- cli_rsp = &rsp; ++ dict_get_str (ctx, "status-reply", &cli_rsp.replb_rsp.status)) ++ cli_rsp.replb_rsp.status = ""; ++ cli_rsp.replb_rsp.op_ret = op_ret; ++ cli_rsp.replb_rsp.op_errno = op_errno; ++ cli_rsp.replb_rsp.volname = ""; ++ cli_rsp.replb_rsp.op_errstr = op_errstr ? op_errstr : ""; + sfunc = gf_xdr_serialize_cli_replace_brick_rsp; + break; + } + + case GD_OP_SET_VOLUME: + { +- gf1_cli_set_vol_rsp rsp = {0,}; +- rsp.op_ret = op_ret; +- rsp.op_errno = op_errno; +- rsp.volname = ""; + ctx = op_ctx; +- +- if (op_errstr) +- rsp.op_errstr = op_errstr; +- else +- rsp.op_errstr = ""; + if (ctx) { + ret = dict_allocate_and_serialize (ctx, +- &rsp.dict.dict_val, +- (size_t*)&rsp.dict.dict_len); ++ &cli_rsp.setv_rsp.dict.dict_val, ++ (size_t*)&cli_rsp.setv_rsp.dict.dict_len); + if (ret == 0) +- free_ptr = rsp.dict.dict_val; ++ free_ptr = cli_rsp.setv_rsp.dict.dict_val; + } +- +- cli_rsp = &rsp; ++ cli_rsp.setv_rsp.op_errno = op_errno; ++ cli_rsp.setv_rsp.volname = ""; ++ cli_rsp.setv_rsp.op_errstr = op_errstr ? op_errstr : ""; + sfunc = gf_xdr_serialize_cli_set_vol_rsp; + break; + } +@@ -213,55 +188,35 @@ glusterd_op_send_cli_response (glusterd_op_t op, int32_t op_ret, + case GD_OP_RESET_VOLUME: + { + gf_log ("", GF_LOG_DEBUG, "Return value to CLI"); +- gf1_cli_reset_vol_rsp rsp = {0,}; +- rsp.op_ret = op_ret; +- rsp.op_errno = 1; +- rsp.volname = ""; +- if (op_errstr) +- rsp.op_errstr = op_errstr; +- else +- rsp.op_errstr = "Error while resetting options"; +- cli_rsp = &rsp; ++ cli_rsp.resetv_rsp.op_ret = op_ret; ++ cli_rsp.resetv_rsp.op_errno = 1; ++ cli_rsp.resetv_rsp.volname = ""; ++ cli_rsp.resetv_rsp.op_errstr = op_errstr ? op_errstr : "Error while resetting options"; + sfunc = gf_xdr_serialize_cli_reset_vol_rsp; + break; + } + + case GD_OP_LOG_FILENAME: + { +- gf1_cli_log_filename_rsp rsp = {0,}; +- rsp.op_ret = op_ret; +- rsp.op_errno = op_errno; +- if (op_errstr) +- rsp.errstr = op_errstr; +- else +- rsp.errstr = ""; +- cli_rsp = &rsp; ++ cli_rsp.logfn_rsp.op_ret = op_ret; ++ cli_rsp.logfn_rsp.op_errno = op_errno; ++ cli_rsp.logfn_rsp.errstr = op_errstr ? op_errstr : ""; + sfunc = gf_xdr_serialize_cli_log_filename_rsp; + break; + } + case GD_OP_LOG_ROTATE: + { +- gf1_cli_log_rotate_rsp rsp = {0,}; +- rsp.op_ret = op_ret; +- rsp.op_errno = op_errno; +- if (op_errstr) +- rsp.errstr = op_errstr; +- else +- rsp.errstr = ""; +- cli_rsp = &rsp; ++ cli_rsp.logrot_rsp.op_ret = op_ret; ++ cli_rsp.logrot_rsp.op_errno = op_errno; ++ cli_rsp.logrot_rsp.errstr = op_errstr ? op_errstr : ""; + sfunc = gf_xdr_serialize_cli_log_rotate_rsp; + break; + } + case GD_OP_SYNC_VOLUME: + { +- gf1_cli_sync_volume_rsp rsp = {0,}; +- rsp.op_ret = op_ret; +- rsp.op_errno = op_errno; +- if (op_errstr) +- rsp.op_errstr = op_errstr; +- else +- rsp.op_errstr = ""; +- cli_rsp = &rsp; ++ cli_rsp.syncv_rsp.op_ret = op_ret; ++ cli_rsp.syncv_rsp.op_errno = op_errno; ++ cli_rsp.syncv_rsp.op_errstr = op_errstr ? op_errstr : ""; + sfunc = gf_xdr_from_cli_sync_volume_rsp; + break; + } +@@ -273,72 +228,56 @@ glusterd_op_send_cli_response (glusterd_op_t op, int32_t op_ret, + char *slave = NULL; + char *op_name = NULL; + char *subop = NULL; +- gf1_cli_gsync_set_rsp rsp = {0,}; + ++ cli_rsp.gsyncs_rsp.op_ret = op_ret; ++ cli_rsp.gsyncs_rsp.op_errno = op_errno; ++ cli_rsp.gsyncs_rsp.op_errstr = op_errstr ? op_errstr : ""; ++ cli_rsp.gsyncs_rsp.op_name = ""; ++ cli_rsp.gsyncs_rsp.subop = ""; ++ cli_rsp.gsyncs_rsp.master = ""; ++ cli_rsp.gsyncs_rsp.slave = ""; ++ cli_rsp.gsyncs_rsp.glusterd_workdir = conf->workdir; ++ cli_rsp.gsyncs_rsp.gsync_prefix = GSYNCD_PREFIX; + ctx = op_ctx; +- rsp.op_ret = op_ret; +- rsp.op_errno = op_errno; +- rsp.op_errstr = ""; +- rsp.op_name = ""; +- rsp.subop = ""; +- rsp.master = ""; +- rsp.slave = ""; +- rsp.glusterd_workdir = conf->workdir; +- rsp.gsync_prefix = GSYNCD_PREFIX; + if (ctx) { + ret = dict_get_str (ctx, "errstr", &str); + if (ret == 0) +- rsp.op_errstr = str; ++ cli_rsp.gsyncs_rsp.op_errstr = str; + ret = dict_get_int32 (ctx, "type", &type); + if (ret == 0) +- rsp.type = type; ++ cli_rsp.gsyncs_rsp.type = type; + ret = dict_get_str (ctx, "master", &master); + if (ret == 0) +- rsp.master = master; ++ cli_rsp.gsyncs_rsp.master = master; + + ret = dict_get_str (ctx, "slave", &slave); + if (ret == 0) +- rsp.slave = slave; ++ cli_rsp.gsyncs_rsp.slave = slave; + + if (type == GF_GSYNC_OPTION_TYPE_CONFIG) { + if (dict_get_str (ctx, "op_name", &op_name) == 0) +- rsp.op_name = op_name; ++ cli_rsp.gsyncs_rsp.op_name = op_name; + if (dict_get_str (ctx, "subop", &subop) == 0) +- rsp.subop = subop; ++ cli_rsp.gsyncs_rsp.subop = subop; + } + + ret = dict_allocate_and_serialize (ctx, +- &rsp.status_dict.status_dict_val, +- (size_t*)&rsp.status_dict.status_dict_len); ++ &cli_rsp.gsyncs_rsp.status_dict.status_dict_val, ++ (size_t*)&cli_rsp.gsyncs_rsp.status_dict.status_dict_len); + + if (ret == 0) +- free_ptr = rsp.status_dict.status_dict_val; ++ free_ptr = cli_rsp.gsyncs_rsp.status_dict.status_dict_val; + + } +- if (op_errstr) +- rsp.op_errstr = op_errstr; +- cli_rsp = &rsp; + sfunc = gf_xdr_serialize_cli_gsync_set_rsp; + break; + } +- case GD_OP_RENAME_VOLUME: +- case GD_OP_START_BRICK: +- case GD_OP_STOP_BRICK: +- case GD_OP_LOG_LOCATE: +- { +- gf_log ("", GF_LOG_DEBUG, "not supported op %d", op); +- break; +- } + case GD_OP_PROFILE_VOLUME: + { +- gf1_cli_stats_volume_rsp rsp = {0,}; + int32_t count = 0; +- rsp.op_ret = op_ret; +- rsp.op_errno = op_errno; +- if (op_errstr) +- rsp.op_errstr = op_errstr; +- else +- rsp.op_errstr = ""; ++ cli_rsp.statsv_rsp.op_ret = op_ret; ++ cli_rsp.statsv_rsp.op_errno = op_errno; ++ cli_rsp.statsv_rsp.op_errstr = op_errstr ? op_errstr : ""; + ctx = op_ctx; + if (dict_get_int32 (ctx, "count", &count)) { + ret = dict_set_int32 (ctx, "count", 0); +@@ -347,10 +286,9 @@ glusterd_op_send_cli_response (glusterd_op_t op, int32_t op_ret, + "to set brick count."); + } + dict_allocate_and_serialize (ctx, +- &rsp.stats_info.stats_info_val, +- (size_t*)&rsp.stats_info.stats_info_len); +- free_ptr = rsp.stats_info.stats_info_val; +- cli_rsp = &rsp; ++ &cli_rsp.statsv_rsp.stats_info.stats_info_val, ++ (size_t*)&cli_rsp.statsv_rsp.stats_info.stats_info_len); ++ free_ptr = cli_rsp.statsv_rsp.stats_info.stats_info_val; + sfunc = gf_xdr_from_cli_stats_volume_rsp; + break; + } +@@ -360,49 +298,56 @@ glusterd_op_send_cli_response (glusterd_op_t op, int32_t op_ret, + int32_t type; + char *str = NULL; + char *errstr = NULL; +- gf1_cli_quota_rsp rsp = {0,}; + +- rsp.op_ret = op_ret; +- rsp.op_errno = op_errno; +- rsp.volname = ""; ++ cli_rsp.quota_rsp.op_ret = op_ret; ++ cli_rsp.quota_rsp.op_errno = op_errno; ++ cli_rsp.quota_rsp.volname = ""; + + ctx = op_ctx; + + if (op_errstr) +- rsp.op_errstr = op_errstr; ++ cli_rsp.quota_rsp.op_errstr = op_errstr; + else { + ret = dict_get_str (ctx, "errstr", &errstr); + if (ret == 0) +- rsp.op_errstr = errstr; ++ cli_rsp.quota_rsp.op_errstr = errstr; + else +- rsp.op_errstr = ""; ++ cli_rsp.quota_rsp.op_errstr = ""; + } + +- rsp.limit_list = ""; ++ cli_rsp.quota_rsp.limit_list = ""; + + if (op_ret == 0 && ctx) { + ret = dict_get_str (ctx, "volname", &str); + if (ret == 0) +- rsp.volname = str; ++ cli_rsp.quota_rsp.volname = str; + + ret = dict_get_int32 (ctx, "type", &type); + if (ret == 0) +- rsp.type = type; ++ cli_rsp.quota_rsp.type = type; + else +- rsp.type = 0; ++ cli_rsp.quota_rsp.type = 0; + + if (type == GF_QUOTA_OPTION_TYPE_LIST) { + ret = dict_get_str (ctx,"limit_list", &str); + + if (ret == 0) +- rsp.limit_list = str; ++ cli_rsp.quota_rsp.limit_list = str; + } + } +- cli_rsp = &rsp; + sfunc = gf_xdr_serialize_cli_quota_rsp; + break; + } + ++ case GD_OP_RENAME_VOLUME: ++ case GD_OP_START_BRICK: ++ case GD_OP_STOP_BRICK: ++ case GD_OP_LOG_LOCATE: ++ { ++ gf_log ("", GF_LOG_DEBUG, "not supported op %d", op); ++ break; ++ } ++ + case GD_OP_NONE: + case GD_OP_MAX: + { +@@ -411,7 +356,7 @@ glusterd_op_send_cli_response (glusterd_op_t op, int32_t op_ret, + } + } + +- ret = glusterd_submit_reply (req, cli_rsp, NULL, 0, NULL, ++ ret = glusterd_submit_reply (req, &cli_rsp, NULL, 0, NULL, + sfunc); + + if (free_ptr) diff --git a/glusterfs.spec b/glusterfs.spec index d93ddac..3525fbd 100644 --- a/glusterfs.spec +++ b/glusterfs.spec @@ -21,29 +21,25 @@ # rpmbuild -ta @PACKAGE_NAME@-@PACKAGE_VERSION@.tar.gz --without georeplication %{?_without_georeplication:%global _without_georeplication --disable-geo-replication} -%if ( 0%{?fedora} ) || ( 0%{?rhel} && 0%{?rhel} >= 6 ) -%global SWIFTVER 1.4.8 -%global _with_swift true -%endif Summary: Cluster File System Name: glusterfs -Version: 3.3.0 -Release: 5%{?dist} -License: GPLv3+ and (GPLv2 or LGPLv3+) +Version: 3.2.7 +Release: 2%{?dist} +License: GPLv3 Group: System Environment/Base Vendor: Red Hat URL: http://www.gluster.org//docs/index.php/GlusterFS -Source0: http://download.gluster.org/pub/gluster/glusterfs/3.3/%{version}/glusterfs-%{version}.tar.gz +Source0: http://download.gluster.org/pub/gluster/glusterfs/3.2/%{version}/glusterfs-%{version}.tar.gz Source1: glusterd.sysconfig Source2: glusterfsd.sysconfig Source3: umount.glusterfs Source4: glusterfs-fuse.logrotate Source5: glusterd.logrotate Source6: glusterfsd.logrotate -Patch0: %{name}-3.3.0.libglusterfs.Makefile.patch +Patch0: %{name}-3.2.5.libglusterfs.Makefile.patch Patch1: %{name}-3.2.5.configure.ac.patch -Patch2: %{name}-3.3.0.cli.cli-rpc-ops.c.patch +Patch2: %{name}-3.2.7.xlators.mgmt.glusterd.glusterd-rpc-ops.c.patch BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) %if ( 0%{?fedora} && 0%{?fedora} < 17 ) || ( 0%{?rhel} && 0%{?rhel} < 7 ) @@ -79,18 +75,15 @@ Requires(postun): systemd-units BuildRequires: bison flex BuildRequires: gcc make automake libtool BuildRequires: ncurses-devel readline-devel -BuildRequires: libxml2-devel openssl-devel +BuildRequires: libxml2-devel BuildRequires: python-ctypes -Obsoletes: hekafs <= 0.7 Obsoletes: %{name}-libs <= 2.0.0 -Obsoletes: %{name}-common < %{version}-%{release} -Obsoletes: %{name}-core < %{version}-%{release} +Obsoletes: %{name}-common < 3.1.0 Provides: %{name}-libs = %{version}-%{release} Provides: %{name}-common = %{version}-%{release} Provides: %{name}-core = %{version}-%{release} - %description GlusterFS is a clustered file-system capable of scaling to several petabytes. It aggregates various storage bricks over Infiniband RDMA @@ -128,9 +121,7 @@ This package provides support to ib-verbs library. %package geo-replication Summary: GlusterFS Geo-replication Group: Applications/File -Requires: %{name} = %{version}-%{release} -Requires: %{name}-server = %{version}-%{release} -Requires: python-ctypes , rsync >= 3.0.0 +Requires: %{name} = %{version}-%{release} , python-ctypes , rsync >= 3.0.0 %description geo-replication GlusterFS is a clustered file-system capable of scaling to several @@ -151,7 +142,7 @@ BuildRequires: fuse-devel Requires: %{name} = %{version}-%{release} -Obsoletes: %{name}-client < %{version}-%{release} +Obsoletes: %{name}-client < 3.1.0 Provides: %{name}-client = %{version}-%{release} %description fuse @@ -167,7 +158,6 @@ This package provides support to FUSE based clients. %package server Summary: Clustered file-system server -License: GPLv3+ Group: System Environment/Daemons Requires: %{name} = %{version}-%{release} Requires: %{name}-fuse = %{version}-%{release} @@ -183,11 +173,26 @@ is in user space and easily manageable. This package provides the glusterfs server daemon. +%package vim +Summary: Vim syntax file +Group: Applications/Text +Requires: vim-common + +%description vim +GlusterFS is a clustered file-system capable of scaling to several +petabytes. It aggregates various storage bricks over Infiniband RDMA +or TCP/IP interconnect into one large parallel network file +system. GlusterFS is one of the most sophisticated file systems in +terms of features and extensibility. It borrows a powerful concept +called Translators from GNU Hurd kernel. Much of the code in GlusterFS +is in user space and easily manageable. + +Vim syntax file for GlusterFS. + %package devel -Summary: Development Libraries -License: GPLv2 or LGPLv3+ -Group: Development/Libraries -Requires: %{name} = %{version}-%{release} +Summary: Development Libraries +Group: Development/Libraries +Requires: %{name} = %{version}-%{release} %description devel GlusterFS is a clustered file-system capable of scaling to several @@ -200,175 +205,11 @@ is in user space and easily manageable. This package provides the development libraries. -%if 0%{?_with_swift:1} -%package swift - -Summary: GlusterFS OpenStack Object Storage -Group: Applications/System -License: ASL 2.0 -BuildArch: noarch - -Source10: http://launchpad.net/swift/essex/%{SWIFTVER}/+download/swift-%{SWIFTVER}.tar.gz -Source11: gluster-swift-functions -Source12: gluster-swift-account.init -Source13: gluster-swift-container.init -Source14: gluster-swift-object.init -Source15: gluster-swift-proxy.init -Patch3: openstack-swift-newdeps.patch -Patch4: openstack-swift-docmod.patch -Patch5: openstack-swift-nonet.patch -Patch6: glusterfs-3.3.0.swift.patch -#BuildRoot: %(mktemp -ud %{_tmppath}/swift-%{SWIFTVER}-%{release}-XXXXXX) - -BuildRequires: python-devel -BuildRequires: python-setuptools -BuildRequires: python-netifaces -%if ( 0%{?rhel} && 0%{?rhel} < 7 ) -BuildRequires: python-webob1.0 -BuildRequires: python-paste-deploy1.5 -%else -BuildRequires: python-webob -BuildRequires: python-paste-deploy -%endif -BuildRequires: dos2unix -Requires: python-configobj -Requires: python-eventlet >= 0.9.8 -Requires: python-greenlet >= 0.3.1 -Requires: python-paste-deploy -Requires: python-simplejson -Requires: pyxattr -Requires: python-setuptools -Requires: python-netifaces -Requires: python-netifaces - -Conflicts: openstack-swift - - -%description swift - -OpenStack Object Storage (swift) aggregates commodity servers to work together -in clusters for reliable, redundant, and large-scale storage of static objects. -Objects are written to multiple hardware devices in the data center, with the -OpenStack software responsible for ensuring data replication and integrity -across the cluster. Storage clusters can scale horizontally by adding new nodes, -which are automatically configured. Should a node fail, OpenStack works to -replicate its content from other active nodes. Because OpenStack uses software -logic to ensure data replication and distribution across different devices, -inexpensive commodity hard drives and servers can be used in lieu of more -expensive equipment. - - -%package swift-account -Summary: A swift account server -Group: Applications/System -License: ASL 2.0 -BuildArch: noarch -Requires: %{name}-swift = %{version}-%{release} - -%description swift-account -OpenStack Object Storage (swift) aggregates commodity servers to work together -in clusters for reliable, redundant, and large-scale storage of static objects. - -This package contains the %{name}-swift account server. - - -%package swift-container -Summary: A swift container server -Group: Applications/System -License: ASL 2.0 -BuildArch: noarch -Requires: %{name}-swift = %{version}-%{release} - -%description swift-container -OpenStack Object Storage (swift) aggregates commodity servers to work together -in clusters for reliable, redundant, and large-scale storage of static objects. - -This package contains the %{name}-swift container server. - -%package swift-object -Summary: A swift object server -Group: Applications/System -License: ASL 2.0 -BuildArch: noarch -Requires: %{name}-swift = %{version}-%{release} -Requires: rsync >= 3.0 - -%description swift-object -OpenStack Object Storage (swift) aggregates commodity servers to work together -in clusters for reliable, redundant, and large-scale storage of static objects. - -This package contains the %{name}-swift object server. - -%package swift-proxy -Summary: A swift proxy server -Group: Applications/System -License: ASL 2.0 -BuildArch: noarch -Requires: %{name}-swift = %{version}-%{release} - -%description swift-proxy -OpenStack Object Storage (swift) aggregates commodity servers to work together -in clusters for reliable, redundant, and large-scale storage of static objects. - -This package contains the %{name}-swift proxy server. - - -%package swift-doc -Summary: Documentation for %{name} -Group: Documentation -BuildArch: noarch -# Required for generating docs -BuildRequires: python-eventlet -BuildRequires: python-simplejson -%if ( 0%{?rhel} && 0%{?rhel} < 7 ) -BuildRequires: python-webob1.0 -BuildRequires: python-sphinx10 -%else -BuildRequires: python-webob -BuildRequires: python-sphinx -%endif -BuildRequires: pyxattr - -%description swift-doc -OpenStack Object Storage (swift) aggregates commodity servers to work together -in clusters for reliable, redundant, and large-scale storage of static objects. - -This package contains documentation files for %{name}-swift. - -%package swift-plugin -Summary: GlusterFS Unified File and Object Storage. -Group: Applications/System -License: ASL 2.0 -BuildArch: noarch -Requires: %{name}-swift = %{version}-%{release} -Requires: memcached -Requires: openssl -Requires: python -Source20: gluster-swift-plugins.tar.gz - -%description swift-plugin -Gluster Unified File and Object Storage unifies NAS and object storage -technology. This provides a system for data storage that enables users to access -the same data as an object and as a file, simplifying management and controlling -storage costs. - -%endif - %prep %setup -q -n %{name}-%{version} -%if 0%{?_with_swift:1} -%setup -q -T -D -n %{name}-%{version} -a 10 -%setup -q -T -D -n %{name}-%{version} -a 20 %patch0 -p0 %patch1 -p0 %patch2 -p0 -cd swift-%{SWIFTVER} -%patch3 -p1 -%patch4 -p1 -%patch5 -p1 -%patch6 -p1 -dos2unix LICENSE -%endif %build ./autogen.sh @@ -380,16 +221,6 @@ sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool %{__make} %{?_smp_mflags} -%if 0%{?_with_swift:1} -cd swift-%{SWIFTVER} -%{__python} setup.py build -%{__mkdir_p} doc/build -%if ( 0%{?fedora} ) -%{__python} setup.py build_sphinx -%endif -cd .. -%endif - %install %{__rm} -rf %{buildroot} %{__make} install DESTDIR=%{buildroot} @@ -415,6 +246,7 @@ cd .. %{__mkdir_p} %{buildroot}%{_localstatedir}/log/glusterfs %{__mkdir_p} %{buildroot}%{_localstatedir}/log/glusterfsd + # Remove unwanted files from all the shared libraries find %{buildroot}%{_libdir} -name '*.a' -delete find %{buildroot}%{_libdir} -name '*.la' -delete @@ -422,6 +254,11 @@ find %{buildroot}%{_libdir} -name '*.la' -delete # Remove installed docs, we include them ourselves as %%doc %{__rm} -rf %{buildroot}%{_datadir}/doc/glusterfs/ +# Rename the samples, so we can include them as %%config +for file in %{buildroot}%{_sysconfdir}/glusterfs/*.sample; do + %{__mv} ${file} `dirname ${file}`/`basename ${file} .sample` +done + # Create working directory %{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd @@ -429,6 +266,10 @@ find %{buildroot}%{_libdir} -name '*.la' -delete sed -i 's|option working-directory /etc/glusterd|option working-directory %{_sharedstatedir}/glusterd|g' \ %{buildroot}%{_sysconfdir}/glusterfs/glusterd.vol +# Clean up the examples we want to include as %%doc +%{__cp} -a doc/examples examples +%{__rm} -f examples/Makefile* + # Install init script and sysconfig file %_init_install %{SOURCE7} glusterd %_init_install %{SOURCE8} glusterfsd @@ -451,81 +292,9 @@ sed -i 's|option working-directory /etc/glusterd|option working-directory %{_sha %{__install} -D -p -m 0644 %{SOURCE6} \ %{buildroot}%{_sysconfdir}/logrotate.d/glusterfsd -%if 0%{!?_without_georeplication:1} -# geo-rep ghosts -%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/geo-replication -touch %{buildroot}%{_sharedstatedir}/glusterd/geo-replication/gsyncd.conf -%endif - -# the rest of the ghosts -touch %{buildroot}%{_sharedstatedir}/glusterd/glusterd.info -%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/hooks -%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/hooks/1 -%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/stop -%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/stop/post -%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/stop/pre -%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/start -%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/start/post -%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/start/pre -%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/remove-brick -%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/remove-brick/post -%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/remove-brick/pre -%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/add-brick -%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/add-brick/post -%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/add-brick/pre -%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/set -%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/set/post -%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/set/pre -%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/create -%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/create/post -%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/create/pre -%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/delete -%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/delete/post -%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/delete/pre -%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/glustershd -%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/vols -%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/nfs -%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/peers - -%if 0%{?_with_swift:1} -cd swift-%{SWIFTVER} -%{__python} setup.py install -O1 --skip-build --root %{buildroot} -# Init helper functions -%{__install} -p -D -m 644 %{SOURCE11} %{buildroot}%{_datarootdir}/gluster-swift/functions -# Init scripts -%{__install} -p -D -m 755 %{SOURCE12} %{buildroot}%{_initrddir}/gluster-swift-account -%{__install} -p -D -m 755 %{SOURCE13} %{buildroot}%{_initrddir}/gluster-swift-container -%{__install} -p -D -m 755 %{SOURCE14} %{buildroot}%{_initrddir}/gluster-swift-object -%{__install} -p -D -m 755 %{SOURCE15} %{buildroot}%{_initrddir}/gluster-swift-proxy -# Remove tests -%{__rm} -rf %{buildroot}/%{python_sitelib}/test -# Misc other -%{__install} -d -m 755 %{buildroot}%{_sysconfdir}/swift -%{__install} -d -m 755 %{buildroot}%{_sysconfdir}/swift/account-server -%{__install} -d -m 755 %{buildroot}%{_sysconfdir}/swift/container-server -%{__install} -d -m 755 %{buildroot}%{_sysconfdir}/swift/object-server -%{__install} -d -m 755 %{buildroot}%{_sysconfdir}/swift/proxy-server -# Install pid directory -%{__install} -d -m 755 %{buildroot}%{_localstatedir}/run/swift -%{__install} -d -m 755 %{buildroot}%{_localstatedir}/run/swift/account-server -%{__install} -d -m 755 %{buildroot}%{_localstatedir}/run/swift/container-server -%{__install} -d -m 755 %{buildroot}%{_localstatedir}/run/swift/object-server -%{__install} -d -m 755 %{buildroot}%{_localstatedir}/run/swift/proxy-server -cd .. - -%{__mkdir -p} %{buildroot}%{python_sitelib}/swift/plugins -#%{__mkdir -p} %{buildroot}%{_sysconfdir}/swift -cd plugins -%{__install} -p -D -m 755 constraints.py %{buildroot}%{python_sitelib}/swift/plugins -%{__install} -p -D -m 755 DiskDir.py %{buildroot}%{python_sitelib}/swift/plugins -%{__install} -p -D -m 755 DiskFile.py %{buildroot}%{python_sitelib}/swift/plugins -%{__install} -p -D -m 755 Glusterfs.py %{buildroot}%{python_sitelib}/swift/plugins -%{__install} -p -D -m 755 __init__.py %{buildroot}%{python_sitelib}/swift/plugins -%{__install} -p -D -m 755 utils.py %{buildroot}%{python_sitelib}/swift/plugins -cp -r conf/* %{buildroot}%{_sysconfdir}/swift -cd .. -%endif - +# Install vim syntax plugin +%{__install} -D -p -m 644 extras/glusterfs.vim \ + %{buildroot}%{_datadir}/vim/vimfiles/syntax/glusterfs.vim %clean %{__rm} -rf %{buildroot} @@ -538,26 +307,21 @@ cd .. %files %defattr(-,root,root,-) -%doc ChangeLog COPYING-GPLV2 COPYING-LGPLV3 INSTALL README THANKS +%doc ChangeLog COPYING INSTALL README THANKS %config(noreplace) %{_sysconfdir}/logrotate.d/glusterd %config(noreplace) %{_sysconfdir}/sysconfig/glusterd %{_libdir}/glusterfs %{_libdir}/*.so.* %{_sbindir}/glusterfs* +%{_sbindir}/gluster +%{_sbindir}/glusterd %{_libexecdir}/glusterfs -# %{_mandir}/man8/*gluster*.8* +%{_mandir}/man8/*gluster*.8* %dir %{_localstatedir}/log/glusterfs -%dir %{_sharedstatedir}/glusterd %if 0%{!?_without_rdma:1} %exclude %{_libdir}/glusterfs/%{version}/rpc-transport/rdma* %endif %exclude %{_libdir}/glusterfs/%{version}/xlator/mount/fuse* -%exclude %{_libdir}/glusterfs/%{version}/xlator/storage* -%exclude %{_libdir}/glusterfs/%{version}/xlator/features/posix* -%exclude %{_libdir}/glusterfs/%{version}/xlator/protocol/server* -%exclude %{_libdir}/glusterfs/%{version}/xlator/mgmt* -%exclude %{_libdir}/glusterfs/%{version}/xlator/nfs* - %if 0%{!?_without_rdma:1} %files rdma @@ -569,20 +333,20 @@ cd .. %post geo-replication #restart glusterd. %{_sysconfdir}/init.d/glusterd restart &> /dev/null +%endif +%if 0%{!?_without_georeplication:1} %files geo-replication %defattr(-,root,root) %{_libexecdir}/glusterfs/gsyncd %{_libexecdir}/glusterfs/python/syncdaemon/* -%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/geo-replication -%ghost %attr(0644,-,-) %{_sharedstatedir}/glusterd/geo-replication/gsyncd.conf %endif %files fuse %defattr(-,root,root,-) %config(noreplace) %{_sysconfdir}/logrotate.d/glusterfs-fuse %{_libdir}/glusterfs/%{version}/xlator/mount/fuse* -# %{_mandir}/man8/mount.glusterfs.8* +%{_mandir}/man8/mount.glusterfs.8* /sbin/mount.glusterfs /sbin/umount.glusterfs %if 0%{?_with_fusermount:1} @@ -592,53 +356,21 @@ cd .. %files server %defattr(-,root,root,-) +%doc examples/ doc/glusterfs*.vol.sample %config(noreplace) %{_sysconfdir}/logrotate.d/glusterd %config(noreplace) %{_sysconfdir}/sysconfig/glusterd %config(noreplace) %{_sysconfdir}/glusterfs # Legacy configs %config(noreplace) %{_sysconfdir}/logrotate.d/glusterfsd %config(noreplace) %{_sysconfdir}/sysconfig/glusterfsd +%{_sharedstatedir}/glusterd %_init_file1 %_init_file2 -%{_sbindir}/gluster -%{_sbindir}/glusterd -%{_libdir}/glusterfs/%{version}/xlator/storage* -%{_libdir}/glusterfs/%{version}/xlator/features/posix* -%{_libdir}/glusterfs/%{version}/xlator/protocol/server* -%{_libdir}/glusterfs/%{version}/xlator/mgmt* -%{_libdir}/glusterfs/%{version}/xlator/nfs* -%ghost %attr(0644,-,-) %{_sharedstatedir}/glusterd/glusterd.info -# This is really ugly, but I have no idea how to mark these directories in an -# other way. They should belong to the glusterfs-server package, but don't -# exist after installation. They are generated on the first start... -%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks -%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1 -%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/stop -%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/stop/post -%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/stop/pre -%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/start -%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/start/post -%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/start/pre -%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/remove-brick -%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/remove-brick/post -%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/remove-brick/pre -%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/add-brick -%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/add-brick/post -%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/add-brick/pre -%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/set -%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/set/post -%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/set/pre -%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/create -%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/create/post -%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/create/pre -%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/delete -%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/delete/post -%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/delete/pre -%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/glustershd -%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/vols -%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/nfs -%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/peers +%files vim +%defattr(-,root,root,-) +%doc COPYING +%{_datadir}/vim/vimfiles/syntax/glusterfs.vim %files devel %defattr(-,root,root,-) @@ -646,143 +378,11 @@ cd .. %exclude %{_includedir}/glusterfs/y.tab.h %{_libdir}/*.so -%if 0%{?_with_swift:1} -%files swift -%defattr(-,root,root,-) -%doc swift-%{SWIFTVER}/AUTHORS -%doc swift-%{SWIFTVER}/LICENSE -%doc swift-%{SWIFTVER}/README -%doc swift-%{SWIFTVER}/etc/dispersion.conf-sample -%doc swift-%{SWIFTVER}/etc/drive-audit.conf-sample -%doc swift-%{SWIFTVER}/etc/object-expirer.conf-sample -%doc swift-%{SWIFTVER}/etc/swift.conf-sample -%dir %{_datarootdir}/gluster-swift/functions -%dir %attr(0755, swift, swift) %{_localstatedir}/run/swift -%dir %{_sysconfdir}/swift -%dir %{python_sitelib}/swift -%{_bindir}/swift -%{_bindir}/swift-account-audit -%{_bindir}/swift-bench -%{_bindir}/swift-drive-audit -%{_bindir}/swift-get-nodes -%{_bindir}/swift-init -%{_bindir}/swift-ring-builder -%{_bindir}/swift-dispersion-populate -%{_bindir}/swift-dispersion-report -%{_bindir}/swift-recon* -%{_bindir}/swift-object-expirer -%{_bindir}/swift-oldies -%{_bindir}/swift-orphans -%{_bindir}/swift-form-signature -%{_bindir}/swift-temp-url -%{python_sitelib}/swift/*.py* -%{python_sitelib}/swift/common -%{python_sitelib}/swift-%{SWIFTVER}-*.egg-info - -%files swift-account -%defattr(-,root,root,-) -%doc swift-%{SWIFTVER}/etc/account-server.conf-sample -%dir %{_initrddir}/gluster-swift-account -%dir %attr(0755, swift, swift) %{_localstatedir}/run/swift/account-server -%dir %{_sysconfdir}/swift/account-server -%{_bindir}/swift-account-auditor -%{_bindir}/swift-account-reaper -%{_bindir}/swift-account-replicator -%{_bindir}/swift-account-server -%{python_sitelib}/swift/account - -%files swift-container -%defattr(-,root,root,-) -%doc swift-%{SWIFTVER}/etc/container-server.conf-sample -%dir %{_initrddir}/gluster-swift-container -%dir %attr(0755, swift, swift) %{_localstatedir}/run/swift/container-server -%dir %{_sysconfdir}/swift/container-server -%{_bindir}/swift-container-auditor -%{_bindir}/swift-container-server -%{_bindir}/swift-container-replicator -%{_bindir}/swift-container-updater -%{_bindir}/swift-container-sync -%{python_sitelib}/swift/container - -%files swift-object -%defattr(-,root,root,-) -%doc swift-%{SWIFTVER}/etc/object-server.conf-sample -%doc swift-%{SWIFTVER}/etc/rsyncd.conf-sample -%dir %{_initrddir}/gluster-swift-object -%dir %attr(0755, swift, swift) %{_localstatedir}/run/swift/object-server -%dir %{_sysconfdir}/swift/object-server -%{_bindir}/swift-object-auditor -%{_bindir}/swift-object-info -%{_bindir}/swift-object-replicator -%{_bindir}/swift-object-server -%{_bindir}/swift-object-updater -%{python_sitelib}/swift/obj - -%files swift-proxy -%defattr(-,root,root,-) -%doc swift-%{SWIFTVER}/etc/proxy-server.conf-sample -%dir %{_initrddir}/gluster-swift-proxy -%dir %attr(0755, swift, swift) %{_localstatedir}/run/swift/proxy-server -%dir %{_sysconfdir}/swift/proxy-server -%{_bindir}/swift-proxy-server -%{python_sitelib}/swift/proxy - -%files swift-doc -%defattr(-,root,root,-) -%doc swift-%{SWIFTVER}/LICENSE - -%files swift-plugin -%defattr(-,root,root,-) -%{python_sitelib}/swift/plugins -%{_sysconfdir}/swift -%endif - - %post server # Legacy server %_init_enable glusterd %_init_enable glusterfsd -# Genuine Fedora (and EPEL) builds never put gluster files in /etc; if -# there are any files in /etc from a prior gluster.org install, move them -# to /var/lib. (N.B. Starting with 3.3.0 all gluster files are in /var/lib -# in gluster.org RPMs.) Be careful to copy them on the off chance that -# /etc and /var/lib are on separate file systems -if [ -d /etc/glusterd ]; then - %{__mkdir_p} /var/lib - cp -a /etc/glusterd /var/lib - rm -rf /etc/glusterd - ln -sf /var/lib/glusterd /etc/glusterd -fi - -# Rename old volfiles in an RPM-standard way. These aren't actually -# considered package config files, so %config doesn't work for them. -if [ -d /var/lib/glusterd/vols ]; then - for file in $(find /var/lib/glusterd/vols -name '*.vol'); do - newfile=${file}.rpmsave - echo "warning: ${file} saved as ${newfile}" - cp ${file} ${newfile} - done -fi - -# add marker translator -# but first make certain that there are no old libs around to bite us -# BZ 834847 -if [ -e /etc/ld.so.conf.d/glusterfs.conf ]; then - rm -f /etc/ld.so.conf.d/glusterfs.conf - /sbin/ldconfig -fi -pidof -c -o %PPID -x glusterd &> /dev/null -if [ $? -eq 0 ]; then - kill -9 `pgrep -f gsyncd.py` &> /dev/null - - killall glusterd &> /dev/null - glusterd --xlator-option *.upgrade=on -N -else - glusterd --xlator-option *.upgrade=on -N -fi - - %preun server if [ $1 -eq 0 ]; then %_init_stop glusterfsd @@ -795,74 +395,10 @@ if [ $1 -ge 1 ]; then %_init_restart glusterfsd fi - -%if 0%{?_with_swift:1} -%pre swift -getent group swift >/dev/null || groupadd -r swift -g 160 -getent passwd swift >/dev/null || \ -useradd -r -g swift -u 160 -d %{_sharedstatedir}/swift -s /sbin/nologin \ --c "OpenStack Swift Daemons" swift -exit 0 - -%post swift-account -/sbin/chkconfig --add gluster-swift-account - -%preun swift-account -if [ $1 = 0 ] ; then - /sbin/service gluster-swift-account stop >/dev/null 2>&1 - /sbin/chkconfig --del gluster-swift-account -fi - -%postun swift-account -if [ "$1" -ge "1" ] ; then - /sbin/service gluster-swift-account condrestart >/dev/null 2>&1 || : -fi - -%post swift-container -/sbin/chkconfig --add gluster-swift-container - -%preun swift-container -if [ $1 = 0 ] ; then - /sbin/service gluster-swift-container stop >/dev/null 2>&1 - /sbin/chkconfig --del gluster-swift-container -fi - -%postun swift-container -if [ "$1" -ge "1" ] ; then - /sbin/service gluster-swift-container condrestart >/dev/null 2>&1 || : -fi - -%post swift-object -/sbin/chkconfig --add gluster-swift-object - -%preun swift-object -if [ $1 = 0 ] ; then - /sbin/service gluster-swift-object stop >/dev/null 2>&1 - /sbin/chkconfig --del gluster-swift-object -fi - -%postun swift-object -if [ "$1" -ge "1" ] ; then - /sbin/service gluster-swift-object condrestart >/dev/null 2>&1 || : -fi - -%post swift-proxy -/sbin/chkconfig --add gluster-swift-proxy - -%preun swift-proxy -if [ $1 = 0 ] ; then - /sbin/service gluster-swift-proxy stop >/dev/null 2>&1 - /sbin/chkconfig --del gluster-swift-proxy -fi - -%postun swift-proxy -if [ "$1" -ge "1" ] ; then - /sbin/service gluster-swift-proxy condrestart >/dev/null 2>&1 || : -fi -%endif - - %changelog +* Mon Aug 27 2012 Kaleb S. KEITHLEY - 3.2.7-2 +- fix SEGV in glusterd-rpc-ops.c, BZ 837684, f17 only. + * Wed Aug 12 2012 Kaleb S. KEITHLEY - 3.3.0-5 - now with UFO (openstack-swift) except on el5 @@ -876,6 +412,9 @@ fi * Thu Jul 5 2012 Kaleb S. KEITHLEY - 3.3.0-2 - selected fixes to glusterfs.spec for BZs 826836, 826855, 829734, 834847 +* Mon Jun 11 2012 Kaleb S. KEITHLEY - 3.2.7-1 +- Update to 3.2.7 + * Thu May 31 2012 Kaleb S. KEITHLEY - 3.3.0-1 - Update to 3.3.0 diff --git a/sources b/sources index 0e24a6b..b67b22a 100644 --- a/sources +++ b/sources @@ -1,2 +1 @@ -3ddf782421f54c60b9da9607b0c32ec1 glusterfs-3.3.0.tar.gz -785ae9ba4e1f6fc256cd6a697bb2861f swift-1.4.8.tar.gz +74c36a0dac00e25d1b0b21100b04a281 glusterfs-3.2.7.tar.gz