All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 1/2] src/dmiperf: Remove obsolete dmiperf
@ 2020-12-09  5:08 Xiao Yang
  2020-12-09  5:08 ` [PATCH v3 2/2] src/multi_open_unlink: Stop using attr_set Xiao Yang
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Xiao Yang @ 2020-12-09  5:08 UTC (permalink / raw)
  To: darrick.wong, eguan; +Cc: fstests, Xiao Yang

Signed-off-by: Xiao Yang <yangx.jy@cn.fujitsu.com>
---
 .gitignore    |   1 -
 src/Makefile  |   2 +-
 src/dmiperf.c | 275 --------------------------------------------------
 3 files changed, 1 insertion(+), 277 deletions(-)
 delete mode 100644 src/dmiperf.c

diff --git a/.gitignore b/.gitignore
index 041cc2d9..f988a44a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -66,7 +66,6 @@
 /src/dirhash_collide
 /src/dirperf
 /src/dirstress
-/src/dmiperf
 /src/e4compact
 /src/fault
 /src/feature
diff --git a/src/Makefile b/src/Makefile
index 32940142..80f7b892 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -11,7 +11,7 @@ TARGETS = dirstress fill fill2 getpagesize holes lstat64 \
 	mmapcat append_reader append_writer dirperf metaperf \
 	devzero feature alloc fault fstest t_access_root \
 	godown resvtest writemod writev_on_pagefault makeextents itrash rename \
-	multi_open_unlink dmiperf unwritten_sync genhashnames t_holes \
+	multi_open_unlink unwritten_sync genhashnames t_holes \
 	t_mmap_writev t_truncate_cmtime dirhash_collide t_rename_overwrite \
 	holetest t_truncate_self af_unix t_mmap_stale_pmd \
 	t_mmap_cow_race t_mmap_fallocate fsync-err t_mmap_write_ro \
diff --git a/src/dmiperf.c b/src/dmiperf.c
deleted file mode 100644
index 4026dcfb..00000000
--- a/src/dmiperf.c
+++ /dev/null
@@ -1,275 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/*
- * Copyright (c) 2006 Silicon Graphics, Inc.
- * All Rights Reserved.
- */
-
-#include <sys/types.h>
-#include <sys/param.h>
-#include <sys/stat.h>
-#include <sys/time.h>
-#include <dirent.h>
-#include <malloc.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <math.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <attr/attributes.h>
-
-typedef unsigned int uint_t;
-
-/*
- * Loop over directory sizes:
- *	make m directories
- *	touch n files in each directory
- *	write y bytes to all files in each directory
- *	set DMF attribute on x files in each directory
- * Change directory sizes by multiplication or addition.
- * Allow control of starting & stopping sizes, name length, target directory.
- * Print size and wallclock time (ms per file).
- * Output can be used to make graphs (gnuplot)
- */
-
-static uint_t	addval;
-static uint_t	dirchars;
-static char	*directory;
-static uint_t	firstsize;
-static uint_t	lastsize;
-static uint_t	minchars;
-static double	mulval;
-static uint_t	nchars;
-static uint_t	ndirs;
-static uint_t	pfxchars;
-static off64_t	fsize;
-static char	*buffer;
-static size_t	bsize;
-
-static int	mkfile(char *, char *);
-static void	filename(int, int, char *);
-static int	hexchars(uint_t);
-static uint_t	nextsize(uint_t);
-static double	now(void);
-static void	usage(void);
-
-/*
- * Maximum size allowed, this is pretty nuts.
- * The largest one we've ever built has been about 2 million.
- */
-#define	MAX_DIR_SIZE	(16 * 1024 * 1024)
-#define	DFL_FIRST_SIZE	1
-#define	DFL_LAST_SIZE	(1024 * 1024)
-#define	MAX_DIR_COUNT	1024
-#define	MIN_DIR_COUNT	1
-
-#define DMFATTRLEN	22
-#define DMFATTRNAME	"SGI_DMI_DMFATTR"
-
-int
-main(int argc, char **argv)
-{
-	int		c;
-	uint_t		cursize;
-	int		i;
-	int		j;
-	char		name[NAME_MAX + 1];
-	char		attr[DMFATTRLEN];
-	double		stime;
-
-	while ((c = getopt(argc, argv, "a:b:c:d:f:l:m:n:s:")) != -1) {
-		switch (c) {
-		case 'a':
-			addval = (uint_t)atoi(optarg);
-			break;
-		case 'b':
-			bsize = (size_t)atol(optarg);
-			break;
-		case 'c':
-			nchars = (uint_t)atoi(optarg);
-			break;
-		case 'd':
-			directory = optarg;
-			break;
-		case 'f':
-			firstsize = (uint_t)atoi(optarg);
-			break;
-		case 'l':
-			lastsize = (uint_t)atoi(optarg);
-			break;
-		case 'm':
-			mulval = atof(optarg);
-			break;
-		case 'n':
-			ndirs = (uint_t)atoi(optarg);
-			break;
-		case 's':
-			fsize = (off64_t)atol(optarg);
-			break;
-		case '?':
-		default:
-			usage();
-			exit(1);
-		}
-	}
-	if (!addval && !mulval)
-		mulval = 2.0;
-	else if ((addval && mulval) || mulval < 0.0) {
-		usage();
-		exit(1);
-	}
-	if (!bsize)
-		bsize = 1024 * 1024;
-	buffer = memalign(getpagesize(), bsize);
-	memset(buffer, 0xfeed, bsize);
-	memset(attr, 0xaaaaaaa, sizeof(attr));
-
-	if (!directory)
-		directory = ".";
-	else {
-		if (mkdir(directory, 0777) < 0 && errno != EEXIST) {
-			perror(directory);
-			exit(1);
-		}
-		if (chdir(directory) < 0) {
-			perror(directory);
-			exit(1);
-		}
-	}
-	if (firstsize == 0)
-		firstsize = DFL_FIRST_SIZE;
-	else if (firstsize > MAX_DIR_SIZE)
-		firstsize = MAX_DIR_SIZE;
-	if (lastsize == 0)
-		lastsize = DFL_LAST_SIZE;
-	else if (lastsize > MAX_DIR_SIZE)
-		lastsize = MAX_DIR_SIZE;
-	if (lastsize < firstsize)
-		lastsize = firstsize;
-	minchars = hexchars(lastsize - 1);
-	if (nchars < minchars)
-		nchars = minchars;
-	else if (nchars >= NAME_MAX + 1)
-		nchars = NAME_MAX;
-	if (ndirs > MAX_DIR_COUNT)
-		ndirs = MAX_DIR_COUNT;
-	if (ndirs < MIN_DIR_COUNT)
-		ndirs = MIN_DIR_COUNT;
-	dirchars = hexchars(ndirs);
-	pfxchars = nchars - minchars;
-	if (pfxchars)
-		memset(&name[dirchars + 1], 'a', pfxchars);
-
-	cursize = firstsize;
-	for (j = 0; j < ndirs; j++) {
-		filename(0, j, name);
-		name[dirchars] = '\0';
-		mkdir(name, 0777);
-		stime = now();
-		for (i = 0; i < cursize; i++) {
-			filename((i + j) % cursize, j, name);
-			close(mkfile(name, attr));
-		}
-		printf("%d %.3f\n", cursize,
-			(now() - stime) * 1.0e3 / (cursize * ndirs));
-		cursize = nextsize(cursize);
-	}
-	return 0;
-}
-
-static int
-mkfile(char *name, char *attr)
-{
-	int		fd;
-	ssize_t		wrote, wsize;
-	off64_t		bytes = fsize;
-
-	if ((fd = open(name, O_WRONLY | O_CREAT | O_EXCL | O_DIRECT, 0666)) < 0) {
-		perror("open");
-		exit(1);
-	}
-	if (attr_setf(fd, DMFATTRNAME, attr, DMFATTRLEN, ATTR_ROOT) < 0) {
-		perror("attr_setf");
-		exit(1);
-	}
-	while (bytes > 0) {
-		wsize = (bsize < bytes) ? bsize : bytes;
-		if ((wrote = write(fd, buffer, wsize)) < 0) {
-			perror("write");
-			exit(1);
-		}
-		bytes -= wrote;
-	}
-	return fd;
-}
-
-static void
-filename(int idx, int dir, char *name)
-{
-	static char	hexc[16] = "0123456789abcdef";
-	int		i;
-
-	for (i = dirchars - 1; i >= 0; i--)
-		*name++ = hexc[(dir >> (4 * i)) & 0xf];
-	*name++ = '/';
-	name += pfxchars;		/* skip pfx a's */
-	for (i = minchars - 1; i >= 0; i--)
-		*name++ = hexc[(idx >> (4 * i)) & 0xf];
-	*name = '\0';
-}
-
-static int
-hexchars(uint_t maxval)
-{
-	if (maxval < 16)
-		return 1;
-	if (maxval < 16 * 16)
-		return 2;
-	if (maxval < 16 * 16 * 16)
-		return 3;
-	if (maxval < 16 * 16 * 16 * 16)
-		return 4;
-	if (maxval < 16 * 16 * 16 * 16 * 16)
-		return 5;
-	if (maxval < 16 * 16 * 16 * 16 * 16 * 16)
-		return 6;
-	if (maxval < 16 * 16 * 16 * 16 * 16 * 16 * 16)
-		return 7;
-	return 8;
-}
-
-static uint_t
-nextsize(uint_t cursize)
-{
-	double	n;
-
-	n = cursize;
-	if (addval)
-		n += addval;
-	else
-		n *= mulval;
-	if (n > (double)lastsize + 0.5)
-		return lastsize + 1;	/* i.e. out of bounds */
-	else if ((uint_t)n == cursize)
-		return cursize + 1;
-	else
-		return (uint_t)n;
-}
-
-static double
-now(void)
-{
-	struct timeval	tv;
-
-	gettimeofday(&tv, NULL);
-	return (double)tv.tv_sec + 1.0e-6 * (double)tv.tv_usec;
-}
-
-static void
-usage(void)
-{
-	fprintf(stderr,
-		"usage: dirperf [-d dir] [-a addstep | -m mulstep] [-f first] "
-		"[-l last] [-c nchars] [-n ndirs] [-s size]\n");
-}
-- 
2.23.0




^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH v3 2/2] src/multi_open_unlink: Stop using attr_set
  2020-12-09  5:08 [PATCH v3 1/2] src/dmiperf: Remove obsolete dmiperf Xiao Yang
@ 2020-12-09  5:08 ` Xiao Yang
  2020-12-20 15:11 ` [PATCH v3 1/2] src/dmiperf: Remove obsolete dmiperf Eryu Guan
  2021-01-04 22:21 ` Darrick J. Wong
  2 siblings, 0 replies; 5+ messages in thread
