mirror of
https://github.com/freebsd/freebsd-src.git
synced 2024-11-28 19:52:44 +00:00
Make diskinfo report disk stripe size and offset. It should help users to
make file systems optimally aligned and tuned for better performance.
This commit is contained in:
parent
95139d9d6a
commit
851b967a27
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=200968
@ -46,7 +46,8 @@ and optionally runs a naive performance test on the device.
|
||||
.Pp
|
||||
If given no arguments, the output will be a single line per specified device
|
||||
with the following fields: device name, sectorsize, media size in bytes,
|
||||
media size in sectors, firmware cylinders, firmware heads, and firmware sectors.
|
||||
media size in sectors, stripe size, stripe offset, firmware cylinders,
|
||||
firmware heads, and firmware sectors.
|
||||
The last three fields are only present if the information is available.
|
||||
.Pp
|
||||
If given the
|
||||
|
@ -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));
|
||||
|
Loading…
Reference in New Issue
Block a user