[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[2105] 2009-04-14 Felix Zielcke <address@hidden>
From: |
Felix Zielcke |
Subject: |
[2105] 2009-04-14 Felix Zielcke <address@hidden> |
Date: |
Tue, 14 Apr 2009 07:01:35 +0000 |
Revision: 2105
http://svn.sv.gnu.org/viewvc/?view=rev&root=grub&revision=2105
Author: fzielcke
Date: 2009-04-14 07:01:34 +0000 (Tue, 14 Apr 2009)
Log Message:
-----------
2009-04-14 Felix Zielcke <address@hidden>
* util/hostdisk.c [__FreeBSD__ || __FreeBSD_kernel__]: Include
<sys/param.h> and <sys/sysctl.h>.
(open_device) [__FreeBSD__ || __FreeBSD_kernel_]: Use sysctlgetbyname()
to add 0x10 to `kern.geom.debugflags' if it's not already set, before
opening the device and reset them afterwards.
Modified Paths:
--------------
trunk/grub2/ChangeLog
trunk/grub2/util/hostdisk.c
Modified: trunk/grub2/ChangeLog
===================================================================
--- trunk/grub2/ChangeLog 2009-04-14 01:54:06 UTC (rev 2104)
+++ trunk/grub2/ChangeLog 2009-04-14 07:01:34 UTC (rev 2105)
@@ -1,3 +1,11 @@
+2009-04-14 Felix Zielcke <address@hidden>
+
+ * util/hostdisk.c [__FreeBSD__ || __FreeBSD_kernel__]: Include
+ <sys/param.h> and <sys/sysctl.h>.
+ (open_device) [__FreeBSD__ || __FreeBSD_kernel_]: Use sysctlgetbyname()
+ to add 0x10 to `kern.geom.debugflags' if it's not already set, before
+ opening the device and reset them afterwards.
+
2009-04-13 Pavel Roskin <address@hidden>
* conf/common.rmk (grub_fstest_SOURCES): Add normal/datetime.c.
Modified: trunk/grub2/util/hostdisk.c
===================================================================
--- trunk/grub2/util/hostdisk.c 2009-04-14 01:54:06 UTC (rev 2104)
+++ trunk/grub2/util/hostdisk.c 2009-04-14 07:01:34 UTC (rev 2105)
@@ -88,6 +88,8 @@
#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
# include <sys/disk.h> /* DIOCGMEDIASIZE */
+# include <sys/param.h>
+# include <sys/sysctl.h>
#endif
struct
@@ -340,7 +342,35 @@
sector -= disk->partition->start;
}
#else /* ! __linux__ */
+#if defined (__FreeBSD__) || defined(__FreeBSD_kernel__)
+ int sysctl_flags, sysctl_oldflags;
+ const size_t sysctl_size = sizeof (sysctl_flags);
+
+ if (sysctlbyname ("kern.geom.debugflags", &sysctl_oldflags, &sysctl_size,
NULL, 0))
+ {
+ grub_error (GRUB_ERR_BAD_DEVICE, "cannot get current flags of sysctl
kern.geom.debugflags");
+ return -1;
+ }
+ sysctl_flags = sysctl_oldflags | 0x10;
+ if (! (sysctl_oldflags & 0x10)
+ && sysctlbyname ("kern.geom.debugflags", NULL , 0, &sysctl_flags,
sysctl_size))
+ {
+ grub_error (GRUB_ERR_BAD_DEVICE, "cannot set flags of sysctl
kern.geom.debugflags");
+ return -1;
+ }
+#endif
+
fd = open (map[disk->id].device, flags);
+
+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
+ if (! (sysctl_oldflags & 0x10)
+ && sysctlbyname ("kern.geom.debugflags", NULL , 0, &sysctl_oldflags,
sysctl_size))
+ {
+ grub_error (GRUB_ERR_BAD_DEVICE, "cannot set flags back to the old value
for sysctl kern.geom.debugflags");
+ return -1;
+ }
+#endif
+
if (fd < 0)
{
grub_error (GRUB_ERR_BAD_DEVICE, "cannot open `%s' in open_device()",
map[disk->id].device);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [2105] 2009-04-14 Felix Zielcke <address@hidden>,
Felix Zielcke <=