Author: zbyniu                       Date: Tue Oct  9 14:20:22 2007 GMT
Module: SOURCES                       Tag: HEAD
---- Log message:
- unionfs-2.1.6_for_2.6.23-rc8.diff

---- Files affected:
SOURCES:
   linux-2.6-unionfs-2.1.1.patch (1.4 -> 1.5) 

---- Diffs:

================================================================
Index: SOURCES/linux-2.6-unionfs-2.1.1.patch
diff -u SOURCES/linux-2.6-unionfs-2.1.1.patch:1.4 
SOURCES/linux-2.6-unionfs-2.1.1.patch:1.5
--- SOURCES/linux-2.6-unionfs-2.1.1.patch:1.4   Thu Sep 20 19:40:28 2007
+++ SOURCES/linux-2.6-unionfs-2.1.1.patch       Tue Oct  9 16:20:16 2007
@@ -1,8 +1,8 @@
 diff --git a/Documentation/filesystems/00-INDEX 
b/Documentation/filesystems/00-INDEX
-index 5717858..2ef035e 100644
+index 59db1bc..40816d4 100644
 --- a/Documentation/filesystems/00-INDEX
 +++ b/Documentation/filesystems/00-INDEX
-@@ -84,6 +84,8 @@ udf.txt
+@@ -86,6 +86,8 @@ udf.txt
        - info and mount options for the UDF filesystem.
  ufs.txt
        - info on the ufs filesystem.
@@ -386,10 +386,10 @@
 +
 +For more information, see <http://unionfs.filesystems.org/>.
 diff --git a/MAINTAINERS b/MAINTAINERS
-index df40a4e..161652b 100644
+index 9a91d9e..7e45e87 100644
 --- a/MAINTAINERS
 +++ b/MAINTAINERS
-@@ -3593,6 +3593,15 @@ L:      [EMAIL PROTECTED]
+@@ -3740,6 +3740,15 @@ L:      [EMAIL PROTECTED]
  W:    http://www.kernel.dk
  S:    Maintained
  
@@ -405,21 +405,11 @@
  USB ACM DRIVER
  P:    Oliver Neukum
  M:    [EMAIL PROTECTED]
-diff --git a/drivers/mtd/mtdsuper.c b/drivers/mtd/mtdsuper.c
-index aca3319..e28f0fa 100644
---- a/drivers/mtd/mtdsuper.c
-+++ b/drivers/mtd/mtdsuper.c
-@@ -230,3 +230,5 @@ void kill_mtd_super(struct super_block *sb)
- }
- 
- EXPORT_SYMBOL_GPL(kill_mtd_super);
-+
-+MODULE_LICENSE("GPL");
 diff --git a/fs/Kconfig b/fs/Kconfig
-index 0fa0c11..e9380c7 100644
+index f9eed6d..9afb8df 100644
 --- a/fs/Kconfig
 +++ b/fs/Kconfig
-@@ -1030,6 +1030,47 @@ config CONFIGFS_FS
+@@ -1027,6 +1027,47 @@ config CONFIGFS_FS
  
  endmenu
  
@@ -467,7 +457,7 @@
  menu "Miscellaneous filesystems"
  
  config ADFS_FS
-@@ -1082,18 +1123,6 @@ config AFFS_FS
+@@ -1079,18 +1120,6 @@ config AFFS_FS
          To compile this file system support as a module, choose M here: the
          module will be called affs.  If unsure, say N.
  
@@ -496,7 +486,7 @@
  obj-$(CONFIG_GFS2_FS)           += gfs2/
 +obj-$(CONFIG_UNION_FS)                += unionfs/
 diff --git a/fs/drop_caches.c b/fs/drop_caches.c
-index 03ea769..6a7aa05 100644
+index 59375ef..90410ac 100644
 --- a/fs/drop_caches.c
 +++ b/fs/drop_caches.c
 @@ -3,6 +3,7 @@
@@ -538,36 +528,10 @@
  out:
        return rc;
 diff --git a/fs/ecryptfs/inode.c b/fs/ecryptfs/inode.c
