Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 14 Jan 2011 05:25:44 +0000 (UTC)
From:      Warner Losh <imp@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r217389 - projects/graid/head/sys/geom/raid
Message-ID:  <201101140525.p0E5PiZb075899@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: imp
Date: Fri Jan 14 05:25:44 2011
New Revision: 217389
URL: http://svn.freebsd.org/changeset/base/217389

Log:
  Fix bug in overlaps that Pawel pointed out.

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 Jan 14 04:24:53 2011	(r217388)
+++ projects/graid/head/sys/geom/raid/g_raid.c	Fri Jan 14 05:25:44 2011	(r217389)
@@ -733,7 +733,7 @@ g_raid_start(struct bio *bp)
 }
 
 static int
-g_raid_bio_overlaps(const struct bio *bp, off_t off, off_t len)
+g_raid_bio_overlaps(const struct bio *bp, off_t lstart, off_t len)
 {
 	/*
 	 * 5 cases:
@@ -750,10 +750,13 @@ g_raid_bio_overlaps(const struct bio *bp
 	 * (4) 12-14: passes both ifs
 	 * (5) 19-20: passes both
 	 */
+	off_t lend = lstart + len - 1;
+	off_t bstart = bp->bio_offset;
+	off_t bend = bp->bio_offset + bp->bio_length - 1;
 
-	if (bp->bio_offset + bp->bio_length - 1 < off)
+	if (bend < lstart)
 		return (0);
-	if (bp->bio_offset < off + len - 1)
+	if (lend < bstart)
 		return (0);
 	return (1);
 }



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