summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormav <mav@FreeBSD.org>2017-07-24 06:07:44 +0000
committermav <mav@FreeBSD.org>2017-07-24 06:07:44 +0000
commit15371849359ba08991f746a8a8101edf98bbd293 (patch)
treec43306929ffdb71eaa4c4fba00d9c2a1a589a543
parentff0db1ef3af0cce5a259733c8731028df2a24769 (diff)
downloadFreeBSD-src-15371849359ba08991f746a8a8101edf98bbd293.zip
FreeBSD-src-15371849359ba08991f746a8a8101edf98bbd293.tar.gz
Revert unexpected changes leaked into r321411.
-rw-r--r--sys/fs/nfsclient/nfs_clbio.c6
-rw-r--r--sys/fs/smbfs/smbfs_io.c8
-rw-r--r--sys/vm/vnode_pager.c21
-rw-r--r--sys/vm/vnode_pager.h3
4 files changed, 9 insertions, 29 deletions
diff --git a/sys/fs/nfsclient/nfs_clbio.c b/sys/fs/nfsclient/nfs_clbio.c
index 026dc73..2432f98 100644
--- a/sys/fs/nfsclient/nfs_clbio.c
+++ b/sys/fs/nfsclient/nfs_clbio.c
@@ -337,10 +337,8 @@ ncl_putpages(struct vop_putpages_args *ap)
cred);
crfree(cred);
- if (error == 0 || !nfs_keep_dirty_on_error) {
- vnode_pager_undirty_pages(pages, rtvals, count - uio.uio_resid,
- np->n_size - offset, npages * PAGE_SIZE);
- }
+ if (error == 0 || !nfs_keep_dirty_on_error)
+ vnode_pager_undirty_pages(pages, rtvals, count - uio.uio_resid);
return (rtvals[0]);
}
diff --git a/sys/fs/smbfs/smbfs_io.c b/sys/fs/smbfs/smbfs_io.c
index 6bcffee..498d063 100644
--- a/sys/fs/smbfs/smbfs_io.c
+++ b/sys/fs/smbfs/smbfs_io.c
@@ -621,11 +621,9 @@ smbfs_putpages(ap)
relpbuf(bp, &smbfs_pbuf_freecnt);
- if (error == 0) {
- vnode_pager_undirty_pages(pages, rtvals, count - uio.uio_resid,
- npages * PAGE_SIZE, npages * PAGE_SIZE);
- }
- return (rtvals[0]);
+ if (!error)
+ vnode_pager_undirty_pages(pages, rtvals, count - uio.uio_resid);
+ return rtvals[0];
#endif /* SMBFS_RWGENERIC */
}
diff --git a/sys/vm/vnode_pager.c b/sys/vm/vnode_pager.c
index f10707a..06dff5e 100644
--- a/sys/vm/vnode_pager.c
+++ b/sys/vm/vnode_pager.c
@@ -1277,13 +1277,12 @@ vnode_pager_putpages_ioflags(int pager_flags)
}
void
-vnode_pager_undirty_pages(vm_page_t *ma, int *rtvals, int written, int eof,
- int lpos)
+vnode_pager_undirty_pages(vm_page_t *ma, int *rtvals, int written)
{
vm_object_t obj;
- int i, pos, pos_devb;
+ int i, pos;
- if (written == 0 && eof >= lpos)
+ if (written == 0)
return;
obj = ma[0]->object;
VM_OBJECT_WLOCK(obj);
@@ -1297,20 +1296,6 @@ vnode_pager_undirty_pages(vm_page_t *ma, int *rtvals, int written, int eof,
vm_page_clear_dirty(ma[i], 0, written & PAGE_MASK);
}
}
- for (pos = eof, i = OFF_TO_IDX(trunc_page(pos)); pos < lpos; i++) {
- if (pos != trunc_page(pos)) {
- pos_devb = roundup2(pos, DEV_BSIZE) & PAGE_MASK;
- vm_page_clear_dirty(ma[i], pos_devb, PAGE_SIZE -
- pos_devb);
- if (ma[i]->dirty == VM_PAGE_BITS_ALL)
- rtvals[i] = VM_PAGER_OK;
- pos = round_page(pos);
- } else {
- /* vm_pageout_flush() clears dirty */
- rtvals[i] = VM_PAGER_BAD;
- pos += PAGE_SIZE;
- }
- }
VM_OBJECT_WUNLOCK(obj);
}
diff --git a/sys/vm/vnode_pager.h b/sys/vm/vnode_pager.h
index 31fa896..bfcb98a 100644
--- a/sys/vm/vnode_pager.h
+++ b/sys/vm/vnode_pager.h
@@ -50,8 +50,7 @@ int vnode_pager_local_getpages_async(struct vop_getpages_async_args *ap);
int vnode_pager_putpages_ioflags(int pager_flags);
void vnode_pager_release_writecount(vm_object_t object, vm_offset_t start,
vm_offset_t end);
-void vnode_pager_undirty_pages(vm_page_t *ma, int *rtvals, int written,
- int eof, int lpos);
+void vnode_pager_undirty_pages(vm_page_t *ma, int *rtvals, int written);
void vnode_pager_update_writecount(vm_object_t object, vm_offset_t start,
vm_offset_t end);
OpenPOWER on IntegriCloud