Whamcloud - gitweb
- patch kernel patches for "rm -i" problem
authorbraam <braam>
Fri, 17 Jan 2003 20:08:56 +0000 (20:08 +0000)
committerbraam <braam>
Fri, 17 Jan 2003 20:08:56 +0000 (20:08 +0000)
  this was erroneous failure handling for open.

lustre/kernel_patches/patches/lustre_version.patch
lustre/kernel_patches/patches/vfs_intent.patch
lustre/kernel_patches/which_patch

index 2e69e01..9f5235a 100644 (file)
@@ -1,11 +1,12 @@
 
 
 
- 0 files changed
+ include/linux/lustre_version.h |    1 +
+ 1 files changed, 1 insertion(+)
 
---- /dev/null  2002-08-30 16:31:37.000000000 -0700
-+++ linux-2.4.18-17.8.0-zab/include/linux/lustre_version.h     2002-12-06 14:52:30.000000000 -0800
+--- /dev/null  Fri Aug 30 17:31:37 2002
++++ lum-2.4.18-18.8.0-l6-root/include/linux/lustre_version.h   Fri Jan 17 12:10:36 2003
 @@ -0,0 +1 @@
-+#define LUSTRE_KERNEL_VERSION 5
++#define LUSTRE_KERNEL_VERSION 6
 
 _
index 54c498a..7c67714 100644 (file)
@@ -1,10 +1,18 @@
 
 
 
- 0 files changed
+ fs/dcache.c            |    3 
+ fs/namei.c             |  230 ++++++++++++++++++++++++++++++++++++++-----------
+ fs/nfsd/vfs.c          |    2 
+ fs/open.c              |   53 ++++++++---
+ fs/stat.c              |    9 +
+ include/linux/dcache.h |   31 ++++++
+ include/linux/fs.h     |   13 ++
+ kernel/ksyms.c         |    1 
+ 8 files changed, 280 insertions(+), 62 deletions(-)
 
---- linux-2.4.18-17.8.0/fs/dcache.c~vfs_intent 2002-12-06 14:52:31.000000000 -0800
-+++ linux-2.4.18-17.8.0-zab/fs/dcache.c        2002-12-06 14:52:31.000000000 -0800
+--- linux-2.4.18-p4smp-l6/fs/dcache.c~vfs_intent       Fri Jan 17 12:44:40 2003
++++ linux-2.4.18-p4smp-l6-root/fs/dcache.c     Fri Jan 17 12:44:40 2003
 @@ -150,6 +150,8 @@ repeat:
  unhash_it:
        list_del_init(&dentry->d_hash);
@@ -22,8 +30,8 @@
        INIT_LIST_HEAD(&dentry->d_hash);
        INIT_LIST_HEAD(&dentry->d_lru);
        INIT_LIST_HEAD(&dentry->d_subdirs);
---- linux-2.4.18-17.8.0/fs/namei.c~vfs_intent  2002-12-06 14:52:31.000000000 -0800
-+++ linux-2.4.18-17.8.0-zab/fs/namei.c 2002-12-06 14:52:31.000000000 -0800
+--- linux-2.4.18-p4smp-l6/fs/namei.c~vfs_intent        Fri Jan 17 12:44:40 2003
++++ linux-2.4.18-p4smp-l6-root/fs/namei.c      Fri Jan 17 12:46:08 2003
 @@ -1,3 +1,6 @@
 +
 +
                                break;
                }
                goto return_base;
-@@ -663,10 +702,21 @@ return_err:
+@@ -658,15 +697,28 @@ out_dput:
+               dput(dentry);
+               break;
+       }
++        if (err)
++                intent_release(nd->dentry, it);
+       path_release(nd);
+ return_err:
        return err;
  }
  
  }
  
  /* SMP-safe */
