aboutsummaryrefslogtreecommitdiff
path: root/usr.sbin/diskinfo/diskinfo.c
diff options
context:
space:
mode:
authorAlexander Motin <mav@FreeBSD.org>2009-12-24 21:39:30 +0000
committerAlexander Motin <mav@FreeBSD.org>2009-12-24 21:39:30 +0000
commit851b967a27b2ada7193bb5076f33b5be7d8a07ea (patch)
treeae38c1e07ec0380f14f81ef1ed8106d458985b80 /usr.sbin/diskinfo/diskinfo.c
parent95139d9d6a072308639b75e6146ff52c928cf0bd (diff)
downloadsrc-851b967a27b2ada7193bb5076f33b5be7d8a07ea.tar.gz
src-851b967a27b2ada7193bb5076f33b5be7d8a07ea.zip
Make diskinfo report disk stripe size and offset. It should help users to
make file systems optimally aligned and tuned for better performance.
Notes
Notes: svn path=/head/; revision=200968
Diffstat (limited to 'usr.sbin/diskinfo/diskinfo.c')
-rw-r--r--usr.sbin/diskinfo/diskinfo.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/usr.sbin/diskinfo/diskinfo.c b/usr.sbin/diskinfo/diskinfo.c
index 7ecf7cb4f328..1f967b732da3 100644
--- a/usr.sbin/diskinfo/diskinfo.c
+++ b/usr.sbin/diskinfo/diskinfo.c
@@ -58,7 +58,7 @@ main(int argc, char **argv)
{
int i, ch, fd, error;
char buf[BUFSIZ], ident[DISK_IDENT_SIZE];
- off_t mediasize;
+ off_t mediasize, stripesize, stripeoffset;
u_int sectorsize, fwsectors, fwheads;
while ((ch = getopt(argc, argv, "ctv")) != -1) {
@@ -104,11 +104,19 @@ main(int argc, char **argv)
error = ioctl(fd, DIOCGFWHEADS, &fwheads);
if (error)
fwheads = 0;
+ error = ioctl(fd, DIOCGSTRIPESIZE, &stripesize);
+ if (error)
+ stripesize = 0;
+ error = ioctl(fd, DIOCGSTRIPEOFFSET, &stripeoffset);
+ if (error)
+ stripeoffset = 0;
if (!opt_v) {
printf("%s", argv[i]);
printf("\t%u", sectorsize);
printf("\t%jd", (intmax_t)mediasize);
printf("\t%jd", (intmax_t)mediasize/sectorsize);
+ printf("\t%jd", (intmax_t)stripesize);
+ printf("\t%jd", (intmax_t)stripeoffset);
if (fwsectors != 0 && fwheads != 0) {
printf("\t%jd", (intmax_t)mediasize /
(fwsectors * fwheads * sectorsize));
@@ -124,6 +132,8 @@ main(int argc, char **argv)
(intmax_t)mediasize, buf);
printf("\t%-12jd\t# mediasize in sectors\n",
(intmax_t)mediasize/sectorsize);
+ printf("\t%-12jd\t# stripesize\n", stripesize);
+ printf("\t%-12jd\t# stripeoffset\n", stripeoffset);
if (fwsectors != 0 && fwheads != 0) {
printf("\t%-12jd\t# Cylinders according to firmware.\n", (intmax_t)mediasize /
(fwsectors * fwheads * sectorsize));