All of lore.kernel.org
 help / color / mirror / Atom feed
From: Xiao Yang <yangx.jy@cn.fujitsu.com>
To: <darrick.wong@oracle.com>, <eguan@linux.alibaba.com>
Cc: <fstests@vger.kernel.org>, Xiao Yang <yangx.jy@cn.fujitsu.com>
Subject: [PATCH v3 1/2] src/dmiperf: Remove obsolete dmiperf
Date: Wed, 9 Dec 2020 13:08:15 +0800	[thread overview]
Message-ID: <20201209050816.1240404-1-yangx.jy@cn.fujitsu.com> (raw)

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




             reply	other threads:[~2020-12-09  5:30 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-12-09  5:08 Xiao Yang [this message]
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

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20201209050816.1240404-1-yangx.jy@cn.fujitsu.com \
    --to=yangx.jy@cn.fujitsu.com \
    --cc=darrick.wong@oracle.com \
    --cc=eguan@linux.alibaba.com \
    --cc=fstests@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.