)]}'
{
  "log": [
    {
      "commit": "7f78e0351394052e1a6293e175825eb5c7869507",
      "tree": "76493af33d02bd3f411e69f95b0bcdfff50412b4",
      "parents": [
        "ba0e3427b03c3d1550239779eca5c1c5a53a2152"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Sat Mar 02 19:39:14 2013 -0800"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Sun Mar 03 19:36:31 2013 -0800"
      },
      "message": "fs: Limit sys_mount to only request filesystem modules.\n\nModify the request_module to prefix the file system type with \"fs-\"\nand add aliases to all of the filesystems that can be built as modules\nto match.\n\nA common practice is to build all of the kernel code and leave code\nthat is not commonly needed as modules, with the result that many\nusers are exposed to any bug anywhere in the kernel.\n\nLooking for filesystems with a fs- prefix limits the pool of possible\nmodules that can be loaded by mount to just filesystems trivially\nmaking things safer with no real cost.\n\nUsing aliases means user space can control the policy of which\nfilesystem modules are auto-loaded by editing /etc/modprobe.d/*.conf\nwith blacklist and alias directives.  Allowing simple, safe,\nwell understood work-arounds to known problematic software.\n\nThis also addresses a rare but unfortunate problem where the filesystem\nname is not the same as it\u0027s module name and module auto-loading\nwould not work.  While writing this patch I saw a handful of such\ncases.  The most significant being autofs that lives in the module\nautofs4.\n\nThis is relevant to user namespaces because we can reach the request\nmodule in get_fs_type() without having any special permissions, and\npeople get uncomfortable when a user specified string (in this case\nthe filesystem type) goes all of the way to request_module.\n\nAfter having looked at this issue I don\u0027t think there is any\nparticular reason to perform any filtering or permission checks beyond\nmaking it clear in the module request that we want a filesystem\nmodule.  The common pattern in the kernel is to call request_module()\nwithout regards to the users permissions.  In general all a filesystem\nmodule does once loaded is call register_filesystem() and go to sleep.\nWhich means there is not much attack surface exposed by loading a\nfilesytem module unless the filesystem is mounted.  In a user\nnamespace filesystems are not mounted unless .fs_flags \u003d FS_USERNS_MOUNT,\nwhich most filesystems do not set today.\n\nAcked-by: Serge Hallyn \u003cserge.hallyn@canonical.com\u003e\nAcked-by: Kees Cook \u003ckeescook@chromium.org\u003e\nReported-by: Kees Cook \u003ckeescook@google.com\u003e\nSigned-off-by: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "dd37978c50bc8b354e5c4633f69387f16572fdac",
      "tree": "d233c7027f26869485f96556cc9cddacbb3a8f2d",
      "parents": [
        "5e608671dfbfd6a9556c31df65a4f147439eed59"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Mar 01 19:48:30 2013 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Mar 01 19:48:30 2013 -0500"
      },
      "message": "cache the value of file_inode() in struct file\n\nNote that this thing does *not* contribute to inode refcount;\nit\u0027s pinned down by dentry.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "d895cb1af15c04c522a25c79cc429076987c089b",
      "tree": "895dc9157e28f603d937a58be664e4e440d5530c",
      "parents": [
        "9626357371b519f2b955fef399647181034a77fe",
        "d3d009cb965eae7e002ea5badf603ea8f4c34915"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Feb 26 20:16:07 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Feb 26 20:16:07 2013 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs\n\nPull vfs pile (part one) from Al Viro:\n \"Assorted stuff - cleaning namei.c up a bit, fixing -\u003ed_name/-\u003ed_parent\n  locking violations, etc.\n\n  The most visible changes here are death of FS_REVAL_DOT (replaced with\n  \"has -\u003ed_weak_revalidate()\") and a new helper getting from struct file\n  to inode.  Some bits of preparation to xattr method interface changes.\n\n  Misc patches by various people sent this cycle *and* ocfs2 fixes from\n  several cycles ago that should\u0027ve been upstream right then.\n\n  PS: the next vfs pile will be xattr stuff.\"\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (46 commits)\n  saner proc_get_inode() calling conventions\n  proc: avoid extra pde_put() in proc_fill_super()\n  fs: change return values from -EACCES to -EPERM\n  fs/exec.c: make bprm_mm_init() static\n  ocfs2/dlm: use GFP_ATOMIC inside a spin_lock\n  ocfs2: fix possible use-after-free with AIO\n  ocfs2: Fix oops in ocfs2_fast_symlink_readpage() code path\n  get_empty_filp()/alloc_file() leave both -\u003ef_pos and -\u003ef_version zero\n  target: writev() on single-element vector is pointless\n  export kernel_write(), convert open-coded instances\n  fs: encode_fh: return FILEID_INVALID if invalid fid_type\n  kill f_vfsmnt\n  vfs: kill FS_REVAL_DOT by adding a d_weak_revalidate dentry op\n  nfsd: handle vfs_getattr errors in acl protocol\n  switch vfs_getattr() to struct path\n  default SET_PERSONALITY() in linux/elf.h\n  ceph: prepopulate inodes only when request is aborted\n  d_hash_and_lookup(): export, switch open-coded instances\n  9p: switch v9fs_set_create_acl() to inode+fid, do it before d_instantiate()\n  9p: split dropping the acls from v9fs_set_create_acl()\n  ...\n"
    },
    {
      "commit": "7bb307e894d51308aa0582a8c4cc5875bbc645b9",
      "tree": "8b8434fe4674fb47236c0d7ca2256e7afc29f208",
      "parents": [
        "94e07a7590ae855bae0536c42b3086fadc7c83a8"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Feb 23 14:51:48 2013 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Feb 26 02:46:11 2013 -0500"
      },
      "message": "export kernel_write(), convert open-coded instances\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "182be684784334598eee1d90274e7f7aa0063616",
      "tree": "7b4d555a24fbbe9b22086f31246d1aa6df5e5330",
      "parents": [
        "ecf3d1f1aa74da0d632b651a2e05a911f60e92c0"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jan 24 02:21:54 2013 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Feb 26 02:46:10 2013 -0500"
      },
      "message": "kill f_vfsmnt\n\nvery few users left...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ecf3d1f1aa74da0d632b651a2e05a911f60e92c0",
      "tree": "62a2e0a46bfd993a24a1154ec1331c57bbd50482",
      "parents": [
        "4f4a4faddea0fe45bf508e723c3a810c5190ed62"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Wed Feb 20 11:19:05 2013 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Feb 26 02:46:09 2013 -0500"
      },
      "message": "vfs: kill FS_REVAL_DOT by adding a d_weak_revalidate dentry op\n\nThe following set of operations on a NFS client and server will cause\n\n    server# mkdir a\n    client# cd a\n    server# mv a a.bak\n    client# sleep 30  # (or whatever the dir attrcache timeout is)\n    client# stat .\n    stat: cannot stat `.\u0027: Stale NFS file handle\n\nObviously, we should not be getting an ESTALE error back there since the\ninode still exists on the server. The problem is that the lookup code\nwill call d_revalidate on the dentry that \".\" refers to, because NFS has\nFS_REVAL_DOT set.\n\nnfs_lookup_revalidate will see that the parent directory has changed and\nwill try to reverify the dentry by redoing a LOOKUP. That of course\nfails, so the lookup code returns ESTALE.\n\nThe problem here is that d_revalidate is really a bad fit for this case.\nWhat we really want to know at this point is whether the inode is still\ngood or not, but we don\u0027t really care what name it goes by or whether\nthe dcache is still valid.\n\nAdd a new d_op-\u003ed_weak_revalidate operation and have complete_walk call\nthat instead of d_revalidate. The intent there is to allow for a\n\"weaker\" d_revalidate that just checks to see whether the inode is still\ngood. This is also gives us an opportunity to kill off the FS_REVAL_DOT\nspecial casing.\n\n[AV: changed method name, added note in porting, fixed confusion re\nhaving it possibly called from RCU mode (it won\u0027t be)]\n\nCc: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "3dadecce20603aa380023c65e6f55f108fd5e952",
      "tree": "9c6b1540787ba3c0c2342447bf1b35836b1e4314",
      "parents": [
        "e72837e3e7bae3f182c4ac63c9424e86f1158dd0"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jan 24 02:18:08 2013 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Feb 26 02:46:08 2013 -0500"
      },
      "message": "switch vfs_getattr() to struct path\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "496ad9aa8ef448058e36ca7a787c61f2e63f0f54",
      "tree": "8f4abde793cd7db5bb8fde6d27ebcacd0e54379a",
      "parents": [
        "57eccb830f1cc93d4b506ba306d8dfa685e0c88f"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jan 23 17:07:38 2013 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Feb 22 23:31:31 2013 -0500"
      },
      "message": "new helper: file_inode(file)\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "d28574e043e8b7cb35482de6e9a553118a32803d",
      "tree": "6233897744a2d5de8ff98e51e4f12dad933355b0",
      "parents": [
        "85f40aec887110ae6bbefa87988def4606a3d583"
      ],
      "author": {
        "name": "Maxim Patlasov",
        "email": "mpatlasov@parallels.com",
        "time": "Fri Oct 26 19:50:04 2012 +0400"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Thu Jan 24 16:21:27 2013 +0100"
      },
      "message": "mm: minor cleanup of iov_iter_single_seg_count()\n\nThe function does not modify iov_iter which \u0027i\u0027 points to.\n\nSigned-off-by: Maxim Patlasov \u003cmpatlasov@parallels.com\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n"
    },
    {
      "commit": "21e89c0c48bb799beb09181740796fc80c9676e2",
      "tree": "bd5aef34a980f189ad41c75e881d225bc854bf44",
      "parents": [
        "b911a6bdeef5848c468597d040e3407e0aee04ce",
        "91c7fbbf63f33c77d8d28de624834a21888842bb"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Dec 20 18:49:14 2012 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Dec 20 18:49:14 2012 -0500"
      },
      "message": "Merge branch \u0027fscache\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs into for-linus\n"
    },
    {
      "commit": "471667391a92bf7bf2cd4ff31a3ad88e5dec934b",
      "tree": "cb07ce436ed20f5f50e0e3c1db386a105ed65434",
      "parents": [
        "b9f61c3c0c8daed9844870bc9358e6d9fdb7eb61"
      ],
      "author": {
        "name": "Alessio Igor Bogani",
        "email": "abogani@kernel.org",
        "time": "Thu Dec 13 12:22:39 2012 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Dec 20 18:47:08 2012 -0500"
      },
      "message": "vfs: Remove useless function prototypes\n\nCommit 8e22cc88d68ca1a46d7d582938f979eb640ed30f removes the (un)lock_super\nfunction definitions but forgets to remove their prototypes.\n\nSigned-off-by: Alessio Igor Bogani \u003cabogani@kernel.org\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "d30357f2f0ec0bfb67fd39f8f76d22d02d78631e",
      "tree": "0923a2f8276af03293410cb2b78b2457d7fc6996",
      "parents": [
        "9014da7525dffef69131f717decf262e08ff3d58"
      ],
      "author": {
        "name": "Marco Stornelli",
        "email": "marco.stornelli@gmail.com",
        "time": "Sat Dec 15 11:59:20 2012 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Dec 20 18:46:29 2012 -0500"
      },
      "message": "vfs: drop vmtruncate\n\nRemoved vmtruncate\n\nSigned-off-by: Marco Stornelli \u003cmarco.stornelli@gmail.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a02de9608595c8ef649ef03ae735b0b45e3d4396",
      "tree": "ca411825ecc8a30b70d869244a7e9412d0728486",
      "parents": [
        "ef778e7ae67cd426c30cad43378b908f5eb0bad5"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Thu Dec 20 21:52:36 2012 +0000"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Thu Dec 20 22:05:41 2012 +0000"
      },
      "message": "VFS: Make more complete truncate operation available to CacheFiles\n\nMake a more complete truncate operation available to CacheFiles (including\nsecurity checks and suchlike) so that it can use this to clear invalidated\ncache files.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "848b81415c42ff3dc9a4204749087b015c37ef66",
      "tree": "391da3a73aea48632248220d2d6b8d45a88f7eae",
      "parents": [
        "992956189de58cae9f2be40585bc25105cd7c5ad",
        "6fd59a83b9261fa53eaf98fb5514abba504a3ea3"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 17 20:58:12 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 17 20:58:12 2012 -0800"
      },
      "message": "Merge branch \u0027akpm\u0027 (Andrew\u0027s patch-bomb)\n\nMerge misc patches from Andrew Morton:\n \"Incoming:\n\n   - lots of misc stuff\n\n   - backlight tree updates\n\n   - lib/ updates\n\n   - Oleg\u0027s percpu-rwsem changes\n\n   - checkpatch\n\n   - rtc\n\n   - aoe\n\n   - more checkpoint/restart support\n\n  I still have a pile of MM stuff pending - Pekka should be merging\n  later today after which that is good to go.  A number of other things\n  are twiddling thumbs awaiting maintainer merges.\"\n\n* emailed patches from Andrew Morton \u003cakpm@linux-foundation.org\u003e: (180 commits)\n  scatterlist: don\u0027t BUG when we can trivially return a proper error.\n  docs: update documentation about /proc/\u003cpid\u003e/fdinfo/\u003cfd\u003e fanotify output\n  fs, fanotify: add @mflags field to fanotify output\n  docs: add documentation about /proc/\u003cpid\u003e/fdinfo/\u003cfd\u003e output\n  fs, notify: add procfs fdinfo helper\n  fs, exportfs: add exportfs_encode_inode_fh() helper\n  fs, exportfs: escape nil dereference if no s_export_op present\n  fs, epoll: add procfs fdinfo helper\n  fs, eventfd: add procfs fdinfo helper\n  procfs: add ability to plug in auxiliary fdinfo providers\n  tools/testing/selftests/kcmp/kcmp_test.c: print reason for failure in kcmp_test\n  breakpoint selftests: print failure status instead of cause make error\n  kcmp selftests: print fail status instead of cause make error\n  kcmp selftests: make run_tests fix\n  mem-hotplug selftests: print failure status instead of cause make error\n  cpu-hotplug selftests: print failure status instead of cause make error\n  mqueue selftests: print failure status instead of cause make error\n  vm selftests: print failure status instead of cause make error\n  ubifs: use prandom_bytes\n  mtd: nandsim: use prandom_bytes\n  ...\n"
    },
    {
      "commit": "55985dd72ab27b47530dcc8bdddd28b69f4abe8b",
      "tree": "9117b3f9bc9d46fe89ee3eccc959bab9b0e9db7b",
      "parents": [
        "2bf1cbf1c616b4dd85a3a8a715af9c5701c16a91"
      ],
      "author": {
        "name": "Cyrill Gorcunov",
        "email": "gorcunov@openvz.org",
        "time": "Mon Dec 17 16:04:55 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 17 17:15:27 2012 -0800"
      },
      "message": "procfs: add ability to plug in auxiliary fdinfo providers\n\nThis patch brings ability to print out auxiliary data associated with\nfile in procfs interface /proc/pid/fdinfo/fd.\n\nIn particular further patches make eventfd, evenpoll, signalfd and\nfsnotify to print additional information complete enough to restore\nthese objects after checkpoint.\n\nTo simplify the code we add show_fdinfo callback inside struct\nfile_operations (as Al and Pavel are proposing).\n\nSigned-off-by: Cyrill Gorcunov \u003cgorcunov@openvz.org\u003e\nAcked-by: Pavel Emelyanov \u003cxemul@parallels.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Andrey Vagin \u003cavagin@openvz.org\u003e\nCc: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: James Bottomley \u003cjbottomley@parallels.com\u003e\nCc: \"Aneesh Kumar K.V\" \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Matthew Helsley \u003cmatt.helsley@gmail.com\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nCc: \"Aneesh Kumar K.V\" \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nCc: Tvrtko Ursulin \u003ctvrtko.ursulin@onelan.co.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "965c8e59cfcf845ecde2265a1d1bfee5f011d302",
      "tree": "22758a99b4ecb475750966d5202200dc0e89876c",
      "parents": [
        "c0f041602c33bae10b8e321c49024490d03ced3d"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Mon Dec 17 15:59:39 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 17 17:15:12 2012 -0800"
      },
      "message": "lseek: the \"whence\" argument is called \"whence\"\n\nBut the kernel decided to call it \"origin\" instead.  Fix most of the\nsites.\n\nAcked-by: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6a2b60b17b3e48a418695a94bd2420f6ab32e519",
      "tree": "54b7792fa68b8890f710fa6398b6ba8626a039a8",
      "parents": [
        "9228ff90387e276ad67b10c0eb525c9d6a57d5e9",
        "98f842e675f96ffac96e6c50315790912b2812be"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 17 15:44:47 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 17 15:44:47 2012 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace\n\nPull user namespace changes from Eric Biederman:\n \"While small this set of changes is very significant with respect to\n  containers in general and user namespaces in particular.  The user\n  space interface is now complete.\n\n  This set of changes adds support for unprivileged users to create user\n  namespaces and as a user namespace root to create other namespaces.\n  The tyranny of supporting suid root preventing unprivileged users from\n  using cool new kernel features is broken.\n\n  This set of changes completes the work on setns, adding support for\n  the pid, user, mount namespaces.\n\n  This set of changes includes a bunch of basic pid namespace\n  cleanups/simplifications.  Of particular significance is the rework of\n  the pid namespace cleanup so it no longer requires sending out\n  tendrils into all kinds of unexpected cleanup paths for operation.  At\n  least one case of broken error handling is fixed by this cleanup.\n\n  The files under /proc/\u003cpid\u003e/ns/ have been converted from regular files\n  to magic symlinks which prevents incorrect caching by the VFS,\n  ensuring the files always refer to the namespace the process is\n  currently using and ensuring that the ptrace_mayaccess permission\n  checks are always applied.\n\n  The files under /proc/\u003cpid\u003e/ns/ have been given stable inode numbers\n  so it is now possible to see if different processes share the same\n  namespaces.\n\n  Through the David Miller\u0027s net tree are changes to relax many of the\n  permission checks in the networking stack to allowing the user\n  namespace root to usefully use the networking stack.  Similar changes\n  for the mount namespace and the pid namespace are coming through my\n  tree.\n\n  Two small changes to add user namespace support were commited here adn\n  in David Miller\u0027s -net tree so that I could complete the work on the\n  /proc/\u003cpid\u003e/ns/ files in this tree.\n\n  Work remains to make it safe to build user namespaces and 9p, afs,\n  ceph, cifs, coda, gfs2, ncpfs, nfs, nfsd, ocfs2, and xfs so the\n  Kconfig guard remains in place preventing that user namespaces from\n  being built when any of those filesystems are enabled.\n\n  Future design work remains to allow root users outside of the initial\n  user namespace to mount more than just /proc and /sys.\"\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace: (38 commits)\n  proc: Usable inode numbers for the namespace file descriptors.\n  proc: Fix the namespace inode permission checks.\n  proc: Generalize proc inode allocation\n  userns: Allow unprivilged mounts of proc and sysfs\n  userns: For /proc/self/{uid,gid}_map derive the lower userns from the struct file\n  procfs: Print task uids and gids in the userns that opened the proc file\n  userns: Implement unshare of the user namespace\n  userns: Implent proc namespace operations\n  userns: Kill task_user_ns\n  userns: Make create_new_namespaces take a user_ns parameter\n  userns: Allow unprivileged use of setns.\n  userns: Allow unprivileged users to create new namespaces\n  userns: Allow setting a userns mapping to your current uid.\n  userns: Allow chown and setgid preservation\n  userns: Allow unprivileged users to create user namespaces.\n  userns: Ignore suid and sgid on binaries if the uid or gid can not be mapped\n  userns: fix return value on mntns_install() failure\n  vfs: Allow unprivileged manipulation of the mount namespace.\n  vfs: Only support slave subtrees across different user namespaces\n  vfs: Add a user namespace reference from struct mnt_namespace\n  ...\n"
    },
    {
      "commit": "252aa6f5be64c90c67b9f066ccff880f6b487d32",
      "tree": "9bb13ada4d838d232d761f45aa9e1a0b26a40cff",
      "parents": [
        "78bd52097d04205a33a8014a1b8ac01cf1ae9d06"
      ],
      "author": {
        "name": "Rafael Aquini",
        "email": "aquini@redhat.com",
        "time": "Tue Dec 11 16:02:35 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 11 17:22:26 2012 -0800"
      },
      "message": "mm: redefine address_space.assoc_mapping\n\nOverhaul struct address_space.assoc_mapping renaming it to\naddress_space.private_data and its type is redefined to void*.  By this\napproach we consistently name the .private_* elements from struct\naddress_space as well as allow extended usage for address_space\nassociation with other data structures through -\u003eprivate_data.\n\nAlso, all users of old -\u003eassoc_mapping element are converted to reflect\nits new name and type change (-\u003eprivate_data).\n\nSigned-off-by: Rafael Aquini \u003caquini@redhat.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: \"Michael S. Tsirkin\" \u003cmst@redhat.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Konrad Rzeszutek Wilk \u003ckonrad.wilk@oracle.com\u003e\nCc: Minchan Kim \u003cminchan@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bbec0270bdd887f96377065ee38b8848b5afa395",
      "tree": "4a38397643dceb5285afe11c78e27763a2ead5b8",
      "parents": [
        "ab73857e354ab9e317613cba7db714e2c12c6547"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Nov 29 12:31:52 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Nov 29 17:48:12 2012 -0800"
      },
      "message": "blkdev_max_block: make private to fs/buffer.c\n\nWe really don\u0027t want to look at the block size for the raw block device\naccesses in fs/block-dev.c, because it may be changing from under us.\nSo get rid of the max_block logic entirely, since the caller should\nalready have done it anyway.\n\nThat leaves the only user of this function in fs/buffer.c, so move the\nwhole function there and make it static.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1e8b33328a5407b447ff80953655a47014a6dcb9",
      "tree": "cb5a5f90712bafe8fb64d3d221fc5213c53f681f",
      "parents": [
        "45bce8f3e3436bbe2e03dd2b076abdce79ffabb7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Nov 29 10:49:50 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Nov 29 10:52:19 2012 -0800"
      },
      "message": "blockdev: remove bd_block_size_semaphore again\n\nThis reverts the block-device direct access code to the previous\nunlocked code, now that fs/buffer.c no longer needs external locking.\n\nWith this, fs/block_dev.c is back to the original version, apart from a\nwhitespace cleanup that I didn\u0027t want to revert.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0c55cfc4166d9a0f38de779bd4d75a90afbe7734",
      "tree": "d7ac108d615869ea615eec8693993c2700b24351",
      "parents": [
        "7a472ef4be8387bc05a42e16309b02c8ca943a40"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Thu Jul 26 21:42:03 2012 -0700"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Mon Nov 19 05:59:21 2012 -0800"
      },
      "message": "vfs: Allow unprivileged manipulation of the mount namespace.\n\n- Add a filesystem flag to mark filesystems that are safe to mount as\n  an unprivileged user.\n\n- Add a filesystem flag to mark filesystems that don\u0027t need MNT_NODEV\n  when mounted by an unprivileged user.\n\n- Relax the permission checks to allow unprivileged users that have\n  CAP_SYS_ADMIN permissions in the user namespace referred to by the\n  current mount namespace to be allowed to mount, unmount, and move\n  filesystems.\n\nAcked-by: \"Serge E. Hallyn\" \u003cserge@hallyn.com\u003e\nSigned-off-by: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "c54d0dc35324300cdc502137f5c0ee44f53d7a8b",
      "tree": "d75c8b01d499c52708ee34892e0e0ed68f1a8d62",
      "parents": [
        "bbc1096ad8e9875a025bbcf012605da49129e8b8"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Oct 16 13:37:17 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Oct 16 13:37:17 2012 -0400"
      },
      "message": "bury SEL_{IN,OUT,EX}\n\n\tHad not been used for more than a decade and half; it used\nto be a part of (in-kernel) -\u003eselect() API and it has been pining\nfor fjords since 2.1.23pre1.  This is an ex-parrot...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "bbc1096ad8e9875a025bbcf012605da49129e8b8",
      "tree": "2d236fde4d4198164fa6d07bf53d04c8a10a8a11",
      "parents": [
        "45525b26a46cd593cb72070304c4cd7c8391bd37"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Mon Oct 15 16:40:35 2012 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Oct 16 13:36:58 2012 -0400"
      },
      "message": "Unexport some bits of linux/fs.h\n\nThere are some bits of linux/fs.h which are only used within the kernel and\nshouldn\u0027t be in the UAPI.  Move these from uapi/linux/fs.h into linux/fs.h.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "607ca46e97a1b6594b29647d98a32d545c24bdff",
      "tree": "30f4c0784bfddb57332cdc0678bd06d1e77fa185",
      "parents": [
        "08cce05c5a91f5017f4edc9866cf026908c73f9f"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Sat Oct 13 10:46:48 2012 +0100"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Sat Oct 13 10:46:48 2012 +0100"
      },
      "message": "UAPI: (Scripted) Disintegrate include/linux\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nAcked-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nAcked-by: Michael Kerrisk \u003cmtk.manpages@gmail.com\u003e\nAcked-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nAcked-by: Dave Jones \u003cdavej@redhat.com\u003e\n"
    },
    {
      "commit": "08cce05c5a91f5017f4edc9866cf026908c73f9f",
      "tree": "fc03b0188829102c65c77ecc0ac173b8d72ec7a2",
      "parents": [
        "8e4627dd865fca4b7e7a46128cd2659e64cdebb0"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Sat Oct 13 10:45:06 2012 +0100"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Sat Oct 13 10:45:06 2012 +0100"
      },
      "message": "UAPI: Unexport linux/blk_types.h\n\nIt seems that was linux/blk_types.h incorrectly exported to fix up some missing\nbits required by the exported parts of linux/fs.h (READ, WRITE, READA, etc.).\n\nSo unexport linux/blk_types.h and unexport the relevant bits of linux/fs.h.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\ncc: Jens Axboe \u003cjaxboe@fusionio.com\u003e\ncc: Tejun Heo \u003ctj@kernel.org\u003e\ncc: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\n"
    },
    {
      "commit": "7950e3852ab86826b7349a535d2e8b0000340d7f",
      "tree": "b07bcf28bf0fc3bdc610595287250c3c3a3d974a",
      "parents": [
        "adb5c2473d3f91526c79db972aafb20a56d3fbb3"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Wed Oct 10 16:43:13 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Oct 12 20:15:10 2012 -0400"
      },
      "message": "vfs: embed struct filename inside of names_cache allocation if possible\n\nIn the common case where a name is much smaller than PATH_MAX, an extra\nallocation for struct filename is unnecessary. Before allocating a\nseparate one, try to embed the struct filename inside the buffer first. If\nit turns out that that\u0027s not long enough, then fall back to allocating a\nseparate struct filename and redoing the copy.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "adb5c2473d3f91526c79db972aafb20a56d3fbb3",
      "tree": "f0427a11a91af2f5a5d0037ce52c32633019120b",
      "parents": [
        "669abf4e5539c8aa48bf28c965be05c0a7b58a27"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Wed Oct 10 16:43:13 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Oct 12 20:15:09 2012 -0400"
      },
      "message": "audit: make audit_inode take struct filename\n\nKeep a pointer to the audit_names \"slot\" in struct filename.\n\nHave all of the audit_inode callers pass a struct filename ponter to\naudit_inode instead of a string pointer. If the aname field is already\npopulated, then we can skip walking the list altogether and just use it\ndirectly.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "669abf4e5539c8aa48bf28c965be05c0a7b58a27",
      "tree": "5b8e9e17c4f03ddd719c9c2089d829e2a040854a",
      "parents": [
        "873f1eedc1b983d772283279192c4ca2f60e8482"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Wed Oct 10 16:43:10 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Oct 12 20:15:09 2012 -0400"
      },
      "message": "vfs: make path_openat take a struct filename pointer\n\n...and fix up the callers. For do_file_open_root, just declare a\nstruct filename on the stack and fill out the .name field. For\ndo_filp_open, make it also take a struct filename pointer, and fix up its\ncallers to call it appropriately.\n\nFor filp_open, add a variant that takes a struct filename pointer and turn\nfilp_open into a wrapper around it.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "91a27b2a756784714e924e5e854b919273082d26",
      "tree": "3913246b7d6e62703ec915f481e3a7159393f0f0",
      "parents": [
        "8e377d15078a501c4da98471f56396343c407d92"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Wed Oct 10 15:25:28 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Oct 12 20:14:55 2012 -0400"
      },
      "message": "vfs: define struct filename and have getname() return it\n\ngetname() is intended to copy pathname strings from userspace into a\nkernel buffer. The result is just a string in kernel space. It would\nhowever be quite helpful to be able to attach some ancillary info to\nthe string.\n\nFor instance, we could attach some audit-related info to reduce the\namount of audit-related processing needed. When auditing is enabled,\nwe could also call getname() on the string more than once and not\nneed to recopy it from userspace.\n\nThis patchset converts the getname()/putname() interfaces to return\na struct instead of a string. For now, the struct just tracks the\nstring in kernel space and the original userland pointer for it.\n\nLater, we\u0027ll add other information to the struct as it becomes\nconvenient.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a608ca21f58ee44df5a71ba140e98498f3ebc2cd",
      "tree": "4ba6f5d5414ba9b579c8e41eb30c21a709537922",
      "parents": [
        "4fa6b5ecbf092c6ee752ece8a55d71f663d23254"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Wed Oct 10 15:25:26 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Oct 12 00:32:03 2012 -0400"
      },
      "message": "vfs: allocate page instead of names_cache buffer in mount_block_root\n\nFirst, it\u0027s incorrect to call putname() after __getname_gfp() since the\nbare __getname_gfp() call skips the auditing code, while putname()\ndoesn\u0027t.\n\nmount_block_root allocates a PATH_MAX buffer via __getname_gfp, and then\ncalls get_fs_names to fill the buffer. That function can call\nget_filesystem_list which assumes that that buffer is a full page in\nsize. On arches where PAGE_SIZE !\u003d 4k, then this could potentially\noverrun.\n\nIn practice, it\u0027s hard to imagine the list of filesystem names even\napproaching 4k, but it\u0027s best to be safe. Just allocate a page for this\npurpose instead.\n\nWith this, we can also remove the __getname_gfp() definition since there\nare no more callers.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "79360ddd73dfe9a26f49ef4e27b8c26612929b0e",
      "tree": "a8b0d226e0d83ea4e3a8c27b091a7121dbb9638b",
      "parents": [
        "8213a2f3eeafdecf06dd718cb4130372263f6067",
        "98f6ef64b15a48f15062aff5d143b5d9a6ae7711"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 12 10:52:03 2012 +0900"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 12 10:52:03 2012 +0900"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs\n\nPull pile 2 of vfs updates from Al Viro:\n \"Stuff in this one - assorted fixes, lglock tidy-up, death to\n  lock_super().\n\n  There\u0027ll be a VFS pile tomorrow (with patches from Jeff Layton,\n  sanitizing getname() and related parts of audit and preparing for\n  ESTALE fixes), but I\u0027d rather push the stuff in this one ASAP - some\n  of the bugs closed here are quite unpleasant.\"\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:\n  vfs: bogus warnings in fs/namei.c\n  consitify do_mount() arguments\n  lglock: add DEFINE_STATIC_LGLOCK()\n  lglock: make the per_cpu locks static\n  lglock: remove unused DEFINE_LGLOCK_LOCKDEP()\n  MAX_LFS_FILESIZE definition for 64bit needs LL...\n  tmpfs,ceph,gfs2,isofs,reiserfs,xfs: fix fh_len checking\n  vfs: drop lock/unlock super\n  ufs: drop lock/unlock super\n  sysv: drop lock/unlock super\n  hpfs: drop lock/unlock super\n  fat: drop lock/unlock super\n  ext3: drop lock/unlock super\n  exofs: drop lock/unlock super\n  dup3: Return an error when oldfd \u003d\u003d newfd.\n  fs: handle failed audit_log_start properly\n  fs: prevent use after free in auditing when symlink following was denied\n"
    },
    {
      "commit": "808d4e3cfdcc52b19276175464f6dbca4df13b09",
      "tree": "11c319127e8c1314c1ed1a777e4284032ab5bd00",
      "parents": [
        "4b2c551f77f5a0c496e2125b1d883f4b26aabf2c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Oct 11 11:42:01 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Oct 11 20:02:04 2012 -0400"
      },
      "message": "consitify do_mount() arguments\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ce40be7a820bb393ac4ac69865f018d2f4038cf0",
      "tree": "b1fe5a93346eb06f22b1c303d63ec5456d7212ab",
      "parents": [
        "ba0a5a36f60e4c1152af3a2ae2813251974405bf",
        "02f3939e1a9357b7c370a4a69717cf9c02452737"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 11 09:04:23 2012 +0900"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 11 09:04:23 2012 +0900"
      },
      "message": "Merge branch \u0027for-3.7/core\u0027 of git://git.kernel.dk/linux-block\n\nPull block IO update from Jens Axboe:\n \"Core block IO bits for 3.7.  Not a huge round this time, it contains:\n\n   - First series from Kent cleaning up and generalizing bio allocation\n     and freeing.\n\n   - WRITE_SAME support from Martin.\n\n   - Mikulas patches to prevent O_DIRECT crashes when someone changes\n     the block size of a device.\n\n   - Make bio_split() work on data-less bio\u0027s (like trim/discards).\n\n   - A few other minor fixups.\"\n\nFixed up silent semantic mis-merge as per Mikulas Patocka and Andrew\nMorton.  It is due to the VM no longer using a prio-tree (see commit\n6b2dbba8b6ac: \"mm: replace vma prio_tree with an interval tree\").\n\nSo make set_blocksize() use mapping_mapped() instead of open-coding the\ninternal VM knowledge that has changed.\n\n* \u0027for-3.7/core\u0027 of git://git.kernel.dk/linux-block: (26 commits)\n  block: makes bio_split support bio without data\n  scatterlist: refactor the sg_nents\n  scatterlist: add sg_nents\n  fs: fix include/percpu-rwsem.h export error\n  percpu-rw-semaphore: fix documentation typos\n  fs/block_dev.c:1644:5: sparse: symbol \u0027blkdev_mmap\u0027 was not declared\n  blockdev: turn a rw semaphore into a percpu rw semaphore\n  Fix a crash when block device is read and block size is changed at the same time\n  block: fix request_queue-\u003eflags initialization\n  block: lift the initial queue bypass mode on blk_register_queue() instead of blk_init_allocated_queue()\n  block: ioctl to zero block ranges\n  block: Make blkdev_issue_zeroout use WRITE SAME\n  block: Implement support for WRITE SAME\n  block: Consolidate command flag and queue limit checks for merges\n  block: Clean up special command handling logic\n  block/blk-tag.c: Remove useless kfree\n  block: remove the duplicated setting for congestion_threshold\n  block: reject invalid queue attribute values\n  block: Add bio_clone_bioset(), bio_clone_kmalloc()\n  block: Consolidate bio_alloc_bioset(), bio_kmalloc()\n  ...\n"
    },
    {
      "commit": "614c321f4bf130766ff66fd142b1da47ab037303",
      "tree": "0b95be62c7ee296caa6b1dc54e4465eb123ba1b2",
      "parents": [
        "35c2a7f4908d404c9124c2efc6ada4640ca4d5d5"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Oct 10 01:06:20 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Oct 10 01:06:20 2012 -0400"
      },
      "message": "MAX_LFS_FILESIZE definition for 64bit needs LL...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "8e22cc88d68ca1a46d7d582938f979eb640ed30f",
      "tree": "a5b5ed3af60067093dde81bd651046d24b0dfd45",
      "parents": [
        "b6963327e0521e682c2fffd018574251d3c22b41"
      ],
      "author": {
        "name": "Marco Stornelli",
        "email": "marco.stornelli@gmail.com",
        "time": "Sat Oct 06 12:43:09 2012 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Oct 09 23:33:39 2012 -0400"
      },
      "message": "vfs: drop lock/unlock super\n\nRemoved s_lock from super_block and removed lock/unlock super.\n\nSigned-off-by: Marco Stornelli \u003cmarco.stornelli@gmail.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "6b2dbba8b6ac4df26f72eda1e5ea7bab9f950e08",
      "tree": "422ed8d7ac2fe45069f20cfba84a9a097bf444af",
      "parents": [
        "fff3fd8a1210a165252cd7cd01206da7a90d3a06"
      ],
      "author": {
        "name": "Michel Lespinasse",
        "email": "walken@google.com",
        "time": "Mon Oct 08 16:31:25 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 09 16:22:39 2012 +0900"
      },
      "message": "mm: replace vma prio_tree with an interval tree\n\nImplement an interval tree as a replacement for the VMA prio_tree.  The\nalgorithms are similar to lib/interval_tree.c; however that code can\u0027t be\ndirectly reused as the interval endpoints are not explicitly stored in the\nVMA.  So instead, the common algorithm is moved into a template and the\ndetails (node type, how to get interval endpoints from the node, etc) are\nfilled in using the C preprocessor.\n\nOnce the interval tree functions are available, using them as a\nreplacement to the VMA prio tree is a relatively simple, mechanical job.\n\nSigned-off-by: Michel Lespinasse \u003cwalken@google.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Hillf Danton \u003cdhillf@gmail.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Catalin Marinas \u003ccatalin.marinas@arm.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: David Woodhouse \u003cdwmw2@infradead.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0b173bc4daa8f8ec03a85abf5e47b23502ff80af",
      "tree": "173d0523555e02a077e0af4563bd4cadea46cb23",
      "parents": [
        "4b6e1e37026ec7dae9b23d78ffcebdd5ddb1bfa1"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Mon Oct 08 16:28:46 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 09 16:22:17 2012 +0900"
      },
      "message": "mm: kill vma flag VM_CAN_NONLINEAR\n\nMove actual pte filling for non-linear file mappings into the new special\nvma operation: -\u003eremap_pages().\n\nFilesystems must implement this method to get non-linear mapping support,\nif it uses filemap_fault() then generic_file_remap_pages() can be used.\n\nNow device drivers can implement this method and obtain nonlinear vma support.\n\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nCc: Alexander Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Carsten Otte \u003ccotte@de.ibm.com\u003e\nCc: Chris Metcalf \u003ccmetcalf@tilera.com\u003e\t#arch/tile\nCc: Cyrill Gorcunov \u003cgorcunov@openvz.org\u003e\nCc: Eric Paris \u003ceparis@redhat.com\u003e\nCc: H. Peter Anvin \u003chpa@zytor.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: James Morris \u003cjames.l.morris@oracle.com\u003e\nCc: Jason Baron \u003cjbaron@redhat.com\u003e\nCc: Kentaro Takeda \u003ctakedakn@nttdata.co.jp\u003e\nCc: Matt Helsley \u003cmatthltc@us.ibm.com\u003e\nCc: Nick Piggin \u003cnpiggin@kernel.dk\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Robert Richter \u003crobert.richter@amd.com\u003e\nCc: Suresh Siddha \u003csuresh.b.siddha@intel.com\u003e\nCc: Tetsuo Handa \u003cpenguin-kernel@I-love.SAKURA.ne.jp\u003e\nCc: Venkatesh Pallipadi \u003cvenki@google.com\u003e\nAcked-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2bd2c1941f141ad780135ccc1cd08ca71a24f10a",
      "tree": "04246dc63002b003e67591a44c49395dcc79a70e",
      "parents": [
        "8f9c0119d7ba94c3ad13876acc240d7f12b6d8e1"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Mon Sep 24 14:51:48 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Oct 02 21:35:55 2012 -0400"
      },
      "message": "MAX_LFS_FILESIZE should be a loff_t\n\nfs/nfs/internal.h: In function ‘nfs_super_set_maxbytes’:\nfs/nfs/internal.h:547:21: warning: comparison between signed and\n    unsigned integer expressions [-Wsign-compare]\n\nSeen with gcc (GCC) 4.6.3 20120306 (Red Hat 4.6.3-2).\n\nCommit 42cb56ae made s_maxbytes a loff_t, thus the type of\nMAX_LFS_FILESIZE should also be a loff_t.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nAcked-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "c2b1ad800b66f62105a7fd250604d72e07202e66",
      "tree": "0f5461b02e016e796c0d60b9a7dc1bf69fccb9b5",
      "parents": [
        "e6b5c0822bcf43b91a2cdcb535ea828e953b6590"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Thu Sep 27 09:35:03 2012 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Thu Sep 27 09:35:03 2012 +0200"
      },
      "message": "fs: fix include/percpu-rwsem.h export error\n\nWe get the following export error on the include file:\n\nusr/include/linux/fs.h:13: included file \u0027linux/percpu-rwsem.h\u0027 is not exported\n\nMove the include inside the __KERNEL__ section.\n\nReported-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "cb0942b81249798e15c3f04eee2946ef543e8115",
      "tree": "7d494c580a847342577661782c5173f76178aa81",
      "parents": [
        "cecb46f194460d23cacf3b13593f9f5a4f7a0fed"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 27 14:48:26 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Sep 26 21:10:25 2012 -0400"
      },
      "message": "make get_file() return its argument\n\nsimplifies a bunch of callers...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "62ac665ff9fc07497ca524bd20d6a96893d11071",
      "tree": "dfd697e488fde4b46f1cb2ebfb380bb881115827",
      "parents": [
        "b87570f5d349661814b262dd5fc40787700f80d6"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Wed Sep 26 07:46:43 2012 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Sep 26 07:46:43 2012 +0200"
      },
      "message": "blockdev: turn a rw semaphore into a percpu rw semaphore\n\nThis avoids cache line bouncing when many processes lock the semaphore\nfor read.\n\nNew percpu lock implementation\n\nThe lock consists of an array of percpu unsigned integers, a boolean\nvariable and a mutex.\n\nWhen we take the lock for read, we enter rcu read section, check for a\n\"locked\" variable. If it is false, we increase a percpu counter on the\ncurrent cpu and exit the rcu section. If \"locked\" is true, we exit the\nrcu section, take the mutex and drop it (this waits until a writer\nfinished) and retry.\n\nUnlocking for read just decreases percpu variable. Note that we can\nunlock on a difference cpu than where we locked, in this case the\ncounter underflows. The sum of all percpu counters represents the number\nof processes that hold the lock for read.\n\nWhen we need to lock for write, we take the mutex, set \"locked\" variable\nto true and synchronize rcu. Since RCU has been synchronized, no\nprocesses can create new read locks. We wait until the sum of percpu\ncounters is zero - when it is, there are no readers in the critical\nsection.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "b87570f5d349661814b262dd5fc40787700f80d6",
      "tree": "d06ef6c95ed114e19c864ebe0240c788dd75e85c",
      "parents": [
        "60ea8226cbd5c8301f9a39edc574ddabcb8150e0"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Wed Sep 26 07:46:40 2012 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Sep 26 07:46:40 2012 +0200"
      },
      "message": "Fix a crash when block device is read and block size is changed at the same time\n\nThe kernel may crash when block size is changed and I/O is issued\nsimultaneously.\n\nBecause some subsystems (udev or lvm) may read any block device anytime,\nthe bug actually puts any code that changes a block device size in\njeopardy.\n\nThe crash can be reproduced if you place \"msleep(1000)\" to\nblkdev_get_blocks just before \"bh-\u003eb_size \u003d max_blocks \u003c\u003c\ninode-\u003ei_blkbits;\".\nThen, run \"dd if\u003d/dev/ram0 of\u003d/dev/null bs\u003d4k count\u003d1 iflag\u003ddirect\"\nWhile it is waiting in msleep, run \"blockdev --setbsz 2048 /dev/ram0\"\nYou get a BUG.\n\nThe direct and non-direct I/O is written with the assumption that block\nsize does not change. It doesn\u0027t seem practical to fix these crashes\none-by-one there may be many crash possibilities when block size changes\nat a certain place and it is impossible to find them all and verify the\ncode.\n\nThis patch introduces a new rw-lock bd_block_size_semaphore. The lock is\ntaken for read during I/O. It is taken for write when changing block\nsize. Consequently, block size can\u0027t be changed while I/O is being\nsubmitted.\n\nFor asynchronous I/O, the patch only prevents block size change while\nthe I/O is being submitted. The block size can change when the I/O is in\nprogress or when the I/O is being finished. This is acceptable because\nthere are no accesses to block size when asynchronous I/O is being\nfinished.\n\nThe patch prevents block size changing while the device is mapped with\nmmap.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "66ba32dc167202c3cf8c86806581a9393ec7f488",
      "tree": "61bc596fd84f48a47a28a593435b437371607d6f",
      "parents": [
        "579e8f3c7b2ecf7db91398d942d76457a3ddba21"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Tue Sep 18 12:19:29 2012 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Thu Sep 20 14:31:53 2012 +0200"
      },
      "message": "block: ioctl to zero block ranges\n\nIntroduce a BLKZEROOUT ioctl which can be used to clear block ranges by\nway of blkdev_issue_zeroout().\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nAcked-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "f0cd2dbb6cf387c11f87265462e370bb5469299e",
      "tree": "21c9b6237dd9131763654a6cd715461177701607",
      "parents": [
        "d42d1dabf34bdd5ad832cb56a7338817aad8a052"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "artem.bityutskiy@linux.intel.com",
        "time": "Wed Jul 25 18:11:59 2012 +0300"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Aug 04 01:24:44 2012 +0400"
      },
      "message": "vfs: kill write_super and sync_supers\n\nFinally we can kill the \u0027sync_supers\u0027 kernel thread along with the\n\u0027-\u003ewrite_super()\u0027 superblock operation because all the users are gone.\nNow every file-system is supposed to self-manage own superblock and\nits dirty state.\n\nThe nice thing about killing this thread is that it improves power management.\nIndeed, \u0027sync_supers\u0027 is a source of monotonic system wake-ups - it woke up\nevery 5 seconds no matter what - even if there were no dirty superblocks and\neven if there were no file-systems using this service (e.g., btrfs and\njournalled ext4 do not need it). So it was wasting power most of the time. And\nbecause the thread was in the core of the kernel, all systems had to have it.\nSo I am quite happy to make it go away.\n\nInterestingly, this thread is a left-over from the pdflush kernel thread which\nwas a self-forking kernel thread responsible for all the write-back in old\nLinux kernels. It was turned into per-block device BDI threads, and\n\u0027sync_supers\u0027 was a left-over. Thus, R.I.P, pdflush as well.\n\nSigned-off-by: Artem Bityutskiy \u003cartem.bityutskiy@linux.intel.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a0e881b7c189fa2bd76c024dbff91e79511c971d",
      "tree": "0c801918565b08921d21aceee5b326f64d998f5f",
      "parents": [
        "eff0d13f3823f35d70228cd151d2a2c89288ff32",
        "dbc6e0222d79e78925fe20733844a796a4b72cf9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 01 10:26:23 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 01 10:26:23 2012 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs\n\nPull second vfs pile from Al Viro:\n \"The stuff in there: fsfreeze deadlock fixes by Jan (essentially, the\n  deadlock reproduced by xfstests 068), symlink and hardlink restriction\n  patches, plus assorted cleanups and fixes.\n\n  Note that another fsfreeze deadlock (emergency thaw one) is *not*\n  dealt with - the series by Fernando conflicts a lot with Jan\u0027s, breaks\n  userland ABI (FIFREEZE semantics gets changed) and trades the deadlock\n  for massive vfsmount leak; this is going to be handled next cycle.\n  There probably will be another pull request, but that stuff won\u0027t be\n  in it.\"\n\nFix up trivial conflicts due to unrelated changes next to each other in\ndrivers/{staging/gdm72xx/usb_boot.c, usb/gadget/storage_common.c}\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (54 commits)\n  delousing target_core_file a bit\n  Documentation: Correct s_umount state for freeze_fs/unfreeze_fs\n  fs: Remove old freezing mechanism\n  ext2: Implement freezing\n  btrfs: Convert to new freezing mechanism\n  nilfs2: Convert to new freezing mechanism\n  ntfs: Convert to new freezing mechanism\n  fuse: Convert to new freezing mechanism\n  gfs2: Convert to new freezing mechanism\n  ocfs2: Convert to new freezing mechanism\n  xfs: Convert to new freezing code\n  ext4: Convert to new freezing mechanism\n  fs: Protect write paths by sb_start_write - sb_end_write\n  fs: Skip atime update on frozen filesystem\n  fs: Add freezing handling to mnt_want_write() / mnt_drop_write()\n  fs: Improve filesystem freezing handling\n  switch the protection of percpu_counter list to spinlock\n  nfsd: Push mnt_want_write() outside of i_mutex\n  btrfs: Push mnt_want_write() outside of i_mutex\n  fat: Push mnt_want_write() outside of i_mutex\n  ...\n"
    },
    {
      "commit": "068535f1fef4c90aee23eb7b9b9a71c5b72d7cd0",
      "tree": "ca71858417d881bc8f72f4a2a7b035d041f7a43c",
      "parents": [
        "2d534926205db9ffce4bbbde67cb9b2cee4b835c"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Wed Aug 01 07:56:16 2012 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 01 09:01:46 2012 -0700"
      },
      "message": "locks: remove unused lm_release_private\n\nIn commit 3b6e2723f32d (\"locks: prevent side-effects of\nlocks_release_private before file_lock is initialized\") we removed the\nlast user of lm_release_private without removing the field itself.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ac694dbdbc403c00e2c14d10bc7b8412cc378259",
      "tree": "e37328cfbeaf43716dd5914cad9179e57e84df76",
      "parents": [
        "a40a1d3d0a2fd613fdec6d89d3c053268ced76ed",
        "437ea90cc3afdca5229b41c6b1d38c4842756cb9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 19:25:39 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 19:25:39 2012 -0700"
      },
      "message": "Merge branch \u0027akpm\u0027 (Andrew\u0027s patch-bomb)\n\nMerge Andrew\u0027s second set of patches:\n - MM\n - a few random fixes\n - a couple of RTC leftovers\n\n* emailed patches from Andrew Morton \u003cakpm@linux-foundation.org\u003e: (120 commits)\n  rtc/rtc-88pm80x: remove unneed devm_kfree\n  rtc/rtc-88pm80x: assign ret only when rtc_register_driver fails\n  mm: hugetlbfs: close race during teardown of hugetlbfs shared page tables\n  tmpfs: distribute interleave better across nodes\n  mm: remove redundant initialization\n  mm: warn if pg_data_t isn\u0027t initialized with zero\n  mips: zero out pg_data_t when it\u0027s allocated\n  memcg: gix memory accounting scalability in shrink_page_list\n  mm/sparse: remove index_init_lock\n  mm/sparse: more checks on mem_section number\n  mm/sparse: optimize sparse_index_alloc\n  memcg: add mem_cgroup_from_css() helper\n  memcg: further prevent OOM with too many dirty pages\n  memcg: prevent OOM with too many dirty pages\n  mm: mmu_notifier: fix freed page still mapped in secondary MMU\n  mm: memcg: only check anon swapin page charges for swap cache\n  mm: memcg: only check swap cache pages for repeated charging\n  mm: memcg: split swapin charge function into private and public part\n  mm: memcg: remove needless !mm fixup to init_mm when charging\n  mm: memcg: remove unneeded shmem charge type\n  ...\n"
    },
    {
      "commit": "a509bc1a9e487d952d9404318f7f990166ab57a7",
      "tree": "40a8f8a20877da8a5b855cfbc3813c0874605093",
      "parents": [
        "62c230bc1790923a1b35da03596a68a6c9b5b100"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Tue Jul 31 16:44:57 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 18:42:47 2012 -0700"
      },
      "message": "mm: swap: implement generic handler for swap_activate\n\nThe version of swap_activate introduced is sufficient for swap-over-NFS\nbut would not provide enough information to implement a generic handler.\nThis patch shuffles things slightly to ensure the same information is\navailable for aops-\u003eswap_activate() as is available to the core.\n\nNo functionality change.\n\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Eric B Munson \u003cemunson@mgebm.net\u003e\nCc: Eric Paris \u003ceparis@redhat.com\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Mike Christie \u003cmichaelc@cs.wisc.edu\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Sebastian Andrzej Siewior \u003csebastian@breakpoint.cc\u003e\nCc: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: Xiaotian Feng \u003cdfeng@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "62c230bc1790923a1b35da03596a68a6c9b5b100",
      "tree": "46b300a00929087627e029b0f4d53e486a97ba7f",
      "parents": [
        "18022c5d8627a7a9ba8097a0f238b513fae6f5b8"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Tue Jul 31 16:44:55 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 18:42:47 2012 -0700"
      },
      "message": "mm: add support for a filesystem to activate swap files and use direct_IO for writing swap pages\n\nCurrently swapfiles are managed entirely by the core VM by using -\u003ebmap to\nallocate space and write to the blocks directly.  This effectively ensures\nthat the underlying blocks are allocated and avoids the need for the swap\nsubsystem to locate what physical blocks store offsets within a file.\n\nIf the swap subsystem is to use the filesystem information to locate the\nblocks, it is critical that information such as block groups, block\nbitmaps and the block descriptor table that map the swap file were\nresident in memory.  This patch adds address_space_operations that the VM\ncan call when activating or deactivating swap backed by a file.\n\n  int swap_activate(struct file *);\n  int swap_deactivate(struct file *);\n\nThe -\u003eswap_activate() method is used to communicate to the file that the\nVM relies on it, and the address_space should take adequate measures such\nas reserving space in the underlying device, reserving memory for mempools\nand pinning information such as the block descriptor table in memory.  The\n-\u003eswap_deactivate() method is called on sys_swapoff() if -\u003eswap_activate()\nreturned success.\n\nAfter a successful swapfile -\u003eswap_activate, the swapfile is marked\nSWP_FILE and swapper_space.a_ops will proxy to\nsis-\u003eswap_file-\u003ef_mappings-\u003ea_ops using -\u003edirect_io to write swapcache\npages and -\u003ereadpage to read.\n\nIt is perfectly possible that direct_IO be used to read the swap pages but\nit is an unnecessary complication.  Similarly, it is possible that\n-\u003ewritepage be used instead of direct_io to write the pages but filesystem\ndevelopers have stated that calling writepage from the VM is undesirable\nfor a variety of reasons and using direct_IO opens up the possibility of\nwriting back batches of swap pages in the future.\n\n[a.p.zijlstra@chello.nl: Original patch]\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Eric B Munson \u003cemunson@mgebm.net\u003e\nCc: Eric Paris \u003ceparis@redhat.com\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Mike Christie \u003cmichaelc@cs.wisc.edu\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Sebastian Andrzej Siewior \u003csebastian@breakpoint.cc\u003e\nCc: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: Xiaotian Feng \u003cdfeng@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "18022c5d8627a7a9ba8097a0f238b513fae6f5b8",
      "tree": "57e0d0ec6a5369c56bd00957eb9c0e1220e62917",
      "parents": [
        "f981c5950fa85916ba49bea5d9a7a5078f47e569"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Tue Jul 31 16:44:51 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 18:42:47 2012 -0700"
      },
      "message": "mm: add get_kernel_page[s] for pinning of kernel addresses for I/O\n\nThis patch adds two new APIs get_kernel_pages() and get_kernel_page() that\nmay be used to pin a vector of kernel addresses for IO.  The initial user\nis expected to be NFS for allowing pages to be written to swap using\naops-\u003edirect_IO().  Strictly speaking, swap-over-NFS only needs to pin one\npage for IO but it makes sense to express the API in terms of a vector and\nadd a helper for pinning single pages.\n\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Eric B Munson \u003cemunson@mgebm.net\u003e\nCc: Eric Paris \u003ceparis@redhat.com\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Mike Christie \u003cmichaelc@cs.wisc.edu\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Sebastian Andrzej Siewior \u003csebastian@breakpoint.cc\u003e\nCc: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: Xiaotian Feng \u003cdfeng@redhat.com\u003e\nCc: Mark Salter \u003cmsalter@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "08843b79fb35d33859e0f8f11a7318341076e4d1",
      "tree": "e56e122146985b359d50787e3d1df640c4582dfa",
      "parents": [
        "cc8362b1f6d724e46f515121d442779924b19fec",
        "2c142baa7b237584bae7dc28630851701497e1ef"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 14:42:28 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 14:42:28 2012 -0700"
      },
      "message": "Merge branch \u0027nfsd-next\u0027 of git://linux-nfs.org/~bfields/linux\n\nPull nfsd changes from J. Bruce Fields:\n \"This has been an unusually quiet cycle--mostly bugfixes and cleanup.\n  The one large piece is Stanislav\u0027s work to containerize the server\u0027s\n  grace period--but that in itself is just one more step in a\n  not-yet-complete project to allow fully containerized nfs service.\n\n  There are a number of outstanding delegation, container, v4 state, and\n  gss patches that aren\u0027t quite ready yet; 3.7 may be wilder.\"\n\n* \u0027nfsd-next\u0027 of git://linux-nfs.org/~bfields/linux: (35 commits)\n  NFSd: make boot_time variable per network namespace\n  NFSd: make grace end flag per network namespace\n  Lockd: move grace period management from lockd() to per-net functions\n  LockD: pass actual network namespace to grace period management functions\n  LockD: manage grace list per network namespace\n  SUNRPC: service request network namespace helper introduced\n  NFSd: make nfsd4_manager allocated per network namespace context.\n  LockD: make lockd manager allocated per network namespace\n  LockD: manage grace period per network namespace\n  Lockd: add more debug to host shutdown functions\n  Lockd: host complaining function introduced\n  LockD: manage used host count per networks namespace\n  LockD: manage garbage collection timeout per networks namespace\n  LockD: make garbage collector network namespace aware.\n  LockD: mark host per network namespace on garbage collect\n  nfsd4: fix missing fault_inject.h include\n  locks: move lease-specific code out of locks_delete_lock\n  locks: prevent side-effects of locks_release_private before file_lock is initialized\n  NFSd: set nfsd_serv to NULL after service destruction\n  NFSd: introduce nfsd_destroy() helper\n  ...\n"
    },
    {
      "commit": "d9c95bdd53a8d9116d269c91ce3d151472e6bcd6",
      "tree": "43559cf0897c98796df34a585ffab0ca02fa2576",
      "parents": [
        "1e8b212fe5dcee9d3dbb152d235f3c33458fb26e"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue Jun 12 16:20:47 2012 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jul 31 09:45:54 2012 +0400"
      },
      "message": "fs: Remove old freezing mechanism\n\nNow that all users are converted, we can remove functions, variables, and\nconstants defined by the old freezing mechanism.\n\nBugLink: https://bugs.launchpad.net/bugs/897421\nTested-by: Kamal Mostafa \u003ckamal@canonical.com\u003e\nTested-by: Peter M. Petrakis \u003cpeter.petrakis@canonical.com\u003e\nTested-by: Dann Frazier \u003cdann.frazier@canonical.com\u003e\nTested-by: Massimo Morana \u003cmassimo.morana@canonical.com\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "5accdf82ba25cacefd6c1867f1704beb4d244cdd",
      "tree": "7125b01d9bf0f23d5c5eaed0cbafa9a1cbe544d5",
      "parents": [
        "d87aae2f3c8e90bd0fe03f5309b4d066b712b8ec"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue Jun 12 16:20:34 2012 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jul 31 09:30:13 2012 +0400"
      },
      "message": "fs: Improve filesystem freezing handling\n\nvfs_check_frozen() tests are racy since the filesystem can be frozen just after\nthe test is performed. Thus in write paths we can end up marking some pages or\ninodes dirty even though the file system is already frozen. This creates\nproblems with flusher thread hanging on frozen filesystem.\n\nAnother problem is that exclusion between -\u003epage_mkwrite() and filesystem\nfreezing has been handled by setting page dirty and then verifying s_frozen.\nThis guaranteed that either the freezing code sees the faulted page, writes it,\nand writeprotects it again or we see s_frozen set and bail out of page fault.\nThis works to protect from page being marked writeable while filesystem\nfreezing is running but has an unpleasant artefact of leaving dirty (although\nunmodified and writeprotected) pages on frozen filesystem resulting in similar\nproblems with flusher thread as the first problem.\n\nThis patch aims at providing exclusion between write paths and filesystem\nfreezing. We implement a writer-freeze read-write semaphore in the superblock.\nActually, there are three such semaphores because of lock ranking reasons - one\nfor page fault handlers (-\u003epage_mkwrite), one for all other writers, and one of\ninternal filesystem purposes (used e.g. to track running transactions).  Write\npaths which should block freezing (e.g. directory operations, -\u003eaio_write(),\n-\u003epage_mkwrite) hold reader side of the semaphore. Code freezing the filesystem\ntakes the writer side.\n\nOnly that we don\u0027t really want to bounce cachelines of the semaphores between\nCPUs for each write happening. So we implement the reader side of the semaphore\nas a per-cpu counter and the writer side is implemented using s_writers.frozen\nsuperblock field.\n\n[AV: microoptimize sb_start_write(); we want it fast in normal case]\n\nBugLink: https://bugs.launchpad.net/bugs/897421\nTested-by: Kamal Mostafa \u003ckamal@canonical.com\u003e\nTested-by: Peter M. Petrakis \u003cpeter.petrakis@canonical.com\u003e\nTested-by: Dann Frazier \u003cdann.frazier@canonical.com\u003e\nTested-by: Massimo Morana \u003cmassimo.morana@canonical.com\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "800179c9b8a1e796e441674776d11cd4c05d61d7",
      "tree": "5760992f4453c35b57b2686d8b8d5caee239b637",
      "parents": [
        "3134f37e931d75931bdf6d4eacd82a3fd26eca7c"
      ],
      "author": {
        "name": "Kees Cook",
        "email": "keescook@chromium.org",
        "time": "Wed Jul 25 17:29:07 2012 -0700"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jul 29 21:37:58 2012 +0400"
      },
      "message": "fs: add link restrictions\n\nThis adds symlink and hardlink restrictions to the Linux VFS.\n\nSymlinks:\n\nA long-standing class of security issues is the symlink-based\ntime-of-check-time-of-use race, most commonly seen in world-writable\ndirectories like /tmp. The common method of exploitation of this flaw\nis to cross privilege boundaries when following a given symlink (i.e. a\nroot process follows a symlink belonging to another user). For a likely\nincomplete list of hundreds of examples across the years, please see:\nhttp://cve.mitre.org/cgi-bin/cvekey.cgi?keyword\u003d/tmp\n\nThe solution is to permit symlinks to only be followed when outside\na sticky world-writable directory, or when the uid of the symlink and\nfollower match, or when the directory owner matches the symlink\u0027s owner.\n\nSome pointers to the history of earlier discussion that I could find:\n\n 1996 Aug, Zygo Blaxell\n  http://marc.info/?l\u003dbugtraq\u0026m\u003d87602167419830\u0026w\u003d2\n 1996 Oct, Andrew Tridgell\n  http://lkml.indiana.edu/hypermail/linux/kernel/9610.2/0086.html\n 1997 Dec, Albert D Cahalan\n  http://lkml.org/lkml/1997/12/16/4\n 2005 Feb, Lorenzo Hernández García-Hierro\n  http://lkml.indiana.edu/hypermail/linux/kernel/0502.0/1896.html\n 2010 May, Kees Cook\n  https://lkml.org/lkml/2010/5/30/144\n\nPast objections and rebuttals could be summarized as:\n\n - Violates POSIX.\n   - POSIX didn\u0027t consider this situation and it\u0027s not useful to follow\n     a broken specification at the cost of security.\n - Might break unknown applications that use this feature.\n   - Applications that break because of the change are easy to spot and\n     fix. Applications that are vulnerable to symlink ToCToU by not having\n     the change aren\u0027t. Additionally, no applications have yet been found\n     that rely on this behavior.\n - Applications should just use mkstemp() or O_CREATE|O_EXCL.\n   - True, but applications are not perfect, and new software is written\n     all the time that makes these mistakes; blocking this flaw at the\n     kernel is a single solution to the entire class of vulnerability.\n - This should live in the core VFS.\n   - This should live in an LSM. (https://lkml.org/lkml/2010/5/31/135)\n - This should live in an LSM.\n   - This should live in the core VFS. (https://lkml.org/lkml/2010/8/2/188)\n\nHardlinks:\n\nOn systems that have user-writable directories on the same partition\nas system files, a long-standing class of security issues is the\nhardlink-based time-of-check-time-of-use race, most commonly seen in\nworld-writable directories like /tmp. The common method of exploitation\nof this flaw is to cross privilege boundaries when following a given\nhardlink (i.e. a root process follows a hardlink created by another\nuser). Additionally, an issue exists where users can \"pin\" a potentially\nvulnerable setuid/setgid file so that an administrator will not actually\nupgrade a system fully.\n\nThe solution is to permit hardlinks to only be created when the user is\nalready the existing file\u0027s owner, or if they already have read/write\naccess to the existing file.\n\nMany Linux users are surprised when they learn they can link to files\nthey have no access to, so this change appears to follow the doctrine\nof \"least surprise\". Additionally, this change does not violate POSIX,\nwhich states \"the implementation may require that the calling process\nhas permission to access the existing file\"[1].\n\nThis change is known to break some implementations of the \"at\" daemon,\nthough the version used by Fedora and Ubuntu has been fixed[2] for\na while. Otherwise, the change has been undisruptive while in use in\nUbuntu for the last 1.5 years.\n\n[1] http://pubs.opengroup.org/onlinepubs/9699919799/functions/linkat.html\n[2] http://anonscm.debian.org/gitweb/?p\u003dcollab-maint/at.git;a\u003dcommitdiff;h\u003df4114656c3a6c6f6070e315ffdf940a49eda3279\n\nThis patch is based on the patches in Openwall and grsecurity, along with\nsuggestions from Al Viro. I have added a sysctl to enable the protected\nbehavior, and documentation.\n\nSigned-off-by: Kees Cook \u003ckeescook@chromium.org\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e4fad8e5d220e3dfb1050eee752ee5058f29a232",
      "tree": "b56356fda1d1f4f47e1da63aa24080db999dafc1",
      "parents": [
        "b5bcdda32736b94a7d178d156d80a69f536ad468"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 21 15:33:25 2012 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jul 29 21:24:19 2012 +0400"
      },
      "message": "consolidate pipe file creation\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "5ccb0066f2d561549cc4d73d7f56b4ce3ca7a8a1",
      "tree": "43ca9eff5c94fc3609d858ce2a430c544fcc5f99",
      "parents": [
        "db9c4553412d72c6a05e0168d1d487f66e0660b3"
      ],
      "author": {
        "name": "Stanislav Kinsbursky",
        "email": "skinsbursky@parallels.com",
        "time": "Wed Jul 25 16:57:22 2012 +0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Fri Jul 27 16:49:22 2012 -0400"
      },
      "message": "LockD: pass actual network namespace to grace period management functions\n\nPassed network namespace replaced hard-coded init_net\n\nSigned-off-by: Stanislav Kinsbursky \u003cskinsbursky@parallels.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "765927b2d508712d320c8934db963bbe14c3fcec",
      "tree": "97acdb14fae285764def396c4ed01d4d5c93e76a",
      "parents": [
        "bf349a447059656ebe63fb4fd1ccb27ac1da22ad"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jun 26 21:58:53 2012 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jul 23 00:01:29 2012 +0400"
      },
      "message": "switch dentry_open() to struct path, make it grab references itself\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e8b96eb5034a0ccebf36760f88e31ea3e3cdf1e4",
      "tree": "3ea1b85311b3d059f2bbf38e484aa2ce06bab017",
      "parents": [
        "4ea425b63a3dfeb7707fc7cc7161c11a51e871ed"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Mon Apr 30 13:11:29 2012 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jul 23 00:00:15 2012 +0400"
      },
      "message": "vfs: allow custom EOF in generic_file_llseek code\n\nFor ext3/4 htree directories, using the vfs llseek function with\nSEEK_END goes to i_size like for any other file, but in reality\nwe want the maximum possible hash value.  Recent changes\nin ext4 have cut \u0026 pasted generic_file_llseek() back into fs/ext4/dir.c,\nbut replicating this core code seems like a bad idea, especially\nsince the copy has already diverged from the vfs.\n\nThis patch updates generic_file_llseek_size to accept\nboth a custom maximum offset, and a custom EOF position.  With this\nin place, ext4_dir_llseek can pass in the appropriate maximum hash\nposition for both maxsize and eof, and get what it wants.\n\nAs far as I know, this does not fix any bugs - nfs in the kernel\ndoesn\u0027t use SEEK_END, and I don\u0027t know of any user who does.  But\nsome ext4 folks seem keen on doing the right thing here, and I can\u0027t\nreally argue.\n\n(Patch also fixes up some comments slightly)\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "5c0d6b60a0ba46d45020547eacf7199171920935",
      "tree": "7d9f99cc40981dc0872e1ac33317f48b9e1f2bfb",
      "parents": [
        "b3de653105180b57af90ef2f5b8441f085f4ff56"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue Jul 03 16:45:31 2012 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jul 22 23:58:45 2012 +0400"
      },
      "message": "vfs: Create function for iterating over block devices\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "9249e17fe094d853d1ef7475dd559a2cc7e23d42",
      "tree": "fa80a6044c14b38994d232c0e05cb7365800adf2",
      "parents": [
        "f015f1267b23d3530d3f874243fb83cb5f443005"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Mon Jun 25 12:55:37 2012 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:38:34 2012 +0400"
      },
      "message": "VFS: Pass mount flags to sget()\n\nPass mount flags to sget() so that it can use them in initialising a new\nsuperblock before the set function is called.  They could also be passed to the\ncompare function.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "312b63fba9e88a0dcf800834b8ede8716bcc1e17",
      "tree": "a069e3b9ff142912fd09f09a22466707d31c6812",
      "parents": [
        "ebfc3b49a7ac25920cb5be5445f602e51d2ea559"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jun 10 18:09:36 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:34:50 2012 +0400"
      },
      "message": "don\u0027t pass nameidata * to vfs_create()\n\nall we want is a boolean flag, same as the method gets now\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ebfc3b49a7ac25920cb5be5445f602e51d2ea559",
      "tree": "c3241f875dd04ab9f63b4e7ded7ed206e4df1b9f",
      "parents": [
        "72bd866a01fc62ccbc466f3eb7599b14c937e96b"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jun 10 18:05:36 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:34:47 2012 +0400"
      },
      "message": "don\u0027t pass nameidata to -\u003ecreate()\n\nboolean \"does it have to be exclusive?\" flag is passed instead;\nLocal filesystem should just ignore it - the object is guaranteed\nnot to be there yet.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "00cd8dd3bf95f2cc8435b4cac01d9995635c6d0b",
      "tree": "d44be476ced0317ae79f28853734ebe2210ad38e",
      "parents": [
        "201f956e43d4542723514e024d948011dd766d43"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jun 10 17:13:09 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:34:32 2012 +0400"
      },
      "message": "stop passing nameidata to -\u003elookup()\n\nJust the flags; only NFS cares even about that, but there are\nlegitimate uses for such argument.  And getting rid of that\ncompletely would require splitting -\u003elookup() into a couple\nof methods (at least), so let\u0027s leave that alone for now...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e45198a6ac24bd2c4ad4a43b670c2f1a23dd2df3",
      "tree": "d44f4217a8a556ac9ebb11cfc41c0e148fb1084c",
      "parents": [
        "2675a4eb6a9f1240098721c8a84ede28abd9d7b3"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jun 10 06:48:09 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:33:45 2012 +0400"
      },
      "message": "make finish_no_open() return int\n\nnamely, 1 ;-)  That\u0027s what we want to return from -\u003eatomic_open()\ninstances after finish_no_open().\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "30d904947459cca2beb69e0110716f5248b31f2a",
      "tree": "024e2a913266377d234147b14b7eb37017546173",
      "parents": [
        "a4a3bdd778715999ddfeefdc52ab76254580fa76"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jun 22 12:40:19 2012 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:33:39 2012 +0400"
      },
      "message": "kill struct opendata\n\nJust pass struct file *.  Methods are happier that way...\nThere\u0027s no need to return struct file * from finish_open() now,\nso let it return int.  Next: saner prototypes for parts in\nnamei.c\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "d95852777bc8ba6b3ad3397d495c5f9dd8ca8383",
      "tree": "96e9d8b1d33c4f6f7b5ba5be0fa4fd8f77c7a67f",
      "parents": [
        "3d8a00d2099ebc6d5a6e95fadaf861709d9919a8"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jun 22 12:39:14 2012 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:33:35 2012 +0400"
      },
      "message": "make -\u003eatomic_open() return int\n\nChange of calling conventions:\nold\t\tnew\nNULL\t\t1\nfile\t\t0\nERR_PTR(-ve)\t-ve\n\nCaller *knows* that struct file *; no need to return it.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "47237687d73cbeae1dd7a133c3fc3d7239094568",
      "tree": "1d267d03246f0a16cbff3c8221ee69dd1521f835",
      "parents": [
        "a8277b9baa6268de386529a33061775bc716198b"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jun 10 05:01:45 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:33:31 2012 +0400"
      },
      "message": "-\u003eatomic_open() prototype change - pass int * instead of bool *\n\n... and let finish_open() report having opened the file via that sucker.\nNext step: don\u0027t modify od-\u003efilp at all.\n\n[AV: FILE_CREATE was already used by cifs; Miklos\u0027 fix folded]\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "d18e9008c377dc6a6d2166a6840bf3a23a5867fd",
      "tree": "6bbb29aea7e931b603bd4cea3cc74a0eda7b6379",
      "parents": [
        "54ef487241e863a6046536ac5b1fcd5d7cde86e5"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Jun 05 15:10:17 2012 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:33:04 2012 +0400"
      },
      "message": "vfs: add i_op-\u003eatomic_open()\n\nAdd a new inode operation which is called on the last component of an open.\nUsing this the filesystem can look up, possibly create and open the file in one\natomic operation.  If it cannot perform this (e.g. the file type turned out to\nbe wrong) it may signal this by returning NULL instead of an open struct file\npointer.\n\ni_op-\u003eatomic_open() is only called if the last component is negative or needs\nlookup.  Handling cached positive dentries here doesn\u0027t add much value: these\ncan be opened using f_op-\u003eopen().  If the cached file turns out to be invalid,\nthe open can be retried, this time using -\u003eatomic_open() with a fresh dentry.\n\nFor now leave the old way of using open intents in lookup and revalidate in\nplace.  This will be removed once all the users are converted.\n\nDavid Howells noticed that if -\u003eatomic_open() opens the file but does not create\nit, handle_truncate() will be called on it even if it is not a regular file.\nFix this by checking the file type in this case too.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b3d9b7a3c752dc4b6976a4ff7b8298887a5b734d",
      "tree": "ce0d4c84328890dd63c9c4cb3e281b6b3476f85f",
      "parents": [
        "9f713878f22e0b2d34d62df0ca55f65166375634"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jun 09 13:51:19 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:32:55 2012 +0400"
      },
      "message": "vfs: switch i_dentry/d_alias to hlist\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "2f9d3df8aa1cc3c6db5cfa0bad3f0745e04cc27d",
      "tree": "f5cb17f1db0e8308eae0c7271c1d2dc86851c95d",
      "parents": [
        "f8f5701bdaf9134b1f90e5044a82c66324d2073f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jun 03 14:50:19 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jun 03 14:50:19 2012 -0700"
      },
      "message": "vfs: move inode stat information closer together\n\nThe comment above it says \"Stat data, not accessed from path walking\",\nbut in fact some of inode fields we use for the common stat data was way\ndown at the end of the inode, causing unnecessary cache misses for the\ncommon stat operations.\n\nThe inode structure is pretty big, and this can change padding depending\non field width, but at least on the common 64-bit configurations this\ndoesn\u0027t change the size.  Some of our inode layout has historically been\nto tro to avoid unnecessary padding fields, but cache locality is at\nleast as important for layout, if not more.\n\nNoticed by looking at kernel profiles, and noticing that the \"i_blkbits\"\naccess stood out like a sore thumb.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1193755ac6328ad240ba987e6ec41d5e8baf0680",
      "tree": "40bf847d7e3ebaa57b107151d14e6cd1d280cc6d",
      "parents": [
        "4edebed86690eb8db9af3ab85baf4a34e73266cc",
        "0ef97dcfce4179a2eba046b855ee2f91d6f1b414"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 01 10:34:35 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 01 10:34:35 2012 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs\n\nPull vfs changes from Al Viro.\n \"A lot of misc stuff.  The obvious groups:\n   * Miklos\u0027 atomic_open series; kills the damn abuse of\n     -\u003ed_revalidate() by NFS, which was the major stumbling block for\n     all work in that area.\n   * ripping security_file_mmap() and dealing with deadlocks in the\n     area; sanitizing the neighborhood of vm_mmap()/vm_munmap() in\n     general.\n   * -\u003eencode_fh() switched to saner API; insane fake dentry in\n     mm/cleancache.c gone.\n   * assorted annotations in fs (endianness, __user)\n   * parts of Artem\u0027s -\u003es_dirty work (jff2 and reiserfs parts)\n   * -\u003eupdate_time() work from Josef.\n   * other bits and pieces all over the place.\n\n  Normally it would\u0027ve been in two or three pull requests, but\n  signal.git stuff had eaten a lot of time during this cycle ;-/\"\n\nFix up trivial conflicts in Documentation/filesystems/vfs.txt (the\n\u0027truncate_range\u0027 inode method was removed by the VM changes, the VFS\nupdate adds an \u0027update_time()\u0027 method), and in fs/btrfs/ulist.[ch] (due\nto sparse fix added twice, with other changes nearby).\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (95 commits)\n  nfs: don\u0027t open in -\u003ed_revalidate\n  vfs: retry last component if opening stale dentry\n  vfs: nameidata_to_filp(): don\u0027t throw away file on error\n  vfs: nameidata_to_filp(): inline __dentry_open()\n  vfs: do_dentry_open(): don\u0027t put filp\n  vfs: split __dentry_open()\n  vfs: do_last() common post lookup\n  vfs: do_last(): add audit_inode before open\n  vfs: do_last(): only return EISDIR for O_CREAT\n  vfs: do_last(): check LOOKUP_DIRECTORY\n  vfs: do_last(): make ENOENT exit RCU safe\n  vfs: make follow_link check RCU safe\n  vfs: do_last(): use inode variable\n  vfs: do_last(): inline walk_component()\n  vfs: do_last(): make exit RCU safe\n  vfs: split do_lookup()\n  Btrfs: move over to use -\u003eupdate_time\n  fs: introduce inode operation -\u003eupdate_time\n  reiserfs: get rid of resierfs_sync_super\n  reiserfs: mark the superblock as dirty a bit later\n  ...\n"
    },
    {
      "commit": "c3b2da314834499f34cba94f7053e55f6d6f92d8",
      "tree": "7012b569ee9e0781761a8eb388190979441583c7",
      "parents": [
        "033369d1af1264abc23bea2e174aa47cdd212f6f"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Mar 26 09:59:21 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jun 01 12:07:25 2012 -0400"
      },
      "message": "fs: introduce inode operation -\u003eupdate_time\n\nBtrfs has to make sure we have space to allocate new blocks in order to modify\nthe inode, so updating time can fail.  We\u0027ve gotten around this by having our\nown file_update_time but this is kind of a pain, and Christoph has indicated he\nwould like to make xfs do something different with atime updates.  So introduce\n-\u003eupdate_time, where we will deal with i_version an a/m/c time updates and\nindicate which changes need to be made.  The normal version just does what it\nhas always done, updates the time and marks the inode dirty, and then\nfilesystems can choose to do something different.\n\nI\u0027ve gone through all of the users of file_update_time and made them check for\nerrors with the exception of the fault code since it\u0027s complicated and I wasn\u0027t\nquite sure what to do there, also Jan is going to be pushing the file time\nupdates into page_mkwrite for those who have it so that should satisfy btrfs and\nmake it not a big deal to check the file_update_time() return code in the\ngeneric fault path. Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "08615d7d85e5aa02c05bf6c4dde87d940e7f85f6",
      "tree": "18906149d313d25914160aca21cedf54b3a7e818",
      "parents": [
        "9fdadb2cbaf4b482dfd6086e8bd3d2db071a1702",
        "0a4dd35c67b144d8ef9432120105f1aab9293ee9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 31 18:10:18 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 31 18:10:18 2012 -0700"
      },
      "message": "Merge branch \u0027akpm\u0027 (Andrew\u0027s patch-bomb)\n\nMerge misc patches from Andrew Morton:\n\n - the \"misc\" tree - stuff from all over the map\n\n - checkpatch updates\n\n - fatfs\n\n - kmod changes\n\n - procfs\n\n - cpumask\n\n - UML\n\n - kexec\n\n - mqueue\n\n - rapidio\n\n - pidns\n\n - some checkpoint-restore feature work.  Reluctantly.  Most of it\n   delayed a release.  I\u0027m still rather worried that we don\u0027t have a\n   clear roadmap to completion for this work.\n\n* emailed from Andrew Morton \u003cakpm@linux-foundation.org\u003e: (78 patches)\n  kconfig: update compression algorithm info\n  c/r: prctl: add ability to set new mm_struct::exe_file\n  c/r: prctl: extend PR_SET_MM to set up more mm_struct entries\n  c/r: procfs: add arg_start/end, env_start/end and exit_code members to /proc/$pid/stat\n  syscalls, x86: add __NR_kcmp syscall\n  fs, proc: introduce /proc/\u003cpid\u003e/task/\u003ctid\u003e/children entry\n  sysctl: make kernel.ns_last_pid control dependent on CHECKPOINT_RESTORE\n  aio/vfs: cleanup of rw_copy_check_uvector() and compat_rw_copy_check_uvector()\n  eventfd: change int to __u64 in eventfd_signal()\n  fs/nls: add Apple NLS\n  pidns: make killed children autoreap\n  pidns: use task_active_pid_ns in do_notify_parent\n  rapidio/tsi721: add DMA engine support\n  rapidio: add DMA engine support for RIO data transfers\n  ipc/mqueue: add rbtree node caching support\n  tools/selftests: add mq_perf_tests\n  ipc/mqueue: strengthen checks on mqueue creation\n  ipc/mqueue: correct mq_attr_ok test\n  ipc/mqueue: improve performance of send/recv\n  selftests: add mq_open_tests\n  ...\n"
    },
    {
      "commit": "ac34ebb3a67e699edcb5ac72f19d31679369dfaa",
      "tree": "21785208005952128545c0d7804c2dddf177766f",
      "parents": [
        "ee62c6b2dc93c09585b51fad18449dc5edb9977f"
      ],
      "author": {
        "name": "Christopher Yeoh",
        "email": "cyeoh@au1.ibm.com",
        "time": "Thu May 31 16:26:42 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 31 17:49:32 2012 -0700"
      },
      "message": "aio/vfs: cleanup of rw_copy_check_uvector() and compat_rw_copy_check_uvector()\n\nA cleanup of rw_copy_check_uvector and compat_rw_copy_check_uvector after\nchanges made to support CMA in an earlier patch.\n\nRather than having an additional check_access parameter to these\nfunctions, the first paramater type is overloaded to allow the caller to\nspecify CHECK_IOVEC_ONLY which means check that the contents of the iovec\nare valid, but do not check the memory that they point to.  This is used\nby process_vm_readv/writev where we need to validate that a iovec passed\nto the syscall is valid but do not want to check the memory that it points\nto at this point because it refers to an address space in another process.\n\nSigned-off-by: Chris Yeoh \u003cyeohc@au1.ibm.com\u003e\nReviewed-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1d59d61f606547f0712aa6971f91f71154071c99",
      "tree": "cb2fd4b9ce3e3ee9440d566d43ea350221edfc8e",
      "parents": [
        "2d117403b30cd7301af60d7d54b279a9f566d10d"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu May 31 12:22:33 2012 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 31 11:41:36 2012 -0700"
      },
      "message": "NFS: Ensure that setattr and getattr wait for O_DIRECT write completion\n\nUse the same mechanism as the block devices are using, but move the\nhelper functions from fs/direct-io.c into fs/inode.c to remove the\ndependency on CONFIG_BLOCK.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "17cf28afea2a1112f240a3a2da8af883be024811",
      "tree": "ed9e3eb9b1d44118a12e4ecdf369e3b9b3208be1",
      "parents": [
        "3f31d07571eeea18a7d34db9af21d2285b807a17"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Tue May 29 15:06:41 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:23 2012 -0700"
      },
      "message": "mm/fs: remove truncate_range\n\nRemove vmtruncate_range(), and remove the truncate_range method from\nstruct inode_operations: only tmpfs ever supported it, and tmpfs has now\nconverted over to using the fallocate method of file_operations.\n\nUpdate Documentation accordingly, adding (setlease and) fallocate lines.\nAnd while we\u0027re in mm.h, remove duplicate declarations of shmem_lock() and\nshmem_file_setup(): everyone is now using the ones in shmem_fs.h.\n\nBased-on-patch-by: Cong Wang \u003camwang@redhat.com\u003e\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Cong Wang \u003camwang@redhat.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "90324cc1b11a211e37eabd8cb863e1a1561d6b1d",
      "tree": "c8b79c6850420a114ca6660c1b44fc486b1ba86d",
      "parents": [
        "fb8b00675eb6462aacab56bca31ed6107bda5314",
        "169ebd90131b2ffca74bb2dbe7eeacd39fb83714"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon May 28 09:54:45 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon May 28 09:54:45 2012 -0700"
      },
      "message": "Merge tag \u0027writeback\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/linux\n\nPull writeback tree from Wu Fengguang:\n \"Mainly from Jan Kara to avoid iput() in the flusher threads.\"\n\n* tag \u0027writeback\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/linux:\n  writeback: Avoid iput() from flusher thread\n  vfs: Rename end_writeback() to clear_inode()\n  vfs: Move waiting for inode writeback from end_writeback() to evict_inode()\n  writeback: Refactor writeback_single_inode()\n  writeback: Remove wb-\u003elist_lock from writeback_single_inode()\n  writeback: Separate inode requeueing after writeback\n  writeback: Move I_DIRTY_PAGES handling\n  writeback: Move requeueing when I_SYNC set to writeback_sb_inodes()\n  writeback: Move clearing of I_SYNC into inode_sync_complete()\n  writeback: initialize global_dirty_limit\n  fs: remove 8 bytes of padding from struct writeback_control on 64 bit builds\n  mm: page-writeback.c: local functions should not be exposed globally\n"
    },
    {
      "commit": "644473e9c60c1ff4f6351fed637a6e5551e3dce7",
      "tree": "10316518bedc735a2c6552886658d69dfd9f1eb0",
      "parents": [
        "fb827ec68446c83e9e8754fa9b55aed27ecc4661",
        "4b06a81f1daee668fbd6de85557bfb36dd36078f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 23 17:42:39 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 23 17:42:39 2012 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace\n\nPull user namespace enhancements from Eric Biederman:\n \"This is a course correction for the user namespace, so that we can\n  reach an inexpensive, maintainable, and reasonably complete\n  implementation.\n\n  Highlights:\n   - Config guards make it impossible to enable the user namespace and\n     code that has not been converted to be user namespace safe.\n\n   - Use of the new kuid_t type ensures the if you somehow get past the\n     config guards the kernel will encounter type errors if you enable\n     user namespaces and attempt to compile in code whose permission\n     checks have not been updated to be user namespace safe.\n\n   - All uids from child user namespaces are mapped into the initial\n     user namespace before they are processed.  Removing the need to add\n     an additional check to see if the user namespace of the compared\n     uids remains the same.\n\n   - With the user namespaces compiled out the performance is as good or\n     better than it is today.\n\n   - For most operations absolutely nothing changes performance or\n     operationally with the user namespace enabled.\n\n   - The worst case performance I could come up with was timing 1\n     billion cache cold stat operations with the user namespace code\n     enabled.  This went from 156s to 164s on my laptop (or 156ns to\n     164ns per stat operation).\n\n   - (uid_t)-1 and (gid_t)-1 are reserved as an internal error value.\n     Most uid/gid setting system calls treat these value specially\n     anyway so attempting to use -1 as a uid would likely cause\n     entertaining failures in userspace.\n\n   - If setuid is called with a uid that can not be mapped setuid fails.\n     I have looked at sendmail, login, ssh and every other program I\n     could think of that would call setuid and they all check for and\n     handle the case where setuid fails.\n\n   - If stat or a similar system call is called from a context in which\n     we can not map a uid we lie and return overflowuid.  The LFS\n     experience suggests not lying and returning an error code might be\n     better, but the historical precedent with uids is different and I\n     can not think of anything that would break by lying about a uid we\n     can\u0027t map.\n\n   - Capabilities are localized to the current user namespace making it\n     safe to give the initial user in a user namespace all capabilities.\n\n  My git tree covers all of the modifications needed to convert the core\n  kernel and enough changes to make a system bootable to runlevel 1.\"\n\nFix up trivial conflicts due to nearby independent changes in fs/stat.c\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace: (46 commits)\n  userns:  Silence silly gcc warning.\n  cred: use correct cred accessor with regards to rcu read lock\n  userns: Convert the move_pages, and migrate_pages permission checks to use uid_eq\n  userns: Convert cgroup permission checks to use uid_eq\n  userns: Convert tmpfs to use kuid and kgid where appropriate\n  userns: Convert sysfs to use kgid/kuid where appropriate\n  userns: Convert sysctl permission checks to use kuid and kgids.\n  userns: Convert proc to use kuid/kgid where appropriate\n  userns: Convert ext4 to user kuid/kgid where appropriate\n  userns: Convert ext3 to use kuid/kgid where appropriate\n  userns: Convert ext2 to use kuid/kgid where appropriate.\n  userns: Convert devpts to use kuid/kgid where appropriate\n  userns: Convert binary formats to use kuid/kgid where appropriate\n  userns: Add negative depends on entries to avoid building code that is userns unsafe\n  userns: signal remove unnecessary map_cred_ns\n  userns: Teach inode_capable to understand inodes whose uids map to other namespaces.\n  userns: Fail exec for suid and sgid binaries with ids outside our user namespace.\n  userns: Convert stat to return values mapped from kuids and kgids\n  userns: Convert user specfied uids and gids in chown into kuids and kgid\n  userns: Use uid_eq gid_eq helpers when comparing kuids and kgids in the vfs\n  ...\n"
    },
    {
      "commit": "080399aaaf3531f5b8761ec0ac30ff98891e8686",
      "tree": "28ba8f41bb67a58992bc426dac7002983bc64e8f",
      "parents": [
        "a09ba13eefb155a00d8d50008a0c0a2406985ddd"
      ],
      "author": {
        "name": "Jeff Moyer",
        "email": "jmoyer@redhat.com",
        "time": "Fri May 11 16:34:10 2012 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri May 11 16:42:14 2012 +0200"
      },
      "message": "block: don\u0027t mark buffers beyond end of disk as mapped\n\nHi,\n\nWe have a bug report open where a squashfs image mounted on ppc64 would\nexhibit errors due to trying to read beyond the end of the disk.  It can\neasily be reproduced by doing the following:\n\n[root@ibm-p750e-02-lp3 ~]# ls -l install.img\n-rw-r--r-- 1 root root 142032896 Apr 30 16:46 install.img\n[root@ibm-p750e-02-lp3 ~]# mount -o loop ./install.img /mnt/test\n[root@ibm-p750e-02-lp3 ~]# dd if\u003d/dev/loop0 of\u003d/dev/null\ndd: reading `/dev/loop0\u0027: Input/output error\n277376+0 records in\n277376+0 records out\n142016512 bytes (142 MB) copied, 0.9465 s, 150 MB/s\n\nIn dmesg, you\u0027ll find the following:\n\nsquashfs: version 4.0 (2009/01/31) Phillip Lougher\n[   43.106012] attempt to access beyond end of device\n[   43.106029] loop0: rw\u003d0, want\u003d277410, limit\u003d277408\n[   43.106039] Buffer I/O error on device loop0, logical block 138704\n[   43.106053] attempt to access beyond end of device\n[   43.106057] loop0: rw\u003d0, want\u003d277412, limit\u003d277408\n[   43.106061] Buffer I/O error on device loop0, logical block 138705\n[   43.106066] attempt to access beyond end of device\n[   43.106070] loop0: rw\u003d0, want\u003d277414, limit\u003d277408\n[   43.106073] Buffer I/O error on device loop0, logical block 138706\n[   43.106078] attempt to access beyond end of device\n[   43.106081] loop0: rw\u003d0, want\u003d277416, limit\u003d277408\n[   43.106085] Buffer I/O error on device loop0, logical block 138707\n[   43.106089] attempt to access beyond end of device\n[   43.106093] loop0: rw\u003d0, want\u003d277418, limit\u003d277408\n[   43.106096] Buffer I/O error on device loop0, logical block 138708\n[   43.106101] attempt to access beyond end of device\n[   43.106104] loop0: rw\u003d0, want\u003d277420, limit\u003d277408\n[   43.106108] Buffer I/O error on device loop0, logical block 138709\n[   43.106112] attempt to access beyond end of device\n[   43.106116] loop0: rw\u003d0, want\u003d277422, limit\u003d277408\n[   43.106120] Buffer I/O error on device loop0, logical block 138710\n[   43.106124] attempt to access beyond end of device\n[   43.106128] loop0: rw\u003d0, want\u003d277424, limit\u003d277408\n[   43.106131] Buffer I/O error on device loop0, logical block 138711\n[   43.106135] attempt to access beyond end of device\n[   43.106139] loop0: rw\u003d0, want\u003d277426, limit\u003d277408\n[   43.106143] Buffer I/O error on device loop0, logical block 138712\n[   43.106147] attempt to access beyond end of device\n[   43.106151] loop0: rw\u003d0, want\u003d277428, limit\u003d277408\n[   43.106154] Buffer I/O error on device loop0, logical block 138713\n[   43.106158] attempt to access beyond end of device\n[   43.106162] loop0: rw\u003d0, want\u003d277430, limit\u003d277408\n[   43.106166] attempt to access beyond end of device\n[   43.106169] loop0: rw\u003d0, want\u003d277432, limit\u003d277408\n...\n[   43.106307] attempt to access beyond end of device\n[   43.106311] loop0: rw\u003d0, want\u003d277470, limit\u003d2774\n\nSquashfs manages to read in the end block(s) of the disk during the\nmount operation.  Then, when dd reads the block device, it leads to\nblock_read_full_page being called with buffers that are beyond end of\ndisk, but are marked as mapped.  Thus, it would end up submitting read\nI/O against them, resulting in the errors mentioned above.  I fixed the\nproblem by modifying init_page_buffers to only set the buffer mapped if\nit fell inside of i_size.\n\nCheers,\nJeff\n\nSigned-off-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nAcked-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n\n--\n\nChanges from v1-\u003ev2: re-used max_block, as suggested by Nick Piggin.\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "169ebd90131b2ffca74bb2dbe7eeacd39fb83714",
      "tree": "513136e110970da388680947c225ef8ca05a6dd7",
      "parents": [
        "dbd5768f87ff6fb0a4fe09c4d7b6c4a24de99430"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu May 03 14:48:03 2012 +0200"
      },
      "committer": {
        "name": "Fengguang Wu",
        "email": "fengguang.wu@intel.com",
        "time": "Sun May 06 13:43:41 2012 +0800"
      },
      "message": "writeback: Avoid iput() from flusher thread\n\nDoing iput() from flusher thread (writeback_sb_inodes()) can create problems\nbecause iput() can do a lot of work - for example truncate the inode if it\u0027s\nthe last iput on unlinked file. Some filesystems depend on flusher thread\nprogressing (e.g. because they need to flush delay allocated blocks to reduce\nallocation uncertainty) and so flusher thread doing truncate creates\ninteresting dependencies and possibilities for deadlocks.\n\nWe get rid of iput() in flusher thread by using the fact that I_SYNC inode\nflag effectively pins the inode in memory. So if we take care to either hold\ni_lock or have I_SYNC set, we can get away without taking inode reference\nin writeback_sb_inodes().\n\nAs a side effect of these changes, we also fix possible use-after-free in\nwb_writeback() because inode_wait_for_writeback() call could try to reacquire\ni_lock on the inode that was already free.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\n"
    },
    {
      "commit": "dbd5768f87ff6fb0a4fe09c4d7b6c4a24de99430",
      "tree": "42ea94ea733538f797aa745945fc43c4d1b89217",
      "parents": [
        "7994e6f7254354e03028a11f98a27bd67dace9f1"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu May 03 14:48:02 2012 +0200"
      },
      "committer": {
        "name": "Fengguang Wu",
        "email": "fengguang.wu@intel.com",
        "time": "Sun May 06 13:43:41 2012 +0800"
      },
      "message": "vfs: Rename end_writeback() to clear_inode()\n\nAfter we moved inode_sync_wait() from end_writeback() it doesn\u0027t make sense\nto call the function end_writeback() anymore. Rename it to clear_inode()\nwhich well says what the function really does - set I_CLEAR flag.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\n"
    },
    {
      "commit": "92361636e0153bd0cb22e7dfe3fc6287f6537c66",
      "tree": "8b7d8f91aa528c2bad8ff97c737b2612e414480a",
      "parents": [
        "5af662030e5db1a5560fd917250d5d688a6be586"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Wed Feb 08 07:07:50 2012 -0800"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Thu May 03 03:29:32 2012 -0700"
      },
      "message": "userns: Store uid and gid types in vfs structures with kuid_t and kgid_t types\n\nThe conversion of all of the users is not done yet there are too many to change\nin one go and leave the code reviewable. For now I change just the header and\na few trivial users and rely on CONFIG_UIDGID_STRICT_TYPE_CHECKS not being set\nto ensure that the code will still compile during the transition.\n\nHelper functions i_uid_read, i_uid_write, i_gid_read, i_gid_write are added\nso that in most cases filesystems can avoid the complexities of multiple user\nnamespaces and can concentrate on moving their raw numeric values into and\nout of the vfs data structures.\n\nAcked-by: Serge Hallyn \u003cserge.hallyn@canonical.com\u003e\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "1a48e2ac034d47ed843081c4523b63c46b46888b",
      "tree": "d3a32ac7ffc47b075a64701a2fd74e00bbccf84d",
      "parents": [
        "973c5914260d75292f71a4729753086b9e863d57"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Mon Nov 14 16:24:06 2011 -0800"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Sat Apr 07 17:02:46 2012 -0700"
      },
      "message": "userns: Replace the hard to write inode_userns with inode_capable.\n\nThis represents a change in strategy of how to handle user namespaces.\nInstead of tagging everything explicitly with a user namespace and bulking\nup all of the comparisons of uids and gids in the kernel,  all uids and gids\nin use will have a mapping to a flat kuid and kgid spaces respectively.  This\nallows much more of the existing logic to be preserved and in general\nallows for faster code.\n\nIn this new and improved world we allow someone to utiliize capabilities\nover an inode if the inodes owner mapps into the capabilities holders user\nnamespace and the user has capabilities in their user namespace.  Which\nis simple and efficient.\n\nMoving the fs uid comparisons to be comparisons in a flat kuid space\nfollows in later patches, something that is only significant if you\nare using user namespaces.\n\nAcked-by: Serge Hallyn \u003cserge.hallyn@canonical.com\u003e\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "5d32c88f0b94061b3af2e3ade92422407282eb12",
      "tree": "2e1f81aa47b2cf59625c8fba17199617e33802e6",
      "parents": [
        "43f63c8711ce02226b7bbdafeba7b8031faf3fb4",
        "dac23b0d0513916498d40412818bd2c581b365f7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 05 15:30:34 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 05 15:30:34 2012 -0700"
      },
      "message": "Merge branch \u0027akpm\u0027 (Andrew\u0027s patch-bomb)\n\nMerge batch of fixes from Andrew Morton:\n \"The simple_open() cleanup was held back while I wanted for laggards to\n  merge things.\n\n  I still need to send a few checkpoint/restore patches.  I\u0027ve been\n  wobbly about merging them because I\u0027m wobbly about the overall\n  prospects for success of the project.  But after speaking with Pavel\n  at the LSF conference, it sounds like they\u0027re further toward\n  completion than I feared - apparently davem is at the \"has stopped\n  complaining\" stage regarding the net changes.  So I need to go back\n  and re-review those patchs and their (lengthy) discussion.\"\n\n* emailed from Andrew Morton \u003cakpm@linux-foundation.org\u003e: (16 patches)\n  memcg swap: use mem_cgroup_uncharge_swap fix\n  backlight: add driver for DA9052/53 PMIC v1\n  C6X: use set_current_blocked() and block_sigmask()\n  MAINTAINERS: add entry for sparse checker\n  MAINTAINERS: fix REMOTEPROC F: typo\n  alpha: use set_current_blocked() and block_sigmask()\n  simple_open: automatically convert to simple_open()\n  scripts/coccinelle/api/simple_open.cocci: semantic patch for simple_open()\n  libfs: add simple_open()\n  hugetlbfs: remove unregister_filesystem() when initializing module\n  drivers/rtc/rtc-88pm860x.c: fix rtc irq enable callback\n  fs/xattr.c:setxattr(): improve handling of allocation failures\n  fs/xattr.c:listxattr(): fall back to vmalloc() if kmalloc() failed\n  fs/xattr.c: suppress page allocation failure warnings from sys_listxattr()\n  sysrq: use SEND_SIG_FORCED instead of force_sig()\n  proc: fix mount -t proc -o AAA\n"
    },
    {
      "commit": "20955e891d828b2027281fe3295dae6af8e0423b",
      "tree": "551b8b4a3515f3b99e357e8cef5bc2e5d5051d50",
      "parents": [
        "7563ec4c211ba59c2331dc6b94a068250345c387"
      ],
      "author": {
        "name": "Stephen Boyd",
        "email": "sboyd@codeaurora.org",
        "time": "Thu Apr 05 14:25:09 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 05 15:25:50 2012 -0700"
      },
      "message": "libfs: add simple_open()\n\ndebugfs and a few other drivers use an open-coded version of\nsimple_open() to pass a pointer from the file to the read/write file\nops.  Add support for this simple case to libfs so that we can remove\nthe many duplicate copies of this simple function.\n\nSigned-off-by: Stephen Boyd \u003csboyd@codeaurora.org\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Julia Lawall \u003cJulia.Lawall@lip6.fr\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "66189be74ff5f9f3fd6444315b85be210d07cef2",
      "tree": "7a179ddd7e233668dbb108faf847ceb768d2e92c",
      "parents": [
        "9ebb389d0a03b4415fe9014f6922a2412cb1109c"
      ],
      "author": {
        "name": "Pavel Shilovsky",
        "email": "piastry@etersoft.ru",
        "time": "Wed Mar 28 21:56:19 2012 +0400"
      },
      "committer": {
        "name": "Steve French",
        "email": "sfrench@us.ibm.com",
        "time": "Sun Apr 01 13:54:27 2012 -0500"
      },
      "message": "CIFS: Fix VFS lock usage for oplocked files\n\nWe can deadlock if we have a write oplock and two processes\nuse the same file handle. In this case the first process can\u0027t\nunlock its lock if the second process blocked on the lock in the\nsame time.\n\nFix it by using posix_lock_file rather than posix_lock_file_wait\nunder cinode-\u003elock_mutex. If we request a blocking lock and\nposix_lock_file indicates that there is another lock that prevents\nus, wait untill that lock is released and restart our call.\n\nCc: stable@kernel.org\nAcked-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Pavel Shilovsky \u003cpiastry@etersoft.ru\u003e\nSigned-off-by: Steve French \u003csfrench@us.ibm.com\u003e\n"
    },
    {
      "commit": "71db34fc4330f7c784397acb9f1e6ee7f7b32eb2",
      "tree": "77dd08f6f778a799dcd0c48eb72d0742349df235",
      "parents": [
        "50483c3268918ee51a56d1baa39b9149d2d0d521",
        "797a9d797f8483bb67f265c761b76dcd5a077a23"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 29 14:53:25 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 29 14:53:25 2012 -0700"
      },
      "message": "Merge branch \u0027for-3.4\u0027 of git://linux-nfs.org/~bfields/linux\n\nPull nfsd changes from Bruce Fields:\n\nHighlights:\n - Benny Halevy and Tigran Mkrtchyan implemented some more 4.1 features,\n   moving us closer to a complete 4.1 implementation.\n - Bernd Schubert fixed a long-standing problem with readdir cookies on\n   ext2/3/4.\n - Jeff Layton performed a long-overdue overhaul of the server reboot\n   recovery code which will allow us to deprecate the current code (a\n   rather unusual user of the vfs), and give us some needed flexibility\n   for further improvements.\n - Like the client, we now support numeric uid\u0027s and gid\u0027s in the\n   auth_sys case, allowing easier upgrades from NFSv2/v3 to v4.x.\n\nPlus miscellaneous bugfixes and cleanup.\n\nThanks to everyone!\n\nThere are also some delegation fixes waiting on vfs review that I\nsuppose will have to wait for 3.5.  With that done I think we\u0027ll finally\nturn off the \"EXPERIMENTAL\" dependency for v4 (though that\u0027s mostly\nsymbolic as it\u0027s been on by default in distro\u0027s for a while).\n\nAnd the list of 4.1 todo\u0027s should be achievable for 3.5 as well:\n\n   http://wiki.linux-nfs.org/wiki/index.php/Server_4.0_and_4.1_issues\n\nthough we may still want a bit more experience with it before turning it\non by default.\n\n* \u0027for-3.4\u0027 of git://linux-nfs.org/~bfields/linux: (55 commits)\n  nfsd: only register cld pipe notifier when CONFIG_NFSD_V4 is enabled\n  nfsd4: use auth_unix unconditionally on backchannel\n  nfsd: fix NULL pointer dereference in cld_pipe_downcall\n  nfsd4: memory corruption in numeric_name_to_id()\n  sunrpc: skip portmap calls on sessions backchannel\n  nfsd4: allow numeric idmapping\n  nfsd: don\u0027t allow legacy client tracker init for anything but init_net\n  nfsd: add notifier to handle mount/unmount of rpc_pipefs sb\n  nfsd: add the infrastructure to handle the cld upcall\n  nfsd: add a header describing upcall to nfsdcld\n  nfsd: add a per-net-namespace struct for nfsd\n  sunrpc: create nfsd dir in rpc_pipefs\n  nfsd: add nfsd4_client_tracking_ops struct and a way to set it\n  nfsd: convert nfs4_client-\u003ecl_cb_flags to a generic flags field\n  NFSD: Fix nfs4_verifier memory alignment\n  NFSD: Fix warnings when NFSD_DEBUG is not defined\n  nfsd: vfs_llseek() with 32 or 64 bit offsets (hashes)\n  nfsd: rename \u0027int access\u0027 to \u0027int may_flags\u0027 in nfsd_open()\n  ext4: return 32/64-bit dir name hash according to usage type\n  fs: add new FMODE flags: FMODE_32bithash and FMODE_64bithash\n  ...\n"
    },
    {
      "commit": "69e1aaddd63104f37021d0b0f6abfd9623c9134c",
      "tree": "14ad49741b428d270b681694bb2df349465455b9",
      "parents": [
        "56b59b429b4c26e5e730bc8c3d837de9f7d0a966",
        "9d547c35799a4ddd235f1565cec2fff6c9263504"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 28 10:02:55 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 28 10:02:55 2012 -0700"
      },
      "message": "Merge tag \u0027ext4_for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4\n\nPull ext4 updates for 3.4 from Ted Ts\u0027o:\n \"Ext4 commits for 3.3 merge window; mostly cleanups and bug fixes\n\n  The changes to export dirty_writeback_interval are from Artem\u0027s s_dirt\n  cleanup patch series.  The same is true of the change to remove the\n  s_dirt helper functions which never got used by anyone in-tree.  I\u0027ve\n  run these changes by Al Viro, and am carrying them so that Artem can\n  more easily fix up the rest of the file systems during the next merge\n  window.  (Originally we had hopped to remove the use of s_dirt from\n  ext4 during this merge window, but his patches had some bugs, so I\n  ultimately ended dropping them from the ext4 tree.)\"\n\n* tag \u0027ext4_for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4: (66 commits)\n  vfs: remove unused superblock helpers\n  mm: export dirty_writeback_interval\n  ext4: remove useless s_dirt assignment\n  ext4: write superblock only once on unmount\n  ext4: do not mark superblock as dirty unnecessarily\n  ext4: correct ext4_punch_hole return codes\n  ext4: remove restrictive checks for EOFBLOCKS_FL\n  ext4: always set then trimmed blocks count into len\n  ext4: fix trimmed block count accunting\n  ext4: fix start and len arguments handling in ext4_trim_fs()\n  ext4: update s_free_{inodes,blocks}_count during online resize\n  ext4: change some printk() calls to use ext4_msg() instead\n  ext4: avoid output message interleaving in ext4_error_\u003cfoo\u003e()\n  ext4: remove trailing newlines from ext4_msg() and ext4_error() messages\n  ext4: add no_printk argument validation, fix fallout\n  ext4: remove redundant \"EXT4-fs: \" from uses of ext4_msg\n  ext4: give more helpful error message in ext4_ext_rm_leaf()\n  ext4: remove unused code from ext4_ext_map_blocks()\n  ext4: rewrite punch hole to use ext4_ext_remove_space()\n  jbd2: cleanup journal tail after transaction commit\n  ...\n"
    },
    {
      "commit": "ed2d265d1266736bd294332d7f649003943ae36e",
      "tree": "860e5b7bb72933e4a9abacdc2f2d75a0e6254e32",
      "parents": [
        "f1d38e423a697b7aa06e12d3ca4753bcc1aa3531",
        "6c03438edeb5c359af35f060ea016ca65671c269"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 24 10:08:39 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 24 10:08:39 2012 -0700"
      },
      "message": "Merge tag \u0027bug-for-3.4\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux\n\nPull \u003clinux/bug.h\u003e cleanup from Paul Gortmaker:\n \"The changes shown here are to unify linux\u0027s BUG support under the one\n  \u003clinux/bug.h\u003e file.  Due to historical reasons, we have some BUG code\n  in bug.h and some in kernel.h -- i.e.  the support for BUILD_BUG in\n  linux/kernel.h predates the addition of linux/bug.h, but old code in\n  kernel.h wasn\u0027t moved to bug.h at that time.  As a band-aid, kernel.h\n  was including \u003casm/bug.h\u003e to pseudo link them.\n\n  This has caused confusion[1] and general yuck/WTF[2] reactions.  Here\n  is an example that violates the principle of least surprise:\n\n      CC      lib/string.o\n      lib/string.c: In function \u0027strlcat\u0027:\n      lib/string.c:225:2: error: implicit declaration of function \u0027BUILD_BUG_ON\u0027\n      make[2]: *** [lib/string.o] Error 1\n      $\n      $ grep linux/bug.h lib/string.c\n      #include \u003clinux/bug.h\u003e\n      $\n\n  We\u0027ve included \u003clinux/bug.h\u003e for the BUG infrastructure and yet we\n  still get a compile fail! [We\u0027ve not kernel.h for BUILD_BUG_ON.] Ugh -\n  very confusing for someone who is new to kernel development.\n\n  With the above in mind, the goals of this changeset are:\n\n  1) find and fix any include/*.h files that were relying on the\n     implicit presence of BUG code.\n  2) find and fix any C files that were consuming kernel.h and hence\n     relying on implicitly getting some/all BUG code.\n  3) Move the BUG related code living in kernel.h to \u003clinux/bug.h\u003e\n  4) remove the asm/bug.h from kernel.h to finally break the chain.\n\n  During development, the order was more like 3-4, build-test, 1-2.  But\n  to ensure that git history for bisect doesn\u0027t get needless build\n  failures introduced, the commits have been reorderd to fix the problem\n  areas in advance.\n\n\t[1]  https://lkml.org/lkml/2012/1/3/90\n\t[2]  https://lkml.org/lkml/2012/1/17/414\"\n\nFix up conflicts (new radeon file, reiserfs header cleanups) as per Paul\nand linux-next.\n\n* tag \u0027bug-for-3.4\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux:\n  kernel.h: doesn\u0027t explicitly use bug.h, so don\u0027t include it.\n  bug: consolidate BUILD_BUG_ON with other bug code\n  BUG: headers with BUG/BUG_ON etc. need linux/bug.h\n  bug.h: add include of it to various implicit C users\n  lib: fix implicit users of kernel.h for TAINT_WARN\n  spinlock: macroize assert_spin_locked to avoid bug.h dependency\n  x86: relocate get/set debugreg fcns to include/asm/debugreg.\n"
    },
    {
      "commit": "9d547c35799a4ddd235f1565cec2fff6c9263504",
      "tree": "c210684cc48a701943a73a415a42797cef5a13fc",
      "parents": [
        "91913a2942d2b582c40673956dec1a9c71d32fe4"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "artem.bityutskiy@linux.intel.com",
        "time": "Wed Mar 21 22:34:55 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Mar 21 22:34:55 2012 -0400"
      },
      "message": "vfs: remove unused superblock helpers\n\nRemove the \u0027sb_mark_dirty()\u0027, \u0027sb_mark_clean()\u0027 and \u0027sb_is_dirty()\u0027\nhelpers which are not used. I introduced them 2 years and the\nintention was to make all file-systems use them in order to be able to\noptimize \u0027sync_supers()\u0027.  However, Al Viro vetoed my patches at the\nend and asked me to push superblock management down to file-systems\nand get rid of the \u0027s_dirt\u0027 flag completely, as well as kill\n\u0027sync_supers()\u0027 altogether. Thus, remove the helpers.\n\nSigned-off-by: Artem Bityutskiy \u003cartem.bityutskiy@linux.intel.com\u003e\nCc: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "68ac1234fb949b66941d94dce4157742799fc581",
      "tree": "04059b7dbaed92d672b8ceef1fcf25c6185e06f8",
      "parents": [
        "40ffe67d2e89c7a475421d007becc11a2f88ea3d"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Mar 15 08:21:57 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 20 21:29:41 2012 -0400"
      },
      "message": "switch touch_atime to struct path\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "9bcb4b733c22b7dbc4cf847e707ac98f751e9180",
      "tree": "f99c68d0b7d049d7a25706d23f224c734d0e1da1",
      "parents": [
        "e28e832c3e1e1197873cfd0b6ce86868cf5c391d"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Feb 12 19:43:17 2012 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 20 21:29:33 2012 -0400"
      },
      "message": "vfs: turn generic_drop_inode() into static inline\n\nOnce upon a time it used to be much bigger, but these days there\u0027s\nno point whatsoever keeping it in fs/inode.c, especially since\nit\u0027s not even needed as initializer for -\u003edrop_inode() - it\u0027s the\ndefault and leaving -\u003edrop_inode NULL will do just as well.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "8de52778798fe39660a8d6b26f290e0c93202761",
      "tree": "56384beb7863c1f338f2b66b509bf58eea5a99c2",
      "parents": [
        "c16fa4f2ad19908a47c63d8fa436a1178438c7e7"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Feb 06 12:45:27 2012 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 20 21:29:32 2012 -0400"
      },
      "message": "vfs: check i_nlink limits in vfs_{mkdir,rename_dir,link}\n\nNew field of struct super_block - -\u003es_max_links.  Maximal allowed\nvalue of -\u003ei_nlink or 0; in the latter case all checks still need\nto be done in -\u003elink/-\u003emkdir/-\u003erename instances.  Note that this\nlimit applies both to directoris and to non-directories.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "6a8a13e03861c0ab83ab07d573ca793cff0e5d00",
      "tree": "8a3587144828b60cb7472cdf0fa1398734303990",
      "parents": [
        "62aa2b537c6f5957afd98e29f96897419ed5ebab"
      ],
      "author": {
        "name": "Bernd Schubert",
        "email": "bernd.schubert@itwm.fraunhofer.de",
        "time": "Tue Mar 13 22:51:38 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Mar 13 22:51:38 2012 -0400"
      },
      "message": "fs: add new FMODE flags: FMODE_32bithash and FMODE_64bithash\n\nThose flags are supposed to be set by NFS readdir() to tell ext3/ext4\nto 32bit (NFSv2) or 64bit hash values (offsets) in seekdir().\n\nSigned-off-by: Bernd Schubert \u003cbernd.schubert@itwm.fraunhofer.de\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "187f1882b5b0748b3c4c22274663fdb372ac0452",
      "tree": "36283f258cf65f03599a045d48bb05d0ec27f3f9",
      "parents": [
        "50af5ead3b44ccf8bd2b4d2a50c1b610f557c480"
      ],
      "author": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Wed Nov 23 20:12:59 2011 -0500"
      },
      "committer": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Sun Mar 04 17:54:34 2012 -0500"
      },
      "message": "BUG: headers with BUG/BUG_ON etc. need linux/bug.h\n\nIf a header file is making use of BUG, BUG_ON, BUILD_BUG_ON, or any\nother BUG variant in a static inline (i.e. not in a #define) then\nthat header really should be including \u003clinux/bug.h\u003e and not just\nexpecting it to be implicitly present.\n\nWe can make this change risk-free, since if the files using these\nheaders didn\u0027t have exposure to linux/bug.h already, they would have\nbeen causing compile failures/warnings.\n\nSigned-off-by: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\n"
    },
    {
      "commit": "6b6dc836a195e077e76977b6c020a73de411b46d",
      "tree": "59920a3aab6db4997f6b7a95c753219bdc12bd64",
      "parents": [
        "074b85175a43a23fdbde60f55feea636e0bf0f85"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri Feb 10 11:03:00 2012 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Feb 13 20:45:38 2012 -0500"
      },
      "message": "vfs: Provide function to get superblock and wait for it to thaw\n\nIn quota code we need to find a superblock corresponding to a device and wait\nfor superblock to be unfrozen. However this waiting has to happen without\ns_umount semaphore because that is required for superblock to thaw. So provide\na function in VFS for this to keep dances with s_umount where they belong.\n\n[AV: implementation switched to saner variant]\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "c1aab02dac690af7ff634d8e1cb3be6a04387eef",
      "tree": "9018361108b2c370d247452e4517937057bf9895",
      "parents": [
        "ac1e3d4f5c1097422c6e72aeae322033e9a8c803"
      ],
      "author": {
        "name": "Stephen Rothwell",
        "email": "sfr@canb.auug.org.au",
        "time": "Tue Jan 24 11:41:32 2012 +1100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 23 17:17:45 2012 -0800"
      },
      "message": "migrate_mode.h is not exported to user mode\n\nso move its include into fs.h inside the __KERNEL__ protection.\n\nSigned-off-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6536e3123e5d3371a6f52e32a3d0694bcc987702",
      "tree": "45212bcb96a33d3a40cd1c631d9670a1bae52c2b",
      "parents": [
        "dcd6c92267155e70a94b3927bce681ce74b80d1f"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Fri Jan 20 14:33:53 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 23 08:38:47 2012 -0800"
      },
      "message": "mm: fix warnings regarding enum migrate_mode\n\nsparc64 allmodconfig:\n\nIn file included from include/linux/compat.h:15,\n                 from /usr/src/25/arch/sparc/include/asm/siginfo.h:19,\n                 from include/linux/signal.h:5,\n                 from include/linux/sched.h:73,\n                 from arch/sparc/kernel/asm-offsets.c:13:\ninclude/linux/fs.h:618: warning: parameter has incomplete type\n\nIt seems that my sparc64 compiler (gcc-3.4.5) doesn\u0027t like the forward\ndeclaration of enums.\n\nFix this by moving the \"enum migrate_mode\" definition into its own header\nfile.\n\nAcked-by: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Dave Jones \u003cdavej@redhat.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Andy Isaacson \u003cadi@hexapodia.org\u003e\nCc: Nai Xia \u003cnai.xia@gmail.com\u003e\nCc: Johannes Weiner \u003cjweiner@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b3c9dd182ed3bdcdaf0e42625a35924b0497afdc",
      "tree": "ad48ad4d923fee147c736318d0fad35b3755f4f5",
      "parents": [
        "83c2f912b43c3a7babbb6cb7ae2a5276c1ed2a3e",
        "5d381efb3d1f1ef10535a31ca0dd9b22fe1e1922"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 15 12:24:45 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 15 12:24:45 2012 -0800"
      },
      "message": "Merge branch \u0027for-3.3/core\u0027 of git://git.kernel.dk/linux-block\n\n* \u0027for-3.3/core\u0027 of git://git.kernel.dk/linux-block: (37 commits)\n  Revert \"block: recursive merge requests\"\n  block: Stop using macro stubs for the bio data integrity calls\n  blockdev: convert some macros to static inlines\n  fs: remove unneeded plug in mpage_readpages()\n  block: Add BLKROTATIONAL ioctl\n  block: Introduce blk_set_stacking_limits function\n  block: remove WARN_ON_ONCE() in exit_io_context()\n  block: an exiting task should be allowed to create io_context\n  block: ioc_cgroup_changed() needs to be exported\n  block: recursive merge requests\n  block, cfq: fix empty queue crash caused by request merge\n  block, cfq: move icq creation and rq-\u003eelv.icq association to block core\n  block, cfq: restructure io_cq creation path for io_context interface cleanup\n  block, cfq: move io_cq exit/release to blk-ioc.c\n  block, cfq: move icq cache management to block core\n  block, cfq: move io_cq lookup to blk-ioc.c\n  block, cfq: move cfqd-\u003eicq_list to request_queue and add request-\u003eelv.icq\n  block, cfq: reorganize cfq_io_context into generic and cfq specific parts\n  block: remove elevator_queue-\u003eops\n  block: reorder elevator switch sequence\n  ...\n\nFix up conflicts in:\n - block/blk-cgroup.c\n\tSwitch from can_attach_task to can_attach\n - block/cfq-iosched.c\n\tconflict with now removed cic index changes (we now use q-\u003eid instead)\n"
    },
    {
      "commit": "87192a2a49c475cf322cb143e0fa63b0102d8567",
      "tree": "70acf2fb1e4a9a3a62559ad9218278d2fb114599",
      "parents": [
        "ae55e1aaa7e2e57e538cb98cf617f511c5dc4f73"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Thu Jan 12 17:20:34 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 12 20:13:12 2012 -0800"
      },
      "message": "vfs: cache request_queue in struct block_device\n\nThis makes it possible to get from the inode to the request_queue with one\nless cache miss.  Used in followon optimization.\n\nThe livetime of the pointer is the same as the gendisk.\n\nThis assumes that the queue will always stay the same in the gendisk while\nit\u0027s visible to block_devices.  I think that\u0027s safe correct?\n\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\nAcked-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ],
  "next": "a6bc32b899223a877f595ef9ddc1e89ead5072b8"
}
