summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorgrog <grog@FreeBSD.org>2003-05-23 01:13:43 +0000
committergrog <grog@FreeBSD.org>2003-05-23 01:13:43 +0000
commit18dc607a3bdd5f64bb40d2c74d78d3b7e91e4f26 (patch)
treeaae8aed70478652ffd749b92fd054da70a795c52 /sys
parenteeb76b20a0ff77c799a7c357e3ee2fd5755e2d9a (diff)
downloadFreeBSD-src-18dc607a3bdd5f64bb40d2c74d78d3b7e91e4f26.zip
FreeBSD-src-18dc607a3bdd5f64bb40d2c74d78d3b7e91e4f26.tar.gz
Change the way the plex lock mutexes work. Previously they were part
of the struct plex, which tore apart the mutex linked lists when the plex table was expanded. Now we maintain a pool of mutexes (currently 32) to be shared by all plexes. This is still a lot better than the splhigh() method used in other architectures. update_volume_config: Remove redundant diskconfig parameter. expand_table: Add parameters file and line if we're debugging. Approved by: re (jhb)
Diffstat (limited to 'sys')
-rw-r--r--sys/dev/vinum/vinumext.h9
1 files changed, 7 insertions, 2 deletions
diff --git a/sys/dev/vinum/vinumext.h b/sys/dev/vinum/vinumext.h
index e2d30ef..807bb5c6 100644
--- a/sys/dev/vinum/vinumext.h
+++ b/sys/dev/vinum/vinumext.h
@@ -33,7 +33,7 @@
* otherwise) arising in any way out of the use of this software, even if
* advised of the possibility of such damage.
*
- * $Id: vinumext.h,v 1.31 2003/04/25 08:01:37 grog Exp $
+ * $Id: vinumext.h,v 1.33 2003/05/23 00:57:48 grog Exp $
* $FreeBSD$
*/
@@ -42,6 +42,7 @@
/* *sigh* We still need this at the moment. */
#ifdef _KERNEL
extern struct _vinum_conf vinum_conf; /* configuration information */
+extern struct mtx plexmutex[]; /* mutexes for plexes to use */
#else
extern struct __vinum_conf vinum_conf; /* configuration information */
#endif
@@ -102,7 +103,7 @@ void config_drive(int);
void updateconfig(int);
void update_sd_config(int sdno, int kernelstate);
void update_plex_config(int plexno, int kernelstate);
-void update_volume_config(int volno, int kernelstate);
+void update_volume_config(int volno);
void update_config(void);
void drive_io_done(struct buf *);
void save_config(void);
@@ -159,7 +160,11 @@ void LongJmp(jmp_buf, int);
char *basename(char *);
#endif
+#ifdef VINUMDEBUG
+void expand_table(void **, int, int, char *, int);
+#else
void expand_table(void **, int, int);
+#endif
struct disklabel;
struct request;
OpenPOWER on IntegriCloud