move more extra packages from ./trunk to ./packages
[openwrt.git] / package / shfs / patches / 104-shfs_0.35_inode_and_fs.patch
diff --git a/package/shfs/patches/104-shfs_0.35_inode_and_fs.patch b/package/shfs/patches/104-shfs_0.35_inode_and_fs.patch
deleted file mode 100644 (file)
index 0953e6b..0000000
+++ /dev/null
@@ -1,377 +0,0 @@
-Index: shfs-0.35/shfs/Linux-2.6/fcache.c
-===================================================================
---- shfs-0.35.orig/shfs/Linux-2.6/fcache.c     2007-06-04 13:22:57.997038392 +0200
-+++ shfs-0.35/shfs/Linux-2.6/fcache.c  2007-06-04 13:22:59.019882896 +0200
-@@ -100,7 +100,11 @@
-               VERBOSE("dir in file cache?\n");
-               return -EINVAL;
-       }
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,19))
-+      p = (struct shfs_inode_info *)inode->i_private;
-+#else
-       p = (struct shfs_inode_info *)inode->u.generic_ip;
-+#endif
-       if (!p) {
-               VERBOSE("inode without info\n");
-               return -EINVAL;
-@@ -127,7 +131,11 @@
-               VERBOSE("dir in file cache?\n");
-               return -EINVAL;
-       }
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,19))
-+      p = (struct shfs_inode_info *)inode->i_private;
-+#else
-       p = (struct shfs_inode_info *)inode->u.generic_ip;
-+#endif
-       if (!p) {
-               VERBOSE("inode without info\n");
-               return -EINVAL;
-@@ -160,7 +168,11 @@
-       if (result == 0) {
-               struct shfs_inode_info *p;
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,19))
-+              p = (struct shfs_inode_info *)f->f_dentry->d_inode->i_private;
-+#else
-               p = (struct shfs_inode_info *)f->f_dentry->d_inode->u.generic_ip;
-+#endif
-               if (!p) {
-                       VERBOSE("inode without info\n");
-                       return -EINVAL;
-@@ -184,7 +196,11 @@
-               return -EINVAL;
-       }
-       DEBUG("ino: %lu\n", inode->i_ino);
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,19))
-+      p = (struct shfs_inode_info *)inode->i_private;
-+#else
-       p = (struct shfs_inode_info *)inode->u.generic_ip;
-+#endif
-       if (!p) {
-               VERBOSE("inode without info\n");
-               return -EINVAL;
-@@ -226,7 +242,11 @@
-               VERBOSE("dir in file cache?\n");
-               return -EINVAL;
-       }
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,19))
-+      p = (struct shfs_inode_info *)inode->i_private;
-+#else
-       p = (struct shfs_inode_info *)inode->u.generic_ip;
-+#endif
-       if (!p) {
-               VERBOSE("inode without info\n");
-               return -EINVAL;
-@@ -327,7 +347,11 @@
-               VERBOSE("dir in file cache?\n");
-               return -EINVAL;
-       }
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,19))
-+      p = (struct shfs_inode_info *)inode->i_private;
-+#else
-       p = (struct shfs_inode_info *)inode->u.generic_ip;
-+#endif
-       if (!p) {
-               VERBOSE("inode without info\n");
-               return -EINVAL;
-Index: shfs-0.35/shfs/Linux-2.6/inode.c
-===================================================================
---- shfs-0.35.orig/shfs/Linux-2.6/inode.c      2007-06-04 13:22:58.637940960 +0200
-+++ shfs-0.35/shfs/Linux-2.6/inode.c   2007-06-04 13:22:59.020882744 +0200
-@@ -36,7 +36,11 @@
- shfs_set_inode_attr(struct inode *inode, struct shfs_fattr *fattr)
- {
-       struct shfs_sb_info *info = info_from_inode(inode);
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,19))
-+      struct shfs_inode_info *i = inode->i_private;
-+#else
-       struct shfs_inode_info *i = inode->u.generic_ip;
-+#endif
-       struct timespec last_time = inode->i_mtime;
-       loff_t last_size = inode->i_size;
-@@ -53,7 +57,9 @@
-       inode->i_ctime  = fattr->f_ctime;
-       inode->i_atime  = fattr->f_atime;
-       inode->i_mtime  = fattr->f_mtime;
-+#ifdef STRUCT_INODE_HAS_I_BLKSIZE
-       inode->i_blksize= fattr->f_blksize;
-+#endif
-       inode->i_blocks = fattr->f_blocks;
-       inode->i_size   = fattr->f_size;
-@@ -76,7 +82,11 @@
-       if (!inode)
-               return NULL;
-       inode->i_ino = fattr->f_ino;
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,19))
-+      i = inode->i_private = (struct shfs_inode_info *)KMEM_ALLOC("inode", inode_cache, GFP_KERNEL);
-+#else
-       i = inode->u.generic_ip = (struct shfs_inode_info *)KMEM_ALLOC("inode", inode_cache, GFP_KERNEL);
-+#endif
-       if (!i)
-               return NULL;
-       i->cache = NULL;
-@@ -108,7 +118,11 @@
-       struct shfs_inode_info *i;
-       DEBUG("ino: %lu\n", inode->i_ino);
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,19))
-+      i = (struct shfs_inode_info *)inode->i_private;
-+#else
-       i = (struct shfs_inode_info *)inode->u.generic_ip;
-+#endif
-       if (!i) {
-               VERBOSE("invalid inode\n");
-               goto out;
-@@ -176,7 +190,11 @@
- {
-       struct shfs_sb_info *info = info_from_dentry(dentry);
-       struct inode *inode = dentry->d_inode;
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,19))
-+      struct shfs_inode_info *i = (struct shfs_inode_info *)inode->i_private;
-+#else
-       struct shfs_inode_info *i = (struct shfs_inode_info *)inode->u.generic_ip;
-+#endif
-       int result;
-         DEBUG("%s\n", dentry->d_name.name);
-Index: shfs-0.35/shfs/Linux-2.6/dir.c
-===================================================================
---- shfs-0.35.orig/shfs/Linux-2.6/dir.c        2007-06-04 13:22:58.822912840 +0200
-+++ shfs-0.35/shfs/Linux-2.6/dir.c     2007-06-04 13:22:59.020882744 +0200
-@@ -302,8 +302,13 @@
-       
-       shfs_invalid_dir_cache(dir);
-       result = shfs_instantiate(dentry);
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,19))
-+      if (forced_write && dentry->d_inode && dentry->d_inode->i_private)
-+              ((struct shfs_inode_info *)dentry->d_inode->i_private)->unset_write_on_close = 1;
-+#else
-       if (forced_write && dentry->d_inode && dentry->d_inode->u.generic_ip)
-               ((struct shfs_inode_info *)dentry->d_inode->u.generic_ip)->unset_write_on_close = 1;
-+#endif
-       return result;
- }
-Index: shfs-0.35/shfs/Linux-2.6/file.c
-===================================================================
---- shfs-0.35.orig/shfs/Linux-2.6/file.c       2007-06-04 13:22:58.397977440 +0200
-+++ shfs-0.35/shfs/Linux-2.6/file.c    2007-06-04 13:22:59.020882744 +0200
-@@ -90,7 +90,11 @@
-       struct dentry *dentry = f->f_dentry;
-       struct shfs_sb_info *info = info_from_dentry(dentry);
-       struct inode *inode = p->mapping->host;
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,19))
-+      struct shfs_inode_info *i = (struct shfs_inode_info *)inode->i_private;
-+#else
-       struct shfs_inode_info *i = (struct shfs_inode_info *)inode->u.generic_ip;
-+#endif
-       char *buffer = kmap(p) + offset;
-       int written = 0, result;
-       unsigned count = to - offset;
-@@ -252,8 +256,13 @@
-               }
-       }
-       /* if file was forced to be writeable, change attrs back on close */
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,19))
-+      if (dentry->d_inode && dentry->d_inode->i_private) {
-+              if  (((struct shfs_inode_info *)dentry->d_inode->i_private)->unset_write_on_close) {
-+#else
-       if (dentry->d_inode && dentry->d_inode->u.generic_ip) {
-               if  (((struct shfs_inode_info *)dentry->d_inode->u.generic_ip)->unset_write_on_close) {
-+#endif
-                       char name[SHFS_PATH_MAX];
-                       if (get_name(dentry, name) < 0)
-@@ -302,7 +311,8 @@
-               goto error;
-       }
-       if (result != 0) {
--              copy_to_user(buf, (char *)page, result);
-+              if (copy_to_user(buf, (char *)page, result))
-+                      goto error;
-               *ppos += result;
-       }
- error:
-@@ -315,11 +325,15 @@
- static ssize_t 
- shfs_slow_write(struct file *f, const char *buf, size_t count, loff_t *offset)
- {
--      int written = 0;
-+      ssize_t written = 0;
-       int result;
-       
-       DEBUG("\n");
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,19))
-+      written = do_sync_write(f, buf, count, offset);
-+#else
-       written = generic_file_write(f, buf, count, offset);
-+#endif
-       if (written > 0) {
-               result = do_file_flush(f);
-               written = result < 0 ? result: written;
-@@ -330,14 +344,23 @@
- struct file_operations shfs_file_operations = {
-       .llseek         = generic_file_llseek,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,19))
-+      .read           = do_sync_read,
-+      .write          = do_sync_write,
-+#else
-       .read           = generic_file_read,
-       .write          = generic_file_write,
-+#endif
-       .ioctl          = shfs_ioctl,
-       .mmap           = generic_file_mmap,
-       .open           = shfs_file_open,
-       .flush          = shfs_file_flush,
-       .release        = shfs_file_release,
-       .fsync          = shfs_file_sync,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,19))
-+      .aio_read       = generic_file_aio_read,
-+      .aio_write      = generic_file_aio_write,
-+#endif
- };
- struct file_operations shfs_slow_operations = {
-Index: shfs-0.35/shfs/Linux-2.6/proc.c
-===================================================================
---- shfs-0.35.orig/shfs/Linux-2.6/proc.c       2007-06-04 13:22:58.398977288 +0200
-+++ shfs-0.35/shfs/Linux-2.6/proc.c    2007-06-04 13:22:59.021882592 +0200
-@@ -149,7 +149,12 @@
- {
-       struct file *f = info->sock;
-       mm_segment_t fs;
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,19))
-+      ssize_t result = 0;
-+      loff_t begin;
-+#else
-       int c, result = 0;
-+#endif
-       unsigned long flags, sigpipe;
-       sigset_t old_set;
-@@ -161,7 +166,9 @@
-                       return result;
-       }
-       
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19))
-       c = count;
-+#endif
-       fs = get_fs();
-       set_fs(get_ds());
-@@ -173,6 +180,16 @@
-       SIGRECALC;
-       SIGUNLOCK(flags);
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,19))
-+      begin = f->f_pos;
-+      result = do_sync_write(f, buffer, count, &f->f_pos);
-+
-+      if (result < 0) {
-+              DEBUG("error: %d\n", result);
-+              fput(f);
-+              info->sock = NULL;
-+      }
-+#else
-       do {
-               struct iovec vec[1];
-@@ -190,6 +207,7 @@
-               buffer += result;
-               c -= result;
-       } while (c > 0);
-+#endif
-       SIGLOCK(flags);
-       if (result == -EPIPE && !sigpipe) {
-@@ -204,7 +222,11 @@
-       DEBUG(">%d\n", result);
-       if (result < 0)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,19))
-+              set_garbage(info, 1, count - (f->f_pos - begin));
-+#else
-               set_garbage(info, 1, c);
-+#endif
-       else
-               result = count;
-       return result;
-@@ -222,6 +244,9 @@
-       int c, result = 0;
-       unsigned long flags, sigpipe;
-       sigset_t old_set;
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,19))
-+      loff_t begin;
-+#endif
-       if (!f)
-               return -EIO;
-@@ -256,6 +281,20 @@
-       fs = get_fs();
-       set_fs(get_ds());
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,19))
-+      begin = f->f_pos;
-+      result = do_sync_read(f, buffer, c, &f->f_pos);
-+
-+      if (!result) {
-+              /* peer has closed socket */
-+              result = -EIO;
-+      }
-+      if (result < 0) {
-+              DEBUG("error: %d\n", result);
-+              fput(f);
-+              info->sock = NULL;
-+      }
-+#else
-       do {
-               struct iovec vec[1];
-@@ -277,6 +316,7 @@
-               buffer += result;
-               c -= result;
-       } while (c > 0);
-+#endif
-       SIGLOCK(flags);
-       if (result == -EPIPE && !sigpipe) {
-@@ -291,7 +331,11 @@
-       
-       DEBUG("<%d\n", result);
-       if (result < 0)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,19))
-+              set_garbage(info, 0, count - (f->f_pos - begin));
-+#else
-               set_garbage(info, 0, c);
-+#endif
-       else
-               result = count;
-       return result;
-@@ -316,8 +360,10 @@
-                       return result;
-       }
-       while (1) {
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19))
-               struct iovec vec[1];
-+#endif
-               nl = memchr(BUFFER, '\n', LEN);
-               if (nl) {
-                       *nl = '\0';
-@@ -348,9 +394,13 @@
-               fs = get_fs();
-               set_fs(get_ds());
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,19))
-+              result = do_sync_read(f, BUFFER+LEN, c, &f->f_pos);
-+#else
-               vec[0].iov_base = BUFFER+LEN;
-               vec[0].iov_len = c;
-               result = f->f_op->readv(f, (const struct iovec *)&vec, 1, &f->f_pos);
-+#endif
-               SIGLOCK(flags);
-               if (result == -EPIPE && !sigpipe) {
-                       sigdelset(&current->pending.signal, SIGPIPE);