Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 10 Dec 2013 20:52:31 +0000 (UTC)
From:      Konstantin Belousov <kib@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r259198 - head/sys/dev/md
Message-ID:  <201312102052.rBAKqVYO015838@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: kib
Date: Tue Dec 10 20:52:31 2013
New Revision: 259198
URL: http://svnweb.freebsd.org/changeset/base/259198

Log:
  Only assert the length of the passed bio in the mdstart_vnode() when
  the bio is unmapped, so we must map the bio pages into pbuf.  This
  works around the geom classes which do not follow the MAXPHYS limit on
  the i/o size, since such classes do not know about unmapped bios
  either.
  
  Reported by:	Paolo Pinto <paolo.pinto@netasq.com>
  Sponsored by:	The FreeBSD Foundation
  MFC after:	1 week

Modified:
  head/sys/dev/md/md.c

Modified: head/sys/dev/md/md.c
==============================================================================
--- head/sys/dev/md/md.c	Tue Dec 10 20:25:43 2013	(r259197)
+++ head/sys/dev/md/md.c	Tue Dec 10 20:52:31 2013	(r259198)
@@ -746,12 +746,12 @@ mdstart_vnode(struct md_s *sc, struct bi
 		return (error);
 	}
 
-	KASSERT(bp->bio_length <= MAXPHYS, ("bio_length %jd",
-	    (uintmax_t)bp->bio_length));
 	if ((bp->bio_flags & BIO_UNMAPPED) == 0) {
 		pb = NULL;
 		aiov.iov_base = bp->bio_data;
 	} else {
+		KASSERT(bp->bio_length <= MAXPHYS, ("bio_length %jd",
+		    (uintmax_t)bp->bio_length));
 		pb = getpbuf(&md_vnode_pbuf_freecnt);
 		pmap_qenter((vm_offset_t)pb->b_data, bp->bio_ma, bp->bio_ma_n);
 		aiov.iov_base = (void *)((vm_offset_t)pb->b_data +



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