diff options
| author | Gluster Ant <bugzilla-bot@gluster.org> | 2018-09-12 17:52:45 +0530 | 
|---|---|---|
| committer | Nigel Babu <nigelb@redhat.com> | 2018-09-12 17:52:45 +0530 | 
| commit | e16868dede6455cab644805af6fe1ac312775e13 (patch) | |
| tree | 15aebdb4fff2d87cf8a72f836816b3aa634da58d /extras/stripe-merge.c | |
| parent | 45a71c0548b6fd2c757aa2e7b7671a1411948894 (diff) | |
Land part 2 of clang-format changes
Change-Id: Ia84cc24c8924e6d22d02ac15f611c10e26db99b4
Signed-off-by: Nigel Babu <nigelb@redhat.com>
Diffstat (limited to 'extras/stripe-merge.c')
| -rw-r--r-- | extras/stripe-merge.c | 687 | 
1 files changed, 348 insertions, 339 deletions
diff --git a/extras/stripe-merge.c b/extras/stripe-merge.c index 332690eea66..e013a6e6e8a 100644 --- a/extras/stripe-merge.c +++ b/extras/stripe-merge.c @@ -40,33 +40,33 @@  #define INVALID_MODE UINT32_MAX  struct file_stripe_info { -	int stripe_count; -	int stripe_size; -	int coalesce; -	mode_t mode; -	int fd[0]; +    int stripe_count; +    int stripe_size; +    int coalesce; +    mode_t mode; +    int fd[0];  }; -static int close_files(struct file_stripe_info *); +static int +close_files(struct file_stripe_info *); -static struct -file_stripe_info *alloc_file_stripe_info(int count) +static struct file_stripe_info * +alloc_file_stripe_info(int count)  { -	int i; -	struct file_stripe_info *finfo; +    int i; +    struct file_stripe_info *finfo; -	finfo = calloc(1, sizeof(struct file_stripe_info) + -		(sizeof(int) * count)); -	if (!finfo) -		return NULL; +    finfo = calloc(1, sizeof(struct file_stripe_info) + (sizeof(int) * count)); +    if (!finfo) +        return NULL; -	for (i = 0; i < count; i++) -		finfo->fd[i] = INVALID_FD; +    for (i = 0; i < count; i++) +        finfo->fd[i] = INVALID_FD; -	finfo->mode = INVALID_MODE; -	finfo->coalesce = INVALID_FD; +    finfo->mode = INVALID_MODE; +    finfo->coalesce = INVALID_FD; -	return finfo; +    return finfo;  }  /* @@ -77,39 +77,39 @@ file_stripe_info *alloc_file_stripe_info(int count)  static int  get_stripe_attr_name(const char *path, const char *pattern, char **attrname)  { -	char attrbuf[4096]; -	char *ptr, *match = NULL; -	int len, r, match_count = 0; - -	if (!path || !pattern || !attrname) -		return -1; - -	len = listxattr(path, attrbuf, sizeof(attrbuf)); -	if (len < 0) -		return len; - -	ptr = attrbuf; -	while (ptr) { -		r = fnmatch(pattern, ptr, 0); -		if (!r) { -			if (!match) -				match = ptr; -			match_count++; -		} else if (r != FNM_NOMATCH) { -			return -1; -		} - -		len -= strlen(ptr) + 1; -		if (len > 0) -			ptr += strlen(ptr) + 1; -		else -			ptr = NULL; -	} - -	if (match) -		*attrname = strdup(match); - -	return match_count; +    char attrbuf[4096]; +    char *ptr, *match = NULL; +    int len, r, match_count = 0; + +    if (!path || !pattern || !attrname) +        return -1; + +    len = listxattr(path, attrbuf, sizeof(attrbuf)); +    if (len < 0) +        return len; + +    ptr = attrbuf; +    while (ptr) { +        r = fnmatch(pattern, ptr, 0); +        if (!r) { +            if (!match) +                match = ptr; +            match_count++; +        } else if (r != FNM_NOMATCH) { +            return -1; +        } + +        len -= strlen(ptr) + 1; +        if (len > 0) +            ptr += strlen(ptr) + 1; +        else +            ptr = NULL; +    } + +    if (match) +        *attrname = strdup(match); + +    return match_count;  }  /* @@ -118,19 +118,19 @@ get_stripe_attr_name(const char *path, const char *pattern, char **attrname)  static int  get_stripe_attr_val(const char *path, const char *attr, int *val)  { -	char attrbuf[4096]; -	int len; +    char attrbuf[4096]; +    int len; -	if (!path || !attr || !val) -		return -1; +    if (!path || !attr || !val) +        return -1; -	len = getxattr(path, attr, attrbuf, sizeof(attrbuf)); -	if (len < 0) -		return len; +    len = getxattr(path, attr, attrbuf, sizeof(attrbuf)); +    if (len < 0) +        return len; -	*val = atoi(attrbuf); +    *val = atoi(attrbuf); -	return 0; +    return 0;  }  /* @@ -145,29 +145,31 @@ get_stripe_attr_val(const char *path, const char *attr, int *val)  static int  get_attr(const char *path, const char *pattern, char **buf, int *val)  { -	int count = 1; - -	if (!buf) -		return -1; - -	if (!*buf) { -		count = get_stripe_attr_name(path, pattern, buf); -		if (count > 1) { -			/* pattern isn't good enough */ -			fprintf(stderr, "ERROR: duplicate attributes found " -				"matching pattern: %s\n", pattern); -			free(*buf); -			*buf = NULL; -			return count; -		} else if (count < 1) { -			return count; -		} -	} - -	if (get_stripe_attr_val(path, *buf, val) < 0) -		return -1; - -	return count; +    int count = 1; + +    if (!buf) +        return -1; + +    if (!*buf) { +        count = get_stripe_attr_name(path, pattern, buf); +        if (count > 1) { +            /* pattern isn't good enough */ +            fprintf(stderr, +                    "ERROR: duplicate attributes found " +                    "matching pattern: %s\n", +                    pattern); +            free(*buf); +            *buf = NULL; +            return count; +        } else if (count < 1) { +            return count; +        } +    } + +    if (get_stripe_attr_val(path, *buf, val) < 0) +        return -1; + +    return count;  }  /* @@ -178,164 +180,168 @@ get_attr(const char *path, const char *pattern, char **buf, int *val)   * print a warning if any files are missing. We proceed without error in the   * latter case to support partial recovery.   */ -static struct -file_stripe_info *validate_and_open_files(char *paths[], int count) +static struct file_stripe_info * +validate_and_open_files(char *paths[], int count)  { -	int i, val, tmp; -	struct stat sbuf; -	char *stripe_count_attr = NULL; -	char *stripe_size_attr = NULL; -	char *stripe_index_attr = NULL; -	char *stripe_coalesce_attr = NULL; -	struct file_stripe_info *finfo = NULL; - -	for (i = 0; i < count; i++) { -		if (!paths[i]) -			goto err; - -		/* -		 * Check the stripe count first so we can allocate the info -		 * struct with the appropriate number of fds. -		 */ -		if (get_attr(paths[i], ATTRNAME_STRIPE_COUNT, -				&stripe_count_attr, &val) != 1) { -			fprintf(stderr, "ERROR: %s: attribute: '%s'\n", -				paths[i], ATTRNAME_STRIPE_COUNT); -			goto err; -		} -		if (!finfo) { -			finfo = alloc_file_stripe_info(val); -			if (!finfo) -				goto err; - -			if (val != count) -				fprintf(stderr, "WARNING: %s: stripe-count " -					"(%d) != file count (%d). Result may " -					"be incomplete.\n", paths[i], val, -					count); - -			finfo->stripe_count = val; -		} else if (val != finfo->stripe_count) { -			fprintf(stderr, "ERROR %s: invalid stripe count: %d " -				"(expected %d)\n", paths[i], val, -				finfo->stripe_count); -			goto err; -		} - -		/* -		 * Get and validate the chunk size. -		 */ -		if (get_attr(paths[i], ATTRNAME_STRIPE_SIZE, &stripe_size_attr, -				&val) != 1) { -			fprintf(stderr, "ERROR: %s: attribute: '%s'\n", -				paths[i], ATTRNAME_STRIPE_SIZE); -			goto err; -		} - -		if (!finfo->stripe_size) { -			finfo->stripe_size = val; -		} else if (val != finfo->stripe_size) { -			fprintf(stderr, "ERROR: %s: invalid stripe size: %d " -				"(expected %d)\n", paths[i], val, -				finfo->stripe_size); -			goto err; -		} - -		/* -		 * stripe-coalesce is a backward compatible attribute. If the -		 * attribute does not exist, assume a value of zero for the -		 * traditional stripe format. -		 */ -		tmp = get_attr(paths[i], ATTRNAME_STRIPE_COALESCE, -				&stripe_coalesce_attr, &val); -		if (!tmp) { -			val = 0; -		} else if (tmp != 1) { -			fprintf(stderr, "ERROR: %s: attribute: '%s'\n", -				paths[i], ATTRNAME_STRIPE_COALESCE); -			goto err; -		} - -		if (finfo->coalesce == INVALID_FD) { -			finfo->coalesce = val; -		} else if (val != finfo->coalesce) { -			fprintf(stderr, "ERROR: %s: invalid coalesce flag\n", -				paths[i]); -			goto err; -		} - -		/* -		 * Get/validate the stripe index and open the file in the -		 * appropriate fd slot. -		 */ -		if (get_attr(paths[i], ATTRNAME_STRIPE_INDEX, -				&stripe_index_attr, &val) != 1) { -			fprintf(stderr, "ERROR: %s: attribute: '%s'\n", -				paths[i], ATTRNAME_STRIPE_INDEX); -			goto err; -		} -		if (finfo->fd[val] != INVALID_FD) { -			fprintf(stderr, "ERROR: %s: duplicate stripe index: " -				"%d\n", paths[i], val); -			goto err; -		} - -		finfo->fd[val] = open(paths[i], O_RDONLY); -		if (finfo->fd[val] < 0) -			goto err; - -		/* -		 * Get the creation mode for the file. -		 */ -		if (fstat(finfo->fd[val], &sbuf) < 0) -			goto err; -		if (finfo->mode == INVALID_MODE) { -			finfo->mode = sbuf.st_mode; -		} else if (sbuf.st_mode != finfo->mode) { -			fprintf(stderr, "ERROR: %s: invalid mode\n", paths[i]); -			goto err; -		} -	} - -	free(stripe_count_attr); -	free(stripe_size_attr); -	free(stripe_index_attr); -	free(stripe_coalesce_attr); - -	return finfo; +    int i, val, tmp; +    struct stat sbuf; +    char *stripe_count_attr = NULL; +    char *stripe_size_attr = NULL; +    char *stripe_index_attr = NULL; +    char *stripe_coalesce_attr = NULL; +    struct file_stripe_info *finfo = NULL; + +    for (i = 0; i < count; i++) { +        if (!paths[i]) +            goto err; + +        /* +         * Check the stripe count first so we can allocate the info +         * struct with the appropriate number of fds. +         */ +        if (get_attr(paths[i], ATTRNAME_STRIPE_COUNT, &stripe_count_attr, +                     &val) != 1) { +            fprintf(stderr, "ERROR: %s: attribute: '%s'\n", paths[i], +                    ATTRNAME_STRIPE_COUNT); +            goto err; +        } +        if (!finfo) { +            finfo = alloc_file_stripe_info(val); +            if (!finfo) +                goto err; + +            if (val != count) +                fprintf(stderr, +                        "WARNING: %s: stripe-count " +                        "(%d) != file count (%d). Result may " +                        "be incomplete.\n", +                        paths[i], val, count); + +            finfo->stripe_count = val; +        } else if (val != finfo->stripe_count) { +            fprintf(stderr, +                    "ERROR %s: invalid stripe count: %d " +                    "(expected %d)\n", +                    paths[i], val, finfo->stripe_count); +            goto err; +        } + +        /* +         * Get and validate the chunk size. +         */ +        if (get_attr(paths[i], ATTRNAME_STRIPE_SIZE, &stripe_size_attr, &val) != +            1) { +            fprintf(stderr, "ERROR: %s: attribute: '%s'\n", paths[i], +                    ATTRNAME_STRIPE_SIZE); +            goto err; +        } + +        if (!finfo->stripe_size) { +            finfo->stripe_size = val; +        } else if (val != finfo->stripe_size) { +            fprintf(stderr, +                    "ERROR: %s: invalid stripe size: %d " +                    "(expected %d)\n", +                    paths[i], val, finfo->stripe_size); +            goto err; +        } + +        /* +         * stripe-coalesce is a backward compatible attribute. If the +         * attribute does not exist, assume a value of zero for the +         * traditional stripe format. +         */ +        tmp = get_attr(paths[i], ATTRNAME_STRIPE_COALESCE, +                       &stripe_coalesce_attr, &val); +        if (!tmp) { +            val = 0; +        } else if (tmp != 1) { +            fprintf(stderr, "ERROR: %s: attribute: '%s'\n", paths[i], +                    ATTRNAME_STRIPE_COALESCE); +            goto err; +        } + +        if (finfo->coalesce == INVALID_FD) { +            finfo->coalesce = val; +        } else if (val != finfo->coalesce) { +            fprintf(stderr, "ERROR: %s: invalid coalesce flag\n", paths[i]); +            goto err; +        } + +        /* +         * Get/validate the stripe index and open the file in the +         * appropriate fd slot. +         */ +        if (get_attr(paths[i], ATTRNAME_STRIPE_INDEX, &stripe_index_attr, +                     &val) != 1) { +            fprintf(stderr, "ERROR: %s: attribute: '%s'\n", paths[i], +                    ATTRNAME_STRIPE_INDEX); +            goto err; +        } +        if (finfo->fd[val] != INVALID_FD) { +            fprintf(stderr, +                    "ERROR: %s: duplicate stripe index: " +                    "%d\n", +                    paths[i], val); +            goto err; +        } + +        finfo->fd[val] = open(paths[i], O_RDONLY); +        if (finfo->fd[val] < 0) +            goto err; + +        /* +         * Get the creation mode for the file. +         */ +        if (fstat(finfo->fd[val], &sbuf) < 0) +            goto err; +        if (finfo->mode == INVALID_MODE) { +            finfo->mode = sbuf.st_mode; +        } else if (sbuf.st_mode != finfo->mode) { +            fprintf(stderr, "ERROR: %s: invalid mode\n", paths[i]); +            goto err; +        } +    } + +    free(stripe_count_attr); +    free(stripe_size_attr); +    free(stripe_index_attr); +    free(stripe_coalesce_attr); + +    return finfo;  err: -	free(stripe_count_attr); -	free(stripe_size_attr); -	free(stripe_index_attr); -	free(stripe_coalesce_attr); +    free(stripe_count_attr); +    free(stripe_size_attr); +    free(stripe_index_attr); +    free(stripe_coalesce_attr); -	if (finfo) { -		close_files(finfo); -		free(finfo); -	} +    if (finfo) { +        close_files(finfo); +        free(finfo); +    } -	return NULL; +    return NULL;  }  static int  close_files(struct file_stripe_info *finfo)  { -	int i, ret; +    int i, ret; -	if (!finfo) -		return -1; +    if (!finfo) +        return -1; -	for (i = 0; i < finfo->stripe_count; i++) { -		if (finfo->fd[i] == INVALID_FD) -			continue; +    for (i = 0; i < finfo->stripe_count; i++) { +        if (finfo->fd[i] == INVALID_FD) +            continue; -		ret = close(finfo->fd[i]); -		if (ret < 0) -			return ret; -	} +        ret = close(finfo->fd[i]); +        if (ret < 0) +            return ret; +    } -	return ret; +    return ret;  }  /* @@ -351,43 +357,43 @@ close_files(struct file_stripe_info *finfo)  static int  generate_file_coalesce(int target, struct file_stripe_info *finfo)  { -	char *buf; -	int ret = 0; -	int r, w, i; - -	buf = malloc(finfo->stripe_size); -	if (!buf) -		return -1; - -	i = 0; -	while (1) { -		if (finfo->fd[i] == INVALID_FD) { -			if (lseek(target, finfo->stripe_size, SEEK_CUR) < 0) -				break; - -			i = (i + 1) % finfo->stripe_count; -			continue; -		} - -		r = read(finfo->fd[i], buf, finfo->stripe_size); -		if (r < 0) { -			ret = r; -			break; -		} -		if (!r) -			break; - -		w = write(target, buf, r); -		if (w < 0) { -			ret = w; -			break; -		} - -		i = (i + 1) % finfo->stripe_count; -	} - -	free(buf); -	return ret; +    char *buf; +    int ret = 0; +    int r, w, i; + +    buf = malloc(finfo->stripe_size); +    if (!buf) +        return -1; + +    i = 0; +    while (1) { +        if (finfo->fd[i] == INVALID_FD) { +            if (lseek(target, finfo->stripe_size, SEEK_CUR) < 0) +                break; + +            i = (i + 1) % finfo->stripe_count; +            continue; +        } + +        r = read(finfo->fd[i], buf, finfo->stripe_size); +        if (r < 0) { +            ret = r; +            break; +        } +        if (!r) +            break; + +        w = write(target, buf, r); +        if (w < 0) { +            ret = w; +            break; +        } + +        i = (i + 1) % finfo->stripe_count; +    } + +    free(buf); +    return ret;  }  /* @@ -398,97 +404,100 @@ generate_file_coalesce(int target, struct file_stripe_info *finfo)  static int  generate_file_traditional(int target, struct file_stripe_info *finfo)  { -	int i, j, max_ret, ret; -	char buf[finfo->stripe_count][4096]; - -	do { -		char newbuf[4096] = {0, }; - -		max_ret = 0; -		for (i = 0; i < finfo->stripe_count; i++) { -			memset(buf[i], 0, 4096); -			ret = read(finfo->fd[i], buf[i], 4096); -			if (ret > max_ret) -				max_ret = ret; -		} -		for (i = 0; i < max_ret; i++) -			for (j = 0; j < finfo->stripe_count; j++) -				newbuf[i] |= buf[j][i]; -			write(target, newbuf, max_ret); -	} while (max_ret); - -	return 0; +    int i, j, max_ret, ret; +    char buf[finfo->stripe_count][4096]; + +    do { +        char newbuf[4096] = { +            0, +        }; + +        max_ret = 0; +        for (i = 0; i < finfo->stripe_count; i++) { +            memset(buf[i], 0, 4096); +            ret = read(finfo->fd[i], buf[i], 4096); +            if (ret > max_ret) +                max_ret = ret; +        } +        for (i = 0; i < max_ret; i++) +            for (j = 0; j < finfo->stripe_count; j++) +                newbuf[i] |= buf[j][i]; +        write(target, newbuf, max_ret); +    } while (max_ret); + +    return 0;  }  static int  generate_file(int target, struct file_stripe_info *finfo)  { -	if (finfo->coalesce) -		return generate_file_coalesce(target, finfo); +    if (finfo->coalesce) +        return generate_file_coalesce(target, finfo); -	return generate_file_traditional(target, finfo); +    return generate_file_traditional(target, finfo);  }  static void  usage(char *name)  { -	fprintf(stderr, "Usage: %s [-o <outputfile>] <inputfile1> " -		"<inputfile2> ...\n", name); +    fprintf(stderr, +            "Usage: %s [-o <outputfile>] <inputfile1> " +            "<inputfile2> ...\n", +            name);  }  int  main(int argc, char *argv[])  { -	int file_count, opt; -	char *opath = NULL; -	int targetfd; -	struct file_stripe_info *finfo; - -	while ((opt = getopt(argc, argv, "o:")) != -1) { -		switch (opt) { -		case 'o': -			opath = optarg; -			break; -		default: -			usage(argv[0]); -			return -1; -		} -	} - -	file_count = argc - optind; - -	if (!opath || !file_count) { -		usage(argv[0]); -		return -1; -	} - -	finfo = validate_and_open_files(&argv[optind], file_count); -	if (!finfo) -		goto err; - -	targetfd = open(opath, O_RDWR|O_CREAT, finfo->mode); -	if (targetfd < 0) -		goto err; - -	if (generate_file(targetfd, finfo) < 0) -		goto err; - -	if (fsync(targetfd) < 0) -		fprintf(stderr, "ERROR: %s\n", strerror(errno)); -	if (close(targetfd) < 0) -		fprintf(stderr, "ERROR: %s\n", strerror(errno)); - -	close_files(finfo); -	free(finfo); - -	return 0; +    int file_count, opt; +    char *opath = NULL; +    int targetfd; +    struct file_stripe_info *finfo; + +    while ((opt = getopt(argc, argv, "o:")) != -1) { +        switch (opt) { +            case 'o': +                opath = optarg; +                break; +            default: +                usage(argv[0]); +                return -1; +        } +    } + +    file_count = argc - optind; + +    if (!opath || !file_count) { +        usage(argv[0]); +        return -1; +    } + +    finfo = validate_and_open_files(&argv[optind], file_count); +    if (!finfo) +        goto err; + +    targetfd = open(opath, O_RDWR | O_CREAT, finfo->mode); +    if (targetfd < 0) +        goto err; + +    if (generate_file(targetfd, finfo) < 0) +        goto err; + +    if (fsync(targetfd) < 0) +        fprintf(stderr, "ERROR: %s\n", strerror(errno)); +    if (close(targetfd) < 0) +        fprintf(stderr, "ERROR: %s\n", strerror(errno)); + +    close_files(finfo); +    free(finfo); + +    return 0;  err: -	if (finfo) { -		close_files(finfo); -		free(finfo); -	} +    if (finfo) { +        close_files(finfo); +        free(finfo); +    } -	return -1; +    return -1;  } -  | 
