aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXin LI <delphij@FreeBSD.org>2013-02-04 19:17:15 +0000
committerXin LI <delphij@FreeBSD.org>2013-02-04 19:17:15 +0000
commit399fe4799b55b3d85b92b3bc2711d8e6a9b88141 (patch)
tree3b37be8e56dc88b72cda4f72c91179772a4cb838
parent35e370a2d5e14a2a022f22fb9b9cacdb3b900032 (diff)
downloadsrc-399fe4799b55b3d85b92b3bc2711d8e6a9b88141.tar.gz
src-399fe4799b55b3d85b92b3bc2711d8e6a9b88141.zip
Use stripesize as smallest block size if it's available.
MFC after: 2 weeks
Notes
Notes: svn path=/head/; revision=246329
-rw-r--r--sbin/recoverdisk/recoverdisk.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/sbin/recoverdisk/recoverdisk.c b/sbin/recoverdisk/recoverdisk.c
index 3a92d1db0a85..caa8ebdeccbe 100644
--- a/sbin/recoverdisk/recoverdisk.c
+++ b/sbin/recoverdisk/recoverdisk.c
@@ -156,6 +156,7 @@ main(int argc, char * const argv[])
int error, state;
u_char *buf;
u_int sectorsize;
+ u_int stripesize;
time_t t1, t2;
struct stat sb;
u_int n, snapshot = 60;
@@ -201,6 +202,10 @@ main(int argc, char * const argv[])
if (error < 0)
err(1, "DIOCGSECTORSIZE failed");
+ error = ioctl(fdr, DIOCGSTRIPESIZE, &stripesize);
+ if (error == 0 && stripesize > sectorsize)
+ sectorsize = stripesize;
+
minsize = sectorsize;
bigsize = (bigsize / sectorsize) * sectorsize;