[leon] move patches to patches-2.6.36
[openwrt.git] / target / linux / generic / patches-3.6 / 100-overlayfs.patch
index dcc1eaa..5ffeb0e 100644 (file)
@@ -1,7 +1,6 @@
-diff -Nur -x .git vfs-4cbe5a5/Documentation/filesystems/Locking vfs-3d5a648/Documentation/filesystems/Locking
---- vfs-4cbe5a5/Documentation/filesystems/Locking      2012-09-01 19:39:58.000000000 +0200
-+++ vfs-3d5a648/Documentation/filesystems/Locking      2012-09-05 16:35:20.000000000 +0200
-@@ -64,6 +64,7 @@
+--- a/Documentation/filesystems/Locking
++++ b/Documentation/filesystems/Locking
+@@ -64,6 +64,7 @@ prototypes:
        int (*atomic_open)(struct inode *, struct dentry *,
                                struct file *, unsigned open_flag,
                                umode_t create_mode, int *opened);
@@ -9,7 +8,7 @@ diff -Nur -x .git vfs-4cbe5a5/Documentation/filesystems/Locking vfs-3d5a648/Docu
  
  locking rules:
        all may block
-@@ -92,6 +93,7 @@
+@@ -92,6 +93,7 @@ removexattr: yes
  fiemap:               no
  update_time:  no
  atomic_open:  yes
@@ -17,9 +16,8 @@ diff -Nur -x .git vfs-4cbe5a5/Documentation/filesystems/Locking vfs-3d5a648/Docu
  
        Additionally, ->rmdir(), ->unlink() and ->rename() have ->i_mutex on
  victim.
-diff -Nur -x .git vfs-4cbe5a5/Documentation/filesystems/overlayfs.txt vfs-3d5a648/Documentation/filesystems/overlayfs.txt
---- vfs-4cbe5a5/Documentation/filesystems/overlayfs.txt        1970-01-01 01:00:00.000000000 +0100
-+++ vfs-3d5a648/Documentation/filesystems/overlayfs.txt        2012-09-05 16:35:20.000000000 +0200
+--- /dev/null
++++ b/Documentation/filesystems/overlayfs.txt
 @@ -0,0 +1,199 @@
 +Written by: Neil Brown <neilb@suse.de>
 +
@@ -220,10 +218,9 @@ diff -Nur -x .git vfs-4cbe5a5/Documentation/filesystems/overlayfs.txt vfs-3d5a64
 +filesystem are not allowed.  If the underlying filesystem is changed,
 +the behavior of the overlay is undefined, though it will not result in
 +a crash or deadlock.
-diff -Nur -x .git vfs-4cbe5a5/Documentation/filesystems/vfs.txt vfs-3d5a648/Documentation/filesystems/vfs.txt
---- vfs-4cbe5a5/Documentation/filesystems/vfs.txt      2012-09-01 19:39:58.000000000 +0200
-+++ vfs-3d5a648/Documentation/filesystems/vfs.txt      2012-09-05 16:35:20.000000000 +0200
-@@ -363,6 +363,7 @@
+--- a/Documentation/filesystems/vfs.txt
++++ b/Documentation/filesystems/vfs.txt
+@@ -363,6 +363,7 @@ struct inode_operations {
        int (*atomic_open)(struct inode *, struct dentry *,
                                struct file *, unsigned open_flag,
                                umode_t create_mode, int *opened);
@@ -231,7 +228,7 @@ diff -Nur -x .git vfs-4cbe5a5/Documentation/filesystems/vfs.txt vfs-3d5a648/Docu
  };
  
  Again, all methods are called without any locks being held, unless
