Hello community, here is the log from the commit of package ocfs2-tools for openSUSE:Factory checked in at 2014-01-10 07:16:15 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/ocfs2-tools (Old) and /work/SRC/openSUSE:Factory/.ocfs2-tools.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ocfs2-tools" Changes: -------- --- /work/SRC/openSUSE:Factory/ocfs2-tools/ocfs2-tools.changes 2013-10-09 09:44:55.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.ocfs2-tools.new/ocfs2-tools.changes 2014-01-10 07:16:16.000000000 +0100 @@ -1,0 +2,20 @@ +Fri Dec 27 17:56:21 UTC 2013 - [email protected] + +- Patch re-factoring, so that we don't have to compile with ldlm + + 0001-Use-cmap-for-getting-cluster-name.patch + + 0002-Remove-controld-dependency-in-group_join-leave.patch + + 0003-Auto-setup-cluster_stack-based-on-what-is-on-disk.patch + + 0004-mkfs.ocfs2-Abort-if-cluster-information-is-not-detec.patch + + 0005-mkfs-Setup-cluster_stack-if-not-setup-based-on-what-.patch + - 0001-libo2cb-Remove-controld-actions-from-group-join-leav.patch + - 0002-libo2cb-Remove-rest-of-controld-functions.patch + - 0003-Get-cluster-name-from-corosync-cmap.patch + - 0004-Remove-controld-structures-from-debugfs.ocfs2.patch + - 0005-Check-for-DLM-kernel-version-in-user_begin_group_joi.patch + - 0006-Add-cmap-and-dlm-libraries-in-the-tools.patch + - 0008-mount.ocfs2-Read-stack-from-device-and-setup-stack-i.patch + - 0009-mkfs.ocfs2-Abort-if-cluster-information-is-not-detec.patch + - 0010-mkfs-Setup-cluster_stack-if-not-setup-based-on-what-.patch + - 0011-Use-dlm_lt-instead-of-dlm-for-DLM-libraries.patch + +------------------------------------------------------------------- Old: ---- 0001-libo2cb-Remove-controld-actions-from-group-join-leav.patch 0002-libo2cb-Remove-rest-of-controld-functions.patch 0003-Get-cluster-name-from-corosync-cmap.patch 0004-Remove-controld-structures-from-debugfs.ocfs2.patch 0005-Check-for-DLM-kernel-version-in-user_begin_group_joi.patch 0006-Add-cmap-and-dlm-libraries-in-the-tools.patch 0007-Use-libdlm_lt.so.3-instead-of-libdlm_lt.so.patch 0008-mount.ocfs2-Read-stack-from-device-and-setup-stack-i.patch 0009-mkfs.ocfs2-Abort-if-cluster-information-is-not-detec.patch 0010-mkfs-Setup-cluster_stack-if-not-setup-based-on-what-.patch 0011-Use-dlm_lt-instead-of-dlm-for-DLM-libraries.patch New: ---- 0001-Use-cmap-for-getting-cluster-name.patch 0002-Remove-controld-dependency-in-group_join-leave.patch 0003-Auto-setup-cluster_stack-based-on-what-is-on-disk.patch 0004-mkfs.ocfs2-Abort-if-cluster-information-is-not-detec.patch 0005-mkfs-Setup-cluster_stack-if-not-setup-based-on-what-.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ ocfs2-tools.spec ++++++ --- /var/tmp/diff_new_pack.ZXKX7B/_old 2014-01-10 07:16:17.000000000 +0100 +++ /var/tmp/diff_new_pack.ZXKX7B/_new 2014-01-10 07:16:17.000000000 +0100 @@ -1,7 +1,7 @@ # # spec file for package ocfs2-tools # -# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -47,16 +47,11 @@ Patch215: ocfs2console-libraries-include-aio.patch Patch220: libocfs2-needs-libaio.patch Patch221: libocfs2-Change-asserts-to-error.patch -Patch222: 0001-libo2cb-Remove-controld-actions-from-group-join-leav.patch -Patch223: 0002-libo2cb-Remove-rest-of-controld-functions.patch -Patch224: 0003-Get-cluster-name-from-corosync-cmap.patch -Patch225: 0004-Remove-controld-structures-from-debugfs.ocfs2.patch -Patch226: 0005-Check-for-DLM-kernel-version-in-user_begin_group_joi.patch -Patch227: 0006-Add-cmap-and-dlm-libraries-in-the-tools.patch -Patch228: 0008-mount.ocfs2-Read-stack-from-device-and-setup-stack-i.patch -Patch229: 0009-mkfs.ocfs2-Abort-if-cluster-information-is-not-detec.patch -Patch230: 0010-mkfs-Setup-cluster_stack-if-not-setup-based-on-what-.patch -Patch231: 0011-Use-dlm_lt-instead-of-dlm-for-DLM-libraries.patch +Patch222: 0001-Use-cmap-for-getting-cluster-name.patch +Patch223: 0002-Remove-controld-dependency-in-group_join-leave.patch +Patch224: 0003-Auto-setup-cluster_stack-based-on-what-is-on-disk.patch +Patch225: 0004-mkfs.ocfs2-Abort-if-cluster-information-is-not-detec.patch +Patch226: 0005-mkfs-Setup-cluster_stack-if-not-setup-based-on-what-.patch BuildRequires: autoconf BuildRequires: e2fsprogs-devel @@ -173,11 +168,6 @@ %patch224 -p1 %patch225 -p1 %patch226 -p1 -%patch227 -p1 -%patch228 -p1 -%patch229 -p1 -%patch230 -p1 -%patch231 -p1 %build export PROJECT="ocfs2-tools" ++++++ 0001-Use-cmap-for-getting-cluster-name.patch ++++++ >From 1110d13d756406a6188299bf68db4743cf7c41a3 Mon Sep 17 00:00:00 2001 From: Goldwyn Rodrigues <[email protected]> Date: Sat, 21 Dec 2013 18:41:04 -0600 Subject: [PATCH] Use cmap for getting cluster name --- debugfs.ocfs2/Makefile | 2 +- libo2cb/o2cb_abi.c | 79 +++++++++++++++++++++++++++----------------------- o2cb.pc.in | 2 +- o2cb_ctl/Makefile | 2 +- 4 files changed, 46 insertions(+), 39 deletions(-) diff --git a/debugfs.ocfs2/Makefile b/debugfs.ocfs2/Makefile index ca4c9a4..30dfa5f 100644 --- a/debugfs.ocfs2/Makefile +++ b/debugfs.ocfs2/Makefile @@ -32,7 +32,7 @@ HFILES = \ OBJS = $(subst .c,.o,$(CFILES)) LIBOCFS2_LIBS = -L$(TOPDIR)/libocfs2 -locfs2 -LIBO2CB_LIBS = -L$(TOPDIR)/libo2cb -lo2cb +LIBO2CB_LIBS = -L$(TOPDIR)/libo2cb -lo2cb $(DL_LIBS) MANS = debugfs.ocfs2.8 diff --git a/libo2cb/o2cb_abi.c b/libo2cb/o2cb_abi.c index ae03595..40f8176 100644 --- a/libo2cb/o2cb_abi.c +++ b/libo2cb/o2cb_abi.c @@ -35,6 +35,8 @@ #include <errno.h> #include <limits.h> #include <ctype.h> +#include <dlfcn.h> +#include <corosync/cmap.h> #include <linux/types.h> @@ -1966,52 +1968,57 @@ static errcode_t classic_list_clusters(char ***clusters) static errcode_t user_list_clusters(char ***clusters) { - errcode_t err = O2CB_ET_SERVICE_UNAVAILABLE; - int rc, fd = -1; - char buf[OCFS2_CONTROLD_MAXLINE]; + errcode_t ret = O2CB_ET_SERVICE_UNAVAILABLE; + void *lib_handle = NULL; + char **list; + int rv; - rc = ocfs2_client_connect(); - if (rc < 0) { - /* fprintf(stderr, "Unable to connect to ocfs2_controld: %s\n", - strerror(-rc)); */ - switch (rc) { - case -EACCES: - case -EPERM: - err = O2CB_ET_PERMISSION_DENIED; - break; + cmap_handle_t handle; + static int (*initialize)(cmap_handle_t *handle); + static int (*get_string)(cmap_handle_t handle, + const char *string, + char **name); + static int (*finalize)(cmap_handle_t handle); - default: - err = O2CB_ET_SERVICE_UNAVAILABLE; - break; - } + + lib_handle = dlopen("libcmap.so", RTLD_NOW | RTLD_LOCAL); + if (!lib_handle) + return ret; + + initialize = dlsym(lib_handle, "cmap_initialize"); + if (!initialize) goto out; - } - fd = rc; - rc = send_message(fd, CM_LISTCLUSTERS); - if (rc) { - /* fprintf(stderr, - "Unable to send LISTCLUSTERS message: %s\n", - strerror(-rc)); */ - err = O2CB_ET_IO; + get_string = dlsym(lib_handle, "cmap_get_string"); + if (!get_string) goto out; - } - rc = receive_list(fd, buf, clusters); - if (rc) { - /* fprintf(stderr, "Error reading from daemon: %s\n", - strerror(-rc)); */ - err = O2CB_ET_IO; + finalize = dlsym(lib_handle, "cmap_finalize"); + if (!finalize) goto out; - } - err = 0; + rv = initialize(&handle); + if (rv != CS_OK) + goto out; -out: - if (fd != -1) - close(fd); + list = (char **)malloc(sizeof(char *) * 2); + if (!list) + goto out; - return err; + rv = get_string(handle, "totem.cluster_name", &list[0]); + if (rv != CS_OK) { + free(list); + ret = O2CB_ET_INTERNAL_FAILURE; + goto out; + } + + list[1] = NULL; + *clusters = list; + finalize(handle); + ret = 0; +out: + dlclose(lib_handle); + return ret; } errcode_t o2cb_list_clusters(char ***clusters) diff --git a/o2cb.pc.in b/o2cb.pc.in index be94b8a..f13c560 100644 --- a/o2cb.pc.in +++ b/o2cb.pc.in @@ -7,5 +7,5 @@ Name: o2cb Description: Library for accessing the ocfs2 cluster base (o2cb) Version: @VERSION@ Requires: com_err -Libs: -L${libdir} -lo2cb +Libs: -L${libdir} -lo2cb -ldl Cflags: -I${includedir} diff --git a/o2cb_ctl/Makefile b/o2cb_ctl/Makefile index 5efcab4..8589748 100644 --- a/o2cb_ctl/Makefile +++ b/o2cb_ctl/Makefile @@ -13,7 +13,7 @@ LIBTOOLS_INTERNAL_DEPS = $(TOPDIR)/libtools-internal/libtools-internal.a LIBOCFS2_LIBS = -L$(TOPDIR)/libocfs2 -locfs2 LIBOCFS2_DEPS = $(TOPDIR)/libocfs2/libocfs2.a -LIBO2CB_LIBS = -L$(TOPDIR)/libo2cb -lo2cb +LIBO2CB_LIBS = -L$(TOPDIR)/libo2cb -lo2cb $(DL_LIBS) LIBO2CB_DEPS = $(TOPDIR)/libo2cb/libo2cb.a LIBO2DLM_LIBS = -L$(TOPDIR)/libo2dlm -lo2dlm $(DL_LIBS) -- 1.8.4 ++++++ 0002-Remove-controld-dependency-in-group_join-leave.patch ++++++ >From c863784d971acd7efddc415d5140b8846799162e Mon Sep 17 00:00:00 2001 From: Goldwyn Rodrigues <[email protected]> Date: Fri, 27 Dec 2013 09:20:52 -0600 Subject: [PATCH] Remove controld dependency in group_join/leave --- libo2cb/o2cb_abi.c | 156 +++-------------------------------------------------- 1 file changed, 7 insertions(+), 149 deletions(-) diff --git a/libo2cb/o2cb_abi.c b/libo2cb/o2cb_abi.c index 40f8176..5eca49d 100644 --- a/libo2cb/o2cb_abi.c +++ b/libo2cb/o2cb_abi.c @@ -1373,164 +1373,22 @@ static errcode_t user_parse_status(char **args, int *error, char **error_msg) } static errcode_t user_begin_group_join(struct o2cb_cluster_desc *cluster, - struct o2cb_region_desc *region) + struct o2cb_region_desc *region) { - errcode_t err; - int rc; - int error; - char *error_msg; - client_message message; - char *argv[OCFS2_CONTROLD_MAXARGS + 1]; - char buf[OCFS2_CONTROLD_MAXLINE]; - - if (control_daemon_fd != -1) { - /* fprintf(stderr, "Join already in progress!\n"); */ - err = O2CB_ET_INTERNAL_FAILURE; - goto out; - } - - rc = ocfs2_client_connect(); - if (rc < 0) { - /* fprintf(stderr, "Unable to connect to ocfs2_controld: %s\n", - strerror(-rc)); */ - switch (rc) { - case -EACCES: - case -EPERM: - err = O2CB_ET_PERMISSION_DENIED; - break; - - default: - err = O2CB_ET_SERVICE_UNAVAILABLE; - break; - } - goto out; - } - control_daemon_fd = rc; - - rc = send_message(control_daemon_fd, CM_MOUNT, OCFS2_FS_NAME, - region->r_name, cluster->c_cluster, - region->r_device_name, region->r_service); - if (rc) { - /* fprintf(stderr, "Unable to send MOUNT message: %s\n", - strerror(-rc)); */ - err = O2CB_ET_IO; - goto out; - } - - rc = receive_message(control_daemon_fd, buf, &message, argv); - if (rc < 0) { - /* fprintf(stderr, "Error reading from daemon: %s\n", - strerror(-rc)); */ - err = O2CB_ET_IO; - goto out; - } - - switch (message) { - case CM_STATUS: - err = user_parse_status(argv, &error, &error_msg); - if (err) { - /* fprintf(stderr, "Bad status message: %s\n", - strerror(-rc)); */ - goto out; - } - if (error && (error != EALREADY)) { - /* fprintf(stderr, - "Error %d from daemon: %s\n", - error, error_msg); */ - err = O2CB_ET_CONFIGURATION_ERROR; - goto out; - } - break; - - default: - /* fprintf(stderr, - "Unexpected message %s from daemon\n", - message_to_string(message)); */ - err = O2CB_ET_INTERNAL_FAILURE; - goto out; - break; - } - - err = 0; + errcode_t ret = 0; -out: - if (err && (control_daemon_fd != -1)) { - close(control_daemon_fd); - control_daemon_fd = -1; - } + ret = o2cb_validate_cluster_name(cluster); + if (ret) + return ret; - return err; + return ret; } static errcode_t user_complete_group_join(struct o2cb_cluster_desc *cluster, struct o2cb_region_desc *region, int result) { - errcode_t err = O2CB_ET_SERVICE_UNAVAILABLE; - int rc; - int error; - char *error_msg; - client_message message; - char *argv[OCFS2_CONTROLD_MAXARGS + 1]; - char buf[OCFS2_CONTROLD_MAXLINE]; - - if (control_daemon_fd == -1) { - /* fprintf(stderr, "Join not started!\n"); */ - err = O2CB_ET_SERVICE_UNAVAILABLE; - goto out; - } - - rc = send_message(control_daemon_fd, CM_MRESULT, OCFS2_FS_NAME, - region->r_name, result, region->r_service); - if (rc) { - /* fprintf(stderr, "Unable to send MRESULT message: %s\n", - strerror(-rc)); */ - err = O2CB_ET_IO; - goto out; - } - - rc = receive_message(control_daemon_fd, buf, &message, argv); - if (rc < 0) { - /* fprintf(stderr, "Error reading from daemon: %s\n", - strerror(-rc)); */ - err = O2CB_ET_IO; - goto out; - } - - switch (message) { - case CM_STATUS: - err = user_parse_status(argv, &error, &error_msg); - if (err) { - /* fprintf(stderr, "Bad status message: %s\n", - strerror(-rc)); */ - goto out; - } - if (error) { - /* fprintf(stderr, - "Error %d from daemon: %s\n", - error, error_msg); */ - err = O2CB_ET_CONFIGURATION_ERROR; - } - break; - - default: - /* fprintf(stderr, - "Unexpected message %s from daemon\n", - message_to_string(message)); */ - err = O2CB_ET_INTERNAL_FAILURE; - goto out; - break; - } - - err = 0; - -out: - if (control_daemon_fd != -1) { - close(control_daemon_fd); - control_daemon_fd = -1; - } - - return err; + return 0; } static errcode_t user_group_leave(struct o2cb_cluster_desc *cluster, -- 1.8.4 ++++++ 0003-Auto-setup-cluster_stack-based-on-what-is-on-disk.patch ++++++ >From 4b99b5a6042fe9b33079df64ab13817a309de528 Mon Sep 17 00:00:00 2001 From: Goldwyn Rodrigues <[email protected]> Date: Fri, 27 Dec 2013 09:52:09 -0600 Subject: [PATCH] Auto setup cluster_stack based on what is on disk This happens only the first time. mount.ocfs2 reads the stack from the filesystems superblock. If the stack is not setup, it will modprobe the modules and write the appropriate stack name to cluster_stack file. If it is already present, it tries to edit/re-write it, if different. If it fails, the mount fails. --- include/o2cb/o2cb.h | 1 + libo2cb/o2cb_abi.c | 104 ++++++++++++++++++++++++++++++++++++++++++++++ mount.ocfs2/mount.ocfs2.c | 6 +++ 3 files changed, 111 insertions(+) diff --git a/include/o2cb/o2cb.h b/include/o2cb/o2cb.h index d512cf9..5ef9754 100644 --- a/include/o2cb/o2cb.h +++ b/include/o2cb/o2cb.h @@ -208,5 +208,6 @@ void o2cb_control_close(void); errcode_t o2cb_control_node_down(const char *uuid, unsigned int nodeid); errcode_t o2cb_get_hb_ctl_path(char *buf, int count); +errcode_t o2cb_setup_stack(char *stack_name); #endif /* _O2CB_H */ diff --git a/libo2cb/o2cb_abi.c b/libo2cb/o2cb_abi.c index 5eca49d..c751abf 100644 --- a/libo2cb/o2cb_abi.c +++ b/libo2cb/o2cb_abi.c @@ -29,6 +29,7 @@ #include <sys/ioctl.h> #include <sys/ipc.h> #include <sys/sem.h> +#include <sys/wait.h> #include <dirent.h> #include <fcntl.h> #include <unistd.h> @@ -145,6 +146,22 @@ static ssize_t read_single_line_file(const char *file, char *line, return ret; } +static int write_single_line_file(char *filename, char *line, size_t count) +{ + ssize_t ret = 0; + FILE *f; + + f = fopen(filename, "w"); + if (f) { + if (fputs(line, f)) + ret = strlen(line); + fclose(f); + } else + ret = -errno; + + return ret; +} + static ssize_t read_stack_file(char *line, size_t count) { return read_single_line_file(CLUSTER_STACK_FILE, line, count); @@ -2383,3 +2400,90 @@ errcode_t o2cb_get_hb_ctl_path(char *buf, int count) return 0; } + +#define MODPROBE_COMMAND "/sbin/modprobe" +#define USER_KERNEL_MODULE "ocfs2_stack_user" +#define O2CB_KERNEL_MODULE "ocfs2_stack_o2cb" + +static int perform_modprobe(char *module_name) +{ + pid_t child; + int child_status; + + char *argv[3]; + + argv[0] = MODPROBE_COMMAND; + argv[1] = module_name; + argv[2] = NULL; + + child = fork(); + if (child == 0) { + execv(MODPROBE_COMMAND, argv); + /* If execv fails, we have a problem */ + return -EINVAL; + } else + wait(&child_status); + + return child_status; +} + +errcode_t o2cb_setup_stack(char *stack_name) +{ + char line[64]; + int modprobe_performed = 0, write_performed = 0; + errcode_t err = O2CB_ET_SERVICE_UNAVAILABLE; + int len; + +redo: + len = read_single_line_file(CLUSTER_STACK_FILE, line, sizeof(line)); + + if (len > 0) { + if (line[len - 1] == '\n') { + line[len - 1] = '\0'; + len--; + } + + if (len != OCFS2_STACK_LABEL_LEN) { + err = O2CB_ET_INTERNAL_FAILURE; + goto out; + } + + if (!strncmp(line, stack_name, OCFS2_STACK_LABEL_LEN)) { + err = 0; + goto out; + } + + if (!write_performed) { + write_single_line_file(CLUSTER_STACK_FILE, stack_name, + strlen(stack_name)); + write_performed = 1; + goto redo; + } + + } else if (len == -ENOENT) { + if (!modprobe_performed) { + perform_modprobe("ocfs2"); + if ((!strncmp(stack_name, OCFS2_PCMK_CLUSTER_STACK, + OCFS2_STACK_LABEL_LEN)) || + (!strncmp(stack_name, OCFS2_CMAN_CLUSTER_STACK, + OCFS2_STACK_LABEL_LEN))) + perform_modprobe(USER_KERNEL_MODULE); + else if (!strncmp(stack_name, classic_stack.s_name, + OCFS2_STACK_LABEL_LEN)) + perform_modprobe(O2CB_KERNEL_MODULE); + + write_single_line_file(CLUSTER_STACK_FILE, stack_name, + OCFS2_STACK_LABEL_LEN); + write_performed = 1; + goto redo; + } else + err = O2CB_ET_INTERNAL_FAILURE; + } else { + err = O2CB_ET_INTERNAL_FAILURE; + goto out; + } + + err = 0; +out: + return err; +} diff --git a/mount.ocfs2/mount.ocfs2.c b/mount.ocfs2/mount.ocfs2.c index f2ca5cb..c009d82 100644 --- a/mount.ocfs2/mount.ocfs2.c +++ b/mount.ocfs2/mount.ocfs2.c @@ -357,6 +357,12 @@ int main(int argc, char **argv) if (verbose) printf("device=%s\n", mo.dev); + ret = o2cb_setup_stack((char *)OCFS2_RAW_SB(fs->fs_super)->s_cluster_info.ci_stack); + if (ret) { + com_err(progname, ret, "while setting up stack\n"); + goto bail; + } + if (clustered) { ret = o2cb_init(); if (ret) { -- 1.8.4 ++++++ 0009-mkfs.ocfs2-Abort-if-cluster-information-is-not-detec.patch -> 0004-mkfs.ocfs2-Abort-if-cluster-information-is-not-detec.patch ++++++ --- /work/SRC/openSUSE:Factory/ocfs2-tools/0009-mkfs.ocfs2-Abort-if-cluster-information-is-not-detec.patch 2013-10-09 09:44:54.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.ocfs2-tools.new/0004-mkfs.ocfs2-Abort-if-cluster-information-is-not-detec.patch 2014-01-10 07:16:16.000000000 +0100 @@ -1,6 +1,6 @@ -From 14c5f3788b047024390c1a1ae40a0585417ed0d9 Mon Sep 17 00:00:00 2001 +From f7ea242d2bf76c71cfe7fd9555d44c2486610486 Mon Sep 17 00:00:00 2001 From: Goldwyn Rodrigues <[email protected]> -Date: Wed, 4 Sep 2013 23:56:39 -0500 +Date: Fri, 27 Dec 2013 10:01:33 -0600 Subject: [PATCH] mkfs.ocfs2: Abort if cluster information is not detected --- @@ -82,5 +82,5 @@ int ocfs2_fill_cluster_information(State *s); int ocfs2_check_volume(State *s); -- -1.8.1.4 +1.8.4 ++++++ 0010-mkfs-Setup-cluster_stack-if-not-setup-based-on-what-.patch -> 0005-mkfs-Setup-cluster_stack-if-not-setup-based-on-what-.patch ++++++ --- /work/SRC/openSUSE:Factory/ocfs2-tools/0010-mkfs-Setup-cluster_stack-if-not-setup-based-on-what-.patch 2013-10-09 09:44:54.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.ocfs2-tools.new/0005-mkfs-Setup-cluster_stack-if-not-setup-based-on-what-.patch 2014-01-10 07:16:16.000000000 +0100 @@ -1,6 +1,6 @@ -From 007b8d8d784a4108d5bde3cf1d0f1289a73957fd Mon Sep 17 00:00:00 2001 +From 8d9ac69db21d36c6e05a58a38da1091bbb70956d Mon Sep 17 00:00:00 2001 From: Goldwyn Rodrigues <[email protected]> -Date: Tue, 1 Oct 2013 09:39:17 -0500 +Date: Fri, 27 Dec 2013 10:05:23 -0600 Subject: [PATCH] mkfs: Setup cluster_stack if not setup based on what is set --- @@ -28,5 +28,5 @@ if (ret) { com_err(s->progname, ret, -- -1.8.1.4 +1.8.4 -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
