diff options
author | Peter Telford <Peter.Telford@Sun.COM> | 2008-10-30 08:31:34 -0700 |
---|---|---|
committer | Peter Telford <Peter.Telford@Sun.COM> | 2008-10-30 08:31:34 -0700 |
commit | adbe22e173705861cc4e68ec0cdb258dbb73f9eb (patch) | |
tree | 9239c449eac63dc1404cb0e67fecbfe127304b33 /usr/src | |
parent | 22b3cecc0923da281676ec7c4e35e5e03beef2bb (diff) | |
download | illumos-gate-adbe22e173705861cc4e68ec0cdb258dbb73f9eb.tar.gz |
6703850 VMODSORT functionality in pvn_vplist_dirty fails if given offset exceeds highest clean page offset
Diffstat (limited to 'usr/src')
-rw-r--r-- | usr/src/uts/common/vm/vm_pvn.c | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/usr/src/uts/common/vm/vm_pvn.c b/usr/src/uts/common/vm/vm_pvn.c index b7f4249f4c..186235767d 100644 --- a/usr/src/uts/common/vm/vm_pvn.c +++ b/usr/src/uts/common/vm/vm_pvn.c @@ -19,7 +19,7 @@ * CDDL HEADER END */ /* - * Copyright 2007 Sun Microsystems, Inc. All rights reserved. + * Copyright 2008 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -36,8 +36,6 @@ * contributors. */ -#pragma ident "%Z%%M% %I% %E% SMI" - /* * VM - paged vnode. * @@ -840,16 +838,6 @@ pvn_vplist_dirty( ASSERT(pp->p_vnode == vp); /* - * Skip this page if the offset is out of the desired range. - * Just move the marker and continue. - */ - if (pp->p_offset < off) { - page_vpsub(&vp->v_pages, mark); - page_vpadd(where_to_move, mark); - continue; - } - - /* * If just flushing dirty pages to disk and this vnode * is using a sorted list of pages, we can stop processing * as soon as we find an unmodified page. Since all the @@ -901,6 +889,16 @@ pvn_vplist_dirty( } /* + * Skip this page if the offset is out of the desired range. + * Just move the marker and continue. + */ + if (pp->p_offset < off) { + page_vpsub(&vp->v_pages, mark); + page_vpadd(where_to_move, mark); + continue; + } + + /* * If we are supposed to invalidate or free this * page, then we need an exclusive lock. */ |