svn commit: r259198 - head/sys/dev/md
Konstantin Belousov
kib at FreeBSD.org
Tue Dec 10 20:52:31 UTC 2013
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 at 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 +
More information about the svn-src-all
mailing list