)]}'
{
  "log": [
    {
      "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": "e3fc629d7bb70848fbf479688a66d4e76dff46ac",
      "tree": "96b6d5ffdb1c643fb28807a635e6ca4e24964034",
      "parents": [
        "98de59bfe4b2ff6344d9ad8e5296f80de5dcc5b6"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed May 30 20:08:42 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jun 01 10:37:17 2012 -0400"
      },
      "message": "switch aio and shm to do_mmap_pgoff(), make do_mmap() static\n\nafter all, 0 bytes and 0 pages is the same thing...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\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": "a70b52ec1aaeaf60f4739edb1b422827cb6f3893",
      "tree": "b85acd421b97f018400bc55cb8eb14b4468c3b73",
      "parents": [
        "ff8ce5f67ddca709fe59e6173f89260f0fdc2b22"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon May 21 16:06:20 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon May 21 16:06:20 2012 -0700"
      },
      "message": "vfs: make AIO use the proper rw_verify_area() area helpers\n\nWe had for some reason overlooked the AIO interface, and it didn\u0027t use\nthe proper rw_verify_area() helper function that checks (for example)\nmandatory locking on the file, and that the size of the access doesn\u0027t\ncause us to overflow the provided offset limits etc.\n\nInstead, AIO did just the security_file_permission() thing (that\nrw_verify_area() also does) directly.\n\nThis fixes it to do all the proper helper functions, which not only\nmeans that now mandatory file locking works with AIO too, we can\nactually remove lines of code.\n\nReported-by: Manish Honap \u003cmanish_honap_vit@yahoo.co.in\u003e\nCc: stable@vger.kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bfce281c287a427d0841fadf5d59242757b4e620",
      "tree": "abca9ebeef4c668021e85e4d54e6e779121e92cc",
      "parents": [
        "9f3a4afb276e4d8b3be7f3e678d4dbd11470416f"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Apr 20 21:57:04 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Apr 21 01:58:20 2012 -0400"
      },
      "message": "kill mm argument of vm_munmap()\n\nit\u0027s always current-\u003emm\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "936af1576e4c24b466380fc2b8d93352161d13b0",
      "tree": "b7ecc2a4706ab25b0d06af7bac5fdf5d0fc7acb5",
      "parents": [
        "6be5ceb02e98eaf6cfc4f8b12a896d04023f340d"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Apr 20 21:49:41 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Apr 21 01:58:16 2012 -0400"
      },
      "message": "aio: don\u0027t bother with unmapping when aio_free_ring() is coming from exit_aio()\n\n... since exit_mmap() is coming and it will munmap() everything anyway.\nIn all other cases aio_free_ring() has ctx-\u003emm \u003d\u003d current-\u003emm; moreover,\nall other callers of vm_munmap() have mm \u003d\u003d current-\u003emm, so this will\nallow us to get rid of mm argument of vm_munmap().\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a46ef99d80817a167477ed1c8b4d90ee0c2e726f",
      "tree": "3d8c980c627e8b9c009dbf63628a9be8b8d1069f",
      "parents": [
        "e4eb1ff61b323d6141614e5458a1f53c7046ff8e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 20 16:20:01 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 20 17:29:13 2012 -0700"
      },
      "message": "VM: add \"vm_munmap()\" helper function\n\nLike the vm_brk() function, this is the same as \"do_munmap()\", except it\ndoes the VM locking for the caller.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a2e1859adb3b05fa99f87a67df9ef2a4b7b04a13",
      "tree": "2d6ba3300b595f2db3fdb3407fc2d028a7baf68a",
      "parents": [
        "06af121eab543e5554f7a29538f171a382aaf855"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 20 16:27:57 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Mar 31 16:03:15 2012 -0400"
      },
      "message": "aio: take final put_ioctx() into callers of io_destroy()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "06af121eab543e5554f7a29538f171a382aaf855",
      "tree": "5d072174c381aa284bff396b2176f077a8536ec5",
      "parents": [
        "a1c2aa1e86a25e7cace2ded47ec52754206a5733"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 20 16:26:24 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Mar 31 16:03:15 2012 -0400"
      },
      "message": "aio: merge aio_cancel_all() with wait_for_all_aios()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "11bcb32848ddb5ab28f09f142b625e2ba4d55c4c",
      "tree": "9a2c085e1fce41012bb0f2a340f6ceaaf616b7a0",
      "parents": [
        "ed2d265d1266736bd294332d7f649003943ae36e",
        "8bc3bcc93a2b4e47d5d410146f6546bca6171663"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 24 10:24:31 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 24 10:24:31 2012 -0700"
      },
      "message": "Merge tag \u0027module-for-3.4\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux\n\nPull cleanup of fs/ and lib/ users of module.h from Paul Gortmaker:\n \"Fix up files in fs/ and lib/ dirs to only use module.h if they really\n  need it.\n\n  These are trivial in scope vs the work done previously.  We now have\n  things where any few remaining cleanups can be farmed out to arch or\n  subsystem maintainers, and I have done so when possible.  What is\n  remaining here represents the bits that don\u0027t clearly lie within a\n  single arch/subsystem boundary, like the fs dir and the lib dir.\n\n  Some duplicate includes arising from overlapping fixes from\n  independent subsystem maintainer submissions are also quashed.\"\n\nFix up trivial conflicts due to clashes with other include file cleanups\n(including some due to the previous bug.h cleanup pull).\n\n* tag \u0027module-for-3.4\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux:\n  lib: reduce the use of module.h wherever possible\n  fs: reduce the use of module.h wherever possible\n  includecheck: delete any duplicate instances of module.h\n"
    },
    {
      "commit": "e2a0883e4071237d09b604a342c28b96b44a04b3",
      "tree": "aa56f4d376b5eb1c32358c19c2669c2a94e0e1fd",
      "parents": [
        "3a990a52f9f25f45469e272017a31e7a3fda60ed",
        "07c0c5d8b8c122b2f2df9ee574ac3083daefc981"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 13:36:41 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 13:36:41 2012 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs\n\nPull vfs pile 1 from Al Viro:\n \"This is _not_ all; in particular, Miklos\u0027 and Jan\u0027s stuff is not there\n  yet.\"\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (64 commits)\n  ext4: initialization of ext4_li_mtx needs to be done earlier\n  debugfs-related mode_t whack-a-mole\n  hfsplus: add an ioctl to bless files\n  hfsplus: change finder_info to u32\n  hfsplus: initialise userflags\n  qnx4: new helper - try_extent()\n  qnx4: get rid of qnx4_bread/qnx4_getblk\n  take removal of PF_FORKNOEXEC to flush_old_exec()\n  trim includes in inode.c\n  um: uml_dup_mmap() relies on -\u003emmap_sem being held, but activate_mm() doesn\u0027t hold it\n  um: embed -\u003estub_pages[] into mmu_context\n  gadgetfs: list_for_each_safe() misuse\n  ocfs2: fix leaks on failure exits in module_init\n  ecryptfs: make register_filesystem() the last potential failure exit\n  ntfs: forgets to unregister sysctls on register_filesystem() failure\n  logfs: missing cleanup on register_filesystem() failure\n  jfs: mising cleanup on register_filesystem() failure\n  make configfs_pin_fs() return root dentry on success\n  configfs: configfs_create_dir() has parent dentry in dentry-\u003ed_parent\n  configfs: sanitize configfs_create()\n  ...\n"
    },
    {
      "commit": "9fcf03d0d6e845ed495fc8b1ec328b473ff298b3",
      "tree": "0993aaa5e0b2dc25055b265b8aba9f5545c0f6a0",
      "parents": [
        "cd1ea261ac128479833b9f518bf788ee47ada2de"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 13 22:06:28 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 20 21:29:40 2012 -0400"
      },
      "message": "aio: fix the comment in aio_kick_handler()\n\n\tIt should\u0027ve been changed when queue_work() became\nqueue_delayed_work(..., 0) in there.  It\u0027s always had been\nabout not needing a delay, not about not using specific\nfunction...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "cd1ea261ac128479833b9f518bf788ee47ada2de",
      "tree": "d28edbd48ff88e3576ebde702b9fd9c5a235cf1d",
      "parents": [
        "bf50722a3c4a83aae651dc20b708308a4f119eb9"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Mar 11 00:59:07 2012 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 20 21:29:39 2012 -0400"
      },
      "message": "aio: don\u0027t bother with cancel_delayed_work() in exit_aio()\n\n__put_ioctx() will cover it anyway.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "bf50722a3c4a83aae651dc20b708308a4f119eb9",
      "tree": "08d4724ae2239d2d23040eae730ad7980f4a2299",
      "parents": [
        "9fa1cb397fa052fc9acfaf5a9f2faff31e10f6b7"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Mar 11 00:58:40 2012 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 20 21:29:39 2012 -0400"
      },
      "message": "aio: use cancel_delayed_work_sync()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "9fa1cb397fa052fc9acfaf5a9f2faff31e10f6b7",
      "tree": "4dfb32cac8ef67c312dec2e0232816913c6cc447",
      "parents": [
        "2dd542b7aeb1c222273cf0593a718d9b44998d9f"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Mar 10 23:14:05 2012 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 20 21:29:39 2012 -0400"
      },
      "message": "aio: aio_nr_lock is taken only synchronously now\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "2dd542b7aeb1c222273cf0593a718d9b44998d9f",
      "tree": "aea852e444475a669e1cb21a328b980ba19b9ecb",
      "parents": [
        "e23754f880f10124f0a2848f9d17e361a295378e"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Mar 10 23:10:35 2012 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 20 21:29:38 2012 -0400"
      },
      "message": "aio: aio_nr decrements don\u0027t need to be delayed\n\nwe can do that right in __put_ioctx(); as the result, the loop\nin ioctx_alloc() can be killed.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e23754f880f10124f0a2848f9d17e361a295378e",
      "tree": "c4e3b11b21e24227179f04314ed0b774524f8c28",
      "parents": [
        "5d026c7242201e7c9d0e12fcb2bcaffead9d59fd"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 06 14:33:22 2012 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 20 21:29:38 2012 -0400"
      },
      "message": "aio: don\u0027t bother with async freeing on failure in ioctx_alloc()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e8e3c3d66fd9d1ee2250f68d778cc48c1346d228",
      "tree": "2d69e1bb0cefe36bbfc4b75ddfa6cec8e72bcb98",
      "parents": [
        "c6daa7ffa834c850b3dbb38af6980415caef680d"
      ],
      "author": {
        "name": "Cong Wang",
        "email": "amwang@redhat.com",
        "time": "Fri Nov 25 23:14:27 2011 +0800"
      },
      "committer": {
        "name": "Cong Wang",
        "email": "xiyou.wangcong@gmail.com",
        "time": "Tue Mar 20 21:48:21 2012 +0800"
      },
      "message": "fs: remove the second argument of k[un]map_atomic()\n\nAcked-by: Benjamin LaHaise \u003cbcrl@kvack.org\u003e\nSigned-off-by: Cong Wang \u003camwang@redhat.com\u003e\n"
    },
    {
      "commit": "c7b285550544c22bc005ec20978472c9ac7138c6",
      "tree": "2115cba489066af001312bf93d9f07321e25bf12",
      "parents": [
        "86b62a2cb4fc09037bbce2959d2992962396fd7f"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ZenIV.linux.org.uk",
        "time": "Thu Mar 08 17:51:19 2012 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 09 18:59:59 2012 -0800"
      },
      "message": "aio: fix the \"too late munmap()\" race\n\nCurrent code has put_ioctx() called asynchronously from aio_fput_routine();\nthat\u0027s done *after* we have killed the request that used to pin ioctx,\nso there\u0027s nothing to stop io_destroy() waiting in wait_for_all_aios()\nfrom progressing.  As the result, we can end up with async call of\nput_ioctx() being the last one and possibly happening during exit_mmap()\nor elf_core_dump(), neither of which expects stray munmap() being done\nto them...\n\nWe do need to prevent _freeing_ ioctx until aio_fput_routine() is done\nwith that, but that\u0027s all we care about - neither io_destroy() nor\nexit_aio() will progress past wait_for_all_aios() until aio_fput_routine()\ndoes really_put_req(), so the ioctx teardown won\u0027t be done until then\nand we don\u0027t care about the contents of ioctx past that point.\n\nSince actual freeing of these suckers is RCU-delayed, we don\u0027t need to\nbump ioctx refcount when request goes into list for async removal.\nAll we need is rcu_read_lock held just over the -\u003ectx_lock-protected\narea in aio_fput_routine().\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nReviewed-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nAcked-by: Benjamin LaHaise \u003cbcrl@kvack.org\u003e\nCc: stable@vger.kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "86b62a2cb4fc09037bbce2959d2992962396fd7f",
      "tree": "ea45bb1de1f49862415b5643dea840318d02ee67",
      "parents": [
        "86e06008338e5712603613a0f6770500f79e83bd"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ZenIV.linux.org.uk",
        "time": "Wed Mar 07 05:16:35 2012 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 09 18:59:59 2012 -0800"
      },
      "message": "aio: fix io_setup/io_destroy race\n\nHave ioctx_alloc() return an extra reference, so that caller would drop it\non success and not bother with re-grabbing it on failure exit.  The current\ncode is obviously broken - io_destroy() from another thread that managed\nto guess the address io_setup() would\u0027ve returned would free ioctx right\nunder us; gets especially interesting if aio_context_t * we pass to\nio_setup() points to PROT_READ mapping, so put_user() fails and we end\nup doing io_destroy() on kioctx another thread has just got freed...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nAcked-by: Benjamin LaHaise \u003cbcrl@kvack.org\u003e\nReviewed-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nCc: stable@vger.kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "880641bb9da2473e9ecf6c708d993b29928c1b3c",
      "tree": "f0c73e19cc50010ee04653703d92b243fa0823de",
      "parents": [
        "f986a499ef6f317d906e6f6f281be966e1237a10"
      ],
      "author": {
        "name": "Jeff Moyer",
        "email": "jmoyer@redhat.com",
        "time": "Mon Mar 05 14:59:12 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 05 15:49:42 2012 -0800"
      },
      "message": "aio: wake up waiters when freeing unused kiocbs\n\nBart Van Assche reported a hung fio process when either hot-removing\nstorage or when interrupting the fio process itself.  The (pruned) call\ntrace for the latter looks like so:\n\n  fio             D 0000000000000001     0  6849   6848 0x00000004\n   ffff880092541b88 0000000000000046 ffff880000000000 ffff88012fa11dc0\n   ffff88012404be70 ffff880092541fd8 ffff880092541fd8 ffff880092541fd8\n   ffff880128b894d0 ffff88012404be70 ffff880092541b88 000000018106f24d\n  Call Trace:\n    schedule+0x3f/0x60\n    io_schedule+0x8f/0xd0\n    wait_for_all_aios+0xc0/0x100\n    exit_aio+0x55/0xc0\n    mmput+0x2d/0x110\n    exit_mm+0x10d/0x130\n    do_exit+0x671/0x860\n    do_group_exit+0x44/0xb0\n    get_signal_to_deliver+0x218/0x5a0\n    do_signal+0x65/0x700\n    do_notify_resume+0x65/0x80\n    int_signal+0x12/0x17\n\nThe problem lies with the allocation batching code.  It will\nopportunistically allocate kiocbs, and then trim back the list of iocbs\nwhen there is not enough room in the completion ring to hold all of the\nevents.\n\nIn the case above, what happens is that the pruning back of events ends\nup freeing up the last active request and the context is marked as dead,\nso it is thus responsible for waking up waiters.  Unfortunately, the\ncode does not check for this condition, so we end up with a hung task.\n\nSigned-off-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nReported-by: Bart Van Assche \u003cbvanassche@acm.org\u003e\nTested-by: Bart Van Assche \u003cbvanassche@acm.org\u003e\nCc: \u003cstable@kernel.org\u003e\t\t[3.2.x only]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "630d9c47274aa89bfa77fe6556d7818bdcb12992",
      "tree": "501b418c3c89d4c80113aa2fdbbc917eedacd2d4",
      "parents": [
        "13ae246db4a02971ef4f557af1f6d3e21d64b710"
      ],
      "author": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Wed Nov 16 23:57:37 2011 -0500"
      },
      "committer": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Tue Feb 28 19:31:58 2012 -0500"
      },
      "message": "fs: reduce the use of module.h wherever possible\n\nFor files only using THIS_MODULE and/or EXPORT_SYMBOL, map\nthem onto including export.h -- or if the file isn\u0027t even\nusing those, then just delete the include.  Fix up any implicit\ninclude dependencies that were being masked by module.h along\nthe way.\n\nSigned-off-by: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\n"
    },
    {
      "commit": "69e4747ee9727d660b88d7e1efe0f4afcb35db1b",
      "tree": "2dde4642ad0dba19688b664c4397c61cf9ebce25",
      "parents": [
        "a3301b751b19f0efbafddc4034f8e7ce6bf3007b"
      ],
      "author": {
        "name": "Gleb Natapov",
        "email": "gleb@redhat.com",
        "time": "Sun Jan 08 17:07:28 2012 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 13 20:39:44 2012 -0800"
      },
      "message": "Unused iocbs in a batch should not be accounted as active.\n\nSince commit 080d676de095 (\"aio: allocate kiocbs in batches\") iocbs are\nallocated in a batch during processing of first iocbs.  All iocbs in a\nbatch are automatically added to ctx-\u003eactive_reqs list and accounted in\nctx-\u003ereqs_active.\n\nIf one (not the last one) of iocbs submitted by an user fails, further\niocbs are not processed, but they are still present in ctx-\u003eactive_reqs\nand accounted in ctx-\u003ereqs_active.  This causes process to stuck in a D\nstate in wait_for_all_aios() on exit since ctx-\u003ereqs_active will never\ngo down to zero.  Furthermore since kiocb_batch_free() frees iocb\nwithout removing it from active_reqs list the list become corrupted\nwhich may cause oops.\n\nFix this by removing iocb from ctx-\u003eactive_reqs and updating\nctx-\u003ereqs_active in kiocb_batch_free().\n\nSigned-off-by: Gleb Natapov \u003cgleb@redhat.com\u003e\nReviewed-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nCc: stable@kernel.org   # 3.2\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "080d676de095a14ecba14c0b9a91acb5bbb634df",
      "tree": "4a4c56bc86a8edf4a42f8ec7c65ba795997e50ab",
      "parents": [
        "2ca02df6b098be2d33a99a65531dcd84a10b6e21"
      ],
      "author": {
        "name": "Jeff Moyer",
        "email": "jmoyer@redhat.com",
        "time": "Wed Nov 02 13:40:10 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 02 16:07:03 2011 -0700"
      },
      "message": "aio: allocate kiocbs in batches\n\nIn testing aio on a fast storage device, I found that the context lock\ntakes up a fair amount of cpu time in the I/O submission path.  The reason\nis that we take it for every I/O submitted (see __aio_get_req).  Since we\nknow how many I/Os are passed to io_submit, we can preallocate the kiocbs\nin batches, reducing the number of times we take and release the lock.\n\nIn my testing, I was able to reduce the amount of time spent in\n_raw_spin_lock_irq by .56% (average of 3 runs).  The command I used to\ntest this was:\n\n   aio-stress -O -o 2 -o 3 -r 8 -d 128 -b 32 -i 32 -s 16384 \u003cdev\u003e\n\nI also tested the patch with various numbers of events passed to\nio_submit, and I ran the xfstests aio group of tests to ensure I didn\u0027t\nbreak anything.\n\nSigned-off-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nCc: Daniel Ehrenberg \u003cdehrenberg@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": "fcf634098c00dd9cd247447368495f0b79be12d1",
      "tree": "77fc98cd461bd52ba3b14e833d54a115ffbbd7bc",
      "parents": [
        "32ea845d5bafc37b7406bea1aee3005407cb0900"
      ],
      "author": {
        "name": "Christopher Yeoh",
        "email": "cyeoh@au1.ibm.com",
        "time": "Mon Oct 31 17:06:39 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:44 2011 -0700"
      },
      "message": "Cross Memory Attach\n\nThe basic idea behind cross memory attach is to allow MPI programs doing\nintra-node communication to do a single copy of the message rather than a\ndouble copy of the message via shared memory.\n\nThe following patch attempts to achieve this by allowing a destination\nprocess, given an address and size from a source process, to copy memory\ndirectly from the source process into its own address space via a system\ncall.  There is also a symmetrical ability to copy from the current\nprocess\u0027s address space into a destination process\u0027s address space.\n\n- Use of /proc/pid/mem has been considered, but there are issues with\n  using it:\n  - Does not allow for specifying iovecs for both src and dest, assuming\n    preadv or pwritev was implemented either the area read from or\n  written to would need to be contiguous.\n  - Currently mem_read allows only processes who are currently\n  ptrace\u0027ing the target and are still able to ptrace the target to read\n  from the target. This check could possibly be moved to the open call,\n  but its not clear exactly what race this restriction is stopping\n  (reason  appears to have been lost)\n  - Having to send the fd of /proc/self/mem via SCM_RIGHTS on unix\n  domain socket is a bit ugly from a userspace point of view,\n  especially when you may have hundreds if not (eventually) thousands\n  of processes  that all need to do this with each other\n  - Doesn\u0027t allow for some future use of the interface we would like to\n  consider adding in the future (see below)\n  - Interestingly reading from /proc/pid/mem currently actually\n  involves two copies! (But this could be fixed pretty easily)\n\nAs mentioned previously use of vmsplice instead was considered, but has\nproblems.  Since you need the reader and writer working co-operatively if\nthe pipe is not drained then you block.  Which requires some wrapping to\ndo non blocking on the send side or polling on the receive.  In all to all\ncommunication it requires ordering otherwise you can deadlock.  And in the\nexample of many MPI tasks writing to one MPI task vmsplice serialises the\ncopying.\n\nThere are some cases of MPI collectives where even a single copy interface\ndoes not get us the performance gain we could.  For example in an\nMPI_Reduce rather than copy the data from the source we would like to\ninstead use it directly in a mathops (say the reduce is doing a sum) as\nthis would save us doing a copy.  We don\u0027t need to keep a copy of the data\nfrom the source.  I haven\u0027t implemented this, but I think this interface\ncould in the future do all this through the use of the flags - eg could\nspecify the math operation and type and the kernel rather than just\ncopying the data would apply the specified operation between the source\nand destination and store it in the destination.\n\nAlthough we don\u0027t have a \"second user\" of the interface (though I\u0027ve had\nsome nibbles from people who may be interested in using it for intra\nprocess messaging which is not MPI).  This interface is something which\nhardware vendors are already doing for their custom drivers to implement\nfast local communication.  And so in addition to this being useful for\nOpenMPI it would mean the driver maintainers don\u0027t have to fix things up\nwhen the mm changes.\n\nThere was some discussion about how much faster a true zero copy would\ngo. Here\u0027s a link back to the email with some testing I did on that:\n\nhttp://marc.info/?l\u003dlinux-mm\u0026m\u003d130105930902915\u0026w\u003d2\n\nThere is a basic man page for the proposed interface here:\n\nhttp://ozlabs.org/~cyeoh/cma/process_vm_readv.txt\n\nThis has been implemented for x86 and powerpc, other architecture should\nmainly (I think) just need to add syscall numbers for the process_vm_readv\nand process_vm_writev. There are 32 bit compatibility versions for\n64-bit kernels.\n\nFor arch maintainers there are some simple tests to be able to quickly\nverify that the syscalls are working correctly here:\n\nhttp://ozlabs.org/~cyeoh/cma/cma-test-20110718.tgz\n\nSigned-off-by: Chris Yeoh \u003cyeohc@au1.ibm.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Arnd Bergmann \u003carnd@arndb.de\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nCc: \u003clinux-man@vger.kernel.org\u003e\nCc: \u003clinux-arch@vger.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": "6c5103890057b1bb781b26b7aae38d33e4c517d8",
      "tree": "e6e57961dcddcb5841acb34956e70b9dc696a880",
      "parents": [
        "3dab04e6978e358ad2307bca563fabd6c5d2c58b",
        "9d2e157d970a73b3f270b631828e03eb452d525e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 24 10:16:26 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 24 10:16:26 2011 -0700"
      },
      "message": "Merge branch \u0027for-2.6.39/core\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.39/core\u0027 of git://git.kernel.dk/linux-2.6-block: (65 commits)\n  Documentation/iostats.txt: bit-size reference etc.\n  cfq-iosched: removing unnecessary think time checking\n  cfq-iosched: Don\u0027t clear queue stats when preempt.\n  blk-throttle: Reset group slice when limits are changed\n  blk-cgroup: Only give unaccounted_time under debug\n  cfq-iosched: Don\u0027t set active queue in preempt\n  block: fix non-atomic access to genhd inflight structures\n  block: attempt to merge with existing requests on plug flush\n  block: NULL dereference on error path in __blkdev_get()\n  cfq-iosched: Don\u0027t update group weights when on service tree\n  fs: assign sb-\u003es_bdi to default_backing_dev_info if the bdi is going away\n  block: Require subsystems to explicitly allocate bio_set integrity mempool\n  jbd2: finish conversion from WRITE_SYNC_PLUG to WRITE_SYNC and explicit plugging\n  jbd: finish conversion from WRITE_SYNC_PLUG to WRITE_SYNC and explicit plugging\n  fs: make fsync_buffers_list() plug\n  mm: make generic_writepages() use plugging\n  blk-cgroup: Add unaccounted time to timeslice_used.\n  block: fixup plugging stubs for !CONFIG_BLOCK\n  block: remove obsolete comments for blkdev_issue_zeroout.\n  blktrace: Use rq-\u003ecmd_flags directly in blk_add_trace_rq.\n  ...\n\nFix up conflicts in fs/{aio.c,super.c}\n"
    },
    {
      "commit": "e91f90bb0bb10be9cc8efd09a3cf4ecffcad0db1",
      "tree": "bd9c134e875a3a96a5f96bbde9a112c180ba3d4f",
      "parents": [
        "77d1c8eb8a8e0989f4c46e9a40bbd4185d34974e"
      ],
      "author": {
        "name": "Roland Dreier",
        "email": "roland@purestorage.com",
        "time": "Tue Mar 22 16:35:10 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 22 17:44:17 2011 -0700"
      },
      "message": "aio: wake all waiters when destroying ctx\n\nThe test program below will hang because io_getevents() uses\nadd_wait_queue_exclusive(), which means the wake_up() in io_destroy() only\nwakes up one of the threads.  Fix this by using wake_up_all() in the aio\ncode paths where we want to make sure no one gets stuck.\n\n\t// t.c -- compile with gcc -lpthread -laio t.c\n\n\t#include \u003clibaio.h\u003e\n\t#include \u003cpthread.h\u003e\n\t#include \u003cstdio.h\u003e\n\t#include \u003cunistd.h\u003e\n\n\tstatic const int nthr \u003d 2;\n\n\tvoid *getev(void *ctx)\n\t{\n\t\tstruct io_event ev;\n\t\tio_getevents(ctx, 1, 1, \u0026ev, NULL);\n\t\tprintf(\"io_getevents returned\\n\");\n\t\treturn NULL;\n\t}\n\n\tint main(int argc, char *argv[])\n\t{\n\t\tio_context_t ctx \u003d 0;\n\t\tpthread_t thread[nthr];\n\t\tint i;\n\n\t\tio_setup(1024, \u0026ctx);\n\n\t\tfor (i \u003d 0; i \u003c nthr; ++i)\n\t\t\tpthread_create(\u0026thread[i], NULL, getev, ctx);\n\n\t\tsleep(1);\n\n\t\tio_destroy(ctx);\n\n\t\tfor (i \u003d 0; i \u003c nthr; ++i)\n\t\t\tpthread_join(thread[i], NULL);\n\n\t\treturn 0;\n\t}\n\nSigned-off-by: Roland Dreier \u003croland@purestorage.com\u003e\nReviewed-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nCc: \u003cstable@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": "bd2895eeade5f11f3e5906283c630bbdb4b57454",
      "tree": "4d98f4fcd80c7d062afce28823d08aee53e66f82",
      "parents": [
        "016aa2ed1cc9cf704cf76d8df07751b6daa9750f",
        "24d51add7438f9696a7205927bf9de3c5c787a58"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 16 08:20:19 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 16 08:20:19 2011 -0700"
      },
      "message": "Merge branch \u0027for-2.6.39\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq\n\n* \u0027for-2.6.39\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq:\n  workqueue: fix build failure introduced by s/freezeable/freezable/\n  workqueue: add system_freezeable_wq\n  rds/ib: use system_wq instead of rds_ib_fmr_wq\n  net/9p: replace p9_poll_task with a work\n  net/9p: use system_wq instead of p9_mux_wq\n  xfs: convert to alloc_workqueue()\n  reiserfs: make commit_wq use the default concurrency level\n  ocfs2: use system_wq instead of ocfs2_quota_wq\n  ext4: convert to alloc_workqueue()\n  scsi/scsi_tgt_lib: scsi_tgtd isn\u0027t used in memory reclaim path\n  scsi/be2iscsi,qla2xxx: convert to alloc_workqueue()\n  misc/iwmc3200top: use system_wq instead of dedicated workqueues\n  i2o: use alloc_workqueue() instead of create_workqueue()\n  acpi: kacpi*_wq don\u0027t need WQ_MEM_RECLAIM\n  fs/aio: aio_wq isn\u0027t used in memory reclaim path\n  input/tps6507x-ts: use system_wq instead of dedicated workqueue\n  cpufreq: use system_wq instead of dedicated workqueues\n  wireless/ipw2x00: use system_wq instead of dedicated workqueues\n  arm/omap: use system_wq in mailbox\n  workqueue: use WQ_MEM_RECLAIM instead of WQ_RESCUER\n"
    },
    {
      "commit": "4c63f5646e405b5010cc9499419060bf2e838f5b",
      "tree": "df91ba315032c8ec4aafeb3ab96fdfa7c6c656e1",
      "parents": [
        "cafb0bfca1a73efd6d8a4a6a6a716e6134b96c24",
        "69d60eb96ae8a73cf9b79cf28051caf973006011"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 10 08:58:35 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 10 08:58:35 2011 +0100"
      },
      "message": "Merge branch \u0027for-2.6.39/stack-plug\u0027 into for-2.6.39/core\n\nConflicts:\n\tblock/blk-core.c\n\tblock/blk-flush.c\n\tdrivers/md/raid1.c\n\tdrivers/md/raid10.c\n\tdrivers/md/raid5.c\n\tfs/nilfs2/btnode.c\n\tfs/nilfs2/mdt.c\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "cf15900e1209d5b46ec2d24643adbf561830935f",
      "tree": "f66ed809657402d7c0a082b19a1a64745b604fe7",
      "parents": [
        "9f5b9425468c85a901d863d241ba5c5dff9b23b8"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Wed Mar 02 20:12:18 2011 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 10 08:52:27 2011 +0100"
      },
      "message": "aio: remove request submission batching\n\nThis should be useless now that we have on-stack plugging. So lets just\nkill it.\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "9f5b9425468c85a901d863d241ba5c5dff9b23b8",
      "tree": "0b24e591059698f1e9cb581038d112d5e3f2f4d2",
      "parents": [
        "2ed1a6bcf97a7ed787e6799bf2e80b9e6f51dca7"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Thu Jul 01 07:55:01 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 10 08:52:27 2011 +0100"
      },
      "message": "fs: make aio plug\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "7eaceaccab5f40bbfda044629a6298616aeaed50",
      "tree": "33954d12f63e25a47eb6d86ef3d3d0a5e62bf752",
      "parents": [
        "73c101011926c5832e6e141682180c4debe2cf45"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 10 08:52:07 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 10 08:52:07 2011 +0100"
      },
      "message": "block: remove per-queue plugging\n\nCode has been converted over to the new explicit on-stack plugging,\nand delay users have been converted to use the new API for that.\nSo lets kill off the old plugging along with aops-\u003esync_page().\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "7137c6bd455234bcb7560fd829e6ee49cae5fed6",
      "tree": "7b463cfaf8a051fd6bc2bd2aaf4141659c982ee5",
      "parents": [
        "3bd9a5d734c7cc7533b27abf451416c7f50095a7"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri Feb 25 14:44:27 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Feb 25 15:07:37 2011 -0800"
      },
      "message": "aio: fix race between io_destroy() and io_submit()\n\nA race can occur when io_submit() races with io_destroy():\n\n CPU1\t\t\t\t\t\tCPU2\nio_submit()\n  do_io_submit()\n    ...\n    ctx \u003d lookup_ioctx(ctx_id);\n\t\t\t\t\t\tio_destroy()\n    Now do_io_submit() holds the last reference to ctx.\n    ...\n    queue new AIO\n    put_ioctx(ctx) - frees ctx with active AIOs\n\nWe solve this issue by checking whether ctx is being destroyed in AIO\nsubmission path after adding new AIO to ctx.  Then we are guaranteed that\neither io_destroy() waits for new AIO or we see that ctx is being\ndestroyed and bail out.\n\nCc: Nick Piggin \u003cnpiggin@kernel.dk\u003e\nReviewed-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3bd9a5d734c7cc7533b27abf451416c7f50095a7",
      "tree": "357fc4ec95d7163cb96891151df51f6d7d130d0a",
      "parents": [
        "29723fccc837d20039078f7a571e8d457eb0d6c6"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@gmail.com",
        "time": "Fri Feb 25 14:44:26 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Feb 25 15:07:37 2011 -0800"
      },
      "message": "aio: fix rcu ioctx lookup\n\naio-dio-invalidate-failure GPFs in aio_put_req from io_submit.\n\nlookup_ioctx doesn\u0027t implement the rcu lookup pattern properly.\nrcu_read_lock does not prevent refcount going to zero, so we might take\na refcount on a zero count ioctx.\n\nFix the bug by atomically testing for zero refcount before incrementing.\n\n[jack@suse.cz: added comment into the code]\nReviewed-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d37adaa1596246929f7ab49843fd124595506175",
      "tree": "d7245f60b732d0753b2b2cb4851a54d5829c1838",
      "parents": [
        "1c1e8646963e319132b4cf551fbfd10b364d0aed"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jan 26 17:42:27 2011 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jan 26 17:42:27 2011 +0100"
      },
      "message": "fs/aio: aio_wq isn\u0027t used in memory reclaim path\n\naio_wq isn\u0027t used during memory reclaim.  Convert to alloc_workqueue()\nwithout WQ_MEM_RECLAIM.  It\u0027s possible to use system_wq but given that\nthe number of work items is determined from userland and the work item\nmay block, enforcing strict concurrency limit would be a good idea.\n\nAlso, move fput_work to system_wq so that aio_wq is used soley to\nthrottle the max concurrency of aio work items and fput_work doesn\u0027t\ninteract with other work items.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nCc: Benjamin LaHaise \u003cbcrl@kvack.org\u003e\nCc: linux-aio@kvack.org\n"
    },
    {
      "commit": "27eaa1c90c608aa907336c2743d5ecf35c469440",
      "tree": "33c8e07c5935792fc755ce6ddea660fcd84d65f1",
      "parents": [
        "274052ef0bac011249925f6616d147b1491fc601"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Tue Dec 14 00:06:25 2010 +0900"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jan 17 05:12:44 2011 -0500"
      },
      "message": "aio: check return value of create_workqueue()\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "d3486f8b9eebcaa15ba8b72b63217e317f4f8635",
      "tree": "ec075f15d9d4c4cd539a94e59466a197b799e28c",
      "parents": [
        "2e41025598ea7abb4330db98f78c5a084e25682f"
      ],
      "author": {
        "name": "Jeff Moyer",
        "email": "jmoyer@redhat.com",
        "time": "Wed Jan 12 17:01:08 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 08:03:22 2011 -0800"
      },
      "message": "aio: remove unused aio_run_iocbs()\n\naio_run_iocbs() is not used at all, so get rid of it.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Jeff Moyer \u003cjmoyer@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": "2e41025598ea7abb4330db98f78c5a084e25682f",
      "tree": "ea24168d4204de1f86330ba446dad33caebf3ba7",
      "parents": [
        "d27a0c06ec31aadc3582f50cd7b88855922e95ae"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Wed Jan 12 17:01:08 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 08:03:22 2011 -0800"
      },
      "message": "aio: remove unnecessary check\n\n\u0027nr \u003e\u003d min_nr \u003e\u003d 0\u0027 always satisfies \u0027nr \u003e\u003d 0\u0027 so the check is unnecesary.\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nAcked-by: Jeff Moyer \u003cjmoyer@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": "7de9c6ee3ecffd99e1628e81a5ea5468f7581a1f",
      "tree": "88787e77ba8a253d0a26aeda4bd5e58532d592e0",
      "parents": [
        "646ec4615cd05972581c9c5342ed7a1e77df17bb"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Oct 23 11:11:40 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 25 21:26:11 2010 -0400"
      },
      "message": "new helper: ihold()\n\nClones an existing reference to inode; caller must already hold one.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "306fb0979443419288594446a348155a8027dcf2",
      "tree": "757dc3d7fa87ad693ac40860d996349dc277872b",
      "parents": [
        "e1455d1bdccbe056ba53479741b1452106ce59aa"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Aug 23 10:47:55 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 25 21:18:23 2010 -0400"
      },
      "message": "aio: bump i_count instead of using igrab\n\nThe aio batching code is using igrab to get an extra reference on the\ninode so it can safely batch.  igrab will go ahead and take the global\ninode spinlock, which can be a bottleneck on large machines doing lots\nof AIO.\n\nIn this case, igrab isn\u0027t required because we already have a reference\non the file handle.  It is safe to just bump the i_count directly\non the inode.\n\nBenchmarking shows this patch brings IOP/s on tons of flash up by about\n2.5X.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "a0c42bac79731276c9b2f28d54f9e658fcf843a2",
      "tree": "c138e92f301f6f10ca684c1d83126928452f0ffa",
      "parents": [
        "d1908362ae0b97374eb8328fbb471576332f9fb1"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Sep 22 13:05:03 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 22 17:22:39 2010 -0700"
      },
      "message": "aio: do not return ERESTARTSYS as a result of AIO\n\nOCFS2 can return ERESTARTSYS from its write function when the process is\nsignalled while waiting for a cluster lock (and the filesystem is mounted\nwith intr mount option).  Generally, it seems reasonable to allow\nfilesystems to return this error code from its IO functions.  As we must\nnot leak ERESTARTSYS (and similar error codes) to userspace as a result of\nan AIO operation, we have to properly convert it to EINTR inside AIO code\n(restarting the syscall isn\u0027t really an option because other AIO could\nhave been already submitted by the same io_submit syscall).\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nReviewed-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Zach Brown \u003czach.brown@oracle.com\u003e\nCc: \u003cstable@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": "75e1c70fc31490ef8a373ea2a4bea2524099b478",
      "tree": "4fc943276b4a34374ac26d69e63b815bf66c2451",
      "parents": [
        "bfa88ea7ee9e6b4fd673e45a8cc0a8e0b7ef4761"
      ],
      "author": {
        "name": "Jeff Moyer",
        "email": "jmoyer@redhat.com",
        "time": "Fri Sep 10 14:16:00 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 14 17:02:37 2010 -0700"
      },
      "message": "aio: check for multiplication overflow in do_io_submit\n\nTavis Ormandy pointed out that do_io_submit does not do proper bounds\nchecking on the passed-in iocb array:\n\n       if (unlikely(nr \u003c 0))\n               return -EINVAL;\n\n       if (unlikely(!access_ok(VERIFY_READ, iocbpp, (nr*sizeof(iocbpp)))))\n               return -EFAULT;                      ^^^^^^^^^^^^^^^^^^\n\nThe attached patch checks for overflow, and if it is detected, the\nnumber of iocbs submitted is scaled down to a number that will fit in\nthe long.  This is an ok thing to do, as sys_io_submit is documented as\nreturning the number of iocbs submitted, so callers should handle a\nreturn value of less than the \u0027nr\u0027 argument passed in.\n\nReported-by: Tavis Ormandy \u003ctaviso@cmpxchg8b.com\u003e\nSigned-off-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "642b5123ac5ec40a28575e930a3e2ff595473e9d",
      "tree": "296d1e17f0ac7c1ef5d889a2754f26dd0aca9ba8",
      "parents": [
        "cdd854bc42b5e6c79bbbc40c6600d995ffe6e747"
      ],
      "author": {
        "name": "Satoru Takeuchi",
        "email": "takeuchi_satoru@jp.fujitsu.com",
        "time": "Thu Aug 05 11:23:11 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Aug 05 13:21:23 2010 -0700"
      },
      "message": "aio: fix wrong subsystem comments\n\n - sys_io_destroy(): acutually return -EINVAL if the context pointed to\n   is invalidIndex: linux-2.6.33-rc4/fs/aio.c\n - sys_io_getevents(): An argument specifying timeout is not `when\u0027,\n   but `timeout\u0027.\n - sys_io_getevents(): Should describe what is returned if this syscall\n   succeeds.\n\nSigned-off-by: Satoru Takeuchi \u003ctakeuchi_satoru@jp.fujitsu.com\u003e\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nReviewed-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d7065da038227a4d09a244e6014e0186a6bd21d0",
      "tree": "0b3b30a6ec59aa03e5fb7084eed31f2a5dfc9686",
      "parents": [
        "176306f59ac7a35369cbba87aff13e14c5916074"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed May 26 15:13:55 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu May 27 22:03:07 2010 -0400"
      },
      "message": "get rid of the magic around f_count in aio\n\n__aio_put_req() plays sick games with file refcount.  What\nit wants is fput() from atomic context; it\u0027s almost always\ndone with f_count \u003e 1, so they only have to deal with delayed\nwork in rare cases when their reference happens to be the\nlast one.  Current code decrements f_count and if it hasn\u0027t\nhit 0, everything is fine.  Otherwise it keeps a pointer\nto struct file (with zero f_count!) around and has delayed\nwork do __fput() on it.\n\nBetter way to do it: use atomic_long_add_unless( , -1, 1)\ninstead of !atomic_long_dec_and_test().  IOW, decrement it\nonly if it\u0027s not the last reference, leave refcount alone\nif it was.  And use normal fput() in delayed work.\n\nI\u0027ve made that atomic_long_add_unless call a new helper -\nfput_atomic().  Drops a reference to file if it\u0027s safe to\ndo in atomic (i.e. if that\u0027s not the last one), tells if\nit had been able to do that.  aio.c converted to it, __fput()\nuse is gone.  req-\u003eki_file *always* contributes to refcount\nnow.  And __fput() became static.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "9d85cba718efeef9ca00ce3f7f34f5880737aa9b",
      "tree": "d445d35d915b65dac171e58f83c75feb15d625fd",
      "parents": [
        "b83733639a494d5f42fa00a2506563fbd2d3015d"
      ],
      "author": {
        "name": "Jeff Moyer",
        "email": "jmoyer@redhat.com",
        "time": "Wed May 26 14:44:26 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 27 09:12:53 2010 -0700"
      },
      "message": "aio: fix the compat vectored operations\n\nThe aio compat code was not converting the struct iovecs from 32bit to\n64bit pointers, causing either EINVAL to be returned from io_getevents, or\nEFAULT as the result of the I/O.  This patch passes a compat flag to\nio_submit to signal that pointer conversion is necessary for a given iocb\narray.\n\nA variant of this was tested by Michael Tokarev.  I have also updated the\nlibaio test harness to exercise this code path with good success.\nFurther, I grabbed a copy of ltp and ran the\ntestcases/kernel/syscall/readv and writev tests there (compiled with -m32\non my 64bit system).  All seems happy, but extra eyes on this would be\nwelcome.\n\n[akpm@linux-foundation.org: coding-style fixes]\n[akpm@linux-foundation.org: fix CONFIG_COMPAT\u003dn build]\nSigned-off-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nReported-by: Michael Tokarev \u003cmjt@tls.msk.ru\u003e\nCc: Zach Brown \u003czach.brown@oracle.com\u003e\nCc: \u003cstable@kernel.org\u003e\t\t[2.6.35.1]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "fac046ad0b1ee2c4244ebf43a26433ef0ea29ae4",
      "tree": "a2354b6b80efebbbd0d0f24a325a722ad06b5a54",
      "parents": [
        "ea58ceb543b45d45b257a86eaf9d60c94e8adcf2"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Tue Dec 15 16:47:47 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 16 07:20:13 2009 -0800"
      },
      "message": "aio: remove unused field\n\nDon\u0027t know the reason, but it appears ki_wait field of iocb never gets used.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nCc: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nCc: Benjamin LaHaise \u003cbcrl@kvack.org\u003e\nCc: Zach Brown \u003czach.brown@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b9d128f1088ea5245109dfc9bbceb128b6371a77",
      "tree": "63e85f281dd372e77af4022e2235a4e5a46287de",
      "parents": [
        "a870a3a485ddf7c0dec549269ed71d169556d61c"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 29 13:59:26 2009 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 29 13:59:26 2009 +0100"
      },
      "message": "block: move bdi/address_space unplug functions to backing-dev.h\n\nThere\u0027s nothing block related about them, the backing device\nis used by things like NFS etc as well. This gets rid of the\nneed to protect such calls by CONFIG_BLOCK.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "cfb1e33eed48165763edc7a4a067cf5f74898d0b",
      "tree": "d0e0bdd0664615b1f7be6cf770476e16dbcad116",
      "parents": [
        "1af60fbd759d31f565552fea315c2033947cfbe6"
      ],
      "author": {
        "name": "Jeff Moyer",
        "email": "jmoyer@redhat.com",
        "time": "Fri Oct 02 18:57:36 2009 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Oct 28 09:29:25 2009 +0100"
      },
      "message": "aio: implement request batching\n\nHi,\n\nSome workloads issue batches of small I/O, and the performance is poor\ndue to the call to blk_run_address_space for every single iocb.  Nathan\nRoberts pointed this out, and suggested that by deferring this call\nuntil all I/Os in the iocb array are submitted to the block layer, we\ncan realize some impressive performance gains (up to 30% for sequential\n4k reads in batches of 16).\n\nSigned-off-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "385773e04806e8903e9ec683f5c4bd14926a86dc",
      "tree": "4e883e55117d7e3955800fd220f9f7a4704eb78a",
      "parents": [
        "8c87df457cb58fe75b9b893007917cf8095660a0"
      ],
      "author": {
        "name": "H Hartley Sweeten",
        "email": "hartleys@visionengravers.com",
        "time": "Tue Sep 22 16:43:53 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 23 07:39:29 2009 -0700"
      },
      "message": "aio.c: move EXPORT* macros to line after function\n\nAs mentioned in Documentation/CodingStyle, move EXPORT* macro\u0027s\nto the line immediately after the closing function brace line.\n\nAlso, move the __initcall() similarly.\n\nSigned-off-by: H Hartley Sweeten \u003chsweeten@visionengravers.com\u003e\nCc: Zach Brown \u003czach.brown@oracle.com\u003e\nCc: Benjamin LaHaise \u003cbcrl@kvack.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3d2d827f5ca5e32816194119d5c980c7e04474a6",
      "tree": "fe0e84669f5f20e1dff8e3dc6b191b4d5dfc0145",
      "parents": [
        "425fbf047cc70bb30dff368a6da02c8c2d229318"
      ],
      "author": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Mon Sep 21 17:03:51 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:42 2009 -0700"
      },
      "message": "mm: move use_mm/unuse_mm from aio.c to mm/\n\nAnyone who wants to do copy to/from user from a kernel thread, needs\nuse_mm (like what fs/aio has).  Move that into mm/, to make reusing and\nexporting easier down the line, and make aio use it.  Next intended user,\nbesides aio, will be vhost-net.\n\nAcked-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Michael S. Tsirkin \u003cmst@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": "133890103b9de08904f909995973e4b5c08a780e",
      "tree": "0cda85a58dafafa0a197cf1a789124203f1e7a88",
      "parents": [
        "f7c2df9b55212d5ec94169a4de11e44c683e0af4"
      ],
      "author": {
        "name": "Davide Libenzi",
        "email": "davidel@xmailserver.org",
        "time": "Tue Jun 30 11:41:11 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 30 18:55:58 2009 -0700"
      },
      "message": "eventfd: revised interface and cleanups\n\nChange the eventfd interface to de-couple the eventfd memory context, from\nthe file pointer instance.\n\nWithout such change, there is no clean way to racely free handle the\nPOLLHUP event sent when the last instance of the file* goes away.  Also,\nnow the internal eventfd APIs are using the eventfd context instead of the\nfile*.\n\nThis patch is required by KVM\u0027s IRQfd code, which is still under\ndevelopment.\n\nSigned-off-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Gregory Haskins \u003cghaskins@novell.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Benjamin LaHaise \u003cbcrl@kvack.org\u003e\nCc: Avi Kivity \u003cavi@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": "65c24491b4fef017c64e39ec64384fde5e05e0a0",
      "tree": "3afa5c9eace50837f3c31238102358cf67b8a1ff",
      "parents": [
        "87c3a86e1c220121d0ced59d1a71e78ed9abc6dd"
      ],
      "author": {
        "name": "Jeff Moyer",
        "email": "jmoyer@redhat.com",
        "time": "Wed Mar 18 17:04:21 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 19 15:57:18 2009 -0700"
      },
      "message": "aio: lookup_ioctx can return the wrong value when looking up a bogus context\n\nThe libaio test harness turned up a problem whereby lookup_ioctx on a\nbogus io context was returning the 1 valid io context from the list\n(harness/cases/3.p).\n\nBecause of that, an extra put_iocontext was done, and when the process\nexited, it hit a BUG_ON in the put_iocontext macro called from exit_aio\n(since we expect a users count of 1 and instead get 0).\n\nThe problem was introduced by \"aio: make the lookup_ioctx() lockless\"\n(commit abf137dd7712132ee56d5b3143c2ff61a72a5faa).\n\nThanks to Zach for pointing out that hlist_for_each_entry_rcu will not\nreturn with a NULL tpos at the end of the loop, even if the entry was\nnot found.\n\nSigned-off-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nAcked-by: Zach Brown \u003czach.brown@oracle.com\u003e\nAcked-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: Benjamin LaHaise \u003cbcrl@kvack.org\u003e\nCc: \u003cstable@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": "87c3a86e1c220121d0ced59d1a71e78ed9abc6dd",
      "tree": "f0460d0a5f34da0c3df3cc729b705fc93a69be4b",
      "parents": [
        "d0115552cdb0b4d4146975889fee2e9355515c4b"
      ],
      "author": {
        "name": "Davide Libenzi",
        "email": "davidel@xmailserver.org",
        "time": "Wed Mar 18 17:04:19 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 19 15:57:18 2009 -0700"
      },
      "message": "eventfd: remove fput() call from possible IRQ context\n\nRemove a source of fput() call from inside IRQ context.  Myself, like Eric,\nwasn\u0027t able to reproduce an fput() call from IRQ context, but Jeff said he was\nable to, with the attached test program.  Independently from this, the bug is\nconceptually there, so we might be better off fixing it.  This patch adds an\noptimization similar to the one we already do on -\u003eki_filp, on -\u003eki_eventfd.\nPlaying with -\u003ef_count directly is not pretty in general, but the alternative\nhere would be to add a brand new delayed fput() infrastructure, that I\u0027m not\nsure is worth it.\n\nSigned-off-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Benjamin LaHaise \u003cbcrl@kvack.org\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nCc: Zach Brown \u003czach.brown@oracle.com\u003e\nCc: \u003cstable@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": "002c8976ee537724b20a5e179d9b349309438836",
      "tree": "272ebe6d0dcb06bb16b978fb9793d266dbc1301a",
      "parents": [
        "a26eab2400f0477bfac0255600552394855016f7"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed Jan 14 14:14:18 2009 +0100"
      },
      "committer": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed Jan 14 14:15:25 2009 +0100"
      },
      "message": "[CVE-2009-0029] System call wrappers part 16\n\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\n"
    },
    {
      "commit": "abf137dd7712132ee56d5b3143c2ff61a72a5faa",
      "tree": "8334f03c598343bb93340f081fcde5ba659b440b",
      "parents": [
        "392ddc32982a5c661dd90dd49a3cb37f1c68b782"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Dec 09 08:11:22 2008 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Dec 29 08:29:50 2008 +0100"
      },
      "message": "aio: make the lookup_ioctx() lockless\n\nThe mm-\u003eioctx_list is currently protected by a reader-writer lock,\nso we always grab that lock on the read side for doing ioctx\nlookups. As the workload is extremely reader biased, turn this into\nan rcu hlist so we can make lookup_ioctx() lockless. Get rid of\nthe rwlock and use a spinlock for providing update side exclusion.\n\nThere\u0027s usually only 1 entry on this list, so it doesn\u0027t make sense\nto look into fancier data structures.\n\nReviewed-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "516e0cc5646f377ab80fcc2ee639892eccb99853",
      "tree": "e06296dcedb42dbe397d237887873e70c5823d51",
      "parents": [
        "3c333937ee3be114b181c4861188cfe8f6a59697"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 26 00:39:17 2008 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 26 20:53:40 2008 -0400"
      },
      "message": "[PATCH] f_count may wrap around\n\nmake it atomic_long_t; while we are at it, get rid of useless checks in affs,\nhfs and hpfs - -\u003eopen() always has it equal to 1, -\u003erelease() - to 0.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "246bb0b1deb29726990620d8b5e55ca29f331362",
      "tree": "5173b9e0c1d18934a8b2693c690a7162acb1bca8",
      "parents": [
        "7b34e4283c685f5cc6ba6d30e939906eee0d4bcf"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Fri Jul 25 01:47:38 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:39 2008 -0700"
      },
      "message": "kill PF_BORROWED_MM in favour of PF_KTHREAD\n\nKill PF_BORROWED_MM.  Change use_mm/unuse_mm to not play with -\u003eflags, and\ndo s/PF_BORROWED_MM/PF_KTHREAD/ for a couple of other users.\n\nNo functional changes yet.  But this allows us to do further\nfixes/cleanups.\n\noom_kill/ptrace/etc often check \"p-\u003emm !\u003d NULL\" to filter out the\nkthreads, this is wrong because of use_mm().  The problem with\nPF_BORROWED_MM is that we need task_lock() to avoid races.  With this\npatch we can check PF_KTHREAD directly, or use a simple lockless helper:\n\n\t/* The result must not be dereferenced !!! */\n\tstruct mm_struct *__get_task_mm(struct task_struct *tsk)\n\t{\n\t\tif (tsk-\u003eflags \u0026 PF_KTHREAD)\n\t\t\treturn NULL;\n\t\treturn tsk-\u003emm;\n\t}\n\nNote also ecard_task().  It runs with -\u003emm !\u003d NULL, but it\u0027s the kernel\nthread without PF_BORROWED_MM.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Roland McGrath \u003croland@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": "aab2545fdd6641b76af0ae96456c4ca9d1e50dad",
      "tree": "5fa741cea7b76283cbab237ff6909f5c6ff32752",
      "parents": [
        "06a1578e2448112d6f635b1a458a65e36f0f97c6"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Fri Jun 06 11:31:39 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 06 11:36:22 2008 -0700"
      },
      "message": "uml: activate_mm: remove the dead PF_BORROWED_MM check\n\nuse_mm() was changed to use switch_mm() instead of activate_mm(), since\nthen nobody calls (and nobody should call) activate_mm() with\nPF_BORROWED_MM bit set.\n\nAs Jeff Dike pointed out, we can also remove the \"old !\u003d new\" check, it is\nalways true.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Jeff Dike \u003cjdike@addtoit.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c6f3a97f86a5c97be0ca255976110bb9c3cfe669",
      "tree": "95a7bf3c928a85b26aed128786fc09e18bc5dcfc",
      "parents": [
        "691cc54c7d28542434d2b3ee4ddbad6a99312dec"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Apr 30 00:55:03 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:53 2008 -0700"
      },
      "message": "debugobjects: add timer specific object debugging code\n\nAdd calls to the generic object debugging infrastructure and provide fixup\nfunctions which allow to keep the system alive when recoverable problems have\nbeen detected by the object debugging core code.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Greg KH \u003cgreg@kroah.com\u003e\nCc: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "39fa00311f21318cc498b139c2cc2830dcad98ff",
      "tree": "936eeb3a4046fb9b17cc4297e3b783f49c0a1dc0",
      "parents": [
        "68ab3d883a2df13f4b93a923bae3a287cbee29d3"
      ],
      "author": {
        "name": "Jeff Moyer",
        "email": "jmoyer@redhat.com",
        "time": "Tue Apr 29 01:03:48 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:06:29 2008 -0700"
      },
      "message": "aio: fix misleading comments\n\nThe FIXME comments are inaccurate.\nThe locking comment over lookup_ioctx() is wrong.\n\nSigned-off-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nSigned-off-by: Zach Brown \u003czach.brown@oracle.com\u003e\nSigned-off-by: Shen Feng \u003cshen@cn.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "801678c5a3b4c79236970bcca27c733f5559e0d1",
      "tree": "5ad4761f539525077895f261b64fccda4d1303c4",
      "parents": [
        "9a6f70bbed4e8b72dd340812d7c606bfd5e00b47"
      ],
      "author": {
        "name": "Hirofumi Nakagawa",
        "email": "hnakagawa@miraclelinux.com",
        "time": "Tue Apr 29 01:03:09 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:06:25 2008 -0700"
      },
      "message": "Remove duplicated unlikely() in IS_ERR()\n\nSome drivers have duplicated unlikely() macros.  IS_ERR() already has\nunlikely() in itself.\n\nThis patch cleans up such pointless code.\n\nSigned-off-by: Hirofumi Nakagawa \u003chnakagawa@miraclelinux.com\u003e\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nAcked-by: Jeff Garzik \u003cjeff@garzik.org\u003e\nCc: Paul Clements \u003cpaul.clements@steeleye.com\u003e\nCc: Richard Purdie \u003crpurdie@rpsys.net\u003e\nCc: Alessandro Zummo \u003ca.zummo@towertech.it\u003e\nCc: David Brownell \u003cdavid-b@pacbell.net\u003e\nCc: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\nCc: Michael Halcrow \u003cmhalcrow@us.ibm.com\u003e\nCc: Anton Altaparmakov \u003caia21@cantab.net\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Carsten Otte \u003ccotte@de.ibm.com\u003e\nCc: Patrick McHardy \u003ckaber@trash.net\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nCc: Jaroslav Kysela \u003cperex@perex.cz\u003e\nCc: Takashi Iwai \u003ctiwai@suse.de\u003e\nAcked-by: Mike Frysinger \u003cvapier@gentoo.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d5470b596abdd566339b2417e807b1198be64b97",
      "tree": "e668e8196ed46efc9ea6036c5889e5f3a54dedcf",
      "parents": [
        "07d45da616f8514651360b502314fc9554223a03"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Tue Apr 29 00:58:57 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:06:00 2008 -0700"
      },
      "message": "fs/aio.c: make 3 functions static\n\nMake the following needlessly global functions static:\n\n- __put_ioctx()\n- lookup_ioctx()\n- io_submit_one()\n\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nCc: Zach Brown \u003czach.brown@oracle.com\u003e\nCc: Benjamin LaHaise \u003cbcrl@kvack.org\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e92adcba261fd391591bb63c1703185a04a41554",
      "tree": "83cd94eaa57931da66137a65089a0bcdddf20533",
      "parents": [
        "180c06efce691f2b721dd0d965079827bdd7ee03"
      ],
      "author": {
        "name": "Jeff Moyer",
        "email": "jmoyer@redhat.com",
        "time": "Mon Apr 28 02:12:04 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:17 2008 -0700"
      },
      "message": "aio: io_getevents() should return if io_destroy() is invoked\n\nThis patch wakes up a thread waiting in io_getevents if another thread\ndestroys the context.  This was tested using a small program that spawns a\nthread to wait in io_getevents while the parent thread destroys the io context\nand then waits for the getevents thread to exit.  Without this patch, the\nprogram hangs indefinitely.  With the patch, the program exits as expected.\n\nSigned-off-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nCc: Zach Brown \u003czach.brown@oracle.com\u003e\nCc: Christopher Smith \u003cx@xman.org\u003e\nCc: Benjamin LaHaise \u003cbcrl@kvack.org\u003e\nCc: \u003cstable@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": "8d1c98b0b5c0148b519c6416e689ef6a89ffcea3",
      "tree": "904c70d4ed15dd79a003c34bad2e25cff9522420",
      "parents": [
        "d479540dbaba6f7acdb48e0242fee868c7a68116"
      ],
      "author": {
        "name": "Davide Libenzi",
        "email": "davidel@xmailserver.org",
        "time": "Thu Apr 10 21:29:19 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 11 08:06:43 2008 -0700"
      },
      "message": "eventfd/kaio integration fix\n\nJeff Roberson discovered a race when using kaio eventfd based notifications.\nWhen it occurs it can lead tomissed wakeups and hung userspace.\n\nThis patch fixes the race by moving the notification inside the spinlocked\nsection of kaio.  The operation is safe since eventfd spinlock and kaio one\nare unrelated.\n\nSigned-off-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Zach Brown \u003czach.brown@oracle.com\u003e\nCc: Jeff Roberson \u003cjroberson@chesapeake.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "598af051a79d05b751fe793f1fe09fcf74763e02",
      "tree": "c9adafd96ee316c3d05f2978697d3624547f9e84",
      "parents": [
        "54a015104136974262afa4b8ddd943ea70dec8a2"
      ],
      "author": {
        "name": "Roland McGrath",
        "email": "roland@redhat.com",
        "time": "Thu Apr 10 15:38:45 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 10 17:28:26 2008 -0700"
      },
      "message": "asmlinkage_protect sys_io_getevents\n\nUse asmlinkage_protect in sys_io_getevents, because GCC for i386 with\nCONFIG_FRAME_POINTER\u003dn can decide to clobber an argument word on the\nstack, i.e. the user struct pt_regs.  Here the problem is not a tail\ncall, but just the compiler\u0027s use of the stack when it inlines and\noptimizes the body of the called function.  This seems to avoid it.\n\nSigned-off-by: Roland McGrath \u003croland@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6cb2a21049b8990df4576c5fce4d48d0206c22d5",
      "tree": "4303438449e0c0d4859e1818115e09d2fd8340ca",
      "parents": [
        "264e3e889d86e552b4191d69bb60f4f3b383135a"
      ],
      "author": {
        "name": "Quentin Barnes",
        "email": "qbarnes+linux@yahoo-inc.com",
        "time": "Wed Mar 19 17:00:39 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 19 18:53:35 2008 -0700"
      },
      "message": "aio: bad AIO race in aio_complete() leads to process hang\n\nMy group ran into a AIO process hang on a 2.6.24 kernel with the process\nsleeping indefinitely in io_getevents(2) waiting for the last wakeup to come\nand it never would.\n\nWe ran the tests on x86_64 SMP.  The hang only occurred on a Xeon box\n(\"Clovertown\") but not a Core2Duo (\"Conroe\").  On the Xeon, the L2 cache isn\u0027t\nshared between all eight processors, but is L2 is shared between between all\ntwo processors on the Core2Duo we use.\n\nMy analysis of the hang is if you go down to the second while-loop\nin read_events(), what happens on processor #1:\n\t1) add_wait_queue_exclusive() adds thread to ctx-\u003ewait\n\t2) aio_read_evt() to check tail\n\t3) if aio_read_evt() returned 0, call [io_]schedule() and sleep\n\nIn aio_complete() with processor #2:\n\tA) info-\u003etail \u003d tail;\n\tB) waitqueue_active(\u0026ctx-\u003ewait)\n\tC) if waitqueue_active() returned non-0, call wake_up()\n\nThe way the code is written, step 1 must be seen by all other processors\nbefore processor 1 checks for pending events in step 2 (that were recorded by\nstep A) and step A by processor 2 must be seen by all other processors\n(checked in step 2) before step B is done.\n\nThe race I believed I was seeing is that steps 1 and 2 were\neffectively swapped due to the __list_add() being delayed by the L2\ncache not shared by some of the other processors.  Imagine:\nproc 2: just before step A\nproc 1, step 1: adds to ctx-\u003ewait, but is not visible by other processors yet\nproc 1, step 2: checks tail and sees no pending events\nproc 2, step A: updates tail\nproc 1, step 3: calls [io_]schedule() and sleeps\nproc 2, step B: checks ctx-\u003ewait, but sees no one waiting, skips wakeup\n                so proc 1 sleeps indefinitely\n\nMy patch adds a memory barrier between steps A and B.  It ensures that the\nupdate in step 1 gets seen on processor 2 before continuing.  If processor 1\nwas just before step 1, the memory barrier makes sure that step A (update\ntail) gets seen by the time processor 1 makes it to step 2 (check tail).\n\nBefore the patch our AIO process would hang virtually 100% of the time.  After\nthe patch, we have yet to see the process ever hang.\n\nSigned-off-by: Quentin Barnes \u003cqbarnes+linux@yahoo-inc.com\u003e\nReviewed-by: Zach Brown \u003czach.brown@oracle.com\u003e\nCc: Benjamin LaHaise \u003cbcrl@kvack.org\u003e\nCc: \u003cstable@kernel.org\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\n[ We should probably disallow that \"if (waitqueue_active()) wake_up()\"\n  coding pattern, because it\u0027s so often buggy wrt memory ordering ]\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c2ec66828fd253802abb912668f4bf9597e3c898",
      "tree": "6d7dfe34b423b5bf32a5a5ae6b35207db4bb5d22",
      "parents": [
        "7adfa2ff3efa02a7a9f2632d2d2662d3e5eb5304"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Feb 08 04:20:15 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 08 09:22:33 2008 -0800"
      },
      "message": "aio: negative offset should return -EINVAL\n\nAn AIO read or write should return -EINVAL if the offset is negative.\nThis check matches the one in pread and pwrite.\n\nThis was found by the libaio test suite.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nAcked-by: Zach Brown \u003czach.brown@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7adfa2ff3efa02a7a9f2632d2d2662d3e5eb5304",
      "tree": "8a312d527e25142c65eec3bf9360cfbaae4c2666",
      "parents": [
        "25478445c4a39318acbe08ba8df7945766cbb5b5"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Feb 08 04:20:14 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 08 09:22:33 2008 -0800"
      },
      "message": "aio: partial write should not return error code\n\nWhen an AIO write gets an error after writing some data (eg.  ENOSPC), it\nshould return the amount written already, not the error.  Just like write()\nis supposed to.\n\nThis was found by the libaio test suite.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nAcked-By: Zach Brown \u003czach.brown@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "fc9b52cd8f5f459b88adcf67c47668425ae31a78",
      "tree": "c29924eaf60d2e73641bf11fa906a23fa81f46c9",
      "parents": [
        "75acb9cd2ef0bbb463098fdd40cbcdda79d45fa3"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Fri Feb 08 04:19:52 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 08 09:22:31 2008 -0800"
      },
      "message": "fs: remove fastcall, it is always empty\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "56c4da454de1264e381256f658f61b9ef690dd21",
      "tree": "51c57b07cda376f93db3032f24e9a28fba834573",
      "parents": [
        "6b7d190b14d478c759be22dcb7ee4695a711b562"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Wed Jan 30 13:31:17 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jan 30 13:31:17 2008 +0100"
      },
      "message": "core: remove last users of empty FASTCALL macro\n\nFASTCALL is always empty after the x86 removal.\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "e00ba3dae077f54cfd2af42e939a618caa7a3bca",
      "tree": "eb2f29fe8df7cb29be7d1bdda8dabe825f30f182",
      "parents": [
        "e3c0ac04f980750a368f7cd5f1b8d1d2cdc1f735"
      ],
      "author": {
        "name": "Jeff Moyer",
        "email": "jmoyer@redhat.com",
        "time": "Tue Dec 04 23:45:02 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Dec 05 09:21:18 2007 -0800"
      },
      "message": "aio: only account I/O wait time in read_events if there are active requests\n\nOn 2.6.24, top started showing 100% iowait on one CPU when a UML instance was\nrunning (but completely idle).  The UML code sits in io_getevents waiting for\nan event to be submitted and completed.\n\nFix this by checking ctx-\u003ereqs_active before scheduling to determine whether\nor not we are waiting for I/O.\n\nSigned-off-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nCc: Zach Brown \u003czach.brown@oracle.com\u003e\nCc: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nCc: Jeff Dike \u003cjdike@addtoit.com\u003e\nCc: \"Rafael J. Wysocki\" \u003crjw@sisk.pl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6212e3a388fdda3f19fa660ef5a30edf54d1dcfd",
      "tree": "7218bbf29af36ff0c36aa2af8323a5206ea44b1c",
      "parents": [
        "9cd9a0058dd35268b24fa16795a92c800f4086d4"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Thu Oct 18 03:04:56 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Oct 18 14:37:20 2007 -0700"
      },
      "message": "Remove struct task_struct::io_wait\n\nHell knows what happened in commit 63b05203af57e7de4f3bb63b8b81d43bc196d32b\nduring 2.6.9 development.  Commit introduced io_wait field which remained\nwrite-only than and still remains write-only.\n\nAlso garbage collect macros which \"use\" io_wait.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "41d10da3717409de33d5441f2f6d8f072ab3fbb6",
      "tree": "4822afef881132248a7c91ba6eb33065f3209f2b",
      "parents": [
        "c17ac85504efec5f3a9b0c5b05bffd6f30e5b655"
      ],
      "author": {
        "name": "Jeff Moyer",
        "email": "jmoyer@redhat.com",
        "time": "Tue Oct 16 23:27:20 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:42:53 2007 -0700"
      },
      "message": "aio: account I/O wait time properly\n\nSome months back I proposed changing the schedule() call in\nread_events to an io_schedule():\n\thttp://osdir.com/ml/linux.kernel.aio.general/2006-10/msg00024.html\nThis was rejected as there are AIO operations that do not initiate\ndisk I/O.  I\u0027ve had another look at the problem, and the only AIO\noperation that will not initiate disk I/O is IOCB_CMD_NOOP.  However,\nthis command isn\u0027t even wired up!\n\nGiven that it doesn\u0027t work, and hasn\u0027t for *years*, I\u0027m going to\nsuggest again that we do proper I/O accounting when using AIO.\n\nSigned-off-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nAcked-by: Zach Brown \u003czach.brown@oracle.com\u003e\nCc: Benjamin LaHaise \u003cbcrl@kvack.org\u003e\nCc: Suparna Bhattacharya \u003csuparna@in.ibm.com\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "87e2831c3fa39cbf6f7ab676bb5aef039b9659e2",
      "tree": "88e1a3fca607a0643a7f6e60aef80a2bc04323c3",
      "parents": [
        "745ad48e8cac47beec0b2f72dc3c64424bce1fec"
      ],
      "author": {
        "name": "Yan Zheng",
        "email": "yanzheng@21cn.com",
        "time": "Mon Oct 08 12:16:20 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Oct 08 12:58:14 2007 -0700"
      },
      "message": "AIO: fix cleanup in io_submit_one(...)\n\nWhen IOCB_FLAG_RESFD flag is set and iocb-\u003eaio_resfd is incorrect,\nstatement \u0027goto out_put_req\u0027 is executed. At label \u0027out_put_req\u0027,\naio_put_req(..) is called, which requires \u0027req-\u003eki_filp\u0027 set.\n\nSigned-off-by: Yan Zheng\u003cyanzheng@21cn.com\u003e\nCc: Zach Brown \u003czach.brown@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9c3060bedd84144653a2ad7bea32389f65598d40",
      "tree": "80336eb24be8458cda1f35ee752f05bc7c329fbb",
      "parents": [
        "fdb902b1225e1668315f38e96d2f439452c03a15"
      ],
      "author": {
        "name": "Davide Libenzi",
        "email": "davidel@xmailserver.org",
        "time": "Thu May 10 22:23:21 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri May 11 08:29:37 2007 -0700"
      },
      "message": "signal/timer/event: KAIO eventfd support example\n\nThis is an example about how to add eventfd support to the current KAIO code,\nin order to enable KAIO to post readiness events to a pollable fd (hence\ncompatible with POSIX select/poll).  The KAIO code simply signals the eventfd\nfd when events are ready, and this triggers a POLLIN in the fd.  This patch\nuses a reserved for future use member of the struct iocb to pass an eventfd\nfile descriptor, that KAIO will use to post events every time a request\ncompletes.  At that point, an aio_getevents() will return the completed result\nto a struct io_event.  I made a quick test program to verify the patch, and it\nruns fine here:\n\nhttp://www.xmailserver.org/eventfd-aio-test.c\n\nThe test program uses poll(2), but it\u0027d, of course, work with select and epoll\ntoo.\n\nThis can allow to schedule both block I/O and other poll-able devices\nrequests, and wait for results using select/poll/epoll.  In a typical\nscenario, an application would submit KAIO request using aio_submit(), and\nwill also use epoll_ctl() on the whole other class of devices (that with the\naddition of signals, timers and user events, now it\u0027s pretty much complete),\nand then would:\n\n\tepoll_wait(...);\n\tfor_each_event {\n\t\tif (curr_event_is_kaiofd) {\n\t\t\taio_getevents();\n\t\t\tdispatch_aio_events();\n\t\t} else {\n\t\t\tdispatch_epoll_event();\n\t\t}\n\t}\n\nSigned-off-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "28e53bddf814485699a4142bc056fd37d4e11dd4",
      "tree": "5182090c4cc2186eedbda3cb90ed82a2836f6ff6",
      "parents": [
        "5830c5902138f80b0a097b797200c739466beedd"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed May 09 02:34:22 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:53 2007 -0700"
      },
      "message": "unify flush_work/flush_work_keventd and rename it to cancel_work_sync\n\nflush_work(wq, work) doesn\u0027t need the first parameter, we can use cwq-\u003ewq\n(this was possible from the very beginnig, I missed this).  So we can unify\nflush_work_keventd and flush_work.\n\nAlso, rename flush_work() to cancel_work_sync() and fix all callers.\nPerhaps this is not the best name, but \"flush_work\" is really bad.\n\n(akpm: this is why the earlier patches bypassed maintainers)\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Jeff Garzik \u003cjeff@garzik.org\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: Tejun Heo \u003chtejun@gmail.com\u003e\nCc: Auke Kok \u003cauke-jan.h.kok@intel.com\u003e,\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a9df62c7585e6caa1e7d2425b2b14460ec3afc20",
      "tree": "f3d291e208ca09cb0c185ed96242bb977e4e60e3",
      "parents": [
        "83c22520c51bf67529367e8237f95c03fe44e2da"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Wed May 09 02:33:54 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:51 2007 -0700"
      },
      "message": "aio: use flush_work()\n\nMigrate AIO over to use flush_work().\n\nCc: \"Maciej W. Rozycki\" \u003cmacro@linux-mips.org\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: Zach Brown \u003czach.brown@oracle.com\u003e\nCc: Benjamin LaHaise \u003cbcrl@kvack.org\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0a31bd5f2bbb6473ef9d24f0063ca91cfa678b64",
      "tree": "a945e829bf6bf7a93bf844b2ee9f2a3a2fa17c5d",
      "parents": [
        "5af60839909b8e3b28ca7cd7912fa0b23475617f"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun May 06 14:49:57 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:55 2007 -0700"
      },
      "message": "KMEM_CACHE(): simplify slab cache creation\n\nThis patch provides a new macro\n\nKMEM_CACHE(\u003cstruct\u003e, \u003cflags\u003e)\n\nto simplify slab creation. KMEM_CACHE creates a slab with the name of the\nstruct, with the size of the struct and with the alignment of the struct.\nAdditional slab flags may be specified if necessary.\n\nExample\n\nstruct test_slab {\n\tint a,b,c;\n\tstruct list_head;\n} __cacheline_aligned_in_smp;\n\ntest_slab_cache \u003d KMEM_CACHE(test_slab, SLAB_PANIC)\n\nwill create a new slab named \"test_slab\" of the size sizeof(struct\ntest_slab) and aligned to the alignment of test slab.  If it fails then we\npanic.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "28defbea64622f69d65a6079bf800cedb9915a5f",
      "tree": "245b552f14d72f0e3f28c7f2a443db55557050c9",
      "parents": [
        "d459094083c3a23b31514bbe31cc3f4c21ed4445"
      ],
      "author": {
        "name": "Zach Brown",
        "email": "zach.brown@oracle.com",
        "time": "Tue Mar 27 15:44:01 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Mar 27 17:53:25 2007 -0700"
      },
      "message": "[PATCH] aio: remove bare user-triggerable error printk\n\nThe user can generate console output if they cause do_mmap() to fail\nduring sys_io_setup().  This was seen in a regression test that does\nexactly that by spinning calling mmap() until it gets -ENOMEM before\ncalling io_setup().\n\nWe don\u0027t need this printk at all, just remove it.\n\nSigned-off-by: Zach Brown \u003czach.brown@oracle.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c376222960ae91d5ffb9197ee36771aaed1d9f90",
      "tree": "7f431c42529fec77433d33490bd9f2a8c47ba091",
      "parents": [
        "1b135431abf5ea92e61bf4e91d93726c7b96da5f"
      ],
      "author": {
        "name": "Robert P. J. Day",
        "email": "rpjday@mindspring.com",
        "time": "Sat Feb 10 01:45:03 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sun Feb 11 10:51:27 2007 -0800"
      },
      "message": "[PATCH] Transform kmem_cache_alloc()+memset(0) -\u003e kmem_cache_zalloc().\n\nReplace appropriate pairs of \"kmem_cache_alloc()\" + \"memset(0)\" with the\ncorresponding \"kmem_cache_zalloc()\" call.\n\nSigned-off-by: Robert P. J. Day \u003crpjday@mindspring.com\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nCc: Andi Kleen \u003cak@muc.de\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\nCc: James Bottomley \u003cJames.Bottomley@steeleye.com\u003e\nCc: Greg KH \u003cgreg@kroah.com\u003e\nAcked-by: Joel Becker \u003cJoel.Becker@oracle.com\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Jan Kara \u003cjack@ucw.cz\u003e\nCc: Michael Halcrow \u003cmhalcrow@us.ibm.com\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Stephen Smalley \u003csds@tycho.nsa.gov\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nCc: Chris Wright \u003cchrisw@sous-sol.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e10a4437cb37c85f2df95432025b392d98aac2aa",
      "tree": "f8a560ecf6e75f582c0f025385d5e350a21d9fd6",
      "parents": [
        "7c5cae368a6c44eac0e817ae130301b65ff446dc"
      ],
      "author": {
        "name": "Robert P. J. Day",
        "email": "rpjday@mindspring.com",
        "time": "Sat Feb 10 01:42:56 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sun Feb 11 10:51:17 2007 -0800"
      },
      "message": "[PATCH] Remove final references to deprecated \"MAP_ANON\" page protection flag\n\nRemove the last vestiges of the long-deprecated \"MAP_ANON\" page protection\nflag: use \"MAP_ANONYMOUS\" instead.\n\nSigned-off-by: Robert P. J. Day \u003crpjday@mindspring.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "dee11c2364f51cac53df17d742a0c69097e29a4e",
      "tree": "339b45f1dbd99a22bbe161ebeb5b7cd8850289ba",
      "parents": [
        "3e8219806c33b64a00b0013f96f735451f30c64c"
      ],
      "author": {
        "name": "Ken Chen",
        "email": "kenchen@google.com",
        "time": "Sat Feb 03 01:13:45 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sat Feb 03 11:26:06 2007 -0800"
      },
      "message": "[PATCH] aio: fix buggy put_ioctx call in aio_complete - v2\n\nAn AIO bug was reported that sleeping function is being called in softirq\ncontext:\n\nBUG: warning at kernel/mutex.c:132/__mutex_lock_common()\nCall Trace:\n     [\u003ca000000100577b00\u003e] __mutex_lock_slowpath+0x640/0x6c0\n     [\u003ca000000100577ba0\u003e] mutex_lock+0x20/0x40\n     [\u003ca0000001000a25b0\u003e] flush_workqueue+0xb0/0x1a0\n     [\u003ca00000010018c0c0\u003e] __put_ioctx+0xc0/0x240\n     [\u003ca00000010018d470\u003e] aio_complete+0x2f0/0x420\n     [\u003ca00000010019cc80\u003e] finished_one_bio+0x200/0x2a0\n     [\u003ca00000010019d1c0\u003e] dio_bio_complete+0x1c0/0x200\n     [\u003ca00000010019d260\u003e] dio_bio_end_aio+0x60/0x80\n     [\u003ca00000010014acd0\u003e] bio_endio+0x110/0x1c0\n     [\u003ca0000001002770e0\u003e] __end_that_request_first+0x180/0xba0\n     [\u003ca000000100277b90\u003e] end_that_request_chunk+0x30/0x60\n     [\u003ca0000002073c0c70\u003e] scsi_end_request+0x50/0x300 [scsi_mod]\n     [\u003ca0000002073c1240\u003e] scsi_io_completion+0x200/0x8a0 [scsi_mod]\n     [\u003ca0000002074729b0\u003e] sd_rw_intr+0x330/0x860 [sd_mod]\n     [\u003ca0000002073b3ac0\u003e] scsi_finish_command+0x100/0x1c0 [scsi_mod]\n     [\u003ca0000002073c2910\u003e] scsi_softirq_done+0x230/0x300 [scsi_mod]\n     [\u003ca000000100277d20\u003e] blk_done_softirq+0x160/0x1c0\n     [\u003ca000000100083e00\u003e] __do_softirq+0x200/0x240\n     [\u003ca000000100083eb0\u003e] do_softirq+0x70/0xc0\n\nSee report: http://marc.theaimsgroup.com/?l\u003dlinux-kernel\u0026m\u003d116599593200888\u0026w\u003d2\n\nflush_workqueue() is not allowed to be called in the softirq context.\nHowever, aio_complete() called from I/O interrupt can potentially call\nput_ioctx with last ref count on ioctx and triggers bug.  It is simply\nincorrect to perform ioctx freeing from aio_complete.\n\nThe bug is trigger-able from a race between io_destroy() and aio_complete().\nA possible scenario:\n\ncpu0                               cpu1\nio_destroy                         aio_complete\n  wait_for_all_aios {                __aio_put_req\n     ...                                 ctx-\u003ereqs_active--;\n     if (!ctx-\u003ereqs_active)\n        return;\n  }\n  ...\n  put_ioctx(ioctx)\n\n                                     put_ioctx(ctx);\n                                        __put_ioctx\n                                          bam! Bug trigger!\n\nThe real problem is that the condition check of ctx-\u003ereqs_active in\nwait_for_all_aios() is incorrect that access to reqs_active is not\nbeing properly protected by spin lock.\n\nThis patch adds that protective spin lock, and at the same time removes\nall duplicate ref counting for each kiocb as reqs_active is already used\nas a ref count for each active ioctx.  This also ensures that buggy call\nto flush_workqueue() in softirq context is eliminated.\n\nSigned-off-by: \"Ken Chen\" \u003ckenchen@google.com\u003e\nCc: Zach Brown \u003czach.brown@oracle.com\u003e\nCc: Suparna Bhattacharya \u003csuparna@in.ibm.com\u003e\nCc: Benjamin LaHaise \u003cbcrl@kvack.org\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nCc: \u003cstable@kernel.org\u003e\nAcked-by: Jeff Moyer \u003cjmoyer@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": "1ebb1101c556b1915ff041655e629a072e64dcda",
      "tree": "d306821837152a8c772591a9bf136e5e091a7a31",
      "parents": [
        "43cdff92ad47e0ca024c8a07d29f9bb6119e759c"
      ],
      "author": {
        "name": "Zach Brown",
        "email": "zach.brown@oracle.com",
        "time": "Fri Dec 29 16:47:02 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Sat Dec 30 10:55:54 2006 -0800"
      },
      "message": "[PATCH] Fix lock inversion aio_kick_handler()\n\nlockdep found a AB BC CA lock inversion in retry-based AIO:\n\n1) The task struct\u0027s alloc_lock (A) is acquired in process context with\n   interrupts enabled.  An interrupt might arrive and call wake_up() which\n   grabs the wait queue\u0027s q-\u003elock (B).\n\n2) When performing retry-based AIO the AIO core registers\n   aio_wake_function() as the wake funtion for iocb-\u003eki_wait.  It is called\n   with the wait queue\u0027s q-\u003elock (B) held and then tries to add the iocb to\n   the run list after acquiring the ctx_lock (C).\n\n3) aio_kick_handler() holds the ctx_lock (C) while acquiring the\n   alloc_lock (A) via lock_task() and unuse_mm().  Lockdep emits a warning\n   saying that we\u0027re trying to connect the irq-safe q-\u003elock to the\n   irq-unsafe alloc_lock via ctx_lock.\n\nThis fixes the inversion by calling unuse_mm() in the AIO kick handing path\nafter we\u0027ve released the ctx_lock.  As Ben LaHaise pointed out __put_ioctx\ncould set ctx-\u003emm to NULL, so we must only access ctx-\u003emm while we have the\nlock.\n\nSigned-off-by: Zach Brown \u003czach.brown@oracle.com\u003e\nSigned-off-by: Suparna Bhattacharya \u003csuparna@in.ibm.com\u003e\nAcked-by: Benjamin LaHaise \u003cbcrl@kvack.org\u003e\nCc: \"Chen, Kenneth W\" \u003ckenneth.w.chen@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "90aef12e6dd609e1ad7fb70044eedc78ca55ee5e",
      "tree": "35ff39f80d010c548df660d3a3e53c5861741777",
      "parents": [
        "74c383f1400f559562aa517d6d62f77245bddf52"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed Dec 13 00:34:49 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Wed Dec 13 09:05:51 2006 -0800"
      },
      "message": "[PATCH] Use activate_mm() in fs/aio.c:use_mm()\n\nactivate_mm() is not the right thing to be using in use_mm().  It should be\nswitch_mm().\n\nOn normal x86, they\u0027re synonymous, but for the Xen patches I\u0027m adding a\nhook which assumes that activate_mm is only used the first time a new mm\nis used after creation (I have another hook for dealing with dup_mm).  I\nthink this use of activate_mm() is the only place where it could be used\na second time on an mm.\n\n\u003eFrom a quick look at the other architectures I think this is OK (most\nsimply implement one in terms of the other), but some are doing some\nsubtly different stuff between the two.\n\nAcked-by: David Miller \u003cdavem@davemloft.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "97d2a80584b30b5cd32da411deca1986ef61877a",
      "tree": "b9c9c874c0a3fd88f2420a9b68b39306400e5809",
      "parents": [
        "b62e8ec2ac580b47c11eb76e8852ac1ec7d617cd"
      ],
      "author": {
        "name": "Benjamin LaHaise",
        "email": "bcrl@kvack.org",
        "time": "Wed Dec 06 20:40:45 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:46 2006 -0800"
      },
      "message": "[PATCH] aio: remove ki_retried debugging member\n\nRemove the ki_retried member from struct kiocb.  I think the idea was\nbounced around a while back, but Arnaldo pointed out another reason that we\nshould dig it up when he pointed out that the last cacheline of struct\nkiocb only contains 4 bytes.  By removing the debugging member, we save\nmore than the 8 byte on 64 bit machines.\n\nSigned-off-by: Benjamin LaHaise \u003cbcrl@kvack.org\u003e\nAcked-by: Ken Chen \u003ckenneth.w.chen@intel.com\u003e\nAcked-by: Zach Brown \u003czach.brown@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "b62e8ec2ac580b47c11eb76e8852ac1ec7d617cd",
      "tree": "4fe334645cc47277ddac8be16b16e03b6d9dae66",
      "parents": [
        "85916f8166b59eeac63d2b4f7f1df8de849334b4"
      ],
      "author": {
        "name": "Chen, Kenneth W",
        "email": "kenneth.w.chen@intel.com",
        "time": "Wed Dec 06 20:40:43 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:46 2006 -0800"
      },
      "message": "[PATCH] aio: kill pointless ki_nbytes assignment in aio_setup_single_vector\n\nio_submit_one assigns ki_left \u003d ki_nbytes \u003d iocb-\u003eaio_nbytes, then calls\ndown to aio_setup_iocb, then to aio_setup_single_vector.  In there,\nki_nbytes is reassigned to the same value it got two call stack above it.\nThere is no need to do so.\n\nSigned-off-by: Ken Chen \u003ckenneth.w.chen@intel.com\u003e\nAcked-by: Zach Brown \u003czach.brown@oracle.com\u003e\nCc: Benjamin LaHaise \u003cbcrl@kvack.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e18b890bb0881bbab6f4f1a6cd20d9c60d66b003",
      "tree": "4828be07e1c24781c264b42c5a75bcd968223c3f",
      "parents": [
        "441e143e95f5aa1e04026cb0aa71c801ba53982f"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed Dec 06 20:33:20 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:25 2006 -0800"
      },
      "message": "[PATCH] slab: remove kmem_cache_t\n\nReplace all uses of kmem_cache_t with struct kmem_cache.\n\nThe patch was generated using the following script:\n\n\t#!/bin/sh\n\t#\n\t# Replace one string by another in all the kernel sources.\n\t#\n\n\tset -e\n\n\tfor file in `find * -name \"*.c\" -o -name \"*.h\"|xargs grep -l $1`; do\n\t\tquilt add $file\n\t\tsed -e \"1,\\$s/$1/$2/g\" $file \u003e/tmp/$$\n\t\tmv /tmp/$$ $file\n\t\tquilt refresh\n\tdone\n\nThe script was run like this\n\n\tsh replace kmem_cache_t \"struct kmem_cache\"\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4c1ac1b49122b805adfa4efc620592f68dccf5db",
      "tree": "87557f4bc2fd4fe65b7570489c2f610c45c0adcd",
      "parents": [
        "c4028958b6ecad064b1a6303a6a5906d4fe48d73",
        "d916faace3efc0bf19fe9a615a1ab8fa1a24cd93"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Tue Dec 05 14:37:56 2006 +0000"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@warthog.cambridge.redhat.com",
        "time": "Tue Dec 05 14:37:56 2006 +0000"
      },
      "message": "Merge branch \u0027master\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6\n\nConflicts:\n\n\tdrivers/infiniband/core/iwcm.c\n\tdrivers/net/chelsio/cxgb2.c\n\tdrivers/net/wireless/bcm43xx/bcm43xx_main.c\n\tdrivers/net/wireless/prism54/islpci_eth.c\n\tdrivers/usb/core/hub.h\n\tdrivers/usb/input/hid-core.c\n\tnet/core/netpoll.c\n\nFix up merge failures with Linus\u0027s head and fix new compilation failures.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\n"
    },
    {
      "commit": "93e06b4140cc018826bce4d97b0bf7c9ba05ae6e",
      "tree": "784cacb45d99f7fc5fe15f378240f1042ae4e495",
      "parents": [
        "d99c5909859625f3c9c6dfee6caa3b2a7c0ef163"
      ],
      "author": {
        "name": "Eric Sesterhenn",
        "email": "snakebyte@gmx.de",
        "time": "Thu Nov 30 05:29:23 2006 +0100"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Thu Nov 30 05:29:23 2006 +0100"
      },
      "message": "BUG_ON conversion for fs/aio.c\n\nThis patch converts a if () BUG(); construct to BUG_ON();\nwhich occupies less space, uses unlikely and is safer when\nBUG() is disabled.\n\nSigned-off-by: Eric Sesterhenn \u003csnakebyte@gmx.de\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\n"
    },
    {
      "commit": "65f27f38446e1976cc98fd3004b110fedcddd189",
      "tree": "68f8be93feae31dfa018c22db392a05546b63ee1",
      "parents": [
        "365970a1ea76d81cb1ad2f652acb605f06dae256"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Wed Nov 22 14:55:48 2006 +0000"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Wed Nov 22 14:55:48 2006 +0000"
      },
      "message": "WorkStruct: Pass the work_struct pointer instead of context data\n\nPass the work_struct pointer to the work function rather than context data.\nThe work function can use container_of() to work out the data.\n\nFor the cases where the container of the work_struct may go away the moment the\npending bit is cleared, it is made possible to defer the release of the\nstructure by deferring the clearing of the pending bit.\n\nTo make this work, an extra flag is introduced into the management side of the\nwork_struct.  This governs auto-release of the structure upon execution.\n\nOrdinarily, the work queue executor would release the work_struct for further\nscheduling or deallocation by clearing the pending bit prior to jumping to the\nwork function.  This means that, unless the driver makes some guarantee itself\nthat the work_struct won\u0027t go away, the work function may not access anything\nelse in the work_struct or its container lest they be deallocated..  This is a\nproblem if the auxiliary data is taken away (as done by the last patch).\n\nHowever, if the pending bit is *not* cleared before jumping to the work\nfunction, then the work function *may* access the work_struct and its container\nwith no problems.  But then the work function must itself release the\nwork_struct by calling work_release().\n\nIn most cases, automatic release is fine, so this is the default.  Special\ninitiators exist for the non-auto-release case (ending in _NAR).\n\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\n"
    },
    {
      "commit": "52bad64d95bd89e08c49ec5a071fa6dcbe5a1a9c",
      "tree": "5849b4e3c17daa70a7e81cfdeaddac9ac8a0e953",
      "parents": [
        "0f9005a6f7a82f4aacbd72f7b92322a8ca1c3f97"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Wed Nov 22 14:54:01 2006 +0000"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Wed Nov 22 14:54:01 2006 +0000"
      },
      "message": "WorkStruct: Separate delayable and non-delayable events.\n\nSeparate delayable work items from non-delayable work items be splitting them\ninto a separate structure (delayed_work), which incorporates a work_struct and\nthe timer_list removed from work_struct.\n\nThe work_struct struct is huge, and this limits it\u0027s usefulness.  On a 64-bit\narchitecture it\u0027s nearly 100 bytes in size.  This reduces that by half for the\nnon-delayable type of event.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\n"
    },
    {
      "commit": "691578cd558e647dd89ae5bc74a2307bce821186",
      "tree": "dcb4d7a06e46688cc7e3d5be064fec8a4e65dc6b",
      "parents": [
        "3a0f5bbb1a36ed113065099d3dc69a66e1c8d567"
      ],
      "author": {
        "name": "Zach Brown",
        "email": "zach.brown@oracle.com",
        "time": "Tue Oct 03 01:16:04 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Oct 03 08:04:19 2006 -0700"
      },
      "message": "[PATCH] pr_debug: aio: use size_t length modifier in pr_debug format arguments\n\naio: use size_t length modifier in pr_debug format arguments\n\nSigned-off-by: Zach Brown \u003czach.brown@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "eed4e51fb60c3863c134a5e9f6006b29805ead97",
      "tree": "edb0a80d75c454ad77001f3bd1a87933cbcff53f",
      "parents": [
        "543ade1fc901db4c3dbe9fb27241fb977f1f3eea"
      ],
      "author": {
        "name": "Badari Pulavarty",
        "email": "pbadari@us.ibm.com",
        "time": "Sat Sep 30 23:28:49 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Oct 01 00:39:29 2006 -0700"
      },
      "message": "[PATCH] Add vector AIO support\n\nThis work is initially done by Zach Brown to add support for vectored aio.\nThese are the core changes for AIO to support\nIOCB_CMD_PREADV/IOCB_CMD_PWRITEV.\n\n[akpm@osdl.org: huge build fix]\nSigned-off-by: Zach Brown \u003czach.brown@oracle.com\u003e\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nAcked-by: Benjamin LaHaise \u003cbcrl@kvack.org\u003e\nAcked-by: James Morris \u003cjmorris@namei.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "027445c37282bc1ed26add45e573ad2d3e4860a5",
      "tree": "93eab101a938ffebaea64703033c8649df4d73f0",
      "parents": [
        "9ea0f9499d15c49df23e7aac4332d830c40e12d0"
      ],
      "author": {
        "name": "Badari Pulavarty",
        "email": "pbadari@us.ibm.com",
        "time": "Sat Sep 30 23:28:46 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Oct 01 00:39:28 2006 -0700"
      },
      "message": "[PATCH] Vectorize aio_read/aio_write fileop methods\n\nThis patch vectorizes aio_read() and aio_write() methods to prepare for\ncollapsing all aio \u0026 vectored operations into one interface - which is\naio_read()/aio_write().\n\nSigned-off-by: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Michael Holzheu \u003cHOLZHEU@de.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d6e05edc59ecd79e8badf440c0d295a979bdfa3e",
      "tree": "50362161f69317242ab603c51a18a818a4c93285",
      "parents": [
        "f18190bd3407554ba6df30a1927e07e6cba93e56"
      ],
      "author": {
        "name": "Andreas Mohr",
        "email": "andi@lisas.de",
        "time": "Mon Jun 26 18:35:02 2006 +0200"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Mon Jun 26 18:35:02 2006 +0200"
      },
      "message": "spelling fixes\n\nacquired (aquired)\ncontiguous (contigious)\nsuccessful (succesful, succesfull)\nsurprise (suprise)\nwhether (weather)\nsome other misspellings\n\nSigned-off-by: Andreas Mohr \u003candi@lisas.de\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\n"
    },
    {
      "commit": "626ab0e69d376fa07599af669af8ba92d58e87c1",
      "tree": "a995e0231e61fab63568bc7bade81dc20c1dae09",
      "parents": [
        "54e73770357142e297c916c7865f5fca7499f69c"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Fri Jun 23 02:05:55 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 23 07:43:07 2006 -0700"
      },
      "message": "[PATCH] list: use list_replace_init() instead of list_splice_init()\n\nlist_splice_init(list, head) does unneeded job if it is known that\nlist_empty(head) \u003d\u003d 1.  We can use list_replace_init() instead.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "11b0b5abb2097a63c1081d9b7e825b987b227972",
      "tree": "162c828c8d807a1b30869acbe11682dc9222dc16",
      "parents": [
        "656bde5728b824ca23fcab8bc5800b309ea48d64"
      ],
      "author": {
        "name": "Oliver Neukum",
        "email": "neukum@fachschaft.cup.uni-muenchen.de",
        "time": "Sat Mar 25 03:08:13 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Mar 25 08:23:00 2006 -0800"
      },
      "message": "[PATCH] use kzalloc and kcalloc in core fs code\n\nSigned-off-by: Oliver Neukum \u003coliver@neukum.name\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "095975da26dba21698582e91e96be10f7417333f",
      "tree": "ce1ffac556d394ef56a18faa97d38f79b07f31e2",
      "parents": [
        "a57004e1afb6ee03c509f1b1ec74a000682ab93b"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "nickpiggin@yahoo.com.au",
        "time": "Sun Jan 08 01:02:19 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Jan 08 20:13:48 2006 -0800"
      },
      "message": "[PATCH] rcu file: use atomic primitives\n\nUse atomic_inc_not_zero for rcu files instead of special case rcuref.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: \"Paul E. McKenney\" \u003cpaulmck@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d00689af6b3b6ba9e1fdefec3bd62edc860c385d",
      "tree": "823a0998010a3074f8ae3cd0874de0cb91be719c",
      "parents": [
        "20dcae32439384b6863c626bb3b2a09bed65b33e"
      ],
      "author": {
        "name": "Zach Brown",
        "email": "zach.brown@oracle.com",
        "time": "Sun Nov 13 16:07:34 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Nov 13 18:14:16 2005 -0800"
      },
      "message": "[PATCH] aio: replace locking comments with assert_spin_locked()\n\naio: replace locking comments with assert_spin_locked()\n\nSigned-off-by: Zach Brown \u003czach.brown@oracle.com\u003e\nAcked-by: Benjamin LaHaise \u003cbcrl@kvack.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "20dcae32439384b6863c626bb3b2a09bed65b33e",
      "tree": "9750c39119447fb32963448bf1935e1ba22b2f9d",
      "parents": [
        "4557398f8cbaf9f254cff747534b4724c7f75c4f"
      ],
      "author": {
        "name": "Zach Brown",
        "email": "zach.brown@oracle.com",
        "time": "Sun Nov 13 16:07:33 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Nov 13 18:14:16 2005 -0800"
      },
      "message": "[PATCH] aio: remove kioctx from mm_struct\n\nSync iocbs have a life cycle that don\u0027t need a kioctx.  Their retrying, if\nany, is done in the context of their owner who has allocated them on the\nstack.\n\nThe sole user of a sync iocb\u0027s ctx reference was aio_complete() checking for\nan elevated iocb ref count that could never happen.  No path which grabs an\niocb ref has access to sync iocbs.\n\nIf we were to implement sync iocb cancelation it would be done by the owner of\nthe iocb using its on-stack reference.\n\nRemoving this chunk from aio_complete allows us to remove the entire kioctx\ninstance from mm_struct, reducing its size by a third.  On a i386 testing box\nthe slab size went from 768 to 504 bytes and from 5 to 8 per page.\n\nSigned-off-by: Zach Brown \u003czach.brown@oracle.com\u003e\nAcked-by: Benjamin LaHaise \u003cbcrl@kvack.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    }
  ],
  "next": "d55b5fdaf40846221d543937b786956e27837fda"
}
