fix
diff --git a/ChangeLog b/ChangeLog
index f5a3324..a80aba5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -5,6 +5,8 @@
 
 	* Fix compile warning on 2.6.13 and later
 
+	* Fix compilation on 2.4.*
+
 2005-08-25  Miklos Szeredi <miklos@szeredi.hu>
 
 	* lib: add userspace side of ftruncate() method for experimentation
diff --git a/kernel/dir.c b/kernel/dir.c
index f1baf78..623902c 100644
--- a/kernel/dir.c
+++ b/kernel/dir.c
@@ -476,6 +476,7 @@
 	return fuse_do_getattr(inode);
 }
 
+#ifdef KERNEL_2_6
 static int fuse_access(struct inode *inode, int mask)
 {
 	struct fuse_conn *fc = get_fuse_conn(inode);
@@ -507,6 +508,7 @@
 	}
 	return err;
 }
+#endif
 
 static int fuse_permission(struct inode *inode, int mask, struct nameidata *nd)
 {
@@ -552,8 +554,10 @@
 			return -EACCES;
 
 		err = 0;
+#ifdef KERNEL_2_6
 		if (nd && (nd->flags & LOOKUP_ACCESS))
 			err = fuse_access(inode, mask);
+#endif
 	}
 	return err;
 }
diff --git a/kernel/file.c b/kernel/file.c
index 013093d..cce2777 100644
--- a/kernel/file.c
+++ b/kernel/file.c
@@ -685,17 +685,16 @@
 	return err;
 }
 
-static int fuse_setlk(struct file *file, struct file_lock *fl)
+static int fuse_setlk(struct file *file, struct file_lock *fl, int sleep)
 {
 	struct inode *inode = file->f_dentry->d_inode;
 	struct fuse_conn *fc = get_fuse_conn(inode);
 	struct fuse_req *req;
 	struct fuse_lk_in_out arg;
-	int sleep = fl->fl_flags & FL_SLEEP;
 	int err;
 
 	if (fc->no_lk)
-		return posix_lock_file_wait(file, fl);
+		return -ENOSYS;
 
 	if (!sleep) {
 		req = fuse_get_request(fc);
@@ -722,10 +721,8 @@
 	request_send(fc, req);
 	err = req->out.h.error;
 	fuse_put_request(fc, req);
-	if (err == -ENOSYS) {
+	if (err == -ENOSYS)
 		fc->no_lk = 1;
-		err = posix_lock_file_wait(file, fl);
-	}
 
 	return err;
 }
@@ -734,8 +731,19 @@
 {
 	if (cmd == F_GETLK)
 		return fuse_getlk(file, fl);
-	else
-		return fuse_setlk(file, fl);
+	else {
+#ifdef KERNEL_2_6
+		int err =  fuse_setlk(file, fl, fl->fl_flags & FL_SLEEP);
+		if (err == -ENOSYS)
+			err = posix_lock_file_wait(file, fl);
+#else
+		int err = fuse_setlk(file, fl,
+				     cmd == F_SETLKW || cmd == F_SETLKW64);
+		if (err == -ENOSYS)
+			err = 0;
+#endif
+		return err;
+	}
 }
 
 #ifndef KERNEL_2_6