Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 11 Feb 2011 07:26:40 +0000 (UTC)
From:      Alexander Motin <mav@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r218546 - projects/graid/head/sys/geom/raid
Message-ID:  <201102110726.p1B7QeXi049860@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: mav
Date: Fri Feb 11 07:26:40 2011
New Revision: 218546
URL: http://svn.freebsd.org/changeset/base/218546

Log:
  Add some safety belts against g_raid_fail_disk() misuse.

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

Modified: projects/graid/head/sys/geom/raid/g_raid.c
==============================================================================
--- projects/graid/head/sys/geom/raid/g_raid.c	Fri Feb 11 07:26:17 2011	(r218545)
+++ projects/graid/head/sys/geom/raid/g_raid.c	Fri Feb 11 07:26:40 2011	(r218546)
@@ -1961,6 +1961,17 @@ void g_raid_fail_disk(struct g_raid_soft
     struct g_raid_subdisk *sd, struct g_raid_disk *disk)
 {
 
+	if (disk == NULL)
+		disk = sd->sd_disk;
+	if (disk == NULL) {
+		G_RAID_DEBUG1(0, sc, "Warning! Fail request to an absent disk!");
+		return;
+	}
+	if (disk->d_state != G_RAID_DISK_S_ACTIVE) {
+		G_RAID_DEBUG1(0, sc, "Warning! Fail request to a disk in a "
+		    "wrong state (%s)!", g_raid_disk_state2str(disk->d_state));
+		return;
+	}
 	if (sc->sc_md)
 		G_RAID_MD_FAIL_DISK(sc->sc_md, sd, disk);
 }



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