From: Xiao Yang @ 2020-12-09  5:08 UTC (permalink / raw)
  To: darrick.wong, eguan; +Cc: fstests, Xiao Yang

Avoid the following warning by replacing deprecated
attr_set with setxattr:
---------------------------------------------------
warning: 'attr_set' is deprecated: Use setxattr or lsetxattr instead [-Wdeprecated-declarations]
---------------------------------------------------

Also remove unneeded flags, <attr/attributes.h> and $(LIBATTR).

Signed-off-by: Xiao Yang <yangx.jy@cn.fujitsu.com>
---
 src/Makefile            | 2 +-
 src/multi_open_unlink.c | 8 ++++----
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/src/Makefile b/src/Makefile
index 80f7b892..811b24e4 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -33,7 +33,7 @@ LINUX_TARGETS = xfsctl bstat t_mtab getdevicesize preallo_rw_pattern_reader \
 
 SUBDIRS = log-writes perf
 
-LLDLIBS = $(LIBATTR) $(LIBHANDLE) $(LIBACL) -lpthread -lrt
+LLDLIBS = $(LIBHANDLE) $(LIBACL) -lpthread -lrt
 
 ifeq ($(HAVE_XLOG_ASSIGN_LSN), true)
 LINUX_TARGETS += loggen
diff --git a/src/multi_open_unlink.c b/src/multi_open_unlink.c
index d697e5f1..c221d39e 100644
--- a/src/multi_open_unlink.c
+++ b/src/multi_open_unlink.c
@@ -12,9 +12,10 @@
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <fcntl.h>
-#include <attr/attributes.h>
+#include <sys/xattr.h>
 
 #define MAX_EA_NAME 30
