Author: charles                      Date: Fri Oct 20 00:31:31 2006 GMT
Module: SOURCES                       Tag: HEAD
---- Log message:
- updated for kernel 2.6.18

---- Files affected:
SOURCES:
   submount-subfs.patch (1.1 -> 1.2) 

---- Diffs:

================================================================
Index: SOURCES/submount-subfs.patch
diff -u SOURCES/submount-subfs.patch:1.1 SOURCES/submount-subfs.patch:1.2
--- SOURCES/submount-subfs.patch:1.1    Sun Jun 18 06:27:36 2006
+++ SOURCES/submount-subfs.patch        Fri Oct 20 02:31:25 2006
@@ -1,14 +1,35 @@
---- submount-0.9/subfs-0.9/subfs.c.orig        2006-06-18 01:48:20.000000000 
+0200
-+++ submount-0.9/subfs-0.9/subfs.c     2006-06-18 02:32:29.581589750 +0200
-@@ -25,6 +25,7 @@
+--- submount-0.9/subfs-0.9/subfs.c.orig        2004-02-26 23:54:58.000000000 
+0100
++++ submount-0.9/subfs-0.9/subfs.c     2006-10-19 02:24:11.987932309 +0200
+@@ -25,6 +25,8 @@
  #include <asm/signal.h>
  #include <linux/signal.h>
  #include <linux/sched.h>
 +#include <linux/version.h>
++#include <linux/rcupdate.h>
  
  #include "subfs.h"
  
-@@ -188,11 +188,11 @@
+@@ -94,11 +96,19 @@
+       struct task_struct *task = current;
+       int signal = SIGCONT;
+ 
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 16)
+       read_lock(&tasklist_lock);
+       spin_lock_irq(&task->sighand->siglock);
+       sigaddset(&task->pending.signal, signal);
+       spin_unlock_irq(&task->sighand->siglock);
+       read_unlock(&tasklist_lock);
++#else
++      rcu_read_lock();
++      spin_lock_irq(&task->sighand->siglock);
++      sigaddset(&task->pending.signal, signal);
++      spin_unlock_irq(&task->sighand->siglock);
++      rcu_read_unlock();
++#endif
+       set_tsk_thread_flag(task, TIF_SIGPENDING);
+       return;
+ }
+@@ -187,11 +197,11 @@
        if (&sfs_mnt->mount->mnt_mounts == sfs_mnt->mount->mnt_mounts.next) {
                result = mount_real_fs(sfs_mnt);
                if (result) {
@@ -23,7 +44,7 @@
                        return ERR_PTR(-ENOMEDIUM);
                }
                if (&sfs_mnt->mount->mnt_mounts
-@@ -221,6 +222,7 @@
+@@ -221,6 +231,7 @@
        struct vfsmount *child;
  
        /* This is ugly, but prevents a lockup during mount. */
@@ -31,7 +52,7 @@
        up(&dir->i_sem);
        if (down_interruptible(&sfs_mnt->sem)) {
                down(&dir->i_sem);/*put the dir sem back down if interrupted*/
-@@ -229,6 +231,16 @@
+@@ -229,6 +240,16 @@
        child = get_child_mount(sfs_mnt);
        up(&sfs_mnt->sem);
        down(&dir->i_sem);
@@ -48,3 +69,96 @@
        if (IS_ERR(child))
                return (void *) child;
        subfs_send_signal();
+@@ -262,9 +283,15 @@
+ 
+ /*  Implements the statfs method so df and such will work on the mountpoint.
+  */
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 18)
+ static int subfs_statfs(struct super_block *sb, struct kstatfs *buf)
+ {
+       struct subfs_mount *sfs_mnt = sb->s_fs_info;
++#else
++static int subfs_statfs(struct dentry *dentry, struct kstatfs *buf)
++{
++      struct subfs_mount *sfs_mnt = dentry->d_sb->s_fs_info;
++#endif
+       struct vfsmount *child;
+       if (down_interruptible(&sfs_mnt->sem))
+               return -ERESTARTSYS;
+@@ -388,6 +415,7 @@
+  * subfs_mount structure is pointed to by the s_fs_info field of the
+  * superblock structure.
+  */
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 18)
+ static struct super_block *subfs_get_super(struct file_system_type *fst,
+                               int flags, const char *devname, void *data)
+ {
+@@ -416,7 +444,39 @@
+       newmount->sb->s_fs_info = newmount;
+       return newmount->sb;
+ }
++#else
++static int subfs_get_super(struct file_system_type *fst,
++                              int flags, const char *devname, void *data,
++                              struct vfsmount *mnt)
++{
++      char *device;
++      struct subfs_mount *newmount;
++      int ret;
+ 
++      if (!(newmount = kmalloc(sizeof(struct subfs_mount), GFP_KERNEL)))
++              return -ENOMEM;
++      newmount->req_fs = NULL;
++      newmount->sb = NULL;
++      newmount->mount = NULL;
++      newmount->procuid = 0;
++      sema_init(&newmount->sem, 1);
++      if (!(device = kmalloc((strlen(devname) + 1), GFP_KERNEL)))
++              return -ENOMEM;
++      strcpy(device, devname);
++      newmount->device = device;
++        if (!(newmount->helper_prog =
++                      kmalloc(sizeof(SUBMOUNTD_PATH), GFP_KERNEL)))
++              return -ENOMEM;
++      strcpy(newmount->helper_prog, SUBMOUNTD_PATH);
++      if ((ret = proc_opts(newmount, data)))
++              return ret;
++      if ((ret = get_sb_nodev(fst, flags, data, subfs_fill_super, mnt)))
++              return ret;
++      newmount->sb = mnt->mnt_sb;
++      newmount->sb->s_fs_info = newmount;
++      return ret;
++}
++#endif
+ 
+ /* subfs_kill_super is the subfs implementation of the kill_sb method.
+  * It should be called only on umount.  It cleans up the appropriate
+--- submount-0.9/subfs-0.9/subfs.h.orig        2004-02-26 23:54:58.000000000 
+0100
++++ submount-0.9/subfs-0.9/subfs.h     2006-10-19 02:14:56.944311764 +0200
+@@ -33,8 +33,17 @@
+ 
+ 
+ static void subfs_kill_super(struct super_block *sb);
++
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 18)
+ static struct super_block *subfs_get_super(struct file_system_type *fst,
+               int flags, const char *devname, void *data);
++static int subfs_statfs(struct super_block *sb, struct kstatfs *buf);
++#else
++static int subfs_get_super(struct file_system_type *fst,
++              int flags, const char *devname, void *data, struct vfsmount 
*mnt);
++static int subfs_statfs(struct dentry *dentry, struct kstatfs *buf);
++#endif
++
+ static struct vfsmount *get_subfs_vfsmount(struct super_block *sb);
+ static int subfs_fill_super(struct super_block *sb, void *data,
+                           int silent);
+@@ -47,8 +56,6 @@
+ static void subfs_send_signal(void);
+ static void subfs_set_fs_pwd(struct fs_struct *fs, struct vfsmount *mnt,
+                            struct dentry *dentry);
+-static int subfs_statfs(struct super_block *sb, struct kstatfs *buf);
+-
+ 
+ static struct file_system_type subfs_type = {
+       .owner = THIS_MODULE,
================================================================

---- CVS-web:
    http://cvs.pld-linux.org/SOURCES/submount-subfs.patch?r1=1.1&r2=1.2&f=u

_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to