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(¤t->mm->mmap_sem); err = get_user_pages(current, current->mm, cs->addr, 1, cs->write, 0, - &cs->pg, NULL); + &cs->pg, &vma); up_read(¤t->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();