+#define MAX_VALUELEN	(64*1024)
 
 /*
  * multi_open_unlink path_prefix num_files sleep_time
@@ -40,7 +41,7 @@ main(int argc, char *argv[])
 	int sleep_time = 60;
 	int num_files = 100;
 	int num_eas = 0;
-	int value_size = ATTR_MAX_VALUELEN;
+	int value_size = MAX_VALUELEN;
 	int fd = -1;
 	int i,j,c;
 
@@ -87,7 +88,6 @@ main(int argc, char *argv[])
 			int sts;
 			char *attrvalue;
 			char attrname[MAX_EA_NAME];
-			int flags = 0;
 
 			snprintf(attrname, MAX_EA_NAME, "user.name.%d", j);
 
@@ -98,7 +98,7 @@ main(int argc, char *argv[])
 				return 1;
 			}
 
-			sts = attr_set(path, attrname, attrvalue, value_size, flags);
+			sts = setxattr(path, attrname, attrvalue, value_size, 0);
 			if (sts == -1) {
 				fprintf(stderr, "%s: failed to create EA \"%s\" of size %d on path \"%s\": %s\n",
 					prog, attrname, value_size, path, strerror(errno));
-- 
2.23.0




^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH v3 1/2] src/dmiperf: Remove obsolete dmiperf
  2020-12-09  5:08 [PATCH v3 1/2] src/dmiperf: Remove obsolete dmiperf Xiao Yang
  2020-12-09  5:08 ` [PATCH v3 2/2] src/multi_open_unlink: Stop using attr_set Xiao Yang
@ 2020-12-20 15:11 ` Eryu Guan
  2020-12-21  0:56   ` Xiao Yang
  2021-01-04 22:21 ` Darrick J. Wong
  2 siblings, 1 reply; 5+ messages in thread
From: Eryu Guan @ 2020-12-20 15:11 UTC (permalink / raw)
  To: Xiao Yang, darrick.wong; +Cc: eguan, fstests, linux-xfs

Hi Darrick,

On Wed, Dec 09, 2020 at 01:08:15PM +0800, Xiao Yang wrote:
> Signed-off-by: Xiao Yang <yangx.jy@cn.fujitsu.com>

Would you like to ACK this patch? I think an explicit ACK from XFS
maintainer would be great :)

Thanks,
Eryu

> ---
>  .gitignore    |   1 -
>  src/Makefile  |   2 +-
>  src/dmiperf.c | 275 --------------------------------------------------
>  3 files changed, 1 insertion(+), 277 deletions(-)
>  delete mode 100644 src/dmiperf.c
> 
> diff --git a/.gitignore b/.gitignore
> index 041cc2d9..f988a44a 100644
> --- a/.gitignore
> +++ b/.gitignore
> @@ -66,7 +66,6 @@
>  /src/dirhash_collide
>  /src/dirperf
>  /src/dirstress
> -/src/dmiperf
>  /src/e4compact
>  /src/fault
>  /src/feature
> diff --git a/src/Makefile b/src/Makefile
> index 32940142..80f7b892 100644
> --- a/src/Makefile
> +++ b/src/Makefile
> @@ -11,7 +11,7 @@ TARGETS = dirstress fill fill2 getpagesize holes lstat64 \
>  	mmapcat append_reader append_writer dirperf metaperf \
>  	devzero feature alloc fault fstest t_access_root \
>  	godown resvtest writemod writev_on_pagefault makeextents itrash rename \
> -	multi_open_unlink dmiperf unwritten_sync genhashnames t_holes \
> +	multi_open_unlink unwritten_sync genhashnames t_holes \
>  	t_mmap_writev t_truncate_cmtime dirhash_collide t_rename_overwrite \
>  	holetest t_truncate_self af_unix t_mmap_stale_pmd \
>  	t_mmap_cow_race t_mmap_fallocate fsync-err t_mmap_write_ro \
> diff --git a/src/dmiperf.c b/src/dmiperf.c
> deleted file mode 100644
> index 4026dcfb..00000000
> --- a/src/dmiperf.c
> +++ /dev/null
> @@ -1,275 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0
> -/*
> - * Copyright (c) 2006 Silicon Graphics, Inc.
> - * All Rights Reserved.
> - */
> -
> -#include <sys/types.h>
> -#include <sys/param.h>
> -#include <sys/stat.h>
> -#include <sys/time.h>
> -#include <dirent.h>
> -#include <malloc.h>
> -#include <errno.h>
> -#include <fcntl.h>
> -#include <math.h>
> -#include <stdio.h>
> -#include <stdlib.h>
> -#include <string.h>
> -#include <unistd.h>
> -#include <attr/attributes.h>
> -
> -typedef unsigned int uint_t;
> -
> -/*
> - * Loop over directory sizes:
> - *	make m directories
> - *	touch n files in each directory
> - *	write y bytes to all files in each directory
> - *	set DMF attribute on x files in each directory
> - * Change directory sizes by multiplication or addition.
> - * Allow control of starting & stopping sizes, name length, target directory.
> - * Print size and wallclock time (ms per file).
> - * Output can be used to make graphs (gnuplot)
> - */
> -
> -static uint_t	addval;
> -static uint_t	dirchars;
> -static char	*directory;
> -static uint_t	firstsize;
> -static uint_t	lastsize;
> -static uint_t	minchars;
> -static double	mulval;
> -static uint_t	nchars;
> -static uint_t	ndirs;
> -static uint_t	pfxchars;
> -static off64_t	fsize;
> -static char	*buffer;
> -static size_t	bsize;
> -
> -static int	mkfile(char *, char *);
> -static void	filename(int, int, char *);
> -static int	hexchars(uint_t);
> -static uint_t	nextsize(uint_t);
> -static double	now(void);
> -static void	usage(void);
> -
> -/*
> - * Maximum size allowed, this is pretty nuts.
> - * The largest one we've ever built has been about 2 million.
> - */
> -#define	MAX_DIR_SIZE	(16 * 1024 * 1024)
> -#define	DFL_FIRST_SIZE	1
> -#define	DFL_LAST_SIZE	(1024 * 1024)
> -#define	MAX_DIR_COUNT	1024
> -#define	MIN_DIR_COUNT	1
> -
> -#define DMFATTRLEN	22
> -#define DMFATTRNAME	"SGI_DMI_DMFATTR"
> -
> -int
> -main(int argc, char **argv)
> -{
> -	int		c;
> -	uint_t		cursize;
> -	int		i;
> -	int		j;
> -	char		name[NAME_MAX + 1];
> -	char		attr[DMFATTRLEN];
> -	double		stime;
> -
> -	while ((c = getopt(argc, argv, "a:b:c:d:f:l:m:n:s:")) != -1) {
> -		switch (c) {
> -		case 'a':
> -			addval = (uint_t)atoi(optarg);
> -			break;
> -		case 'b':
> -			bsize = (size_t)atol(optarg);
> -			break;
> -		case 'c':
> -			nchars = (uint_t)atoi(optarg);
> -			break;
> -		case 'd':
> -			directory = optarg;
> -			break;
> -		case 'f':
> -			firstsize = (uint_t)atoi(optarg);
> -			break;
> -		case 'l':
> -			lastsize = (uint_t)atoi(optarg);
> -			break;
> -		case 'm':
> -			mulval = atof(optarg);
> -			break;
> -		case 'n':
> -			ndirs = (uint_t)atoi(optarg);
> -			break;
> -		case 's':
> -			fsize = (off64_t)atol(optarg);
> -			break;
> -		case '?':
> -		default:
> -			usage();
> -			exit(1);
> -		}
> -	}
> -	if (!addval && !mulval)
> -		mulval = 2.0;
> -	else if ((addval && mulval) || mulval < 0.0) {
> -		usage();
> -		exit(1);
> -	}
> -	if (!bsize)
> -		bsize = 1024 * 1024;
> -	buffer = memalign(getpagesize(), bsize);
> -	memset(buffer, 0xfeed, bsize);
> -	memset(attr, 0xaaaaaaa, sizeof(attr));
> -
> -	if (!directory)
> -		directory = ".";
> -	else {
> -		if (mkdir(directory, 0777) < 0 && errno != EEXIST) {
> -			perror(directory);
> -			exit(1);
> -		}
> -		if (chdir(directory) < 0) {
> -			perror(directory);
> -			exit(1);
> -		}
> -	}
> -	if (firstsize == 0)
> -		firstsize = DFL_FIRST_SIZE;
> -	else if (firstsize > MAX_DIR_SIZE)
> -		firstsize = MAX_DIR_SIZE;
> -	if (lastsize == 0)
> -		lastsize = DFL_LAST_SIZE;
> -	else if (lastsize > MAX_DIR_SIZE)
> -		lastsize = MAX_DIR_SIZE;
> -	if (lastsize < firstsize)
> -		lastsize = firstsize;
> -	minchars = hexchars(lastsize - 1);
> -	if (nchars < minchars)
> -		nchars = minchars;
> -	else if (nchars >= NAME_MAX + 1)
> -		nchars = NAME_MAX;
> -	if (ndirs > MAX_DIR_COUNT)
> -		ndirs = MAX_DIR_COUNT;
> -	if (ndirs < MIN_DIR_COUNT)
> -		ndirs = MIN_DIR_COUNT;
> -	dirchars = hexchars(ndirs);
> -	pfxchars = nchars - minchars;
> -	if (pfxchars)
> -		memset(&name[dirchars + 1], 'a', pfxchars);
> -
> -	cursize = firstsize;
> -	for (j = 0; j < ndirs; j++) {
> -		filename(0, j, name);
> -		name[dirchars] = '\0';
> -		mkdir(name, 0777);
> -		stime = now();
> -		for (i = 0; i < cursize; i++) {
> -			filename((i + j) % cursize, j, name);
> -			close(mkfile(name, attr));
> -		}
> -		printf("%d %.3f\n", cursize,
> -			(now() - stime) * 1.0e3 / (cursize * ndirs));
> -		cursize = nextsize(cursize);
> -	}
> -	return 0;
> -}
> -
> -static int
> -mkfile(char *name, char *attr)
> -{
> -	int		fd;
> -	ssize_t		wrote, wsize;
> -	off64_t		bytes = fsize;
> -
> -	if ((fd = open(name, O_WRONLY | O_CREAT | O_EXCL | O_DIRECT, 0666)) < 0) {
> -		perror("open");
> -		exit(1);
> -	}
> -	if (attr_setf(fd, DMFATTRNAME, attr, DMFATTRLEN, ATTR_ROOT) < 0) {
> -		perror("attr_setf");
> -		exit(1);
> -	}
> -	while (bytes > 0) {
> -		wsize = (bsize < bytes) ? bsize : bytes;
> -		if ((wrote = write(fd, buffer, wsize)) < 0) {
> -			perror("write");
> -			exit(1);
> -		}
> -		bytes -= wrote;
> -	}
> -	return fd;
> -}
> -
> -static void
> -filename(int idx, int dir, char *name)
> -{
> -	static char	hexc[16] = "0123456789abcdef";
> -	int		i;
> -
> -	for (i = dirchars - 1; i >= 0; i--)
> -		*name++ = hexc[(dir >> (4 * i)) & 0xf];
> -	*name++ = '/';
> -	name += pfxchars;		/* skip pfx a's */
> -	for (i = minchars - 1; i >= 0; i--)
> -		*name++ = hexc[(idx >> (4 * i)) & 0xf];
> -	*name = '\0';
> -}
> -
> -static int
> -hexchars(uint_t maxval)
> -{
> -	if (maxval < 16)
> -		return 1;
> -	if (maxval < 16 * 16)
> -		return 2;
> -	if (maxval < 16 * 16 * 16)
> -		return 3;
> -	if (maxval < 16 * 16 * 16 * 16)
> -		return 4;
> -	if (maxval < 16 * 16 * 16 * 16 * 16)
> -		return 5;
> -	if (maxval < 16 * 16 * 16 * 16 * 16 * 16)
> -		return 6;
> -	if (maxval < 16 * 16 * 16 * 16 * 16 * 16 * 16)
> -		return 7;
> -	return 8;
> -}
> -
> -static uint_t
> -nextsize(uint_t cursize)
> -{
> -	double	n;
> -
> -	n = cursize;
> -	if (addval)
> -		n += addval;
> -	else
> -		n *= mulval;
> -	if (n > (double)lastsize + 0.5)
> -		return lastsize + 1;	/* i.e. out of bounds */
> -	else if ((uint_t)n == cursize)
> -		return cursize + 1;
> -	else
> -		return (uint_t)n;
> -}
> -
> -static double
> -now(void)
> -{
> -	struct timeval	tv;
> -
> -	gettimeofday(&tv, NULL);
> -	return (double)tv.tv_sec + 1.0e-6 * (double)tv.tv_usec;
> -}
> -
> -static void
> -usage(void)
> -{
> -	fprintf(stderr,
> -		"usage: dirperf [-d dir] [-a addstep | -m mulstep] [-f first] "
> -		"[-l last] [-c nchars] [-n ndirs] [-s size]\n");
> -}
> -- 
> 2.23.0
> 
> 

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v3 1/2] src/dmiperf: Remove obsolete dmiperf
  2020-12-20 15:11 ` [PATCH v3 1/2] src/dmiperf: Remove obsolete dmiperf Eryu Guan
@ 2020-12-21  0:56   ` Xiao Yang
  0 siblings, 0 replies; 5+ messages in thread
