ports/45911: GEOM-related problem sysutils/diskcheckd does not work
Valentin Nechayev
netch at netch.kiev.ua
Tue Sep 21 16:10:18 UTC 2004
The following reply was made to PR ports/45911; it has been noted by GNATS.
From: Valentin Nechayev <netch at netch.kiev.ua>
To: bug-followup at freebsd.org
Cc: vova at sw.ru
Subject: ports/45911: GEOM-related problem sysutils/diskcheckd does not work
Date: Tue, 21 Sep 2004 19:06:53 +0300 (EEST)
Following patch makes it at least starting and successfully testing.
I can't provide now bad disk to check error reporting;), but here only
logging problem can appear, not functioning problem.
diff -rNu 0/ports/sysutils/diskcheckd/files/diskcheckd.c 1/ports/sysutils/diskcheckd/files/diskcheckd.c
--- 0/ports/sysutils/diskcheckd/files/diskcheckd.c Mon Oct 21 03:34:31 2002
+++ 1/ports/sysutils/diskcheckd/files/diskcheckd.c Tue Sep 21 18:59:13 2004
@@ -27,7 +27,7 @@
static const char rcsid[] =
"$FreeBSD: ports/sysutils/diskcheckd/files/diskcheckd.c,v 1.6 2002/10/21 00:34:31 kris Exp $";
-#include <sys/types.h>
+#include <sys/param.h>
#include <sys/sysctl.h>
#include <ctype.h>
@@ -46,6 +46,7 @@
#define DKTYPENAMES
#define FSTYPENAMES
+#include <sys/disk.h>
#include <sys/disklabel.h>
#include <sys/diskmbr.h>
@@ -757,7 +758,23 @@
void
getdisksize(struct disk *dp) {
struct disklabel label;
+#if __FreeBSD_version >= 500040
+ off_t mediasize;
+ u_int sectorsize;
+ if (ioctl(dp->fd, DIOCGSECTORSIZE, §orsize) < 0) {
+ syslog(LOG_NOTICE, "DIOCGSECTORSIZE on %s failed: %m",
+ dp->device);
+ exit(EXIT_FAILURE);
+ }
+ if (ioctl(dp->fd, DIOCGMEDIASIZE, &mediasize) < 0) {
+ syslog(LOG_NOTICE, "DIOCGMEDIASIZE on %s failed: %m",
+ dp->device);
+ exit(EXIT_FAILURE);
+ }
+ dp->secsize = sectorsize;
+ dp->size = mediasize;
+#else
if (ioctl(dp->fd, DIOCGDINFO, &label) < 0) {
syslog(LOG_NOTICE, "DIOCGDINFO on %s failed: %m",
dp->device);
@@ -766,6 +783,7 @@
dp->secsize = label.d_secsize;
dp->size = (off_t)label.d_secperunit * label.d_secsize;
+#endif
if (label.d_secsize != 512)
syslog(LOG_NOTICE,
More information about the freebsd-ports-bugs
mailing list