-@@ -692,6 +693,12 @@
+@@ -692,6 +693,12 @@ struct address_space_operations {
        but instead uses bmap to find out where the blocks in the file
        are and uses those addresses directly.
  
@@ -244,10 +241,9 @@ diff -Nur -x .git vfs-4cbe5a5/Documentation/filesystems/vfs.txt vfs-3d5a648/Docu
  
    invalidatepage: If a page has PagePrivate set, then invalidatepage
          will be called when part or all of the page is to be removed
-diff -Nur -x .git vfs-4cbe5a5/fs/ecryptfs/main.c vfs-3d5a648/fs/ecryptfs/main.c
---- vfs-4cbe5a5/fs/ecryptfs/main.c     2012-09-01 19:39:58.000000000 +0200
-+++ vfs-3d5a648/fs/ecryptfs/main.c     2012-09-05 16:35:20.000000000 +0200
-@@ -565,6 +565,13 @@
+--- a/fs/ecryptfs/main.c
++++ b/fs/ecryptfs/main.c
+@@ -566,6 +566,13 @@ static struct dentry *ecryptfs_mount(str
        s->s_maxbytes = path.dentry->d_sb->s_maxbytes;
        s->s_blocksize = path.dentry->d_sb->s_blocksize;
        s->s_magic = ECRYPTFS_SUPER_MAGIC;
@@ -261,10 +257,9 @@ diff -Nur -x .git vfs-4cbe5a5/fs/ecryptfs/main.c vfs-3d5a648/fs/ecryptfs/main.c
  
        inode = ecryptfs_get_inode(path.dentry->d_inode, s);
        rc = PTR_ERR(inode);
-diff -Nur -x .git vfs-4cbe5a5/fs/internal.h vfs-3d5a648/fs/internal.h
---- vfs-4cbe5a5/fs/internal.h  2012-09-01 19:39:58.000000000 +0200
-+++ vfs-3d5a648/fs/internal.h  2012-09-05 16:35:20.000000000 +0200
-@@ -42,11 +42,6 @@
+--- a/fs/internal.h
++++ b/fs/internal.h
+@@ -42,11 +42,6 @@ static inline int __sync_blockdev(struct
  extern void __init chrdev_init(void);
  
  /*
@@ -276,10 +271,9 @@ diff -Nur -x .git vfs-4cbe5a5/fs/internal.h vfs-3d5a648/fs/internal.h
   * namespace.c
   */
  extern int copy_mount_options(const void __user *, unsigned long *);
-diff -Nur -x .git vfs-4cbe5a5/fs/Kconfig vfs-3d5a648/fs/Kconfig
---- vfs-4cbe5a5/fs/Kconfig     2012-09-01 19:39:58.000000000 +0200
-+++ vfs-3d5a648/fs/Kconfig     2012-09-05 16:35:20.000000000 +0200
-@@ -67,6 +67,7 @@
+--- a/fs/Kconfig
++++ b/fs/Kconfig
+@@ -67,6 +67,7 @@ source "fs/quota/Kconfig"
  
  source "fs/autofs4/Kconfig"
  source "fs/fuse/Kconfig"
@@ -287,10 +281,9 @@ diff -Nur -x .git vfs-4cbe5a5/fs/Kconfig vfs-3d5a648/fs/Kconfig
  
  config CUSE
        tristate "Character device in Userspace support"
-diff -Nur -x .git vfs-4cbe5a5/fs/Makefile vfs-3d5a648/fs/Makefile
---- vfs-4cbe5a5/fs/Makefile    2012-09-01 19:39:58.000000000 +0200
-+++ vfs-3d5a648/fs/Makefile    2012-09-05 16:35:20.000000000 +0200
-@@ -106,6 +106,7 @@
+--- a/fs/Makefile
++++ b/fs/Makefile
+@@ -106,6 +106,7 @@ obj-$(CONFIG_QNX6FS_FS)            += qnx6/
  obj-$(CONFIG_AUTOFS4_FS)      += autofs4/
  obj-$(CONFIG_ADFS_FS)         += adfs/
  obj-$(CONFIG_FUSE_FS)         += fuse/
@@ -298,10 +291,9 @@ diff -Nur -x .git vfs-4cbe5a5/fs/Makefile vfs-3d5a648/fs/Makefile
  obj-$(CONFIG_UDF_FS)          += udf/
  obj-$(CONFIG_SUN_OPENPROMFS)  += openpromfs/
  obj-$(CONFIG_OMFS_FS)         += omfs/
-diff -Nur -x .git vfs-4cbe5a5/fs/namei.c vfs-3d5a648/fs/namei.c
---- vfs-4cbe5a5/fs/namei.c     2012-09-01 19:39:58.000000000 +0200
-+++ vfs-3d5a648/fs/namei.c     2012-09-05 16:35:20.000000000 +0200
-@@ -348,6 +348,7 @@
+--- a/fs/namei.c
++++ b/fs/namei.c
+@@ -348,6 +348,7 @@ int __inode_permission(struct inode *ino
  
        return security_inode_permission(inode, mask);
  }
@@ -309,7 +301,7 @@ diff -Nur -x .git vfs-4cbe5a5/fs/namei.c vfs-3d5a648/fs/namei.c
  
  /**
   * sb_permission - Check superblock-level permissions
-@@ -2822,9 +2823,12 @@
+@@ -2822,9 +2823,12 @@ finish_open_created:
        error = may_open(&nd->path, acc_mode, open_flag);
        if (error)
                goto out;
@@ -325,10 +317,9 @@ diff -Nur -x .git vfs-4cbe5a5/fs/namei.c vfs-3d5a648/fs/namei.c
                if (error == -EOPENSTALE)
                        goto stale_open;
                goto out;
-diff -Nur -x .git vfs-4cbe5a5/fs/namespace.c vfs-3d5a648/fs/namespace.c
---- vfs-4cbe5a5/fs/namespace.c 2012-09-01 19:39:58.000000000 +0200
-+++ vfs-3d5a648/fs/namespace.c 2012-09-05 16:35:20.000000000 +0200
-@@ -1387,6 +1387,24 @@
+--- a/fs/namespace.c
++++ b/fs/namespace.c
+@@ -1387,6 +1387,24 @@ void drop_collected_mounts(struct vfsmou
        release_mounts(&umount_list);
  }
  
@@ -353,10 +344,9 @@ diff -Nur -x .git vfs-4cbe5a5/fs/namespace.c vfs-3d5a648/fs/namespace.c
  int iterate_mounts(int (*f)(struct vfsmount *, void *), void *arg,
                   struct vfsmount *root)
  {
-diff -Nur -x .git vfs-4cbe5a5/fs/open.c vfs-3d5a648/fs/open.c
---- vfs-4cbe5a5/fs/open.c      2012-09-01 19:39:58.000000000 +0200
-+++ vfs-3d5a648/fs/open.c      2012-09-05 16:35:20.000000000 +0200
-@@ -787,8 +787,7 @@
+--- a/fs/open.c
++++ b/fs/open.c
+@@ -787,8 +787,7 @@ struct file *dentry_open(const struct pa
                return ERR_PTR(error);
  
        f->f_flags = flags;
@@ -366,7 +356,7 @@ diff -Nur -x .git vfs-4cbe5a5/fs/open.c vfs-3d5a648/fs/open.c
        if (!error) {
                error = open_check_o_direct(f);
                if (error) {
-@@ -803,6 +802,26 @@
+@@ -803,6 +802,26 @@ struct file *dentry_open(const struct pa
  }
  EXPORT_SYMBOL(dentry_open);
  
@@ -393,9 +383,8 @@ diff -Nur -x .git vfs-4cbe5a5/fs/open.c vfs-3d5a648/fs/open.c
  static void __put_unused_fd(struct files_struct *files, unsigned int fd)
  {
        struct fdtable *fdt = files_fdtable(files);
-diff -Nur -x .git vfs-4cbe5a5/fs/overlayfs/copy_up.c vfs-3d5a648/fs/overlayfs/copy_up.c
---- vfs-4cbe5a5/fs/overlayfs/copy_up.c 1970-01-01 01:00:00.000000000 +0100
-+++ vfs-3d5a648/fs/overlayfs/copy_up.c 2012-09-05 16:35:20.000000000 +0200
+--- /dev/null
++++ b/fs/overlayfs/copy_up.c
 @@ -0,0 +1,385 @@
 +/*
 + *
@@ -782,9 +771,8 @@ diff -Nur -x .git vfs-4cbe5a5/fs/overlayfs/copy_up.c vfs-3d5a648/fs/overlayfs/co
 +      dput(parent);
 +      return err;
 +}
-diff -Nur -x .git vfs-4cbe5a5/fs/overlayfs/dir.c vfs-3d5a648/fs/overlayfs/dir.c
---- vfs-4cbe5a5/fs/overlayfs/dir.c     1970-01-01 01:00:00.000000000 +0100
-+++ vfs-3d5a648/fs/overlayfs/dir.c     2012-09-05 16:35:20.000000000 +0200
+--- /dev/null
++++ b/fs/overlayfs/dir.c
 @@ -0,0 +1,604 @@
 +/*
 + *
@@ -1390,9 +1378,8 @@ diff -Nur -x .git vfs-4cbe5a5/fs/overlayfs/dir.c vfs-3d5a648/fs/overlayfs/dir.c
 +      .listxattr      = ovl_listxattr,
 +      .removexattr    = ovl_removexattr,
 +};
-diff -Nur -x .git vfs-4cbe5a5/fs/overlayfs/inode.c vfs-3d5a648/fs/overlayfs/inode.c
---- vfs-4cbe5a5/fs/overlayfs/inode.c   1970-01-01 01:00:00.000000000 +0100
-+++ vfs-3d5a648/fs/overlayfs/inode.c   2012-09-05 16:35:20.000000000 +0200
+--- /dev/null
++++ b/fs/overlayfs/inode.c
 @@ -0,0 +1,372 @@
 +/*
 + *
@@ -1766,17 +1753,15 @@ diff -Nur -x .git vfs-4cbe5a5/fs/overlayfs/inode.c vfs-3d5a648/fs/overlayfs/inod
 +      return inode;
 +
 +}
-diff -Nur -x .git vfs-4cbe5a5/fs/overlayfs/Kconfig vfs-3d5a648/fs/overlayfs/Kconfig
---- vfs-4cbe5a5/fs/overlayfs/Kconfig   1970-01-01 01:00:00.000000000 +0100
-+++ vfs-3d5a648/fs/overlayfs/Kconfig   2012-09-05 16:35:20.000000000 +0200
+--- /dev/null
++++ b/fs/overlayfs/Kconfig
 @@ -0,0 +1,4 @@
 +config OVERLAYFS_FS
 +      tristate "Overlay filesystem support"
 +      help
 +        Add support for overlay filesystem.
-diff -Nur -x .git vfs-4cbe5a5/fs/overlayfs/Makefile vfs-3d5a648/fs/overlayfs/Makefile
---- vfs-4cbe5a5/fs/overlayfs/Makefile  1970-01-01 01:00:00.000000000 +0100
-+++ vfs-3d5a648/fs/overlayfs/Makefile  2012-09-05 16:35:20.000000000 +0200
+--- /dev/null
++++ b/fs/overlayfs/Makefile
 @@ -0,0 +1,7 @@
 +#
 +# Makefile for the overlay filesystem.
@@ -1785,9 +1770,8 @@ diff -Nur -x .git vfs-4cbe5a5/fs/overlayfs/Makefile vfs-3d5a648/fs/overlayfs/Mak
 +obj-$(CONFIG_OVERLAYFS_FS) += overlayfs.o
 +
 +overlayfs-objs := super.o inode.o dir.o readdir.o copy_up.o
-diff -Nur -x .git vfs-4cbe5a5/fs/overlayfs/overlayfs.h vfs-3d5a648/fs/overlayfs/overlayfs.h
---- vfs-4cbe5a5/fs/overlayfs/overlayfs.h       1970-01-01 01:00:00.000000000 +0100
-+++ vfs-3d5a648/fs/overlayfs/overlayfs.h       2012-09-05 16:35:20.000000000 +0200
+--- /dev/null
++++ b/fs/overlayfs/overlayfs.h
 @@ -0,0 +1,70 @@
 +/*
 + *
@@ -1859,9 +1843,8 @@ diff -Nur -x .git vfs-4cbe5a5/fs/overlayfs/overlayfs.h vfs-3d5a648/fs/overlayfs/
 +/* copy_up.c */
 +int ovl_copy_up(struct dentry *dentry);
 +int ovl_copy_up_truncate(struct dentry *dentry, loff_t size);
-diff -Nur -x .git vfs-4cbe5a5/fs/overlayfs/readdir.c vfs-3d5a648/fs/overlayfs/readdir.c
---- vfs-4cbe5a5/fs/overlayfs/readdir.c 1970-01-01 01:00:00.000000000 +0100
-+++ vfs-3d5a648/fs/overlayfs/readdir.c 2012-09-05 16:35:20.000000000 +0200
+--- /dev/null
++++ b/fs/overlayfs/readdir.c
 @@ -0,0 +1,566 @@
 +/*
 + *
@@ -2429,9 +2412,8 @@ diff -Nur -x .git vfs-4cbe5a5/fs/overlayfs/readdir.c vfs-3d5a648/fs/overlayfs/re
 +
 +      return err;
 +}
-diff -Nur -x .git vfs-4cbe5a5/fs/overlayfs/super.c vfs-3d5a648/fs/overlayfs/super.c
---- vfs-4cbe5a5/fs/overlayfs/super.c   1970-01-01 01:00:00.000000000 +0100
-+++ vfs-3d5a648/fs/overlayfs/super.c   2012-09-05 16:35:20.000000000 +0200
+--- /dev/null
++++ b/fs/overlayfs/super.c
 @@ -0,0 +1,685 @@
 +/*
 + *
@@ -3118,10 +3100,9 @@ diff -Nur -x .git vfs-4cbe5a5/fs/overlayfs/super.c vfs-3d5a648/fs/overlayfs/supe
 +
 +module_init(ovl_init);
 +module_exit(ovl_exit);
-diff -Nur -x .git vfs-4cbe5a5/fs/splice.c vfs-3d5a648/fs/splice.c
---- vfs-4cbe5a5/fs/splice.c    2012-09-01 19:39:58.000000000 +0200
-+++ vfs-3d5a648/fs/splice.c    2012-09-05 16:35:20.000000000 +0200
-@@ -1308,6 +1308,7 @@
+--- a/fs/splice.c
++++ b/fs/splice.c
+@@ -1308,6 +1308,7 @@ long do_splice_direct(struct file *in, l
  
        return ret;
  }
@@ -3129,10 +3110,9 @@ diff -Nur -x .git vfs-4cbe5a5/fs/splice.c vfs-3d5a648/fs/splice.c
  
  static int splice_pipe_to_pipe(struct pipe_inode_info *ipipe,
                               struct pipe_inode_info *opipe,
-diff -Nur -x .git vfs-4cbe5a5/include/linux/fs.h vfs-3d5a648/include/linux/fs.h
---- vfs-4cbe5a5/include/linux/fs.h     2012-09-01 19:39:58.000000000 +0200
-+++ vfs-3d5a648/include/linux/fs.h     2012-09-05 16:35:20.000000000 +0200
-@@ -505,6 +505,12 @@
+--- a/include/linux/fs.h
++++ b/include/linux/fs.h
+@@ -505,6 +505,12 @@ struct iattr {
   */
  #include <linux/quota.h>
  
@@ -3145,7 +3125,7 @@ diff -Nur -x .git vfs-4cbe5a5/include/linux/fs.h vfs-3d5a648/include/linux/fs.h
  /** 
   * enum positive_aop_returns - aop return codes with specific semantics
   *
-@@ -1578,6 +1584,11 @@
+@@ -1578,6 +1584,11 @@ struct super_block {
  
        /* Being remounted read-only */
        int s_readonly_remount;
@@ -3157,7 +3137,7 @@ diff -Nur -x .git vfs-4cbe5a5/include/linux/fs.h vfs-3d5a648/include/linux/fs.h
  };
  
  /* superblock cache pruning functions */
-@@ -1835,6 +1846,7 @@
+@@ -1835,6 +1846,7 @@ struct inode_operations {
        int (*atomic_open)(struct inode *, struct dentry *,
                           struct file *, unsigned open_flag,
                           umode_t create_mode, int *opened);
@@ -3165,7 +3145,7 @@ diff -Nur -x .git vfs-4cbe5a5/include/linux/fs.h vfs-3d5a648/include/linux/fs.h
  } ____cacheline_aligned;
  
  struct seq_file;
-@@ -2199,6 +2211,7 @@
+@@ -2199,6 +2211,7 @@ extern long do_sys_open(int dfd, const c
  extern struct file *filp_open(const char *, int, umode_t);
  extern struct file *file_open_root(struct dentry *, struct vfsmount *,
                                   const char *, int);
@@ -3173,7 +3153,7 @@ diff -Nur -x .git vfs-4cbe5a5/include/linux/fs.h vfs-3d5a648/include/linux/fs.h
  extern struct file * dentry_open(const struct path *, int, const struct cred *);
  extern int filp_close(struct file *, fl_owner_t id);
  extern char * getname(const char __user *);
-@@ -2402,6 +2415,7 @@
+@@ -2402,6 +2415,7 @@ extern sector_t bmap(struct inode *, sec
  #endif
  extern int notify_change(struct dentry *, struct iattr *);
  extern int inode_permission(struct inode *, int);
@@ -3181,10 +3161,9 @@ diff -Nur -x .git vfs-4cbe5a5/include/linux/fs.h vfs-3d5a648/include/linux/fs.h
  extern int generic_permission(struct inode *, int);
  
  static inline bool execute_ok(struct inode *inode)
-diff -Nur -x .git vfs-4cbe5a5/include/linux/mount.h vfs-3d5a648/include/linux/mount.h
---- vfs-4cbe5a5/include/linux/mount.h  2012-09-01 19:39:58.000000000 +0200
-+++ vfs-3d5a648/include/linux/mount.h  2012-09-05 16:35:20.000000000 +0200
-@@ -66,6 +66,9 @@
+--- a/include/linux/mount.h
++++ b/include/linux/mount.h
+@@ -66,6 +66,9 @@ extern void mnt_pin(struct vfsmount *mnt
  extern void mnt_unpin(struct vfsmount *mnt);
  extern int __mnt_is_readonly(struct vfsmount *mnt);
  
@@ -3194,10 +3173,9 @@ diff -Nur -x .git vfs-4cbe5a5/include/linux/mount.h vfs-3d5a648/include/linux/mo
  struct file_system_type;
  extern struct vfsmount *vfs_kern_mount(struct file_system_type *type,
                                      int flags, const char *name,
-diff -Nur -x .git vfs-4cbe5a5/MAINTAINERS vfs-3d5a648/MAINTAINERS
---- vfs-4cbe5a5/MAINTAINERS    2012-09-01 19:39:58.000000000 +0200
-+++ vfs-3d5a648/MAINTAINERS    2012-09-05 16:35:20.000000000 +0200
-@@ -5103,6 +5103,13 @@
+--- a/MAINTAINERS
++++ b/MAINTAINERS
+@@ -5105,6 +5105,13 @@ F:      drivers/scsi/osd/
  F:    include/scsi/osd_*
  F:    fs/exofs/