From: Xiao Yang @ 2020-12-21  0:56 UTC (permalink / raw)
  To: Eryu Guan; +Cc: darrick.wong, eguan, fstests, linux-xfs

On 2020/12/20 23:11, Eryu Guan wrote:
> Hi Darrick,
>
> On Wed, Dec 09, 2020 at 01:08:15PM +0800, Xiao Yang wrote:
>> Signed-off-by: Xiao Yang<yangx.jy@cn.fujitsu.com>
> Would you like to ACK this patch? I think an explicit ACK from XFS
> maintainer would be great :)
Hi Eryu,

The second patch removed $(LIBATTR) which is needed by src/dmiperf.c, so 
that
only applying the second one results in the following compiler error:
--------------------------------------------------------
dmiperf.c: In function 'mkfile':
dmiperf.c:192:2: warning: 'attr_setf' is deprecated: Use fsetxattr 
instead [-Wdeprecated-declarations]
   192 |  if (attr_setf(fd, DMFATTRNAME, attr, DMFATTRLEN, ATTR_ROOT) < 0) {
       |  ^~
In file included from dmiperf.c:20:
/usr/include/attr/attributes.h:143:12: note: declared here
   143 | extern int attr_setf (int __fd, const char *__attrname,
       |            ^~~~~~~~~
/bin/ld: /tmp/ccdGMnL0.o: undefined reference to symbol 
'attr_setf@@ATTR_1.0'
/bin/ld: /usr/lib64/libattr.so.1: error adding symbols: DSO missing from 
command line
collect2: error: ld returned 1 exit status
gmake[2]: *** [Makefile:89: dmiperf] Error 1
gmake[1]: *** [include/buildrules:31: src] Error 2
make: *** [Makefile:53: default] Error 2
--------------------------------------------------------

Best Regards,
Xiao Yang
> Thanks,
> Eryu
>
>> ---
>>   .gitignore    |   1 -
>>   src/Makefile  |   2 +-
>>   src/dmiperf.c | 275 --------------------------------------------------
>>   3 files changed, 1 insertion(+), 277 deletions(-)
>>   delete mode 100644 src/dmiperf.c
>>
>> diff --git a/.gitignore b/.gitignore
>> index 041cc2d9..f988a44a 100644
>> --- a/.gitignore
>> +++ b/.gitignore
>> @@ -66,7 +66,6 @@
>>   /src/dirhash_collide
>>   /src/dirperf
>>   /src/dirstress
>> -/src/dmiperf
>>   /src/e4compact
>>   /src/fault
>>   /src/feature
>> diff --git a/src/Makefile b/src/Makefile
>> index 32940142..80f7b892 100644
>> --- a/src/Makefile
>> +++ b/src/Makefile
>> @@ -11,7 +11,7 @@ TARGETS = dirstress fill fill2 getpagesize holes lstat64 \
>>   	mmapcat append_reader append_writer dirperf metaperf \
>>   	devzero feature alloc fault fstest t_access_root \
>>   	godown resvtest writemod writev_on_pagefault makeextents itrash rename \
>> -	multi_open_unlink dmiperf unwritten_sync genhashnames t_holes \
>> +	multi_open_unlink unwritten_sync genhashnames t_holes \
>>   	t_mmap_writev t_truncate_cmtime dirhash_collide t_rename_overwrite \
>>   	holetest t_truncate_self af_unix t_mmap_stale_pmd \
>>   	t_mmap_cow_race t_mmap_fallocate fsync-err t_mmap_write_ro \
>> diff --git a/src/dmiperf.c b/src/dmiperf.c
>> deleted file mode 100644
>> index 4026dcfb..00000000
>> --- a/src/dmiperf.c
>> +++ /dev/null
>> @@ -1,275 +0,0 @@
>> -// SPDX-License-Identifier: GPL-2.0
>> -/*
>> - * Copyright (c) 2006 Silicon Graphics, Inc.
>> - * All Rights Reserved.
>> - */
>> -
>> -#include<sys/types.h>
>> -#include<sys/param.h>
>> -#include<sys/stat.h>
>> -#include<sys/time.h>
>> -#include<dirent.h>
>> -#include<malloc.h>
>> -#include<errno.h>
>> -#include<fcntl.h>
>> -#include<math.h>
>> -#include<stdio.h>
>> -#include<stdlib.h>
>> -#include<string.h>
>> -#include<unistd.h>
>> -#include<attr/attributes.h>
>> -
>> -typedef unsigned int uint_t;
>> -
>> -/*
>> - * Loop over directory sizes:
>> - *	make m directories
>> - *	touch n files in each directory
>> - *	write y bytes to all files in each directory
>> - *	set DMF attribute on x files in each directory
>> - * Change directory sizes by multiplication or addition.
>> - * Allow control of starting&  stopping sizes, name length, target directory.
>> - * Print size and wallclock time (ms per file).
>> - * Output can be used to make graphs (gnuplot)
>> - */
>> -
>> -static uint_t	addval;
>> -static uint_t	dirchars;
>> -static char	*directory;
>> -static uint_t	firstsize;
>> -static uint_t	lastsize;
>> -static uint_t	minchars;
>> -static double	mulval;
>> -static uint_t	nchars;
>> -static uint_t	ndirs;
>> -static uint_t	pfxchars;
>> -static off64_t	fsize;
>> -static char	*buffer;
>> -static size_t	bsize;
>> -
>> -static int	mkfile(char *, char *);
>> -static void	filename(int, int, char *);
>> -static int	hexchars(uint_t);
>> -static uint_t	nextsize(uint_t);
>> -static double	now(void);
>> -static void	usage(void);
>> -
>> -/*
>> - * Maximum size allowed, this is pretty nuts.
>> - * The largest one we've ever built has been about 2 million.
>> - */
>> -#define	MAX_DIR_SIZE	(16 * 1024 * 1024)
>> -#define	DFL_FIRST_SIZE	1
>> -#define	DFL_LAST_SIZE	(1024 * 1024)
>> -#define	MAX_DIR_COUNT	1024
>> -#define	MIN_DIR_COUNT	1
>> -
>> -#define DMFATTRLEN	22
>> -#define DMFATTRNAME	"SGI_DMI_DMFATTR"
>> -
>> -int
>> -main(int argc, char **argv)
>> -{
>> -	int		c;
>> -	uint_t		cursize;
>> -	int		i;
>> -	int		j;
>> -	char		name[NAME_MAX + 1];
>> -	char		attr[DMFATTRLEN];
>> -	double		stime;
>> -
>> -	while ((c = getopt(argc, argv, "a:b:c:d:f:l:m:n:s:")) != -1) {
>> -		switch (c) {
>> -		case 'a':
>> -			addval = (uint_t)atoi(optarg);
>> -			break;
>> -		case 'b':
>> -			bsize = (size_t)atol(optarg);
>> -			break;
>> -		case 'c':
>> -			nchars = (uint_t)atoi(optarg);
>> -			break;
>> -		case 'd':
>> -			directory = optarg;
>> -			break;
>> -		case 'f':
>> -			firstsize = (uint_t)atoi(optarg);
>> -			break;
>> -		case 'l':
>> -			lastsize = (uint_t)atoi(optarg);
>> -			break;
>> -		case 'm':
>> -			mulval = atof(optarg);
>> -			break;
>> -		case 'n':
>> -			ndirs = (uint_t)atoi(optarg);
>> -			break;
>> -		case 's':
>> -			fsize = (off64_t)atol(optarg);
>> -			break;
>> -		case '?':
>> -		default:
>> -			usage();
>> -			exit(1);
>> -		}
>> -	}
>> -	if (!addval&&  !mulval)
>> -		mulval = 2.0;
>> -	else if ((addval&&  mulval) || mulval<  0.0) {
>> -		usage();
>> -		exit(1);
>> -	}
>> -	if (!bsize)
>> -		bsize = 1024 * 1024;
>> -	buffer = memalign(getpagesize(), bsize);
>> -	memset(buffer, 0xfeed, bsize);
>> -	memset(attr, 0xaaaaaaa, sizeof(attr));
>> -
>> -	if (!directory)
>> -		directory = ".";
>> -	else {
>> -		if (mkdir(directory, 0777)<  0&&  errno != EEXIST) {
>> -			perror(directory);
>> -			exit(1);
>> -		}
>> -		if (chdir(directory)<  0) {
>> -			perror(directory);
>> -			exit(1);
>> -		}
>> -	}
>> -	if (firstsize == 0)
>> -		firstsize = DFL_FIRST_SIZE;
>> -	else if (firstsize>  MAX_DIR_SIZE)
>> -		firstsize = MAX_DIR_SIZE;
>> -	if (lastsize == 0)
>> -		lastsize = DFL_LAST_SIZE;
>> -	else if (lastsize>  MAX_DIR_SIZE)
>> -		lastsize = MAX_DIR_SIZE;
>> -	if (lastsize<  firstsize)
>> -		lastsize = firstsize;
>> -	minchars = hexchars(lastsize - 1);
>> -	if (nchars<  minchars)
>> -		nchars = minchars;
>> -	else if (nchars>= NAME_MAX + 1)
>> -		nchars = NAME_MAX;
>> -	if (ndirs>  MAX_DIR_COUNT)
>> -		ndirs = MAX_DIR_COUNT;
>> -	if (ndirs<  MIN_DIR_COUNT)
>> -		ndirs = MIN_DIR_COUNT;
>> -	dirchars = hexchars(ndirs);
>> -	pfxchars = nchars - minchars;
>> -	if (pfxchars)
>> -		memset(&name[dirchars + 1], 'a', pfxchars);
>> -
>> -	cursize = firstsize;
>> -	for (j = 0; j<  ndirs; j++) {
>> -		filename(0, j, name);
>> -		name[dirchars] = '\0';
>> -		mkdir(name, 0777);
>> -		stime = now();
>> -		for (i = 0; i<  cursize; i++) {
>> -			filename((i + j) % cursize, j, name);
>> -			close(mkfile(name, attr));
>> -		}
>> -		printf("%d %.3f\n", cursize,
>> -			(now() - stime) * 1.0e3 / (cursize * ndirs));
>> -		cursize = nextsize(cursize);
>> -	}
>> -	return 0;
>> -}
>> -
>> -static int
>> -mkfile(char *name, char *attr)
>> -{
>> -	int		fd;
>> -	ssize_t		wrote, wsize;
>> -	off64_t		bytes = fsize;
>> -
>> -	if ((fd = open(name, O_WRONLY | O_CREAT | O_EXCL | O_DIRECT, 0666))<  0) {
>> -		perror("open");
>> -		exit(1);
>> -	}
>> -	if (attr_setf(fd, DMFATTRNAME, attr, DMFATTRLEN, ATTR_ROOT)<  0) {
>> -		perror("attr_setf");
>> -		exit(1);
>> -	}
>> -	while (bytes>  0) {
>> -		wsize = (bsize<  bytes) ? bsize : bytes;
>> -		if ((wrote = write(fd, buffer, wsize))<  0) {
>> -			perror("write");
>> -			exit(1);
>> -		}
>> -		bytes -= wrote;
>> -	}
>> -	return fd;
>> -}
>> -
>> -static void
>> -filename(int idx, int dir, char *name)
>> -{
>> -	static char	hexc[16] = "0123456789abcdef";
>> -	int		i;
>> -
>> -	for (i = dirchars - 1; i>= 0; i--)
>> -		*name++ = hexc[(dir>>  (4 * i))&  0xf];
>> -	*name++ = '/';
>> -	name += pfxchars;		/* skip pfx a's */
>> -	for (i = minchars - 1; i>= 0; i--)
>> -		*name++ = hexc[(idx>>  (4 * i))&  0xf];
>> -	*name = '\0';
>> -}
>> -
>> -static int
>> -hexchars(uint_t maxval)
>> -{
>> -	if (maxval<  16)
>> -		return 1;
>> -	if (maxval<  16 * 16)
>> -		return 2;
>> -	if (maxval<  16 * 16 * 16)
>> -		return 3;
>> -	if (maxval<  16 * 16 * 16 * 16)
>> -		return 4;
>> -	if (maxval<  16 * 16 * 16 * 16 * 16)
>> -		return 5;
>> -	if (maxval<  16 * 16 * 16 * 16 * 16 * 16)
>> -		return 6;
>> -	if (maxval<  16 * 16 * 16 * 16 * 16 * 16 * 16)
>> -		return 7;
>> -	return 8;
>> -}
>> -
>> -static uint_t
>> -nextsize(uint_t cursize)
>> -{
>> -	double	n;
>> -
>> -	n = cursize;
>> -	if (addval)
>> -		n += addval;
>> -	else
>> -		n *= mulval;
>> -	if (n>  (double)lastsize + 0.5)
>> -		return lastsize + 1;	/* i.e. out of bounds */
>> -	else if ((uint_t)n == cursize)
>> -		return cursize + 1;
>> -	else
>> -		return (uint_t)n;
>> -}
>> -
>> -static double
>> -now(void)
>> -{
>> -	struct timeval	tv;
>> -
>> -	gettimeofday(&tv, NULL);
>> -	return (double)tv.tv_sec + 1.0e-6 * (double)tv.tv_usec;
>> -}
>> -
>> -static void
>> -usage(void)
>> -{
>> -	fprintf(stderr,
>> -		"usage: dirperf [-d dir] [-a addstep | -m mulstep] [-f first] "
>> -		"[-l last] [-c nchars] [-n ndirs] [-s size]\n");
>> -}
>> -- 
>> 2.23.0
>>
>>
>
> .
>




^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v3 1/2] src/dmiperf: Remove obsolete dmiperf
  2020-12-09  5:08 [PATCH v3 1/2] src/dmiperf: Remove obsolete dmiperf Xiao Yang
  2020-12-09  5:08 ` [PATCH v3 2/2] src/multi_open_unlink: Stop using attr_set Xiao Yang
  2020-12-20 15:11 ` [PATCH v3 1/2] src/dmiperf: Remove obsolete dmiperf Eryu Guan
@ 2021-01-04 22:21 ` Darrick J. Wong
  2 siblings, 0 replies; 5+ messages in thread
From: Darrick J. Wong @ 2021-01-04 22:21 UTC (permalink / raw)
  To: Xiao Yang; +Cc: eguan, fstests

On Wed, Dec 09, 2020 at 01:08:15PM +0800, Xiao Yang wrote:
> Signed-off-by: Xiao Yang <yangx.jy@cn.fujitsu.com>

Looks fine to me...

Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>

--D

> ---
>  .gitignore    |   1 -
>  src/Makefile  |   2 +-
>  src/dmiperf.c | 275 --------------------------------------------------
>  3 files changed, 1 insertion(+), 277 deletions(-)
>  delete mode 100644 src/dmiperf.c
> 
> diff --git a/.gitignore b/.gitignore
> index 041cc2d9..f988a44a 100644
> --- a/.gitignore
> +++ b/.gitignore
> @@ -66,7 +66,6 @@
>  /src/dirhash_collide
>  /src/dirperf
>  /src/dirstress
> -/src/dmiperf
>  /src/e4compact
>  /src/fault
>  /src/feature
> diff --git a/src/Makefile b/src/Makefile
> index 32940142..80f7b892 100644
> --- a/src/Makefile
> +++ b/src/Makefile
> @@ -11,7 +11,7 @@ TARGETS = dirstress fill fill2 getpagesize holes lstat64 \
>  	mmapcat append_reader append_writer dirperf metaperf \
>  	devzero feature alloc fault fstest t_access_root \
>  	godown resvtest writemod writev_on_pagefault makeextents itrash rename \
> -	multi_open_unlink dmiperf unwritten_sync genhashnames t_holes \
> +	multi_open_unlink unwritten_sync genhashnames t_holes \
>  	t_mmap_writev t_truncate_cmtime dirhash_collide t_rename_overwrite \
>  	holetest t_truncate_self af_unix t_mmap_stale_pmd \
>  	t_mmap_cow_race t_mmap_fallocate fsync-err t_mmap_write_ro \
> diff --git a/src/dmiperf.c b/src/dmiperf.c
> deleted file mode 100644
> index 4026dcfb..00000000
> --- a/src/dmiperf.c
> +++ /dev/null
> @@ -1,275 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0
> -/*
> - * Copyright (c) 2006 Silicon Graphics, Inc.
> - * All Rights Reserved.
> - */
> -
> -#include <sys/types.h>
> -#include <sys/param.h>
> -#include <sys/stat.h>
> -#include <sys/time.h>
> -#include <dirent.h>
> -#include <malloc.h>
> -#include <errno.h>
> -#include <fcntl.h>
> -#include <math.h>
> -#include <stdio.h>
> -#include <stdlib.h>
> -#include <string.h>
> -#include <unistd.h>
> -#include <attr/attributes.h>
> -
> -typedef unsigned int uint_t;
> -
> -/*
> - * Loop over directory sizes:
> - *	make m directories
> - *	touch n files in each directory
> - *	write y bytes to all files in each directory
> - *	set DMF attribute on x files in each directory
> - * Change directory sizes by multiplication or addition.
> - * Allow control of starting & stopping sizes, name length, target directory.
> - * Print size and wallclock time (ms per file).
> - * Output can be used to make graphs (gnuplot)
> - */
> -
> -static uint_t	addval;
> -static uint_t	dirchars;
> -static char	*directory;
> -static uint_t	firstsize;
> -static uint_t	lastsize;
> -static uint_t	minchars;
> -static double	mulval;
> -static uint_t	nchars;
> -static uint_t	ndirs;
> -static uint_t	pfxchars;
> -static off64_t	fsize;
> -static char	*buffer;
> -static size_t	bsize;
> -
> -static int	mkfile(char *, char *);
> -static void	filename(int, int, char *);
> -static int	hexchars(uint_t);
> -static uint_t	nextsize(uint_t);
> -static double	now(void);
> -static void	usage(void);
> -
> -/*
> - * Maximum size allowed, this is pretty nuts.
> - * The largest one we've ever built has been about 2 million.
> - */
> -#define	MAX_DIR_SIZE	(16 * 1024 * 1024)
> -#define	DFL_FIRST_SIZE	1
> -#define	DFL_LAST_SIZE	(1024 * 1024)
> -#define	MAX_DIR_COUNT	1024
> -#define	MIN_DIR_COUNT	1
> -
> -#define DMFATTRLEN	22
> -#define DMFATTRNAME	"SGI_DMI_DMFATTR"
> -
> -int
> -main(int argc, char **argv)
> -{
> -	int		c;
> -	uint_t		cursize;
> -	int		i;
> -	int		j;
> -	char		name[NAME_MAX + 1];
> -	char		attr[DMFATTRLEN];
> -	double		stime;
> -
> -	while ((c = getopt(argc, argv, "a:b:c:d:f:l:m:n:s:")) != -1) {
> -		switch (c) {
> -		case 'a':
> -			addval = (uint_t)atoi(optarg);
> -			break;
> -		case 'b':
> -			bsize = (size_t)atol(optarg);
> -			break;
> -		case 'c':
> -			nchars = (uint_t)atoi(optarg);
> -			break;
> -		case 'd':
> -			directory = optarg;
> -			break;
> -		case 'f':
> -			firstsize = (uint_t)atoi(optarg);
> -			break;
> -		case 'l':
> -			lastsize = (uint_t)atoi(optarg);
> -			break;
> -		case 'm':
> -			mulval = atof(optarg);
> -			break;
> -		case 'n':
> -			ndirs = (uint_t)atoi(optarg);
> -			break;
> -		case 's':
> -			fsize = (off64_t)atol(optarg);
> -			break;
> -		case '?':
> -		default:
> -			usage();
> -			exit(1);
> -		}
> -	}
> -	if (!addval && !mulval)
> -		mulval = 2.0;
> -	else if ((addval && mulval) || mulval < 0.0) {
> -		usage();
> -		exit(1);
> -	}
> -	if (!bsize)
> -		bsize = 1024 * 1024;
> -	buffer = memalign(getpagesize(), bsize);
> -	memset(buffer, 0xfeed, bsize);
> -	memset(attr, 0xaaaaaaa, sizeof(attr));
> -
> -	if (!directory)
> -		directory = ".";
> -	else {
> -		if (mkdir(directory, 0777) < 0 && errno != EEXIST) {
> -			perror(directory);
> -			exit(1);
> -		}
> -		if (chdir(directory) < 0) {
> -			perror(directory);
> -			exit(1);
> -		}
> -	}
> -	if (firstsize == 0)
> -		firstsize = DFL_FIRST_SIZE;
> -	else if (firstsize > MAX_DIR_SIZE)
> -		firstsize = MAX_DIR_SIZE;
> -	if (lastsize == 0)
> -		lastsize = DFL_LAST_SIZE;
> -	else if (lastsize > MAX_DIR_SIZE)
> -		lastsize = MAX_DIR_SIZE;
> -	if (lastsize < firstsize)
> -		lastsize = firstsize;
> -	minchars = hexchars(lastsize - 1);
> -	if (nchars < minchars)
> -		nchars = minchars;
> -	else if (nchars >= NAME_MAX + 1)
> -		nchars = NAME_MAX;
> -	if (ndirs > MAX_DIR_COUNT)
> -		ndirs = MAX_DIR_COUNT;
> -	if (ndirs < MIN_DIR_COUNT)
> -		ndirs = MIN_DIR_COUNT;
> -	dirchars = hexchars(ndirs);
> -	pfxchars = nchars - minchars;
> -	if (pfxchars)
> -		memset(&name[dirchars + 1], 'a', pfxchars);
> -
> -	cursize = firstsize;
> -	for (j = 0; j < ndirs; j++) {
> -		filename(0, j, name);
> -		name[dirchars] = '\0';
> -		mkdir(name, 0777);
> -		stime = now();
> -		for (i = 0; i < cursize; i++) {
> -			filename((i + j) % cursize, j, name);
> -			close(mkfile(name, attr));
> -		}
> -		printf("%d %.3f\n", cursize,
> -			(now() - stime) * 1.0e3 / (cursize * ndirs));
> -		cursize = nextsize(cursize);
> -	}
> -	return 0;
> -}
> -
> -static int
> -mkfile(char *name, char *attr)
> -{
> -	int		fd;
> -	ssize_t		wrote, wsize;
> -	off64_t		bytes = fsize;
> -
> -	if ((fd = open(name, O_WRONLY | O_CREAT | O_EXCL | O_DIRECT, 0666)) < 0) {
> -		perror("open");
> -		exit(1);
> -	}
> -	if (attr_setf(fd, DMFATTRNAME, attr, DMFATTRLEN, ATTR_ROOT) < 0) {
> -		perror("attr_setf");
> -		exit(1);
> -	}
> -	while (bytes > 0) {
> -		wsize = (bsize < bytes) ? bsize : bytes;
> -		if ((wrote = write(fd, buffer, wsize)) < 0) {
> -			perror("write");
> -			exit(1);
> -		}
> -		bytes -= wrote;
> -	}
> -	return fd;
> -}
> -
> -static void
> -filename(int idx, int dir, char *name)
> -{
> -	static char	hexc[16] = "0123456789abcdef";
> -	int		i;
> -
> -	for (i = dirchars - 1; i >= 0; i--)
> -		*name++ = hexc[(dir >> (4 * i)) & 0xf];
> -	*name++ = '/';
> -	name += pfxchars;		/* skip pfx a's */
> -	for (i = minchars - 1; i >= 0; i--)
> -		*name++ = hexc[(idx >> (4 * i)) & 0xf];
> -	*name = '\0';
> -}
> -
> -static int
> -hexchars(uint_t maxval)
> -{
> -	if (maxval < 16)
> -		return 1;
> -	if (maxval < 16 * 16)
> -		return 2;
> -	if (maxval < 16 * 16 * 16)
> -		return 3;
> -	if (maxval < 16 * 16 * 16 * 16)
> -		return 4;
> -	if (maxval < 16 * 16 * 16 * 16 * 16)
> -		return 5;
> -	if (maxval < 16 * 16 * 16 * 16 * 16 * 16)
> -		return 6;
> -	if (maxval < 16 * 16 * 16 * 16 * 16 * 16 * 16)
> -		return 7;
> -	return 8;
> -}
> -
> -static uint_t
> -nextsize(uint_t cursize)
> -{
> -	double	n;
> -
> -	n = cursize;
> -	if (addval)
> -		n += addval;
> -	else
> -		n *= mulval;
> -	if (n > (double)lastsize + 0.5)
> -		return lastsize + 1;	/* i.e. out of bounds */
> -	else if ((uint_t)n == cursize)
> -		return cursize + 1;
> -	else
> -		return (uint_t)n;
> -}
> -
> -static double
> -now(void)
> -{
> -	struct timeval	tv;
> -
> -	gettimeofday(&tv, NULL);
> -	return (double)tv.tv_sec + 1.0e-6 * (double)tv.tv_usec;
> -}
> -
> -static void
> -usage(void)
> -{
> -	fprintf(stderr,
> -		"usage: dirperf [-d dir] [-a addstep | -m mulstep] [-f first] "
> -		"[-l last] [-c nchars] [-n ndirs] [-s size]\n");
> -}
> -- 
> 2.23.0
> 
> 
> 

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2021-01-04 22:22 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-12-09  5:08 [PATCH v3 1/2] src/dmiperf: Remove obsolete dmiperf Xiao Yang
2020-12-09  5:08 ` [PATCH v3 2/2] src/multi_open_unlink: Stop using attr_set Xiao Yang
2020-12-20 15:11 ` [PATCH v3 1/2] src/dmiperf: Remove obsolete dmiperf Eryu Guan
2020-12-21  0:56   ` Xiao Yang
2021-01-04 22:21 ` Darrick J. Wong

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.