From owner-svn-src-projects@FreeBSD.ORG Thu Jan 13 21:53:51 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C273C106566C; Thu, 13 Jan 2011 21:53:51 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 97D538FC1F; Thu, 13 Jan 2011 21:53:51 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p0DLrpC7064686; Thu, 13 Jan 2011 21:53:51 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p0DLrpAG064684; Thu, 13 Jan 2011 21:53:51 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201101132153.p0DLrpAG064684@svn.freebsd.org> From: Alexander Motin Date: Thu, 13 Jan 2011 21:53:51 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r217380 - projects/graid/head/sys/geom/raid X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 13 Jan 2011 21:53:51 -0000 Author: mav Date: Thu Jan 13 21:53:51 2011 New Revision: 217380 URL: http://svn.freebsd.org/changeset/base/217380 Log: Fix some math bugs in sizes calculations. Modified: projects/graid/head/sys/geom/raid/md_intel.c Modified: projects/graid/head/sys/geom/raid/md_intel.c ============================================================================== --- projects/graid/head/sys/geom/raid/md_intel.c Thu Jan 13 21:49:14 2011 (r217379) +++ projects/graid/head/sys/geom/raid/md_intel.c Thu Jan 13 21:53:51 2011 (r217380) @@ -46,7 +46,7 @@ struct intel_raid_map { uint32_t offset; uint32_t disk_sectors; uint32_t stripe_count; - uint16_t stripe_sectors; + uint16_t strip_sectors; uint8_t status; #define INTEL_S_READY 0x00 #define INTEL_S_DISABLED 0x01 @@ -278,7 +278,7 @@ g_raid_md_intel_print(struct intel_raid_ printf(" offset %u\n", mmap->offset); printf(" disk_sectors %u\n", mmap->disk_sectors); printf(" stripe_count %u\n", mmap->stripe_count); - printf(" stripe_sectors %u\n", mmap->stripe_sectors); + printf(" strip_sectors %u\n", mmap->strip_sectors); printf(" status %u\n", mmap->status); printf(" type %u\n", mmap->type); printf(" total_disks %u\n", mmap->total_disks); @@ -561,14 +561,14 @@ g_raid_md_intel_start(struct g_raid_soft else vol->v_raid_level = G_RAID_VOLUME_RL_UNKNOWN; vol->v_raid_level_qualifier = G_RAID_VOLUME_RLQ_NONE; - vol->v_strip_size = mmap->stripe_sectors * 512; //ZZZ + vol->v_strip_size = (u_int)mmap->strip_sectors * 512; //ZZZ vol->v_disks_count = mmap->total_disks; - vol->v_mediasize = mvol->total_sectors * 512; //ZZZ + vol->v_mediasize = (off_t)mvol->total_sectors * 512; //ZZZ vol->v_sectorsize = 512; //ZZZ for (j = 0; j < vol->v_disks_count; j++) { sd = &vol->v_subdisks[j]; - sd->sd_offset = mmap->offset * 512; //ZZZ - sd->sd_size = mmap->disk_sectors; + sd->sd_offset = (off_t)mmap->offset * 512; //ZZZ + sd->sd_size = (off_t)mmap->disk_sectors * 512; //ZZZ } g_raid_start_volume(vol); } @@ -1362,8 +1362,7 @@ g_raid_md_write_intel(struct g_raid_md_o mvol->total_sectors = vol->v_mediasize / sectorsize; mmap->offset = sd->sd_offset / sectorsize; mmap->disk_sectors = sd->sd_size / sectorsize; - mmap->stripe_count = sd->sd_size / vol->v_strip_size; - mmap->stripe_sectors = vol->v_strip_size / sectorsize; + mmap->strip_sectors = vol->v_strip_size / sectorsize; mmap->status = INTEL_S_READY; if (vol->v_raid_level == G_RAID_VOLUME_RL_RAID0) mmap->type = INTEL_T_RAID0; @@ -1379,6 +1378,8 @@ g_raid_md_write_intel(struct g_raid_md_o mmap->total_domains = vol->v_disks_count; else mmap->total_domains = 1; + mmap->stripe_count = sd->sd_size / vol->v_strip_size / + mmap->total_domains; mmap->failed_disk_num = 0xff; mmap->ddf = 1; for (sdi = 0; sdi < vol->v_disks_count; sdi++) {