Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 16 Feb 2011 15:27:54 +0000 (UTC)
From:      Alexander Motin <mav@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r218740 - projects/graid/head/sys/geom/raid
Message-ID:  <201102161527.p1GFRsel074596@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: mav
Date: Wed Feb 16 15:27:54 2011
New Revision: 218740
URL: http://svn.freebsd.org/changeset/base/218740

Log:
  Fix SINGLE on JMicron.

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

Modified: projects/graid/head/sys/geom/raid/md_jmicron.c
==============================================================================
--- projects/graid/head/sys/geom/raid/md_jmicron.c	Wed Feb 16 15:24:56 2011	(r218739)
+++ projects/graid/head/sys/geom/raid/md_jmicron.c	Wed Feb 16 15:27:54 2011	(r218740)
@@ -390,6 +390,8 @@ g_raid_md_jmicron_supported(int level, i
 	case G_RAID_VOLUME_RL_SINGLE:
 		if (disks != 1)
 			return (0);
+		if (!force)
+			return (0);
 		break;
 	case G_RAID_VOLUME_RL_CONCAT:
 		if (disks < 2)
@@ -666,7 +668,10 @@ g_raid_md_jmicron_start(struct g_raid_so
 		vol->v_raid_level = G_RAID_VOLUME_RL_RAID1E;
 		vol->v_mediasize = size * mdi->mdio_total_disks / 2;
 	} else if (meta->type == JMICRON_T_CONCAT) {
-		vol->v_raid_level = G_RAID_VOLUME_RL_CONCAT;
+		if (mdi->mdio_total_disks == 1)
+			vol->v_raid_level = G_RAID_VOLUME_RL_SINGLE;
+		else
+			vol->v_raid_level = G_RAID_VOLUME_RL_CONCAT;
 		vol->v_mediasize = 0;
 	} else if (meta->type == JMICRON_T_RAID5) {
 		vol->v_raid_level = G_RAID_VOLUME_RL_RAID5;
@@ -1190,7 +1195,8 @@ g_raid_md_ctl_jmicron(struct g_raid_md_o
 		vol->v_strip_size = strip;
 		vol->v_disks_count = numdisks;
 		if (level == G_RAID_VOLUME_RL_RAID0 ||
-		    level == G_RAID_VOLUME_RL_CONCAT)
+		    level == G_RAID_VOLUME_RL_CONCAT ||
+		    level == G_RAID_VOLUME_RL_SINGLE)
 			vol->v_mediasize = size * numdisks;
 		else if (level == G_RAID_VOLUME_RL_RAID1)
 			vol->v_mediasize = size;
@@ -1427,7 +1433,8 @@ g_raid_md_write_jmicron(struct g_raid_md
 		meta->type = JMICRON_T_RAID1;
 	else if (vol->v_raid_level == G_RAID_VOLUME_RL_RAID1E)
 		meta->type = JMICRON_T_RAID01;
-	else if (vol->v_raid_level == G_RAID_VOLUME_RL_CONCAT)
+	else if (vol->v_raid_level == G_RAID_VOLUME_RL_CONCAT ||
+	    vol->v_raid_level == G_RAID_VOLUME_RL_SINGLE)
 		meta->type = JMICRON_T_CONCAT;
 	else
 		meta->type = JMICRON_T_RAID5;



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