summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorphk <phk@FreeBSD.org>2003-03-21 22:05:33 +0000
committerphk <phk@FreeBSD.org>2003-03-21 22:05:33 +0000
commit9dd05c47c05c642652c251c7755d09757d9afc95 (patch)
tree9446b0c3f8150734cf4b67c88cf7a6a63a5cdf87
parentf9d8fd05d77c958ff88dfda359cd553d53c6d0cc (diff)
downloadFreeBSD-src-9dd05c47c05c642652c251c7755d09757d9afc95.zip
FreeBSD-src-9dd05c47c05c642652c251c7755d09757d9afc95.tar.gz
Mitigate deadlock situation pending a more complete solution.
-rw-r--r--sys/geom/geom_disk.c4
-rw-r--r--sys/geom/geom_int.h5
2 files changed, 7 insertions, 2 deletions
diff --git a/sys/geom/geom_disk.c b/sys/geom/geom_disk.c
index 57dab5f..6ac4a59 100644
--- a/sys/geom/geom_disk.c
+++ b/sys/geom/geom_disk.c
@@ -53,6 +53,7 @@
#include <sys/lock.h>
#include <sys/mutex.h>
#include <geom/geom.h>
+#include <geom/geom_int.h>
static struct mtx g_disk_done_mtx;
@@ -252,7 +253,8 @@ g_disk_start(struct bio *bp)
break;
else if (!strcmp(bp->bio_attribute, "GEOM::kerneldump"))
g_disk_kerneldump(bp, dp);
- else if ((dp->d_ioctl != NULL) &&
+ else if ((g_debugflags & G_F_DISKIOCTL) &&
+ (dp->d_ioctl != NULL) &&
!strcmp(bp->bio_attribute, "GEOM::ioctl") &&
bp->bio_length == sizeof *gio) {
gio = (struct g_ioctl *)bp->bio_data;
diff --git a/sys/geom/geom_int.h b/sys/geom/geom_int.h
index 81f8069..0b556704 100644
--- a/sys/geom/geom_int.h
+++ b/sys/geom/geom_int.h
@@ -46,9 +46,12 @@ extern int g_debugflags;
* 1 G_T_TOPOLOGY
* 2 G_T_BIO
* 4 G_T_ACCESS
- * 8 enable sanity checks
+ * 8 Enable sanity checks
* 16 Allow footshooting on rank#1 providers
+ * 32 G_T_DETAILS
*/
+#define G_F_DISKIOCTL 64
+
/*
* Various internal actions are tracked by tagging g_event[s] onto
OpenPOWER on IntegriCloud