-index 9c6877c..fed495d 100644
+index 131954b..fc4c6cb 100644
 --- a/fs/ecryptfs/inode.c
 +++ b/fs/ecryptfs/inode.c
-@@ -280,7 +280,9 @@ static struct dentry *ecryptfs_lookup(struct inode *dir, 
struct dentry *dentry,
-       int rc = 0;
-       struct dentry *lower_dir_dentry;
-       struct dentry *lower_dentry;
-+      struct dentry *dentry_save;
-       struct vfsmount *lower_mnt;
-+      struct vfsmount *mnt_save;
-       char *encoded_name;
-       unsigned int encoded_namelen;
-       struct ecryptfs_crypt_stat *crypt_stat = NULL;
-@@ -308,9 +310,13 @@ static struct dentry *ecryptfs_lookup(struct inode *dir, 
struct dentry *dentry,
-       }
-       ecryptfs_printk(KERN_DEBUG, "encoded_name = [%s]; encoded_namelen "
-                       "= [%d]\n", encoded_name, encoded_namelen);
--      lower_dentry = lookup_one_len(encoded_name, lower_dir_dentry,
--                                    encoded_namelen - 1);
-+      dentry_save = nd->dentry;
-+      mnt_save = nd->mnt;
-+      lower_dentry = lookup_one_len_nd(encoded_name, lower_dir_dentry,
-+                                       (encoded_namelen - 1), nd);
-       kfree(encoded_name);
-+      nd->mnt = mnt_save;
-+      nd->dentry = dentry_save;
-       if (IS_ERR(lower_dentry)) {
-               ecryptfs_printk(KERN_ERR, "ERR from lower_dentry\n");
-               rc = PTR_ERR(lower_dentry);
-@@ -597,9 +603,9 @@ ecryptfs_rename(struct inode *old_dir, struct dentry 
*old_dentry,
+@@ -601,9 +601,9 @@ ecryptfs_rename(struct inode *old_dir, struct dentry 
*old_dentry,
                        lower_new_dir_dentry->d_inode, lower_new_dentry);
        if (rc)
                goto out_lock;
@@ -579,7 +543,7 @@
  out_lock:
        unlock_rename(lower_old_dir_dentry, lower_new_dir_dentry);
        dput(lower_new_dentry->d_parent);
-@@ -957,7 +963,7 @@ static int ecryptfs_setattr(struct dentry *dentry, struct 
iattr *ia)
+@@ -961,7 +961,7 @@ static int ecryptfs_setattr(struct dentry *dentry, struct 
iattr *ia)
        }
        rc = notify_change(lower_dentry, ia);
  out:
@@ -589,7 +553,7 @@
  }
  
 diff --git a/fs/ecryptfs/main.c b/fs/ecryptfs/main.c
-index 606128f..5f99404 100644
+index a984972..cb349a4 100644
 --- a/fs/ecryptfs/main.c
 +++ b/fs/ecryptfs/main.c
 @@ -151,7 +151,7 @@ int ecryptfs_interpose(struct dentry *lower_dentry, struct 
dentry *dentry,
@@ -602,48 +566,17 @@
         * other metadata */
        fsstack_copy_inode_size(inode, lower_inode);
 diff --git a/fs/namei.c b/fs/namei.c
-index 5e2d98d..90d2a3a 100644
+index a83160a..b2b7c8e 100644
 --- a/fs/namei.c
 +++ b/fs/namei.c
-@@ -1124,6 +1124,10 @@ static int fastcall do_path_lookup(int dfd, const char 
*name,
-               nd->mnt = mntget(fs->rootmnt);
-               nd->dentry = dget(fs->root);
-               read_unlock(&fs->lock);
-+      } else if (flags & LOOKUP_ONE) {
-+              /* nd->mnt and nd->dentry already set, just grab references */
-+              mntget(nd->mnt);
-+              dget(nd->dentry);
-       } else if (dfd == AT_FDCWD) {
-               read_lock(&fs->lock);
-               nd->mnt = mntget(fs->pwdmnt);
-@@ -1325,7 +1329,8 @@ static inline int __lookup_one_len(const char *name, 
struct qstr *this, struct d
-       return 0;
- }
- 
--struct dentry *lookup_one_len(const char *name, struct dentry *base, int len)
-+struct dentry *lookup_one_len_nd(const char *name, struct dentry *base, 
-+                               int len, struct nameidata *nd)
- {
-       int err;
-       struct qstr this;
-@@ -1333,7 +1338,7 @@ struct dentry *lookup_one_len(const char *name, struct 
dentry *base, int len)
-       err = __lookup_one_len(name, &this, base, len);
-       if (err)
-               return ERR_PTR(err);
--      return __lookup_hash(&this, base, NULL);
-+      return __lookup_hash(&this, base, nd);
+@@ -374,6 +374,7 @@ void release_open_intent(struct nameidata *nd)
+       else
+               fput(nd->intent.open.file);
  }
++EXPORT_SYMBOL(release_open_intent);
  
- struct dentry *lookup_one_len_kern(const char *name, struct dentry *base, int 
len)
-@@ -2766,7 +2771,7 @@ EXPORT_SYMBOL(follow_up);
- EXPORT_SYMBOL(get_write_access); /* binfmt_aout */
- EXPORT_SYMBOL(getname);
- EXPORT_SYMBOL(lock_rename);
--EXPORT_SYMBOL(lookup_one_len);
-+EXPORT_SYMBOL(lookup_one_len_nd);
- EXPORT_SYMBOL(page_follow_link_light);
- EXPORT_SYMBOL(page_put_link);
- EXPORT_SYMBOL(page_readlink);
+ static inline struct dentry *
+ do_revalidate(struct dentry *dentry, struct nameidata *nd)
 diff --git a/fs/stack.c b/fs/stack.c
 index 67716f6..a548aac 100644
 --- a/fs/stack.c
@@ -703,11 +636,11 @@
  EXPORT_SYMBOL_GPL(fsstack_copy_attr_all);
 diff --git a/fs/unionfs/Makefile b/fs/unionfs/Makefile
 new file mode 100644
-index 0000000..73a6bea
+index 0000000..6c55790
 --- /dev/null
 +++ b/fs/unionfs/Makefile
-@@ -0,0 +1,13 @@
-+UNIONFS_VERSION="2.1.4 (for 2.6.22.6)"
+@@ -0,0 +1,17 @@
++UNIONFS_VERSION="2.1.6 (for 2.6.23-rc8)"
 +
 +EXTRA_CFLAGS += -DUNIONFS_VERSION=\"$(UNIONFS_VERSION)\"
 +
@@ -720,12 +653,16 @@
 +unionfs-$(CONFIG_UNION_FS_XATTR) += xattr.o
 +
 +unionfs-$(CONFIG_UNION_FS_DEBUG) += debug.o
++
++ifeq ($(CONFIG_UNION_FS_DEBUG),y)
++EXTRA_CFLAGS += -DDEBUG
++endif
 diff --git a/fs/unionfs/commonfops.c b/fs/unionfs/commonfops.c
 new file mode 100644
-index 0000000..e69ccf6
+index 0000000..7654bcb
 --- /dev/null
 +++ b/fs/unionfs/commonfops.c
-@@ -0,0 +1,835 @@
+@@ -0,0 +1,843 @@
 +/*
 + * Copyright (c) 2003-2007 Erez Zadok
 + * Copyright (c) 2003-2006 Charles P. Wright
@@ -787,8 +724,8 @@
 +              counter++;
 +              sprintf(suffix, "%*.*x", countersize, countersize, counter);
 +
-+              printk(KERN_DEBUG "unionfs: trying to rename %s to %s\n",
-+                     dentry->d_name.name, name);
++              pr_debug("unionfs: trying to rename %s to %s\n",
++                       dentry->d_name.name, name);
 +
 +              tmp_dentry = lookup_one_len(name, lower_dentry->d_parent,
 +                                          nlen);
@@ -802,7 +739,7 @@
 +      err = copyup_named_file(dentry->d_parent->d_inode, file, name, bstart,
 +                              bindex, file->f_path.dentry->d_inode->i_size);
 +      if (err) {
-+              if (err == -EEXIST)
++              if (unlikely(err == -EEXIST))
 +                      goto retry;
 +              goto out;
 +      }
@@ -854,7 +791,7 @@
 +               */
 +              old_bid = UNIONFS_F(file)->saved_branch_ids[bindex];
 +              i = branch_id_to_idx(sb, old_bid);
-+              if (i < 0) {
++              if (unlikely(i < 0)) {
 +                      printk(KERN_ERR "unionfs: no superblock for "
 +                             "file %p\n", file);
 +                      continue;
@@ -910,8 +847,9 @@
 +              if (IS_ERR(lower_file)) {
 +                      err = PTR_ERR(lower_file);
 +                      goto out;
-+              } else
++              } else {
 +                      unionfs_set_lower_file_idx(file, bindex, lower_file);
++              }
 +      }
 +out:
 +      return err;
@@ -1045,8 +983,8 @@
 +       * First revalidate the dentry inside struct file,
 +       * but not unhashed dentries.
 +       */
-+      if (!d_deleted(dentry) &&
-+          !__unionfs_d_revalidate_chain(dentry, NULL, willwrite)) {
++      if (unlikely(!d_deleted(dentry) &&
++                   !__unionfs_d_revalidate_chain(dentry, NULL, willwrite))) {
 +              err = -ESTALE;
 +              goto out_nofree;
 +      }
@@ -1063,10 +1001,11 @@
 +       * someone has copied up this file from underneath us, we also need
 +       * to refresh things.
 +       */
-+      if (!d_deleted(dentry) &&
-+          (sbgen > fgen || dbstart(dentry) != fbstart(file))) {
++      if (unlikely(!d_deleted(dentry) &&
++                   (sbgen > fgen || dbstart(dentry) != fbstart(file)))) {
 +              /* save orig branch ID */
-+              int orig_brid = 
UNIONFS_F(file)->saved_branch_ids[fbstart(file)];
++              int orig_brid =
++                      UNIONFS_F(file)->saved_branch_ids[fbstart(file)];
 +
 +              /* First we throw out the existing files. */
 +              cleanup_file(file);
@@ -1077,13 +1016,13 @@
 +
 +              size = sizeof(struct file *) * sbmax(sb);
 +              UNIONFS_F(file)->lower_files = kzalloc(size, GFP_KERNEL);
-+              if (!UNIONFS_F(file)->lower_files) {
++              if (unlikely(!UNIONFS_F(file)->lower_files)) {
 +                      err = -ENOMEM;
 +                      goto out;
 +              }
 +              size = sizeof(int) * sbmax(sb);
 +              UNIONFS_F(file)->saved_branch_ids = kzalloc(size, GFP_KERNEL);
-+              if (!UNIONFS_F(file)->saved_branch_ids) {
++              if (unlikely(!UNIONFS_F(file)->saved_branch_ids)) {
 +                      err = -ENOMEM;
 +                      goto out;
 +              }
@@ -1101,7 +1040,7 @@
 +                              goto out;
 +                      new_brid = UNIONFS_F(file)->
 +                        saved_branch_ids[fbstart(file)];
-+                      if (new_brid != orig_brid && sbgen > fgen) {
++                      if (unlikely(new_brid != orig_brid && sbgen > fgen)) {
 +                              /*
 +                               * If we re-opened the file on a different
 +                               * branch than the original one, and this
@@ -1115,15 +1054,16 @@
 +                      }
 +              }
 +              atomic_set(&UNIONFS_F(file)->generation,
-+                         
atomic_read(&UNIONFS_I(dentry->d_inode)->generation));
++                         atomic_read(
++                                 &UNIONFS_I(dentry->d_inode)->generation));
 +      }
 +
 +      /* Copyup on the first write to a file on a readonly branch. */
 +      if (willwrite && IS_WRITE_FLAG(file->f_flags) &&
 +          !IS_WRITE_FLAG(unionfs_lower_file(file)->f_flags) &&
 +          is_robranch(dentry)) {
-+              dprintk(KERN_DEBUG "unionfs: do delay copyup of \"%s\"\n",
-+                      dentry->d_name.name);
++              pr_debug("unionfs: do delay copyup of \"%s\"\n",
++                       dentry->d_name.name);
 +              err = do_delayed_copyup(file);
 +      }
 +
@@ -1145,6 +1085,7 @@
 +      struct dentry *lower_dentry;
 +      struct file *lower_file;
 +      int bindex, bstart, bend;
++      struct vfsmount *mnt;
 +
 +      bstart = fbstart(file) = dbstart(file->f_path.dentry);
 +      bend = fbend(file) = dbend(file->f_path.dentry);
@@ -1157,10 +1098,8 @@
 +
 +              dget(lower_dentry);
 +              unionfs_mntget(file->f_path.dentry, bindex);
-+              lower_file = dentry_open(lower_dentry,
-+                                       
unionfs_lower_mnt_idx(file->f_path.dentry,
-+                                                             bindex),
-+                                       file->f_flags);
++              mnt = unionfs_lower_mnt_idx(file->f_path.dentry, bindex);
++              lower_file = dentry_open(lower_dentry, mnt, file->f_flags);
 +              if (IS_ERR(lower_file))
 +                      return PTR_ERR(lower_file);
 +
@@ -1212,8 +1151,9 @@
 +                                      break;
 +                      }
 +                      return err;
-+              } else
++              } else {
 +                      lower_flags &= ~(OPEN_WRITE_FLAGS);
++              }
 +      }
 +
 +      dget(lower_dentry);
@@ -1248,7 +1188,7 @@
 +
 +      file->private_data =
 +              kzalloc(sizeof(struct unionfs_file_info), GFP_KERNEL);
-+      if (!UNIONFS_F(file)) {
++      if (unlikely(!UNIONFS_F(file))) {
 +              err = -ENOMEM;
 +              goto out_nofree;
 +      }
@@ -1259,13 +1199,13 @@
 +
 +      size = sizeof(struct file *) * sbmax(inode->i_sb);
 +      UNIONFS_F(file)->lower_files = kzalloc(size, GFP_KERNEL);
-+      if (!UNIONFS_F(file)->lower_files) {
++      if (unlikely(!UNIONFS_F(file)->lower_files)) {
 +              err = -ENOMEM;
 +              goto out;
 +      }
 +      size = sizeof(int) * sbmax(inode->i_sb);
 +      UNIONFS_F(file)->saved_branch_ids = kzalloc(size, GFP_KERNEL);
-+      if (!UNIONFS_F(file)->saved_branch_ids) {
++      if (unlikely(!UNIONFS_F(file)->saved_branch_ids)) {
 +              err = -ENOMEM;
 +              goto out;
 +      }
@@ -1340,7 +1280,8 @@
 +       * This is important for open-but-unlinked files, as well as mmap
 +       * support.
 +       */
-+      if ((err = unionfs_file_revalidate(file, true)))
++      err = unionfs_file_revalidate(file, true);
++      if (unlikely(err))
 +              goto out;
 +      unionfs_check_file(file);
 +      fileinfo = UNIONFS_F(file);
@@ -1365,11 +1306,11 @@
 +
 +      if (fileinfo->rdstate) {
 +              fileinfo->rdstate->access = jiffies;
-+              printk(KERN_DEBUG "unionfs: saving rdstate with cookie "
-+                     "%u [%d.%lld]\n",
-+                     fileinfo->rdstate->cookie,
-+                     fileinfo->rdstate->bindex,
-+                     (long long)fileinfo->rdstate->dirpos);
++              pr_debug("unionfs: saving rdstate with cookie "
++                       "%u [%d.%lld]\n",
++                       fileinfo->rdstate->cookie,
++                       fileinfo->rdstate->bindex,
++                       (long long)fileinfo->rdstate->dirpos);
 +              spin_lock(&inodeinfo->rdlock);
 +              inodeinfo->rdcount++;
 +              list_add_tail(&fileinfo->rdstate->cache,
@@ -1404,8 +1345,9 @@
 +              err = lower_file->f_op->unlocked_ioctl(lower_file, cmd, arg);
 +      } else if (lower_file->f_op->ioctl) {
 +              lock_kernel();
-+              err = 
lower_file->f_op->ioctl(lower_file->f_path.dentry->d_inode,
-+                                            lower_file, cmd, arg);
++              err = lower_file->f_op->ioctl(
++                      lower_file->f_path.dentry->d_inode,
++                      lower_file, cmd, arg);
 +              unlock_kernel();
 +      }
 +
@@ -1433,7 +1375,8 @@
 +      unionfs_lock_dentry(dentry);
 +      orig_bstart = dbstart(dentry);
 +      orig_bend = dbend(dentry);
-+      if ((err = unionfs_partial_lookup(dentry)))
++      err = unionfs_partial_lookup(dentry);
++      if (err)
 +              goto out;
 +      bstart = dbstart(dentry);
 +      bend = dbend(dentry);
@@ -1444,7 +1387,7 @@
 +              lower_dentry = unionfs_lower_dentry_idx(dentry, bindex);
 +              if (!lower_dentry)
 +                      continue;
-+              if (lower_dentry->d_inode)
++              if (likely(lower_dentry->d_inode))
 +                      FD_SET(bindex, &branchlist);
 +              /* purge any lower objects after partial_lookup */
 +              if (bindex < orig_bstart || bindex > orig_bend) {
@@ -1467,7 +1410,7 @@
 +      ibend(dentry->d_inode) = orig_bend;
 +
 +      err = copy_to_user((void __user *)arg, &branchlist, sizeof(fd_set));
-+      if (err)
++      if (unlikely(err))
 +              err = -EFAULT;
 +
 +out:
@@ -1481,15 +1424,16 @@
 +
 +      unionfs_read_lock(file->f_path.dentry->d_sb);
 +
-+      if ((err = unionfs_file_revalidate(file, true)))
++      err = unionfs_file_revalidate(file, true);
++      if (unlikely(err))
 +              goto out;
 +
 +      /* check if asked for local commands */
 +      switch (cmd) {
 +      case UNIONFS_IOCTL_INCGEN:
 +              /* Increment the superblock generation count */
-+              printk("unionfs: incgen ioctl deprecated; "
-+                     "use \"-o remount,incgen\"\n");
++              pr_info("unionfs: incgen ioctl deprecated; "
++                      "use \"-o remount,incgen\"\n");
 +              err = -ENOSYS;
 +              break;
 +
@@ -1519,7 +1463,8 @@
 +
 +      unionfs_read_lock(dentry->d_sb);
 +
-+      if ((err = unionfs_file_revalidate(file, true)))
++      err = unionfs_file_revalidate(file, true);
++      if (unlikely(err))
 +              goto out;
 +      unionfs_check_file(file);
 +
@@ -1563,10 +1508,10 @@
 +}
 diff --git a/fs/unionfs/copyup.c b/fs/unionfs/copyup.c
 new file mode 100644
-index 0000000..04bedb1
+index 0000000..98bed0b
 --- /dev/null
 +++ b/fs/unionfs/copyup.c
-@@ -0,0 +1,888 @@
+@@ -0,0 +1,897 @@
 +/*
 + * Copyright (c) 2003-2007 Erez Zadok
 + * Copyright (c) 2003-2006 Charles P. Wright
@@ -1612,7 +1557,7 @@
 +
 +      /* allocate space for the actual list */
 +      name_list = unionfs_xattr_alloc(list_size + 1, XATTR_LIST_MAX);
-+      if (!name_list || IS_ERR(name_list)) {
++      if (unlikely(!name_list || IS_ERR(name_list))) {
 +              err = PTR_ERR(name_list);
 +              goto out;
 +      }
@@ -1628,7 +1573,7 @@
 +
 +      /* allocate space to hold each xattr's value */
 +      attr_value = unionfs_xattr_alloc(XATTR_SIZE_MAX, XATTR_SIZE_MAX);
-+      if (!attr_value || IS_ERR(attr_value)) {
++      if (unlikely(!attr_value || IS_ERR(attr_value))) {
 +              err = PTR_ERR(name_list);
 +              goto out;
 +      }
@@ -1765,19 +1710,25 @@
 +              run_sioq(__unionfs_mknod, &args);
 +              err = args.err;
 +      } else if (S_ISREG(old_mode)) {
++              struct nameidata nd;
++              err = init_lower_nd(&nd, LOOKUP_CREATE);
++              if (unlikely(err < 0))
++                      goto out;
++              args.create.nd = &nd;
 +              args.create.parent = new_lower_parent_dentry->d_inode;
 +              args.create.dentry = new_lower_dentry;
 +              args.create.mode = old_mode;
-+              args.create.nd = NULL;
 +
 +              run_sioq(__unionfs_create, &args);
 +              err = args.err;
++              release_lower_nd(&nd, err);
 +      } else {
-+              printk(KERN_ERR "unionfs: unknown inode type %d\n",
++              printk(KERN_CRIT "unionfs: unknown inode type %d\n",
 +                     old_mode);
 +              BUG();
 +      }
 +
++out:
 +      return err;
 +}
 +
@@ -1808,7 +1759,7 @@
 +              err = PTR_ERR(input_file);
 +              goto out;
 +      }
-+      if (!input_file->f_op || !input_file->f_op->read) {
++      if (unlikely(!input_file->f_op || !input_file->f_op->read)) {
 +              err = -EINVAL;
 +              goto out_close_in;
 +      }
@@ -1823,14 +1774,14 @@
 +              err = PTR_ERR(output_file);
 +              goto out_close_in2;
 +      }
-+      if (!output_file->f_op || !output_file->f_op->write) {
++      if (unlikely(!output_file->f_op || !output_file->f_op->write)) {
 +              err = -EINVAL;
 +              goto out_close_out;
 +      }
 +
 +      /* allocating a buffer */
 +      buf = kmalloc(PAGE_SIZE, GFP_KERNEL);
-+      if (!buf) {
++      if (unlikely(!buf)) {
 +              err = -ENOMEM;
 +              goto out_close_out;
 +      }
@@ -1957,7 +1908,8 @@
 +
 +      sb = dir->i_sb;
 +
-+      if ((err = is_robranch_super(sb, new_bindex)))
++      err = is_robranch_super(sb, new_bindex);
++      if (err)
 +              goto out;
 +
 +      /* Create the directory structure above this dentry. */
@@ -1975,7 +1927,7 @@
 +      if (S_ISLNK(old_lower_dentry->d_inode->i_mode)) {
 +
 +              symbuf = kmalloc(PATH_MAX, GFP_KERNEL);
-+              if (!symbuf) {
++              if (unlikely(!symbuf)) {
 +                      __clear(dentry, old_lower_dentry,
 +                              old_bstart, old_bend,
 +                              new_lower_dentry, new_bindex);
@@ -2028,7 +1980,8 @@
 +
 +#ifdef CONFIG_UNION_FS_XATTR
 +      /* Selinux uses extended attributes for permissions. */
-+      if ((err = copyup_xattrs(old_lower_dentry, new_lower_dentry)))
++      err = copyup_xattrs(old_lower_dentry, new_lower_dentry);
++      if (err)
 +              goto out_unlink;
 +#endif /* CONFIG_UNION_FS_XATTR */
 +
<<Diff was trimmed, longer than 597 lines>>

---- CVS-web:
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/SOURCES/linux-2.6-unionfs-2.1.1.patch?r1=1.4&r2=1.5&f=u

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

Reply via email to