diff options
author | Florian Fainelli <florian@openwrt.org> | 2007-05-08 21:45:02 +0000 |
---|---|---|
committer | Florian Fainelli <florian@openwrt.org> | 2007-05-08 21:45:02 +0000 |
commit | 820555812e16ae9709c5d743d3250ab744c664e4 (patch) | |
tree | d12f1342572505893652c4c9ecbf6e05ba223d40 /package/shfs/patches/101-shfs_0.35_2.6.18_dentry.patch | |
parent | 6a543b6c1e4ea681cb4900636f4ed85535bf199f (diff) | |
download | master-31e0f0ae-820555812e16ae9709c5d743d3250ab744c664e4.tar.gz master-31e0f0ae-820555812e16ae9709c5d743d3250ab744c664e4.tar.bz2 master-31e0f0ae-820555812e16ae9709c5d743d3250ab744c664e4.zip |
Forgot comitting patches
SVN-Revision: 7142
Diffstat (limited to 'package/shfs/patches/101-shfs_0.35_2.6.18_dentry.patch')
-rw-r--r-- | package/shfs/patches/101-shfs_0.35_2.6.18_dentry.patch | 156 |
1 files changed, 156 insertions, 0 deletions
diff --git a/package/shfs/patches/101-shfs_0.35_2.6.18_dentry.patch b/package/shfs/patches/101-shfs_0.35_2.6.18_dentry.patch new file mode 100644 index 0000000000..25c3dc6f33 --- /dev/null +++ b/package/shfs/patches/101-shfs_0.35_2.6.18_dentry.patch @@ -0,0 +1,156 @@ +--- shfs-0.35.orig/shfs/Linux-2.6/inode.c ++++ shfs-0.35/shfs/Linux-2.6/inode.c +@@ -341,12 +341,21 @@ out: + return -EINVAL; + } + ++#ifdef NEW_VFS_DENTRY_API ++static int ++shfs_get_sb(struct file_system_type *fs_type, ++ int flags, const char *dev_name, void *data, struct vfsmount *mnt) ++{ ++ return get_sb_nodev(fs_type, flags, data, shfs_read_super, mnt); ++} ++#else + static struct super_block * + shfs_get_sb(struct file_system_type *fs_type, + int flags, const char *dev_name, void *data) + { + return get_sb_nodev(fs_type, flags, data, shfs_read_super); + } ++#endif + + static struct file_system_type sh_fs_type = { + .owner = THIS_MODULE, +--- shfs-0.35.orig/shfs/Linux-2.6/file.c ++++ shfs-0.35/shfs/Linux-2.6/file.c +@@ -199,7 +199,7 @@ shfs_file_open(struct inode *inode, stru + } + + static int +-shfs_file_flush(struct file *f) ++do_file_flush(struct file *f) + { + struct dentry *dentry = f->f_dentry; + struct shfs_sb_info *info = info_from_dentry(dentry); +@@ -222,6 +222,16 @@ shfs_file_flush(struct file *f) + } + + static int ++#ifdef FLUSH_HAS_LOCK_OWNER ++shfs_file_flush(struct file *f, fl_owner_t id) ++#else ++shfs_file_flush(struct file *f) ++#endif ++{ ++ return do_file_flush(f); ++} ++ ++static int + shfs_file_release(struct inode *inode, struct file *f) + { + struct dentry *dentry = f->f_dentry; +@@ -311,7 +321,7 @@ shfs_slow_write(struct file *f, const ch + DEBUG("\n"); + written = generic_file_write(f, buf, count, offset); + if (written > 0) { +- result = shfs_file_flush(f); ++ result = do_file_flush(f); + written = result < 0 ? result: written; + } + +Index: shfs-0.35/shfs/Linux-2.6/proc.c +=================================================================== +--- shfs-0.35.orig/shfs/Linux-2.6/proc.c ++++ shfs-0.35/shfs/Linux-2.6/proc.c +@@ -570,6 +570,16 @@ error: + return result; + } + ++#ifdef NEW_VFS_DENTRY_API ++int ++shfs_statfs(struct dentry *dentry, struct kstatfs *attr) ++{ ++ struct shfs_sb_info *info = info_from_sb(dentry->d_sb); ++ ++ DEBUG("\n"); ++ return info->fops.statfs(info, attr); ++} ++#else + int + shfs_statfs(struct super_block *sb, struct kstatfs *attr) + { +@@ -578,4 +588,5 @@ shfs_statfs(struct super_block *sb, stru + DEBUG("\n"); + return info->fops.statfs(info, attr); + } ++#endif + +--- shfs-0.35.orig/shfs/Linux-2.6/shfs_fs.h ++++ shfs-0.35/shfs/Linux-2.6/shfs_fs.h +@@ -9,6 +9,12 @@ + + #include <linux/ioctl.h> + #include <linux/pagemap.h> ++#include <linux/version.h> ++ ++#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17) ++#define NEW_VFS_DENTRY_API ++#define FLUSH_HAS_LOCK_OWNER ++#endif + + #define SHFS_MAX_AGE(info) (((info)->ttl * HZ) / 1000) + #define SOCKBUF_SIZE (SHFS_PATH_MAX * 10) +@@ -100,7 +106,12 @@ int reply(char *s); + void set_garbage(struct shfs_sb_info *info, int write, int count); + int get_name(struct dentry *d, char *name); + int shfs_notify_change(struct dentry *dentry, struct iattr *attr); ++ ++#ifdef NEW_VFS_DENTRY_API ++int shfs_statfs(struct dentry *dentry, struct kstatfs *attr); ++#else + int shfs_statfs(struct super_block *sb, struct kstatfs *attr); ++#endif + + /* shfs/inode.c */ + void shfs_set_inode_attr(struct inode *inode, struct shfs_fattr *fattr); +--- shfs-0.35.orig/shfs/Linux-2.6/symlink.c ++++ shfs-0.35/shfs/Linux-2.6/symlink.c +@@ -41,7 +41,7 @@ error: + return result; + } + +-static int ++static void * + shfs_follow_link(struct dentry *dentry, struct nameidata *nd) + { + struct shfs_sb_info *info = info_from_dentry(dentry); +@@ -61,7 +61,7 @@ shfs_follow_link(struct dentry *dentry, + DEBUG("%s\n", real_name); + result = vfs_follow_link(nd, real_name); + error: +- return result; ++ return NULL; + } + + struct inode_operations shfs_symlink_inode_operations = { +--- shfs-0.35.orig/shfs/Linux-2.6/dcache.c 2004-06-01 15:16:19.000000000 +0200 ++++ shfs-0.35/shfs/Linux-2.6/dcache.c 2006-02-17 17:36:02.000000000 +0100 +@@ -68,7 +68,7 @@ + spin_lock(&dcache_lock); + next = parent->d_subdirs.next; + while (next != &parent->d_subdirs) { +- dentry = list_entry(next, struct dentry, d_child); ++ dentry = list_entry(next, struct dentry, d_u.d_child); + dentry->d_fsdata = NULL; + shfs_age_dentry(info, dentry); + next = next->next; +@@ -101,7 +101,7 @@ + spin_lock(&dcache_lock); + next = parent->d_subdirs.next; + while (next != &parent->d_subdirs) { +- dent = list_entry(next, struct dentry, d_child); ++ dent = list_entry(next, struct dentry, d_u.d_child); + if ((unsigned long)dent->d_fsdata == fpos) { + if (dent->d_inode) + dget_locked(dent); |