I wanted to test cifs on a "2.6.40" (Fedora) system and due to video
driver issues couldn't use current mainline so ... here is a patch to
build current cifs on older (2.6.40 or 3.0) kernels.

diff -u /home/stevef/kernel-cifs.git/fs/cifs/cifsfs.c ./cifsfs.c
--- /home/stevef/kernel-cifs.git/fs/cifs/cifsfs.c       2011-10-12
23:42:05.196815382 -0500
+++ ./cifsfs.c  2011-10-13 17:52:30.744806928 -0500
@@ -210,7 +210,7 @@
        return 0;
 }

-static int cifs_permission(struct inode *inode, int mask)
+static int cifs_permission(struct inode *inode, int mask, unsigned int flags)
 {
        struct cifs_sb_info *cifs_sb;

@@ -225,7 +225,7 @@
                on the client (above and beyond ACL on servers) for
                servers which do not support setting and viewing mode bits,
                so allowing client to check permissions is useful */
-               return generic_permission(inode, mask);
+               return generic_permission(inode, mask, flags, NULL);
 }

 static struct kmem_cache *cifs_inode_cachep;
diff -u /home/stevef/kernel-cifs.git/fs/cifs/cifsfs.h ./cifsfs.h
--- /home/stevef/kernel-cifs.git/fs/cifs/cifsfs.h       2011-10-12
23:41:27.634817012 -0500
+++ ./cifsfs.h  2011-10-13 17:44:45.784798721 -0500
@@ -87,8 +87,8 @@
 extern ssize_t cifs_strict_writev(struct kiocb *iocb, const struct iovec *iov,
                                  unsigned long nr_segs, loff_t pos);
 extern int cifs_lock(struct file *, int, struct file_lock *);
-extern int cifs_fsync(struct file *, loff_t, loff_t, int);
-extern int cifs_strict_fsync(struct file *, loff_t, loff_t, int);
+extern int cifs_fsync(struct file *, int);
+extern int cifs_strict_fsync(struct file *, int);
 extern int cifs_flush(struct file *, fl_owner_t id);
 extern int cifs_file_mmap(struct file * , struct vm_area_struct *);
 extern int cifs_file_strict_mmap(struct file * , struct vm_area_struct *);
diff -u /home/stevef/kernel-cifs.git/fs/cifs/file.c ./file.c
--- /home/stevef/kernel-cifs.git/fs/cifs/file.c 2011-10-13
17:16:08.726768410 -0500
+++ ./file.c    2011-10-13 17:54:56.180809494 -0500
@@ -1442,7 +1411,7 @@
        return rc;
 }

-int cifs_strict_fsync(struct file *file, loff_t start, loff_t end,
+int cifs_strict_fsync(struct file *file,
                      int datasync)
 {
        int xid;
@@ -1452,7 +1421,7 @@
        struct inode *inode = file->f_path.dentry->d_inode;
        struct cifs_sb_info *cifs_sb = CIFS_SB(inode->i_sb);

-       rc = filemap_write_and_wait_range(inode->i_mapping, start, end);
+       rc = filemap_write_and_wait(inode->i_mapping);
        if (rc)
                return rc;
        mutex_lock(&inode->i_mutex);
@@ -1479,7 +1448,7 @@
        return rc;
 }

-int cifs_fsync(struct file *file, loff_t start, loff_t end, int datasync)
+int cifs_fsync(struct file *file, int datasync)
 {
        int xid;
        int rc = 0;
@@ -1488,7 +1457,7 @@
        struct cifs_sb_info *cifs_sb = CIFS_SB(file->f_path.dentry->d_sb);
        struct inode *inode = file->f_mapping->host;

-       rc = filemap_write_and_wait_range(inode->i_mapping, start, end);
+       rc = filemap_write_and_wait(inode->i_mapping);
        if (rc)
                return rc;
        mutex_lock(&inode->i_mutex);

-- 
Thanks,

Steve
--
To unsubscribe from this list: send the line "unsubscribe linux-cifs" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to