diff -urpN fusefs-kmod.orig/files/patch-fuse_module__fuse.h fusefs-kmod/files/patch-fuse_module__fuse.h --- fusefs-kmod.orig/files/patch-fuse_module__fuse.h Mon Jun 1 16:47:24 2009 +++ fusefs-kmod/files/patch-fuse_module__fuse.h Mon Jun 1 17:14:37 2009 @@ -1,9 +1,17 @@ ---- fuse_module/fuse.h.orig 2008-02-05 00:25:57.000000000 -0500 -+++ fuse_module/fuse.h 2009-05-13 18:40:19.000000000 -0400 -@@ -25,6 +25,22 @@ +--- fuse_module/fuse.h.orig Tue Feb 5 08:25:57 2008 ++++ fuse_module/fuse.h Mon Jun 1 16:50:19 2009 +@@ -25,6 +25,30 @@ #endif #endif ++#ifndef USE_OLD_VALIDCLEAN_API ++#if __FreeBSD_version >= 800096 ++#define USE_OLD_VALIDCLEAN_API 0 ++#else ++#define USE_OLD_VALIDCLEAN_API 1 ++#endif ++#endif ++ +#ifndef VFSOPS_TAKES_THREAD +#if __FreeBSD_version >= 800087 +#define VFSOPS_TAKES_THREAD 0 @@ -23,18 +31,18 @@ #ifndef VOP_OPEN_TAKES_FP #if __FreeBSD_version >= 700044 #define VOP_OPEN_TAKES_FP 1 -@@ -49,6 +65,14 @@ - #endif - #endif - +@@ -46,6 +70,14 @@ + #define VOP_UNLOCK_TAKES_THREAD 0 + #else + #define VOP_UNLOCK_TAKES_THREAD 1 ++#endif ++#endif ++ +#ifndef VOP_GETATTR_TAKES_THREAD +#if __FreeBSD_version >= 800046 +#define VOP_GETATTR_TAKES_THREAD 0 +#else +#define VOP_GETATTR_TAKES_THREAD 1 -+#endif -+#endif -+ - #ifndef USE_PRIVILEGE_API - /* - * __FreeBSD_version bump was omitted for introduction of + #endif + #endif + diff -urpN fusefs-kmod.orig/files/patch-fuse_module__fuse_io.c fusefs-kmod/files/patch-fuse_module__fuse_io.c --- fusefs-kmod.orig/files/patch-fuse_module__fuse_io.c Mon Jun 1 16:47:24 2009 +++ fusefs-kmod/files/patch-fuse_module__fuse_io.c Mon Jun 1 17:14:57 2009 @@ -1,5 +1,5 @@ ---- fuse_module/fuse_io.c.orig 2008-02-05 00:25:57.000000000 -0500 -+++ fuse_module/fuse_io.c 2008-09-26 13:15:56.000000000 -0400 +--- fuse_module/fuse_io.c.orig Tue Feb 5 08:25:57 2008 ++++ fuse_module/fuse_io.c Mon Jun 1 17:13:01 2009 @@ -157,7 +157,11 @@ goto out; @@ -13,7 +13,19 @@ goto out; uio->uio_offset = va.va_size; } else if ((flags & FOF_OFFSET) == 0) -@@ -823,7 +827,11 @@ +@@ -745,7 +749,11 @@ + bp->b_dirtyoff = on; + bp->b_dirtyend = on + n; + } ++#if USE_OLD_VALIDCLEAN_API + vfs_bio_set_validclean(bp, on, n); ++#else ++ vfs_bio_set_valid(bp, on, n); ++#endif + } + + bwrite(bp); +@@ -823,7 +831,11 @@ #if FUSELIB_CONFORM_BIOREAD struct vattr va; diff -urpN fusefs-kmod.orig/files/patch-fuse_module__fuse_vnops.c fusefs-kmod/files/patch-fuse_module__fuse_vnops.c --- fusefs-kmod.orig/files/patch-fuse_module__fuse_vnops.c Mon Jun 1 16:47:24 2009 +++ fusefs-kmod/files/patch-fuse_module__fuse_vnops.c Mon Jun 1 17:15:21 2009 @@ -1,5 +1,5 @@ ---- fuse_module/fuse_vnops.c.orig 2008-02-05 00:25:57.000000000 -0500 -+++ fuse_module/fuse_vnops.c 2008-10-29 19:21:51.000000000 -0400 +--- fuse/module/fuse_vnops.c.orig Tue Feb 5 08:25:57 2008 ++++ fuse_module/fuse_vnops.c Mon Jun 1 17:13:09 2009 @@ -799,8 +799,11 @@ struct vnode *vp = ap->a_vp; struct vattr *vap = ap->a_vap; @@ -78,3 +78,15 @@ int err = 0; struct fuse_dispatcher fdi; struct fuse_setattr_in *fsai; +@@ -3455,7 +3479,11 @@ + * Read operation filled a partial page. + */ + m->valid = 0; ++#if USE_OLD_VALIDCLEAN_API + vm_page_set_validclean(m, 0, size - toff); ++#else ++ vm_page_set_valid(m, 0, size - toff); ++#endif + /* handled by vm_fault now */ + /* vm_page_zero_invalid(m, TRUE); */ + } else {