-@@ -751,6 +801,17 @@ walk_init_root(const char *name, struct 
+@@ -751,6 +803,17 @@ walk_init_root(const char *name, struct 
  }
  
  /* SMP-safe */
  int path_lookup(const char *path, unsigned flags, struct nameidata *nd)
  {
        int error = 0;
-@@ -779,7 +840,8 @@ int path_init(const char *name, unsigned
+@@ -779,7 +842,8 @@ int path_init(const char *name, unsigned
   * needs parent already locked. Doesn't follow mounts.
   * SMP-safe.
   */
  {
        struct dentry * dentry;
        struct inode *inode;
-@@ -802,13 +864,16 @@ struct dentry * lookup_hash(struct qstr 
+@@ -802,13 +866,16 @@ struct dentry * lookup_hash(struct qstr 
                        goto out;
        }
  
                dentry = inode->i_op->lookup(inode, new);
                unlock_kernel();
                if (!dentry)
-@@ -820,6 +885,12 @@ out:
+@@ -820,6 +887,12 @@ out:
        return dentry;
  }
  
  /* SMP-safe */
  struct dentry * lookup_one_len(const char * name, struct dentry * base, int len)
  {
-@@ -841,7 +912,7 @@ struct dentry * lookup_one_len(const cha
+@@ -841,7 +914,7 @@ struct dentry * lookup_one_len(const cha
        }
        this.hash = end_name_hash(hash);
  
  access:
        return ERR_PTR(-EACCES);
  }
-@@ -872,6 +943,23 @@ int __user_walk(const char *name, unsign
+@@ -872,6 +945,23 @@ int __user_walk(const char *name, unsign
        return err;
  }
  
  /*
   * It's inline, so penalty for filesystems that don't use sticky bit is
   * minimal.
-@@ -1010,7 +1098,8 @@ exit_lock:
-  * for symlinks (where the permissions are checked later).
-  * SMP-safe
-  */
--int open_namei(const char * pathname, int flag, int mode, struct nameidata *nd)
-+int open_namei_it(const char *pathname, int flag, int mode,
-+                struct nameidata *nd, struct lookup_intent *it)
+@@ -1045,14 +1135,17 @@ int may_open(struct nameidata *nd, int a
+         return get_lease(inode, flag);
+ }
++extern struct file *dentry_open_it(struct dentry *dentry, struct vfsmount *mnt,
++                          int flags, struct lookup_intent *it);
++
+ struct file *filp_open(const char * pathname, int open_flags, int mode)
  {
        int acc_mode, error = 0;
-       struct inode *inode;
-@@ -1024,7 +1113,7 @@ int open_namei(const char * pathname, in
+-      struct inode *inode;
+       struct dentry *dentry;
+       struct dentry *dir;
+       int flag = open_flags;
+       struct nameidata nd;
++      struct lookup_intent it = { .it_op = IT_OPEN };
+       int count = 0;
+       if ((flag+1) & O_ACCMODE)
+@@ -1066,7 +1159,7 @@ struct file *filp_open(const char * path
         * The simplest case - just a plain lookup.
         */
        if (!(flag & O_CREAT)) {
--              error = path_lookup(pathname, lookup_flags(flag), nd);
-+              error = path_lookup_it(pathname, lookup_flags(flag), nd, it);
+-              error = path_lookup(pathname, lookup_flags(flag), &nd);
++              error = path_lookup_it(pathname, lookup_flags(flag), &nd, &it);
                if (error)
-                       return error;
-               dentry = nd->dentry;
-@@ -1034,6 +1123,10 @@ int open_namei(const char * pathname, in
+                       return ERR_PTR(error);
+               dentry = nd.dentry;
+@@ -1076,6 +1169,8 @@ struct file *filp_open(const char * path
        /*
         * Create - we need to know the parent.
         */
-+      if (it) {
-+              it->it_mode = mode;
-+              it->it_op |= IT_CREAT;
-+      }
-       error = path_lookup(pathname, LOOKUP_PARENT, nd);
++        it.it_mode = mode;
++        it.it_op |= IT_CREAT;
+       error = path_lookup(pathname, LOOKUP_PARENT, &nd);
        if (error)
-               return error;
-@@ -1049,7 +1142,7 @@ int open_namei(const char * pathname, in
+               return ERR_PTR(error);
+@@ -1091,7 +1186,7 @@ struct file *filp_open(const char * path
  
-       dir = nd->dentry;
+       dir = nd.dentry;
        down(&dir->d_inode->i_sem);
--      dentry = lookup_hash(&nd->last, nd->dentry);
-+      dentry = lookup_hash_it(&nd->last, nd->dentry, it);
+-      dentry = lookup_hash(&nd.last, nd.dentry);
++      dentry = lookup_hash_it(&nd.last, nd.dentry, &it);
  
  do_last:
        error = PTR_ERR(dentry);
-@@ -1058,6 +1151,7 @@ do_last:
+@@ -1100,6 +1195,7 @@ do_last:
                goto exit;
        }
  
-+      it->it_mode = mode;
++      it.it_mode = mode;
        /* Negative dentry, just create the file */
        if (!dentry->d_inode) {
                error = vfs_create(dir->d_inode, dentry,
-@@ -1091,7 +1185,8 @@ do_last:
+@@ -1134,7 +1230,8 @@ do_last:
        error = -ENOENT;
        if (!dentry->d_inode)
                goto exit_dput;
 +                                      dentry->d_inode->i_op->follow_link2))
                goto do_link;
  
-       dput(nd->dentry);
-@@ -1177,8 +1272,10 @@ ok:
-       return 0;
+       dput(nd.dentry);
+@@ -1149,11 +1246,13 @@ ok:
+       if (!S_ISREG(nd.dentry->d_inode->i_mode))
+               open_flags &= ~O_TRUNC;
+-        return dentry_open(nd.dentry, nd.mnt, open_flags);
++        return dentry_open_it(nd.dentry, nd.mnt, open_flags, &it);
  
  exit_dput:
-+      intent_release(dentry, it);
++        intent_release(dentry, &it);
        dput(dentry);
  exit:
-+      intent_release(nd->dentry, it);
-       path_release(nd);
-       return error;
++        intent_release(nd.dentry, &it);
+       path_release(&nd);
+       return ERR_PTR(error);
  
-@@ -1197,7 +1294,12 @@ do_link:
+@@ -1172,7 +1271,12 @@ do_link:
         * are done. Procfs-like symlinks just set LAST_BIND.
         */
        UPDATE_ATIME(dentry->d_inode);
--      error = dentry->d_inode->i_op->follow_link(dentry, nd);
+-      error = dentry->d_inode->i_op->follow_link(dentry, &nd);
 +        if (dentry->d_inode->i_op->follow_link2) 
-+                error = dentry->d_inode->i_op->follow_link2(dentry, nd, it);
++                error = dentry->d_inode->i_op->follow_link2(dentry, &nd, &it);
 +        else 
-+                error = dentry->d_inode->i_op->follow_link(dentry, nd);
++                error = dentry->d_inode->i_op->follow_link(dentry, &nd);
 +      if (error)
-+              intent_release(dentry, it);
++              intent_release(dentry, &it);
        dput(dentry);
        if (error)
                return error;
-@@ -1219,13 +1321,20 @@ do_link:
+@@ -1194,13 +1298,15 @@ do_link:
        }
-       dir = nd->dentry;
+       dir = nd.dentry;
        down(&dir->d_inode->i_sem);
--      dentry = lookup_hash(&nd->last, nd->dentry);
-+      dentry = lookup_hash_it(&nd->last, nd->dentry, it);
-       putname(nd->last.name);
+-      dentry = lookup_hash(&nd.last, nd.dentry);
++      dentry = lookup_hash_it(&nd.last, nd.dentry, &it);
+       putname(nd.last.name);
        goto do_last;
  }
  
-+int open_namei(const char *pathname, int flag, int mode, struct nameidata *nd)
-+{
-+      return open_namei_it(pathname, flag, mode, nd, NULL);
-+}
-+
 +
  /* SMP-safe */
 -static struct dentry *lookup_create(struct nameidata *nd, int is_dir)
  {
        struct dentry *dentry;
  
-@@ -1233,7 +1342,7 @@ static struct dentry *lookup_create(stru
+@@ -1208,7 +1314,7 @@ static struct dentry *lookup_create(stru
        dentry = ERR_PTR(-EEXIST);
        if (nd->last_type != LAST_NORM)
                goto fail;
        if (IS_ERR(dentry))
                goto fail;
        if (!is_dir && nd->last.name[nd->last.len] && !dentry->d_inode)
-@@ -1279,6 +1388,7 @@ asmlinkage long sys_mknod(const char * f
+@@ -1254,6 +1360,7 @@ asmlinkage long sys_mknod(const char * f
        char * tmp;
        struct dentry * dentry;
        struct nameidata nd;
  
        if (S_ISDIR(mode))
                return -EPERM;
-@@ -1289,7 +1399,7 @@ asmlinkage long sys_mknod(const char * f
+@@ -1264,7 +1371,7 @@ asmlinkage long sys_mknod(const char * f
        error = path_lookup(tmp, LOOKUP_PARENT, &nd);
        if (error)
                goto out;
        error = PTR_ERR(dentry);
  
        mode &= ~current->fs->umask;
-@@ -1307,6 +1417,7 @@ asmlinkage long sys_mknod(const char * f
+@@ -1282,6 +1389,7 @@ asmlinkage long sys_mknod(const char * f
                default:
                        error = -EINVAL;
                }
                dput(dentry);
        }
        up(&nd.dentry->d_inode->i_sem);
-@@ -1347,6 +1458,7 @@ asmlinkage long sys_mkdir(const char * p
+@@ -1322,6 +1430,7 @@ asmlinkage long sys_mkdir(const char * p
  {
        int error = 0;
        char * tmp;
  
        tmp = getname(pathname);
        error = PTR_ERR(tmp);
-@@ -1357,11 +1469,12 @@ asmlinkage long sys_mkdir(const char * p
+@@ -1332,11 +1441,12 @@ asmlinkage long sys_mkdir(const char * p
                error = path_lookup(tmp, LOOKUP_PARENT, &nd);
                if (error)
                        goto out;
                        dput(dentry);
                }
                up(&nd.dentry->d_inode->i_sem);
-@@ -1445,6 +1558,7 @@ asmlinkage long sys_rmdir(const char * p
+@@ -1420,6 +1530,7 @@ asmlinkage long sys_rmdir(const char * p
        char * name;
        struct dentry *dentry;
        struct nameidata nd;
  
        name = getname(pathname);
        if(IS_ERR(name))
-@@ -1466,10 +1580,11 @@ asmlinkage long sys_rmdir(const char * p
+@@ -1441,10 +1552,11 @@ asmlinkage long sys_rmdir(const char * p
                        goto exit1;
        }
        down(&nd.dentry->d_inode->i_sem);
                dput(dentry);
        }
        up(&nd.dentry->d_inode->i_sem);
-@@ -1513,6 +1628,7 @@ asmlinkage long sys_unlink(const char * 
+@@ -1488,6 +1600,7 @@ asmlinkage long sys_unlink(const char * 
        char * name;
        struct dentry *dentry;
        struct nameidata nd;
  
        name = getname(pathname);
        if(IS_ERR(name))
-@@ -1525,7 +1641,7 @@ asmlinkage long sys_unlink(const char * 
+@@ -1500,7 +1613,7 @@ asmlinkage long sys_unlink(const char * 
        if (nd.last_type != LAST_NORM)
                goto exit1;
        down(&nd.dentry->d_inode->i_sem);
        error = PTR_ERR(dentry);
        if (!IS_ERR(dentry)) {
                /* Why not before? Because we want correct error value */
-@@ -1533,6 +1649,7 @@ asmlinkage long sys_unlink(const char * 
+@@ -1508,6 +1621,7 @@ asmlinkage long sys_unlink(const char * 
                        goto slashes;
                error = vfs_unlink(nd.dentry->d_inode, dentry);
        exit2:
                dput(dentry);
        }
        up(&nd.dentry->d_inode->i_sem);
-@@ -1579,6 +1696,7 @@ asmlinkage long sys_symlink(const char *
+@@ -1554,6 +1668,7 @@ asmlinkage long sys_symlink(const char *
        int error = 0;
        char * from;
        char * to;
  
        from = getname(oldname);
        if(IS_ERR(from))
-@@ -1592,10 +1710,12 @@ asmlinkage long sys_symlink(const char *
+@@ -1567,10 +1682,12 @@ asmlinkage long sys_symlink(const char *
                error = path_lookup(to, LOOKUP_PARENT, &nd);
                if (error)
                        goto out;
                        dput(dentry);
                }
                up(&nd.dentry->d_inode->i_sem);
-@@ -1660,6 +1780,7 @@ asmlinkage long sys_link(const char * ol
+@@ -1635,6 +1752,7 @@ asmlinkage long sys_link(const char * ol
  {
        int error;
        char * to;
  
        to = getname(newname);
        error = PTR_ERR(to);
-@@ -1667,7 +1788,7 @@ asmlinkage long sys_link(const char * ol
+@@ -1642,7 +1760,7 @@ asmlinkage long sys_link(const char * ol
                struct dentry *new_dentry;
                struct nameidata nd, old_nd;
  
                if (error)
                        goto exit;
                error = path_lookup(to, LOOKUP_PARENT, &nd);
-@@ -1676,10 +1797,12 @@ asmlinkage long sys_link(const char * ol
+@@ -1651,10 +1769,12 @@ asmlinkage long sys_link(const char * ol
                error = -EXDEV;
                if (old_nd.mnt != nd.mnt)
                        goto out_release;
                        dput(new_dentry);
                }
                up(&nd.dentry->d_inode->i_sem);
-@@ -1720,7 +1843,8 @@ exit:
+@@ -1695,7 +1815,8 @@ exit:
   *       locking].
   */
  int vfs_rename_dir(struct inode *old_dir, struct dentry *old_dentry,
  {
        int error;
        struct inode *target;
-@@ -1778,6 +1902,7 @@ int vfs_rename_dir(struct inode *old_dir
+@@ -1753,6 +1874,7 @@ int vfs_rename_dir(struct inode *old_dir
                error = -EBUSY;
        else 
                error = old_dir->i_op->rename(old_dir, old_dentry, new_dir, new_dentry);
        if (target) {
                if (!error)
                        target->i_flags |= S_DEAD;
-@@ -1799,7 +1924,8 @@ out_unlock:
+@@ -1774,7 +1896,8 @@ out_unlock:
  }
  
  int vfs_rename_other(struct inode *old_dir, struct dentry *old_dentry,
  {
        int error;
  
-@@ -1830,6 +1956,7 @@ int vfs_rename_other(struct inode *old_d
+@@ -1805,6 +1928,7 @@ int vfs_rename_other(struct inode *old_d
                error = -EBUSY;
        else
                error = old_dir->i_op->rename(old_dir, old_dentry, new_dir, new_dentry);
        double_up(&old_dir->i_zombie, &new_dir->i_zombie);
        if (error)
                return error;
-@@ -1841,13 +1968,14 @@ int vfs_rename_other(struct inode *old_d
+@@ -1816,13 +1940,14 @@ int vfs_rename_other(struct inode *old_d
  }
  
  int vfs_rename(struct inode *old_dir, struct dentry *old_dentry,
        if (!error) {
                if (old_dir == new_dir)
                        inode_dir_notify(old_dir, DN_RENAME);
-@@ -1864,6 +1992,7 @@ static inline int do_rename(const char *
+@@ -1839,6 +1964,7 @@ static inline int do_rename(const char *
        int error = 0;
        struct dentry * old_dir, * new_dir;
        struct dentry * old_dentry, *new_dentry;
        struct nameidata oldnd, newnd;
  
        error = path_lookup(oldname, LOOKUP_PARENT, &oldnd);
-@@ -1889,7 +2018,7 @@ static inline int do_rename(const char *
+@@ -1864,7 +1990,7 @@ static inline int do_rename(const char *
  
        double_lock(new_dir, old_dir);
  
        error = PTR_ERR(old_dentry);
        if (IS_ERR(old_dentry))
                goto exit3;
-@@ -1905,18 +2034,21 @@ static inline int do_rename(const char *
+@@ -1880,18 +2006,21 @@ static inline int do_rename(const char *
                if (newnd.last.name[newnd.last.len])
                        goto exit4;
        }
        dput(old_dentry);
  exit3:
        double_up(&new_dir->d_inode->i_sem, &old_dir->d_inode->i_sem);
-@@ -1965,7 +2097,8 @@ out:
+@@ -1940,7 +2069,8 @@ out:
  }
  
  static inline int
  {
        int res = 0;
        char *name;
-@@ -1978,7 +2111,7 @@ __vfs_follow_link(struct nameidata *nd, 
+@@ -1953,7 +2083,7 @@ __vfs_follow_link(struct nameidata *nd, 
                        /* weird __emul_prefix() stuff did it */
                        goto out;
        }
  out:
        if (current->link_count || res || nd->last_type!=LAST_NORM)
                return res;
-@@ -2000,7 +2133,13 @@ fail:
+@@ -1975,7 +2105,13 @@ fail:
  
  int vfs_follow_link(struct nameidata *nd, const char *link)
  {
  }
  
  /* get the link contents into pagecache */
-@@ -2042,7 +2181,7 @@ int page_follow_link(struct dentry *dent
+@@ -2017,7 +2153,7 @@ int page_follow_link(struct dentry *dent
  {
        struct page *page = NULL;
        char *s = page_getlink(dentry, &page);
        if (page) {
                kunmap(page);
                page_cache_release(page);
---- linux-2.4.18-17.8.0/fs/nfsd/vfs.c~vfs_intent       2002-12-06 14:52:31.000000000 -0800
-+++ linux-2.4.18-17.8.0-zab/fs/nfsd/vfs.c      2002-12-06 14:52:31.000000000 -0800
+--- linux-2.4.18-p4smp-l6/fs/nfsd/vfs.c~vfs_intent     Fri Jan 17 12:44:40 2003
++++ linux-2.4.18-p4smp-l6-root/fs/nfsd/vfs.c   Fri Jan 17 12:44:40 2003
 @@ -1298,7 +1298,7 @@ nfsd_rename(struct svc_rqst *rqstp, stru
                        err = nfserr_perm;
        } else
        unlock_kernel();
        if (!err && EX_ISSYNC(tfhp->fh_export)) {
                nfsd_sync_dir(tdentry);
---- linux-2.4.18-17.8.0/fs/open.c~vfs_intent   2002-12-06 14:52:31.000000000 -0800
-+++ linux-2.4.18-17.8.0-zab/fs/open.c  2002-12-06 14:52:31.000000000 -0800
+--- linux-2.4.18-p4smp-l6/fs/open.c~vfs_intent Fri Jan 17 12:44:40 2003
++++ linux-2.4.18-p4smp-l6-root/fs/open.c       Fri Jan 17 12:44:40 2003
 @@ -19,6 +19,9 @@
  #include <asm/uaccess.h>
  
                path_release(&nd);
        }
        return error;
-@@ -638,10 +661,16 @@ asmlinkage long sys_fchown(unsigned int 
-  * for the internal routines (ie open_namei()/follow_link() etc). 00 is
-  * used by symlinks.
-  */
-+extern int open_namei_it(const char *filename, int namei_flags, int mode,
-+                       struct nameidata *nd, struct lookup_intent *it);
-+struct file *dentry_open_it(struct dentry *dentry, struct vfsmount *mnt,
-+                          int flags, struct lookup_intent *it);
-+
- struct file *filp_open(const char * filename, int flags, int mode)
- {
-       int namei_flags, error;
-       struct nameidata nd;
-+      struct lookup_intent it = { .it_op = IT_OPEN };
-       namei_flags = flags;
-       if ((namei_flags+1) & O_ACCMODE)
-@@ -649,18 +678,19 @@ struct file *filp_open(const char * file
-       if (namei_flags & O_TRUNC)
-               namei_flags |= 2;
--      error = open_namei(filename, namei_flags, mode, &nd);
--      if (!error)
--              return dentry_open(nd.dentry, nd.mnt, flags);
-+      error = open_namei_it(filename, namei_flags, mode, &nd, &it);
-+      if (error)
-+              return ERR_PTR(error);
--      return ERR_PTR(error);
-+      return dentry_open_it(nd.dentry, nd.mnt, flags, &it);
- }
- extern ssize_t do_readahead(struct file *file, unsigned long index, unsigned long nr);
+@@ -628,7 +651,8 @@ extern ssize_t do_readahead(struct file 
  /* for files over a certains size it doesn't pay to do readahead on open */
  #define READAHEAD_CUTOFF 48000
  
  {
        struct file * f;
        struct inode *inode;
-@@ -711,6 +741,7 @@ struct file *dentry_open(struct dentry *
+@@ -693,6 +717,7 @@ struct file *dentry_open(struct dentry *
                do_readahead(f, 0, (48 * 1024) >> PAGE_SHIFT);
        
  
        return f;
  
  cleanup_all:
-@@ -725,11 +756,17 @@ cleanup_all:
+@@ -707,11 +732,17 @@ cleanup_all:
  cleanup_file:
        put_filp(f);
  cleanup_dentry:
  /*
   * Find an empty file descriptor entry, and mark it busy.
   */
---- linux-2.4.18-17.8.0/fs/stat.c~vfs_intent   2002-12-06 14:52:31.000000000 -0800
-+++ linux-2.4.18-17.8.0-zab/fs/stat.c  2002-12-06 14:52:31.000000000 -0800
+--- linux-2.4.18-p4smp-l6/fs/stat.c~vfs_intent Fri Jan 17 12:44:40 2003
++++ linux-2.4.18-p4smp-l6-root/fs/stat.c       Fri Jan 17 12:44:40 2003
 @@ -13,6 +13,7 @@
  
  #include <asm/uaccess.h>
                path_release(&nd);
        }
        return error;
---- linux-2.4.18-17.8.0/include/linux/dcache.h~vfs_intent      2002-12-06 14:52:31.000000000 -0800
-+++ linux-2.4.18-17.8.0-zab/include/linux/dcache.h     2002-12-06 14:52:31.000000000 -0800
+--- linux-2.4.18-p4smp-l6/include/linux/dcache.h~vfs_intent    Fri Jan 17 12:44:40 2003
++++ linux-2.4.18-p4smp-l6-root/include/linux/dcache.h  Fri Jan 17 12:44:40 2003
 @@ -6,6 +6,34 @@
  #include <asm/atomic.h>
  #include <linux/mount.h>
  };
  
  /* the dentry parameter passed to d_hash and d_compare is the parent
---- linux-2.4.18-17.8.0/include/linux/fs.h~vfs_intent  2002-12-06 14:52:31.000000000 -0800
-+++ linux-2.4.18-17.8.0-zab/include/linux/fs.h 2002-12-06 14:52:31.000000000 -0800
+--- linux-2.4.18-p4smp-l6/include/linux/fs.h~vfs_intent        Fri Jan 17 12:44:40 2003
++++ linux-2.4.18-p4smp-l6-root/include/linux/fs.h      Fri Jan 17 12:44:40 2003
 @@ -576,6 +576,7 @@ struct file {
  
        /* needed for tty driver, and maybe others */
        void (*truncate) (struct inode *);
        int (*permission) (struct inode *, int);
        int (*revalidate) (struct dentry *);
-@@ -1381,6 +1387,7 @@ typedef int (*read_actor_t)(read_descrip
+@@ -1383,6 +1389,7 @@ typedef int (*read_actor_t)(read_descrip
  extern loff_t default_llseek(struct file *file, loff_t offset, int origin);
  
  extern int FASTCALL(__user_walk(const char *, unsigned, struct nameidata *));
  extern int FASTCALL(path_init(const char *, unsigned, struct nameidata *));
  extern int FASTCALL(path_walk(const char *, struct nameidata *));
  extern int FASTCALL(path_lookup(const char *, unsigned, struct nameidata *));
-@@ -1392,6 +1399,8 @@ extern struct dentry * lookup_one_len(co
+@@ -1394,6 +1401,8 @@ extern struct dentry * lookup_one_len(co
  extern struct dentry * lookup_hash(struct qstr *, struct dentry *);
  #define user_path_walk(name,nd)        __user_walk(name, LOOKUP_FOLLOW|LOOKUP_POSITIVE, nd)
  #define user_path_walk_link(name,nd) __user_walk(name, LOOKUP_POSITIVE, nd)
  
  extern void inode_init_once(struct inode *);
  extern void iput(struct inode *);
-@@ -1492,6 +1501,8 @@ extern struct file_operations generic_ro
+@@ -1494,6 +1503,8 @@ extern struct file_operations generic_ro
  
  extern int vfs_readlink(struct dentry *, char *, int, const char *);
  extern int vfs_follow_link(struct nameidata *, const char *);
  extern int page_readlink(struct dentry *, char *, int);
  extern int page_follow_link(struct dentry *, struct nameidata *);
  extern struct inode_operations page_symlink_inode_operations;
---- linux-2.4.18-17.8.0/kernel/ksyms.c~vfs_intent      2002-12-06 14:52:31.000000000 -0800
-+++ linux-2.4.18-17.8.0-zab/kernel/ksyms.c     2002-12-06 14:52:31.000000000 -0800
-@@ -293,6 +293,7 @@ EXPORT_SYMBOL(read_cache_page);
+--- linux-2.4.18-p4smp-l6/kernel/ksyms.c~vfs_intent    Fri Jan 17 12:44:40 2003
++++ linux-2.4.18-p4smp-l6-root/kernel/ksyms.c  Fri Jan 17 12:44:40 2003
+@@ -294,6 +294,7 @@ EXPORT_SYMBOL(read_cache_page);
  EXPORT_SYMBOL(set_page_dirty);
  EXPORT_SYMBOL(vfs_readlink);
  EXPORT_SYMBOL(vfs_follow_link);
index 45e259a..284d221 100644 (file)
@@ -1,3 +1,5 @@
+series/chaos
+   chaos-39
 series/rh-8.0 
    redhat 2.4.18-14
    redhat 2.4.18-17