svn commit: r225766 - user/des/phybs
Dag-Erling Smorgrav
des at FreeBSD.org
Mon Sep 26 12:20:33 UTC 2011
Author: des
Date: Mon Sep 26 12:20:33 2011
New Revision: 225766
URL: http://svn.freebsd.org/changeset/base/225766
Log:
Add an option to open the device O_SYNC.
Modified:
user/des/phybs/phybs.1
user/des/phybs/phybs.c
Modified: user/des/phybs/phybs.1
==============================================================================
--- user/des/phybs/phybs.1 Mon Sep 26 12:08:15 2011 (r225765)
+++ user/des/phybs/phybs.1 Mon Sep 26 12:20:33 2011 (r225766)
@@ -34,7 +34,7 @@
.Nd reveal a storage device's physical block size
.Sh SYNOPSIS
.Nm
-.Op Fl rtw
+.Op Fl rsw
.Op Fl l Ar minsize
.Op Fl h Ar maxsize
.Op Fl t Ar total
@@ -48,10 +48,10 @@ large I/O operations at various (mis-)al
.Pp
The
.Nm
-utility makes a series of passes with increasing block sizes. In each
-pass, it either reads or writes (or both) a number of blocks at
-increasing offsets relative to the ideal alignment, which is assumed
-to be multiples of the block size.
+utility makes a series of passes with increasing block sizes.
+In each pass, it either reads or writes (or both) a number of
+non-consecutive blocks at increasing offsets relative to the ideal
+alignment, which is assumed to be multiples of the block size.
The results are presented in terms of time elapsed, transactions per
second and kB per second.
.Pp
@@ -79,6 +79,8 @@ The default is the device's logical bloc
.It Fl r
Perform read operations.
This is the default.
+.It Fl s
+Open the device in synchronous mode.
.It Fl t Ar total
Specify the total amount of data to read or write in each pass.
This must be a power of two and a multiple of the maximum block size
Modified: user/des/phybs/phybs.c
==============================================================================
--- user/des/phybs/phybs.c Mon Sep 26 12:08:15 2011 (r225765)
+++ user/des/phybs/phybs.c Mon Sep 26 12:20:33 2011 (r225766)
@@ -52,6 +52,7 @@ static unsigned int maxsize;
static unsigned int total;
static int opt_r;
+static int opt_s;
static int opt_w;
static int tty = 0;
@@ -115,7 +116,7 @@ usage(void)
{
fprintf(stderr, "usage: phybs %s\n",
- "[-rw] [-l minsize] [-h maxsize] [-t total] device");
+ "[-rsw] [-l minsize] [-h maxsize] [-t total] device");
exit(1);
}
@@ -143,11 +144,11 @@ int
main(int argc, char *argv[])
{
struct stat st;
- int fd, opt;
+ int fd, mode, opt;
tty = isatty(STDOUT_FILENO);
- while ((opt = getopt(argc, argv, "h:l:rt:w")) != -1)
+ while ((opt = getopt(argc, argv, "h:l:rst:w")) != -1)
switch (opt) {
case 'h':
maxsize = poweroftwo(opt, optarg);
@@ -158,6 +159,9 @@ main(int argc, char *argv[])
case 'r':
opt_r = 1;
break;
+ case 's':
+ opt_s = 1;
+ break;
case 't':
total = poweroftwo(opt, optarg);
break;
@@ -178,7 +182,10 @@ main(int argc, char *argv[])
if (!opt_r && !opt_w)
opt_r = 1;
- if ((fd = open(device, opt_w ? O_RDWR : O_RDONLY)) == -1)
+ mode = opt_w ? O_RDWR : O_RDONLY;
+ if (opt_s)
+ mode |= O_SYNC;
+ if ((fd = open(device, mode)) == -1)
err(errno == EPERM ? EX_NOPERM : EX_OSERR, "open(%s)", device);
if (fstat(fd, &st) != 0)
More information about the svn-src-user
mailing list