Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 4 Feb 2011 03:30:28 +0000 (UTC)
From:      Warner Losh <imp@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r218250 - projects/graid/head/sys/geom/raid
Message-ID:  <201102040330.p143US4T067951@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: imp
Date: Fri Feb  4 03:30:28 2011
New Revision: 218250
URL: http://svn.freebsd.org/changeset/base/218250

Log:
  move from #define to static variables for tunables

Modified:
  projects/graid/head/sys/geom/raid/tr_raid1.c

Modified: projects/graid/head/sys/geom/raid/tr_raid1.c
==============================================================================
--- projects/graid/head/sys/geom/raid/tr_raid1.c	Fri Feb  4 03:18:51 2011	(r218249)
+++ projects/graid/head/sys/geom/raid/tr_raid1.c	Fri Feb  4 03:30:28 2011	(r218250)
@@ -41,11 +41,15 @@ __FBSDID("$FreeBSD$");
 #include "g_raid_tr_if.h"
 
 #define SD_READ_THRESHOLD 10 /* errors to cause a rebuild */
+static int sd_read_threshold = SD_READ_THRESHOLD;
 #define SD_REBUILD_SLAB	(1 << 20) /* One transation in a rebuild */
+static int sd_rebuild_slab = SD_REBUILD_SLAB;
 #define SD_REBUILD_FAIR_IO 20 /* use 1/x of the available I/O */
-#define SD_REBUILD_CLUSTER_BUSY 4
+static int sd_rebuild_fair_io = SD_REBUILD_FAIR_IO;
 #define SD_REBUILD_CLUSTER_IDLE 10
+static int sd_rebuild_cluster_idle = SD_REBUILD_CLUSTER_IDLE;
 #define SD_REBUILD_META_UPDATE 500 /* update meta data every 5 GB or so */
+static int sd_rebuild_meta_update = SD_REBUILD_META_UPDATE;
 
 static MALLOC_DEFINE(M_TR_raid1, "tr_raid1_data", "GEOM_RAID raid1 data");
 
@@ -174,7 +178,7 @@ g_raid_tr_raid1_rebuild_some(struct g_ra
 	bp = &trs->trso_bio;
 	memset(bp, 0, sizeof(*bp));
 	bp->bio_offset = sd->sd_rebuild_pos;
-	bp->bio_length = MIN(SD_REBUILD_SLAB,
+	bp->bio_length = MIN(sd_rebuild_slab,
 	    sd->sd_volume->v_mediasize - sd->sd_rebuild_pos);
 	bp->bio_data = trs->trso_buffer;
 	bp->bio_cmd = BIO_READ;
@@ -183,8 +187,8 @@ g_raid_tr_raid1_rebuild_some(struct g_ra
 		return;
 	bp2->bio_cflags = G_RAID_BIO_FLAG_SYNC;
 	bp2->bio_caller1 = good_sd;
-	trs->trso_recover_slabs = SD_REBUILD_CLUSTER_IDLE;
-	trs->trso_fair_io = SD_REBUILD_FAIR_IO;
+	trs->trso_recover_slabs = sd_rebuild_cluster_idle;
+	trs->trso_fair_io = sd_rebuild_fair_io;
 	trs->trso_flags |= TR_RAID1_F_DOING_SOME;
 	g_raid_lock_range(sd->sd_volume,	/* Lock callback starts I/O */
 	    bp2->bio_offset, bp2->bio_length, bp2);
@@ -222,7 +226,7 @@ g_raid_tr_raid1_rebuild_abort(struct g_r
 	trs = (struct g_raid_tr_raid1_object *)tr;
 	sd = trs->trso_failed_sd;
 //	sd->sd_rebuild_pos = 0; /* We may need this here... */
-	len = MIN(SD_REBUILD_SLAB, vol->v_mediasize - sd->sd_rebuild_pos);
+	len = MIN(sd_rebuild_slab, vol->v_mediasize - sd->sd_rebuild_pos);
 	g_raid_unlock_range(tr->tro_volume, sd->sd_rebuild_pos, len);
 	g_raid_write_metadata(vol->v_softc, vol, sd, sd->sd_disk);
 	free(trs->trso_buffer, M_TR_raid1);
@@ -278,8 +282,8 @@ g_raid_tr_raid1_rebuild_start(struct g_r
 	G_RAID_DEBUG(2, "Kicking off a rebuild at %jd...",
 	    trs->trso_failed_sd->sd_rebuild_pos);
 	trs->trso_type = TR_RAID1_REBUILD;
-	trs->trso_buffer = malloc(SD_REBUILD_SLAB, M_TR_raid1, M_WAITOK);
-	trs->trso_meta_update = SD_REBUILD_META_UPDATE;
+	trs->trso_buffer = malloc(sd_rebuild_slab, M_TR_raid1, M_WAITOK);
+	trs->trso_meta_update = sd_rebuild_meta_update;
 	g_raid_tr_raid1_rebuild_some(tr, trs->trso_failed_sd);
 }
 
@@ -592,11 +596,7 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_
 				 * The write operation just finished.  Do
 				 * another.  We keep cloning the master bio
 				 * since it has the right buffers allocated to
-				 * it.  We'll free it when slabs get to 0.
-				 * We'll also tie up SD_REBUILD_CLUSTER * 2 +
-				 * 1 bios from the pool.  Since
-				 * SD_REBUILD_CLUSTER should be small, that
-				 * shouldn't be a problem.
+				 * it.
 				 */
 				G_RAID_LOGREQ(4, bp,
 				    "rebuild write done. Error %d", bp->bio_error);
@@ -619,7 +619,8 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_
 					if (--trs->trso_meta_update <= 0) {
 						g_raid_write_metadata(vol->v_softc,
 						    vol, nsd, nsd->sd_disk);
-						trs->trso_meta_update = SD_REBUILD_META_UPDATE;
+						trs->trso_meta_update =
+						    sd_rebuild_meta_update;
 					}
 					trs->trso_flags &= ~TR_RAID1_F_DOING_SOME;
 					return;
@@ -645,7 +646,7 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_
 				cbp->bio_cmd = BIO_READ;
 				cbp->bio_cflags = G_RAID_BIO_FLAG_SYNC;
 				cbp->bio_offset = nsd->sd_rebuild_pos;
-				cbp->bio_length = MIN(SD_REBUILD_SLAB,
+				cbp->bio_length = MIN(sd_rebuild_slab,
 				    vol->v_mediasize - nsd->sd_rebuild_pos);
 				cbp->bio_caller1 = good_sd;
 				G_RAID_LOGREQ(4, bp,
@@ -683,7 +684,7 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_
 		 * everything to get it back in sync), or just degrade the
 		 * drive, which kicks off a resync?
 		 */
-		if (sd->sd_read_errs > SD_READ_THRESHOLD)
+		if (sd->sd_read_errs > sd_read_threshold)
 			g_raid_fail_disk(sd->sd_softc, sd, sd->sd_disk);
 
 		/*



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201102040330.p143US4T067951>