diff -ruw fuse-2.6.0-pre2.org/kernel/dev.c fuse-2.6.0-pre2/kernel/dev.c
--- fuse-2.6.0-pre2.org/kernel/dev.c	2006-03-13 18:37:20.000000000 +0100
+++ fuse-2.6.0-pre2/kernel/dev.c	2006-05-03 17:24:53.000000000 +0200
@@ -489,6 +489,7 @@
 static int fuse_copy_fill(struct fuse_copy_state *cs)
 {
 	unsigned long offset;
+	struct vm_area_struct *vma;
 	int err;
 
 	unlock_request(cs->fc, cs->req);
@@ -502,13 +503,14 @@
 	}
 	down_read(&current->mm->mmap_sem);
 	err = get_user_pages(current, current->mm, cs->addr, 1, cs->write, 0,
-			     &cs->pg, NULL);
+			     &cs->pg, &vma);
 	up_read(&current->mm->mmap_sem);
 	if (err < 0)
 		return err;
 	BUG_ON(err != 1);
 	offset = cs->addr % PAGE_SIZE;
 	cs->mapaddr = kmap_atomic(cs->pg, KM_USER0);
+	flush_cache_page(vma, cs->addr); //, page_to_pfn(cs->pg));
 	cs->buf = cs->mapaddr + offset;
 	cs->len = min(PAGE_SIZE - offset, cs->seglen);
 	cs->seglen -= cs->len;
diff -ruw fuse-2.6.0-pre2.org/lib/fuse.c fuse-2.6.0-pre2/lib/fuse.c
--- fuse-2.6.0-pre2.org/lib/fuse.c	2006-03-13 18:36:46.000000000 +0100
+++ fuse-2.6.0-pre2/lib/fuse.c	2006-04-25 09:47:37.000000000 +0200
@@ -516,12 +516,19 @@
 
 static void curr_time(struct timespec *now)
 {
+#ifdef CLOCK_MONOTONIC
     static clockid_t clockid = CLOCK_MONOTONIC;
     int res = clock_gettime(clockid, now);
     if (res == -1 && errno == EINVAL) {
         clockid = CLOCK_REALTIME;
         res = clock_gettime(clockid, now);
     }
+#else
+    static clockid_t clockid;
+    int res;
+    clockid = CLOCK_REALTIME;
+    res = clock_gettime(clockid, now);
+#endif
     if (res == -1) {
         perror("fuse: clock_gettime");
         abort();
