PERFORCE change 200664 for review
John Baldwin
jhb at FreeBSD.org
Mon Oct 24 19:29:01 UTC 2011
http://p4web.freebsd.org/@@200664?ac=10
Change 200664 by jhb at jhb_jhbbsd on 2011/10/24 19:28:32
Merge existing non-standard regions when possible.
Affected files ...
.. //depot/projects/fadvise/sys/kern/vfs_syscalls.c#9 edit
Differences ...
==== //depot/projects/fadvise/sys/kern/vfs_syscalls.c#9 (text+ko) ====
@@ -4904,9 +4904,23 @@
case FADV_RANDOM:
case FADV_NOREUSE:
mtx_pool_lock(mtxpool_sleep, fp);
- fp->f_advice = uap->advice;
- fp->f_advstart = uap->offset;
- fp->f_advend = end;
+ /*
+ * See if we can merge with the existing non-standard
+ * region.
+ */
+ if (fp->f_advice == uap->advice &&
+ ((fp->f_advstart <= end && fp->f_advend >= uap->offset) ||
+ (fp->f_advstart != 0 && fp->f_advstart == end + 1) ||
+ (uap->offset != 0 && fp->f_advend + 1 == uap->offset))) {
+ if (uap->offset < fp->f_advstart)
+ fp->f_advstart = uap->offset;
+ if (end > fp->f_advend)
+ fp->f_advend = end;
+ } else {
+ fp->f_advice = uap->advice;
+ fp->f_advstart = uap->offset;
+ fp->f_advend = end;
+ }
mtx_pool_unlock(mtxpool_sleep, fp);
break;
case FADV_NORMAL:
More information about the p4-projects
mailing list