)]}'
{
  "log": [
    {
      "commit": "ddce40df6e14dd474bbd9daa006dcc290dea6326",
      "tree": "29995b5d0ad7fcab114d388b4ab1675e32ba963e",
      "parents": [
        "e4cc6ee2e40bdd57990577b7f851fa2ca48edf47"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Wed May 09 08:30:11 2007 +0200"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 09 17:58:00 2007 -0400"
      },
      "message": "sunrpc: fix crash in rpc_malloc()\n\n\nWhile the comment says:\n * To prevent rpciod from hanging, this allocator never sleeps,\n * returning NULL if the request cannot be serviced immediately.\n\nThe function does not actually check for NULL pointers being returned.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e4cc6ee2e40bdd57990577b7f851fa2ca48edf47",
      "tree": "fa2515a197df6a75be707a1054a0c0f026f38ba4",
      "parents": [
        "6ce7dc940701cf3fde3c6e826a696b333092cbb1"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Tue May 08 18:23:28 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 09 17:58:00 2007 -0400"
      },
      "message": "NFS: Clean up NFSv4 XDR error message\n\nMake it more useful for debugging purposes.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6ce7dc940701cf3fde3c6e826a696b333092cbb1",
      "tree": "0894788349bae7b0d1707dcab98505b5ada8a3ef",
      "parents": [
        "aa3d1faebe6e214cd96be0e587571477ff6fd9fc"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Tue May 08 18:23:28 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 09 17:58:00 2007 -0400"
      },
      "message": "NFS: NFS client underestimates how large an NFSv4 SETATTR reply can be\n\nThe maximum size of an NFSv4 SETATTR compound reply should include the\nGETATTR operation that we send.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "aa3d1faebe6e214cd96be0e587571477ff6fd9fc",
      "tree": "d2295c15e30437a2bc693bd71b79a42c742ffc8b",
      "parents": [
        "e70c490810dc683fad39e57cf00e69d5f120c542"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Tue May 08 18:23:28 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 09 17:57:59 2007 -0400"
      },
      "message": "SUNRPC: Fix pointer arithmetic bug recently introduced in rpc_malloc/free\n\nUse a cleaner method to find the size of an rpc_buffer.  This actually\nworks on x86-64!\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e70c490810dc683fad39e57cf00e69d5f120c542",
      "tree": "24276f69c064376d3c69979f61e181b377560795",
      "parents": [
        "e62c2bba1fb7cf068eb78d731da46e4447a9efb1"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 09 09:00:18 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 09 17:57:59 2007 -0400"
      },
      "message": "NFS: Remove redundant check in nfs_check_verifier()\n\nThe check for nfs_attribute_timeout(dir) in nfs_check_verifier is\nredundant: nfs_lookup_revalidate() will already call nfs_revalidate_inode()\non the parent dir when necessary.\n\nThe only case where this is not done is the case of a negative dentry. Fix\nthis case by moving up the revalidation code.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e62c2bba1fb7cf068eb78d731da46e4447a9efb1",
      "tree": "bce53fe724400f7cfa1ae4621aafc6aa70bd564d",
      "parents": [
        "38cb162b7585d837083b8365da1eb32687c5164c"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 09 09:00:17 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 09 17:57:58 2007 -0400"
      },
      "message": "NFS: Fix a jiffie wraparound issue\n\ndentry verifiers are always set to the parent directory\u0027s\ncache_change_attribute. There is no reason to be testing for anything other\nthan equality when we\u0027re trying to find out if the dentry has been checked\nsince the last time the directory was modified.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "38cb162b7585d837083b8365da1eb32687c5164c",
      "tree": "e4ae15715b23b320b1a92699fac767bc766c8f0b",
      "parents": [
        "ba7cc09c9c9e29a57045dc5bbf843ac1cfad3283",
        "e180583b85f4a48bd55924712c88e5d8eb182e08"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 13:38:45 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 13:38:45 2007 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6:\n  [IA64] wire up pselect, ppoll\n  [IA64] Add TIF_RESTORE_SIGMASK\n  [IA64] unwind did not work for processes born with CLONE_STOPPED\n  [IA64] Optional method to purge the TLB on SN systems\n  [IA64] SPIN_LOCK_UNLOCKED macro cleanup in arch/ia64\n  [IA64-SN2][KJ] mmtimer.c-kzalloc\n  [IA64] fix stack alignment for ia32 signal handlers\n  [IA64] - Altix: hotplug after intr redirect can crash system\n  [IA64] save and restore cpus_allowed in cpu_idle_wait\n  [IA64] Removal of percpu TR cleanup in kexec code\n  [IA64] Fix some section mismatch errors\n"
    },
    {
      "commit": "ba7cc09c9c9e29a57045dc5bbf843ac1cfad3283",
      "tree": "7e2d39269803b53ba048f3bad11cd6a1a38b35b9",
      "parents": [
        "d84c4124c4b6611301b402e8611b7e36de3bd351",
        "b7aa48be1e7a11e36448a7db58931bbf735d2718"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 13:10:11 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 13:10:11 2007 -0700"
      },
      "message": "Merge git://git.infradead.org/mtd-2.6\n\n* git://git.infradead.org/mtd-2.6: (21 commits)\n  [MTD] [CHIPS] Remove MTD_OBSOLETE_CHIPS (jedec, amd_flash, sharp)\n  [MTD] Delete allegedly obsolete \"bank_size\" field of mtd_info.\n  [MTD] Remove unnecessary user space check from mtd.h.\n  [MTD] [MAPS] Remove flash maps for no longer supported 405LP boards\n  [MTD] [MAPS] Fix missing printk() parameter in physmap_of.c MTD driver\n  [MTD] [NAND] platform NAND driver: add driver\n  [MTD] [NAND] platform NAND driver: update header\n  [JFFS2] Simplify and clean up jffs2_add_tn_to_tree() some more.\n  [JFFS2] Remove another bogus optimisation in jffs2_add_tn_to_tree()\n  [JFFS2] Remove broken insert_point optimisation in jffs2_add_tn_to_tree()\n  [JFFS2] Remember to calculate overlap on nodes which replace older nodes\n  [JFFS2] Don\u0027t advance c-\u003ewbuf_ofs to next eraseblock after wbuf flush\n  [MTD] [NAND] at91_nand.c: CMDLINE_PARTS support\n  [MTD] [NAND] Tidy up handling of page number in nand_block_bad()\n  [MTD] block2mtd_paramline[] mustn\u0027t be __initdata\n  [MTD] [NAND] Support multiple chips in CAFÉ driver\n  [MTD] [NAND] Rename cafe.c to cafe_nand.c and remove the multi-obj magic\n  [MTD] [NAND] Use rslib for CAFÉ ECC\n  [RSLIB] Support non-canonical GF representations\n  [JFFS2] Remove dead file histo_mips.h\n  ...\n"
    },
    {
      "commit": "d84c4124c4b6611301b402e8611b7e36de3bd351",
      "tree": "d83cfaabfb901755d85074815ad948028dc7b03f",
      "parents": [
        "932c37c375cca25175f9b6acee4c75d7a96d985f",
        "a3cf4ea8729a5d448742fd5a0a003827c9f25cb6"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 13:08:20 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 13:08:20 2007 -0700"
      },
      "message": "Merge master.kernel.org:/pub/scm/linux/kernel/git/lethal/sh-2.6\n\n* master.kernel.org:/pub/scm/linux/kernel/git/lethal/sh-2.6:\n  sh: Fix stacktrace simplification fallout.\n  sh: SH7760 DMABRG support.\n  sh: clockevent/clocksource/hrtimers/nohz TMU support.\n  sh: Truncate MAX_ACTIVE_REGIONS for the common case.\n  rtc: rtc-sh: Fix rtc_dev pointer for rtc_update_irq().\n  sh: Convert to common die chain.\n  sh: Wire up utimensat syscall.\n  sh: landisk mv_nr_irqs definition.\n  sh: Fixup ndelay() xloops calculation for alternate HZ.\n  sh: Add 32-bit opcode feature CPU flag.\n  sh: Fix PC adjustments for varying opcode length.\n  sh: Support for SH-2A 32-bit opcodes.\n  sh: Kill off redundant __div64_32 symbol export.\n  sh: Share exception vector table for SH-3/4.\n  sh: Always define TRAPA_BUG_OPCODE.\n  sh: __GFP_REPEAT for pte allocations, too.\n  rtc: rtc-sh: Fix up dev_dbg() warnings.\n  sh: generic quicklist support.\n"
    },
    {
      "commit": "932c37c375cca25175f9b6acee4c75d7a96d985f",
      "tree": "d7ba3620cd9a7a21c2de1bdfc7badd7637ed635e",
      "parents": [
        "c855ff3718e5f667b463b20b9de516b4cd7625ad",
        "805f53f085346b6765eda02820721a14ce0d644f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 13:05:57 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 13:05:57 2007 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of master.kernel.org:/home/rmk/linux-2.6-arm\n\n* \u0027for-linus\u0027 of master.kernel.org:/home/rmk/linux-2.6-arm: (28 commits)\n  ARM: OMAP: Fix GCC-reported compile time bug\n  ARM: OMAP: restore CONFIG_GENERIC_TIME\n  ARM: OMAP: partial LED fixes\n  ARM: OMAP: add SoSSI clock (call propagate_rate for childrens)\n  ARM: OMAP: FB sync with N800 tree (support for dynamic SRAM allocations)\n  ARM: OMAP: Sync framebuffer headers with N800 tree\n  ARM: OMAP: Mostly cosmetic to sync up with linux-omap tree\n  ARM: OMAP: Fix gpmc header\n  ARM: OMAP: Add mailbox support for IVA\n  [ARM] armv7: add Makefile and Kconfig entries\n  [ARM] armv7: add support for asid-tagged VIVT I-cache\n  [ARM] armv7: add dedicated ARMv7 barrier instructions\n  [ARM] armv7: Add ARMv7 cacheid macros\n  [ARM] armv7: add support for ARMv7 cores.\n  [ARM] Fix ARM branch relocation range\n  [ARM] 4363/1: AT91: Remove legacy PIO definitions\n  [ARM] 4361/1: AT91: Build error\n  ARM: OMAP: Sync core code with linux-omap\n  ARM: OMAP: Sync headers with linux-omap\n  ARM: OMAP: h4 must have blinky leds!!\n  ...\n"
    },
    {
      "commit": "c855ff3718e5f667b463b20b9de516b4cd7625ad",
      "tree": "5f5f2db132c80705db2254fc8f2f222160228aa5",
      "parents": [
        "aabded9c3aab5160ae2ca3dd1fa0fa37f3d510e4"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Wed May 09 13:42:20 2007 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 13:04:03 2007 -0700"
      },
      "message": "Fix a bad error case handling in read_cache_page_async()\n\nCommit 6fe6900e1e5b6fa9e5c59aa5061f244fe3f467e2 introduced a nasty bug\nin read_cache_page_async().\n\nIt added a \"mark_page_accessed(page)\" at the final return path in\nread_cache_page_async().  But in error cases, \u0027page\u0027 holds the error\ncode, and you can\u0027t mark it accessed.\n\n[ and Glauber de Oliveira Costa points out that we can use a return\n  instead of adding more goto\u0027s ]\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "aabded9c3aab5160ae2ca3dd1fa0fa37f3d510e4",
      "tree": "8544d546735bcb975b8dec296eb9b6dc6531fb2a",
      "parents": [
        "9a9136e270af14da506f66bcafcc506b86a86498",
        "f1a1eb299a8422c3e8d41753095bec44b2493398"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:56:01 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:56:01 2007 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc\n\n* \u0027master\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc:\n  [POWERPC] Further fixes for the removal of 4level-fixup hack from ppc32\n  [POWERPC] EEH: log all PCI-X and PCI-E AER registers\n  [POWERPC] EEH: capture and log pci state on error\n  [POWERPC] EEH: Split up long error msg\n  [POWERPC] EEH: log error only after driver notification.\n  [POWERPC] fsl_soc: Make mac_addr const in fs_enet_of_init().\n  [POWERPC] Don\u0027t use SLAB/SLUB for PTE pages\n  [POWERPC] Spufs support for 64K LS mappings on 4K kernels\n  [POWERPC] Add ability to 4K kernel to hash in 64K pages\n  [POWERPC] Introduce address space \"slices\"\n  [POWERPC] Small fixes \u0026 cleanups in segment page size demotion\n  [POWERPC] iSeries: Make HVC_ISERIES the default\n  [POWERPC] iSeries: suppress build warning in lparmap.c\n  [POWERPC] Mark pages that don\u0027t exist as nosave\n  [POWERPC] swsusp: Introduce register_nosave_region_late\n"
    },
    {
      "commit": "9a9136e270af14da506f66bcafcc506b86a86498",
      "tree": "b4d0a6877d92635134b7a944d0032fbc43227fd2",
      "parents": [
        "3960208f9ca0cf6bdb31c21c59ac0526303f8b34",
        "7bb2acb76e8168ca5d0bde5a5a56585a11b3525a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:54:17 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:54:17 2007 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/bunk/trivial\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/bunk/trivial: (25 commits)\n  sound: convert \"sound\" subdirectory to UTF-8\n  MAINTAINERS: Add cxacru website/mailing list\n  include files: convert \"include\" subdirectory to UTF-8\n  general: convert \"kernel\" subdirectory to UTF-8\n  documentation: convert the Documentation directory to UTF-8\n  Convert the toplevel files CREDITS and MAINTAINERS to UTF-8.\n  remove broken URLs from net drivers\u0027 output\n  Magic number prefix consistency change to Documentation/magic-number.txt\n  trivial: s/i_sem /i_mutex/\n  fix file specification in comments\n  drivers/base/platform.c: fix small typo in doc\n  misc doc and kconfig typos\n  Remove obsolete fat_cvf help text\n  Fix occurrences of \"the the \"\n  Fix minor typoes in kernel/module.c\n  Kconfig: Remove reference to external mqueue library\n  Kconfig: A couple of grammatical fixes in arch/i386/Kconfig\n  Correct comments in genrtc.c to refer to correct /proc file.\n  Fix more \"deprecated\" spellos.\n  Fix \"deprecated\" typoes.\n  ...\n\nFix trivial comment conflict in kernel/relay.c.\n"
    },
    {
      "commit": "3960208f9ca0cf6bdb31c21c59ac0526303f8b34",
      "tree": "ca1948cec8fb390e5298498361194db145e2e49f",
      "parents": [
        "b0b73cb41d56ee391f20cbd3e4304e2303a8829b",
        "47cc3e780474be2e462278d63d77c27a493b28ed"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:50:25 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:50:25 2007 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://www.atmel.no/~hskinnemoen/linux/kernel/avr32\n\n* \u0027for-linus\u0027 of git://www.atmel.no/~hskinnemoen/linux/kernel/avr32:\n  [AVR32] Wire up sys_utimensat\n  [AVR32] Fix section mismatch .taglist -\u003e .init.text\n  [AVR32] Implement dma_{alloc,free}_writecombine()\n  AVR32: Spinlock initializer cleanup\n  [AVR32] Use correct config symbol when setting cpuflags\n"
    },
    {
      "commit": "b0b73cb41d56ee391f20cbd3e4304e2303a8829b",
      "tree": "69d6ebfed9c252e8689001a82dc438a74f89fd46",
      "parents": [
        "29bd44337799e4cb85aec5157a9c88a0da66642a"
      ],
      "author": {
        "name": "H. Peter Anvin",
        "email": "hpa@zytor.com",
        "time": "Wed May 09 00:02:11 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:49:33 2007 -0700"
      },
      "message": "i386: msr.h: be paranoid about types and parentheses\n\nWhen implementing things as macros, make sure we use typecasts and\nparentheses where needed.  The macros as defined were vulnerable to\nsurreptitious promotion causing problems.\n\nAvoid macros where practical; e.g. wrmsr() can be an inline instead.\n\nSigned-off-by: H. Peter Anvin \u003chpa@zytor.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "29bd44337799e4cb85aec5157a9c88a0da66642a",
      "tree": "454124f8ce577a814fde5edc08b26cdf1138f122",
      "parents": [
        "21c42bd8db2acd7c884d132efbf7aee9ca970b06"
      ],
      "author": {
        "name": "H. Peter Anvin",
        "email": "hpa@zytor.com",
        "time": "Wed May 09 00:02:06 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:49:33 2007 -0700"
      },
      "message": "i386: remove unused rdtsc() macro\n\nAll users to the two-part rdtsc() macro have already switched to using\nrdtscl() or rdtscll().  Remove the now-obsolete macro.\n\nSigned-off-by: H. Peter Anvin \u003chpa@zytor.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "21c42bd8db2acd7c884d132efbf7aee9ca970b06",
      "tree": "1ebbed858d9aaca784ff5b8bdf2fa30c27dc6738",
      "parents": [
        "5b479c91da90eef605f851508744bfe8269591a0"
      ],
      "author": {
        "name": "H. Peter Anvin",
        "email": "hpa@zytor.com",
        "time": "Wed May 09 00:02:00 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:49:33 2007 -0700"
      },
      "message": "i386: cpu/transmeta.c: fix definition of USER686\n\nThe definition of USER686 is supposed to be a mask of feature bits,\nnot an OR of feature numbers!  It happened to work anyway on the only\nprocessor affected, simply by pure coincidence.  Fix.\n\nSigned-off-by: H. Peter Anvin \u003chpa@zytor.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5b479c91da90eef605f851508744bfe8269591a0",
      "tree": "d7c2844926d96d794d66b974b300eba2d047465e",
      "parents": [
        "08a02ecd28bad35a47357e611044dcbeab06e3d7"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed May 09 02:35:39 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:57 2007 -0700"
      },
      "message": "md: improve partition detection in md array\n\nmd currently uses -\u003emedia_changed to make sure rescan_partitions\nis call on md array after they are assembled.\n\nHowever that doesn\u0027t happen until the array is opened, which is later\nthan some people would like.\n\nSo use blkdev_ioctl to do the rescan immediately that the\narray has been assembled.\n\nThis means we can remove all the -\u003echange infrastructure as it was only used\nto trigger a partition rescan.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "08a02ecd28bad35a47357e611044dcbeab06e3d7",
      "tree": "31050d686e58d55411f95c89204321aa2ea2b63a",
      "parents": [
        "42b9bebe3fea3d3ce381bc6735a3fb50e6613f06"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed May 09 02:35:38 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:57 2007 -0700"
      },
      "message": "md: allow reshape_position for md arrays to be set via sysfs\n\n\"reshape_position\" records how much progress has been made on a \"reshape\"\n(adding drives, changing layout or chunksize).\n\nWhen it is set, the number of drives, layout and chunksize can have\ntwo possible values, an old an a new.\n\nSo allow these different values to be visible, and allow both old and new to\nbe set: Set the old ones first, then the reshape_position, then the new\nvalues.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "42b9bebe3fea3d3ce381bc6735a3fb50e6613f06",
      "tree": "e99aec5ccb154e2f09a89a9b16f9e174b40b2863",
      "parents": [
        "4d167f09375bd6c18447d3fcc18baaf3acd15fbc"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed May 09 02:35:37 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:57 2007 -0700"
      },
      "message": "md: remove the slash from the name of a kmem_cache used by raid5\n\nSLUB doesn\u0027t like slashes as it wants to use the cache name as the name of a\ndirectory (or symlink) in sysfs.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nAcked-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": "4d167f09375bd6c18447d3fcc18baaf3acd15fbc",
      "tree": "4132b4061678bf6124c3045035c023e83aebe825",
      "parents": [
        "e11e93facc38fb264a5ff1e154ebb2f11dc5cffa"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed May 09 02:35:37 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:57 2007 -0700"
      },
      "message": "md: stop using csum_partial for checksum calculation in md\n\nIf CONFIG_NET is not selected, csum_partial is not exported, so md.ko cannot\nuse it.  We shouldn\u0027t really be using csum_partial anyway as it is an\ninternal-to-networking interface.\n\nSo replace it with C code to do the same thing.  Speed is not crucial here, so\nsomething simple and correct is best.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e11e93facc38fb264a5ff1e154ebb2f11dc5cffa",
      "tree": "0128d05a5a3d51704f25ad4622b5dad4078d1430",
      "parents": [
        "c3f94b40e1676172dfa88abfffd8baffe7ac607c"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed May 09 02:35:36 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:57 2007 -0700"
      },
      "message": "md: move test for whether level supports bitmap to correct place\n\nWe need to check for internal-consistency of superblock in load_super.\nvalidate_super is for inter-device consistency.\n\nWith the test in the wrong place, a badly created array will confuse md rather\nan produce sensible errors.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c3f94b40e1676172dfa88abfffd8baffe7ac607c",
      "tree": "c5440bae6c2a63cefbf87ef32936b45b46dd357d",
      "parents": [
        "50511da3da4d984fb944b2e373781b60915daf65"
      ],
      "author": {
        "name": "Martin Peschke",
        "email": "mp3@de.ibm.com",
        "time": "Wed May 09 02:35:35 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:57 2007 -0700"
      },
      "message": "md: cleanup: use seq_release_private() where appropriate\n\nWe can save some lines of code by using seq_release_private().\n\nSigned-off-by: Martin Peschke \u003cmp3@de.ibm.com\u003e\nAcked-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "50511da3da4d984fb944b2e373781b60915daf65",
      "tree": "17a3d4526fdd87ca20393cd7deef5270b5c19cf9",
      "parents": [
        "bc0ca06e24545117b69c94b1219dbe19392a0c5a"
      ],
      "author": {
        "name": "Ahmed S. Darwish",
        "email": "darwish.07@gmail.com",
        "time": "Wed May 09 02:35:34 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:57 2007 -0700"
      },
      "message": "drivers/md.c: Use ARRAY_SIZE macro when appropriate\n\nUse ARRAY_SIZE macro already defined in kernel.h\n\nSigned-off-by: Ahmed S. Darwish \u003cdarwish.07@gmail.com\u003e\nAcked-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bc0ca06e24545117b69c94b1219dbe19392a0c5a",
      "tree": "f7d2bdd1e205884280413e01c66ebfefab3f9af8",
      "parents": [
        "880169dd2edc4297b7811a0542be9766ca6945bc"
      ],
      "author": {
        "name": "Michal Piotrowski",
        "email": "michal.k.k.piotrowski@gmail.com",
        "time": "Wed May 09 02:35:34 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:57 2007 -0700"
      },
      "message": "frame buffer: geforce 7300 gt\n\nMy geforce isn\u0027t supported by nvidia frame buffer.\n\n/sbin/lspci\n01:00.0 VGA compatible controller: nVidia Corporation Unknown device 02e2 (rev a2)\n\n/usr/sbin/fbset -i\n\nmode \"1024x768-60\"\n    # D: 65.003 MHz, H: 48.365 kHz, V: 60.006 Hz\n    geometry 1024 768 1024 32767 8\n    timings 15384 160 24 29 3 136 6\n    accel true\n    rgba 8/0,8/0,8/0,0/0\nendmode\n\nFrame buffer device information:\n    Name        : NV2e\n    Address     : 0xe0000000\n    Size        : 134217728\n    Type        : PACKED PIXELS\n    Visual      : PSEUDOCOLOR\n    XPanStep    : 8\n    YPanStep    : 1\n    YWrapStep   : 0\n    LineLength  : 1024\n    MMIO Address: 0xf6000000\n    MMIO Size   : 16777216\n    Accelerator : Unknown (46)\n\nHere is a patch for this problem.\n\nSigned-off-by: Michal Piotrowski \u003cmichal.k.k.piotrowski@gmail.com\u003e\nCc: \"Antonino A. Daplas\" \u003cadaplas@pol.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "880169dd2edc4297b7811a0542be9766ca6945bc",
      "tree": "38f9ecb7507c37982291fa9f131682daf91c3c27",
      "parents": [
        "5a87ede94595f58934000e26e8b13398e63868b5"
      ],
      "author": {
        "name": "Haavard Skinnemoen",
        "email": "hskinnemoen@atmel.com",
        "time": "Wed May 09 02:35:33 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:57 2007 -0700"
      },
      "message": "fbdev: add support for AVR32\n\nProvide framebuffer page protection flags and definitions of\nfb_readl/fb_writel for AVR32.\n\nSigned-off-by: Haavard Skinnemoen \u003chskinnemoen@atmel.com\u003e\nCc: \"Antonino A. Daplas\" \u003cadaplas@pol.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5a87ede94595f58934000e26e8b13398e63868b5",
      "tree": "e97b7e505753c8243ec10c008e9ff39e61c92d09",
      "parents": [
        "681e14730c73cc2c71af282c001de6bc71c22f00"
      ],
      "author": {
        "name": "Antonino A. Daplas",
        "email": "adaplas@gmail.com",
        "time": "Wed May 09 02:35:32 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:57 2007 -0700"
      },
      "message": "svgalib: move fb_get_caps to svgalib\n\nMove fb_get_caps() method to svgalib.c as svga_get_caps() so it can be used by\ns3fb, arkfb and vt8623fb.\n\nSigned-off-by: Antonino Daplas \u003cadaplas@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": "681e14730c73cc2c71af282c001de6bc71c22f00",
      "tree": "3dfb470010566c2085524d9ae7d4791a787e4aaf",
      "parents": [
        "558b7bd86c32978648cda5deb5c758d77ef0c165"
      ],
      "author": {
        "name": "Ondrej Zajicek",
        "email": "santiago@crfreenet.org",
        "time": "Wed May 09 02:35:31 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:57 2007 -0700"
      },
      "message": "arkfb: new framebuffer driver for ARK Logic cards\n\nThis patch adds fbdev driver for graphics cards with ARK Logic 2000PV graphics\nchip with ICS 5342 ramdac.\n\n[adaplas@gmail.com: build fixes]\nSigned-off-by: Ondrej Zajicek \u003csantiago@crfreenet.org\u003e\nSigned-off-by: Antonino Daplas \u003cadaplas@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": "558b7bd86c32978648cda5deb5c758d77ef0c165",
      "tree": "4840567ca9496fe5bf0e9ac564650d613ae6c360",
      "parents": [
        "c3c117f06e95ea993ba4ed3b246fd76f87a4683f"
      ],
      "author": {
        "name": "Ondrej Zajicek",
        "email": "santiago@crfreenet.org",
        "time": "Wed May 09 02:35:31 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:57 2007 -0700"
      },
      "message": "vt8623fb: new framebuffer driver for VIA VT8623\n\nThis patch adds fbdev driver for graphics core in VIA VT8623\n\n[adaplas@gmail.com: build fixes]\nSigned-off-by: Ondrej Zajicek \u003csantiago@crfreenet.org\u003e\nSigned-off-by: Antonino Daplas \u003cadaplas@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": "c3c117f06e95ea993ba4ed3b246fd76f87a4683f",
      "tree": "c6bc7a29d7e07e78588d4edd064c038dcd0d86aa",
      "parents": [
        "affd872ebbe4f045d70a3f4b33b20f5f6c894bcc"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Wed May 09 02:35:30 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:57 2007 -0700"
      },
      "message": "i386 mmzone: use __maybe_unused\n\nReplace automatic variable instances of __attribute__ ((unused)) with\n__maybe_unused.\n\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nSigned-off-by: David Rientjes \u003crientjes@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": "affd872ebbe4f045d70a3f4b33b20f5f6c894bcc",
      "tree": "85375b385b29a81db1064ad99018221d13b3044e",
      "parents": [
        "d16aaffa752c7fd50df951e631dd0c11f80d9cbf"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Wed May 09 02:35:29 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:57 2007 -0700"
      },
      "message": "i386: voyager: use __maybe_unused\n\nReplace automatic variable instances of __attribute__((unused)) with\n__maybe_unused in mca_nmi_hook().\n\nCc: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\nSigned-off-by: David Rientjes \u003crientjes@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": "d16aaffa752c7fd50df951e631dd0c11f80d9cbf",
      "tree": "216b3c7046eb548600d0a29c1b87c7702aca8062",
      "parents": [
        "f6744c02bc50797c1a83f8303ebcc96673ca0524"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Wed May 09 02:35:28 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:57 2007 -0700"
      },
      "message": "sh: dma: use __maybe_unused\n\nThere is no such thing as labeling a variable as __attribute__((used)).  Since\nts_shift is not referenced in inline assembly, we assume that we\u0027re simply\nsuppressing a warning here if the variable is declared but unreferenced.\n\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nSigned-off-by: David Rientjes \u003crientjes@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": "f6744c02bc50797c1a83f8303ebcc96673ca0524",
      "tree": "ee30cf5efd9ff33ea2b6c9b33878d3de2a71cc02",
      "parents": [
        "0d7ebbbc6eaa5539f78ab20ed6ff1725a4e332ef"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Wed May 09 02:35:28 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:56 2007 -0700"
      },
      "message": "i386 pci: use __maybe_unused\n\nUse the new macro here\n\nCc: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: David Rientjes \u003crientjes@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": "0d7ebbbc6eaa5539f78ab20ed6ff1725a4e332ef",
      "tree": "ddef8183ac6440e96678fd4d1159ee86619e2a97",
      "parents": [
        "f7e4217b007d1f73e7e3cf10ba4fea4a608c603f"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Wed May 09 02:35:27 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:56 2007 -0700"
      },
      "message": "compiler: introduce __used and __maybe_unused\n\n__used is defined to be __attribute__((unused)) for all pre-3.3 gcc\ncompilers to suppress warnings for unused functions because perhaps they\nare referenced only in inline assembly.  It is defined to be\n__attribute__((used)) for gcc 3.3 and later so that the code is still\nemitted for such functions.\n\n__maybe_unused is defined to be __attribute__((unused)) for both function\nand variable use if it could possibly be unreferenced due to the evaluation\nof preprocessor macros.  Function prototypes shall be marked with\n__maybe_unused if the actual definition of the function is dependant on\npreprocessor macros.\n\nNo update to compiler-intel.h is necessary because ICC supports both\n__attribute__((used)) and __attribute__((unused)) as specified by the gcc\nmanual.\n\n__attribute_used__ is deprecated and will be removed once all current\ncode is converted to using __used.\n\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: David Rientjes \u003crientjes@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": "f7e4217b007d1f73e7e3cf10ba4fea4a608c603f",
      "tree": "9c3932bb871d4b6727dc588e4d6c9987637aaee5",
      "parents": [
        "c9f4f06d3191bd91c1a081b54a6c8e913e7b8a83"
      ],
      "author": {
        "name": "Roman Zippel",
        "email": "zippel@linux-m68k.org",
        "time": "Wed May 09 02:35:17 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:56 2007 -0700"
      },
      "message": "rename thread_info to stack\n\nThis finally renames the thread_info field in task structure to stack, so that\nthe assumptions about this field are gone and archs have more freedom about\nplacing the thread_info structure.\n\nNonbroken archs which have a proper thread pointer can do the access to both\ncurrent thread and task structure via a single pointer.\n\nIt\u0027ll allow for a few more cleanups of the fork code, from which e.g.  ia64\ncould benefit.\n\nSigned-off-by: Roman Zippel \u003czippel@linux-m68k.org\u003e\n[akpm@linux-foundation.org: build fix]\nCc: Richard Henderson \u003crth@twiddle.net\u003e\nCc: Ivan Kokshaysky \u003cink@jurassic.park.msu.ru\u003e\nCc: Russell King \u003crmk@arm.linux.org.uk\u003e\nCc: Ian Molton \u003cspyro@f2s.com\u003e\nCc: Haavard Skinnemoen \u003chskinnemoen@atmel.com\u003e\nCc: Mikael Starvik \u003cstarvik@axis.com\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: Yoshinori Sato \u003cysato@users.sourceforge.jp\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nCc: Hirokazu Takata \u003ctakata@linux-m32r.org\u003e\nCc: Geert Uytterhoeven \u003cgeert@linux-m68k.org\u003e\nCc: Roman Zippel \u003czippel@linux-m68k.org\u003e\nCc: Greg Ungerer \u003cgerg@uclinux.org\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nCc: Kazumoto Kojima \u003ckkojima@rr.iij4u.or.jp\u003e\nCc: Richard Curnow \u003crc@rc0.org.uk\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Jeff Dike \u003cjdike@addtoit.com\u003e\nCc: Paolo \u0027Blaisorblade\u0027 Giarrusso \u003cblaisorblade@yahoo.it\u003e\nCc: Miles Bader \u003cuclinux-v850@lsi.nec.co.jp\u003e\nCc: Andi Kleen \u003cak@muc.de\u003e\nCc: Chris Zankel \u003cchris@zankel.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c9f4f06d3191bd91c1a081b54a6c8e913e7b8a83",
      "tree": "fe6bb926f612e67b1e57c6a448c7e5d41dd69dad",
      "parents": [
        "e61a1c1c4f240cec61300c8f27518c3e47570fd4"
      ],
      "author": {
        "name": "Roman Zippel",
        "email": "zippel@linux-m68k.org",
        "time": "Wed May 09 02:35:16 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:56 2007 -0700"
      },
      "message": "wrap access to thread_info\n\nRecently a few direct accesses to the thread_info in the task structure snuck\nback, so this wraps them with the appropriate wrapper.\n\nSigned-off-by: Roman Zippel \u003czippel@linux-m68k.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e61a1c1c4f240cec61300c8f27518c3e47570fd4",
      "tree": "479d3b921577eaa642c4b1071acfeb4cb8ecf8ab",
      "parents": [
        "b52f52a093bb1e841e014c2087b5bee7162da413"
      ],
      "author": {
        "name": "Roman Zippel",
        "email": "zippel@linux-m68k.org",
        "time": "Wed May 09 02:35:15 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:56 2007 -0700"
      },
      "message": "Allow arch to initialize arch field of the module structure\n\nThis will later allow an arch to add module specific information via linker\ngenerated tables instead of poking directly in the module object structure.\n\nSigned-off-by: Roman Zippel \u003czippel@linux-m68k.org\u003e\nSigned-off-by: Geert Uytterhoeven \u003cgeert@linux-m68k.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b52f52a093bb1e841e014c2087b5bee7162da413",
      "tree": "7b7135897195fc9d14473d3ab824d59a4b65e5ad",
      "parents": [
        "4037d452202e34214e8a939fa5621b2b3bbb45b7"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed May 09 02:35:15 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:56 2007 -0700"
      },
      "message": "clocksource: fix resume logic\n\nWe need to make sure that the clocksources are resumed, when timekeeping is\nresumed.  The current resume logic does not guarantee this.\n\nAdd a resume function pointer to the clocksource struct, so clocksource\ndrivers which need to reinitialize the clocksource can provide a resume\nfunction.\n\nAdd a resume function, which calls the maybe available clocksource resume\nfunctions and resets the watchdog function, so a stable TSC can be used\naccross suspend/resume.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: john stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\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": "4037d452202e34214e8a939fa5621b2b3bbb45b7",
      "tree": "31b59c0ca94fba4d53b6738b0bad3d1e9fde3063",
      "parents": [
        "77461ab33229d48614402decfb1b2eaa6d446861"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed May 09 02:35:14 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:56 2007 -0700"
      },
      "message": "Move remote node draining out of slab allocators\n\nCurrently the slab allocators contain callbacks into the page allocator to\nperform the draining of pagesets on remote nodes.  This requires SLUB to have\na whole subsystem in order to be compatible with SLAB.  Moving node draining\nout of the slab allocators avoids a section of code in SLUB.\n\nMove the node draining so that is is done when the vm statistics are updated.\nAt that point we are already touching all the cachelines with the pagesets of\na processor.\n\nAdd a expire counter there.  If we have to update per zone or global vm\nstatistics then assume that the pageset will require subsequent draining.\n\nThe expire counter will be decremented on each vm stats update pass until it\nreaches zero.  Then we will drain one batch from the pageset.  The draining\nwill cause vm counter updates which will then cause another expiration until\nthe pcp is empty.  So we will drain a batch every 3 seconds.\n\nNote that remote node draining is a somewhat esoteric feature that is required\non large NUMA systems because otherwise significant portions of system memory\ncan become trapped in pcp queues.  The number of pcp is determined by the\nnumber of processors and nodes in a system.  A system with 4 processors and 2\nnodes has 8 pcps which is okay.  But a system with 1024 processors and 512\nnodes has 512k pcps with a high potential for large amount of memory being\ncaught in them.\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": "77461ab33229d48614402decfb1b2eaa6d446861",
      "tree": "d2675ff079e887645ed25ae5f793aa907d53c66a",
      "parents": [
        "d1187ed21026fd512b87851d0ca26d9ae16f9059"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed May 09 02:35:13 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:56 2007 -0700"
      },
      "message": "Make vm statistics update interval configurable\n\nMake it configurable.  Code in mm makes the vm statistics intervals\nindependent from the cache reaper use that opportunity to make it\nconfigurable.\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": "d1187ed21026fd512b87851d0ca26d9ae16f9059",
      "tree": "35d77758f134f3b69d3e00ca042a5d5ca6a59373",
      "parents": [
        "455c017ae3934797653549704c286e7bcc3a9397"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed May 09 02:35:12 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:56 2007 -0700"
      },
      "message": "vmstat: use our own timer events\n\nvmstat is currently using the cache reaper to periodically bring the\nstatistics up to date.  The cache reaper does only exists in SLUB as a way to\nprovide compatibility with SLAB.  This patch removes the vmstat calls from the\nslab allocators and provides its own handling.\n\nThe advantage is also that we can use a different frequency for the updates.\nRefreshing vm stats is a pretty fast job so we can run this every second and\nstagger this by only one tick.  This will lead to some overlap in large\nsystems.  F.e a system running at 250 HZ with 1024 processors will have 4 vm\nupdates occurring at once.\n\nHowever, the vm stats update only accesses per node information.  It is only\nnecessary to stagger the vm statistics updates per processor in each node.  Vm\ncounter updates occurring on distant nodes will not cause cacheline\ncontention.\n\nWe could implement an alternate approach that runs the first processor on each\nnode at the second and then each of the other processor on a node on a\nsubsequent tick.  That may be useful to keep a large amount of the second free\nof timer activity.  Maybe the timer folks will have some feedback on this one?\n\n[jirislaby@gmail.com: add missing break]\nCc: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Jiri Slaby \u003cjirislaby@gmail.com\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": "455c017ae3934797653549704c286e7bcc3a9397",
      "tree": "7b5b67916b064e3ce7868082e0915f37b437aeb8",
      "parents": [
        "8bb7844286fb8c9fce6f65d8288aeb09d03a5e0d"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Wed May 09 02:35:11 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:56 2007 -0700"
      },
      "message": "microcode: use suspend-related CPU hotplug notifications\n\nMake the microcode driver use the suspend-related CPU hotplug notifications\nto handle the CPU hotplug events occuring during system-wide suspend and\nresume transitions.  Remove the global variable suspend_cpu_hotplug\npreviously used for this purpose.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nCc: Gautham R Shenoy \u003cego@in.ibm.com\u003e\nCc: Pavel Machek \u003cpavel@ucw.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8bb7844286fb8c9fce6f65d8288aeb09d03a5e0d",
      "tree": "f4e305edaedbde05774bb1e4acd89a9475661d2e",
      "parents": [
        "f37bc2712b54ec641e0c0c8634f1a4b61d9956c0"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Wed May 09 02:35:10 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:56 2007 -0700"
      },
      "message": "Add suspend-related notifications for CPU hotplug\n\nSince nonboot CPUs are now disabled after tasks and devices have been\nfrozen and the CPU hotplug infrastructure is used for this purpose, we need\nspecial CPU hotplug notifications that will help the CPU-hotplug-aware\nsubsystems distinguish normal CPU hotplug events from CPU hotplug events\nrelated to a system-wide suspend or resume operation in progress.  This\npatch introduces such notifications and causes them to be used during\nsuspend and resume transitions.  It also changes all of the\nCPU-hotplug-aware subsystems to take these notifications into consideration\n(for now they are handled in the same way as the corresponding \"normal\"\nones).\n\n[oleg@tv-sign.ru: cleanups]\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nCc: Gautham R Shenoy \u003cego@in.ibm.com\u003e\nCc: Pavel Machek \u003cpavel@ucw.cz\u003e\nSigned-off-by: 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": "f37bc2712b54ec641e0c0c8634f1a4b61d9956c0",
      "tree": "0b73fd72a74115922e8e88bd56667c04b9299767",
      "parents": [
        "f2fff596955867d407cc7e8e426097bd9ad2be9b"
      ],
      "author": {
        "name": "Nate Diller",
        "email": "nate.diller@gmail.com",
        "time": "Wed May 09 02:35:09 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:56 2007 -0700"
      },
      "message": "fs: deprecate memclear_highpage_flush\n\nNow that all the in-tree users are converted over to zero_user_page(),\ndeprecate the old memclear_highpage_flush() call.\n\nSigned-off-by: Nate Diller \u003cnate.diller@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": "f2fff596955867d407cc7e8e426097bd9ad2be9b",
      "tree": "68ca108b7eecef9d789fb7bf9eb2405854880575",
      "parents": [
        "0c11d7a9e9e9793219baf715048c190a84bead57"
      ],
      "author": {
        "name": "Nate Diller",
        "email": "nate.diller@gmail.com",
        "time": "Wed May 09 02:35:09 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:56 2007 -0700"
      },
      "message": "reiserfs: use zero_user_page\n\nUse zero_user_page() instead of open-coding it.\n\nSigned-off-by: Nate Diller \u003cnate.diller@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": "0c11d7a9e9e9793219baf715048c190a84bead57",
      "tree": "ba5557118502f04a6dc12b66a6afacac1144256b",
      "parents": [
        "f36dca90e674a1a62cad810f630629c0008b2128"
      ],
      "author": {
        "name": "Nate Diller",
        "email": "nate.diller@gmail.com",
        "time": "Wed May 09 02:35:08 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:55 2007 -0700"
      },
      "message": "ext3: use zero_user_page\n\nUse zero_user_page() instead of open-coding it.\n\nSigned-off-by: Nate Diller \u003cnate.diller@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": "f36dca90e674a1a62cad810f630629c0008b2128",
      "tree": "56c7d0570d63de5af08dfa64859689904d91432d",
      "parents": [
        "01f2705daf5a36208e69d7cf95db9c330f843af6"
      ],
      "author": {
        "name": "Nate Diller",
        "email": "nate.diller@gmail.com",
        "time": "Wed May 09 02:35:07 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:55 2007 -0700"
      },
      "message": "affs: use zero_user_page\n\nUse zero_user_page() instead of open-coding it.\n\nSigned-off-by: Nate Diller \u003cnate.diller@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": "01f2705daf5a36208e69d7cf95db9c330f843af6",
      "tree": "2d2c7a042c2466ed985f6e0950450c099f02725f",
      "parents": [
        "38a23e311b6cd389b9d8af2ea6c28c8cffbe581c"
      ],
      "author": {
        "name": "Nate Diller",
        "email": "nate.diller@gmail.com",
        "time": "Wed May 09 02:35:07 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:55 2007 -0700"
      },
      "message": "fs: convert core functions to zero_user_page\n\nIt\u0027s very common for file systems to need to zero part or all of a page,\nthe simplist way is just to use kmap_atomic() and memset().  There\u0027s\nactually a library function in include/linux/highmem.h that does exactly\nthat, but it\u0027s confusingly named memclear_highpage_flush(), which is\ndescriptive of *how* it does the work rather than what the *purpose* is.\nSo this patchset renames the function to zero_user_page(), and calls it\nfrom the various places that currently open code it.\n\nThis first patch introduces the new function call, and converts all the\ncore kernel callsites, both the open-coded ones and the old\nmemclear_highpage_flush() ones.  Following this patch is a series of\nconversions for each file system individually, per AKPM, and finally a\npatch deprecating the old call.  The diffstat below shows the entire\npatchset.\n\n[akpm@linux-foundation.org: fix a few things]\nSigned-off-by: Nate Diller \u003cnate.diller@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": "38a23e311b6cd389b9d8af2ea6c28c8cffbe581c",
      "tree": "742b2d0e5e6f7015afe92dfa87ed22964082b8cb",
      "parents": [
        "34f01cc1f512fa783302982776895c73714ebbc2"
      ],
      "author": {
        "name": "Jarek Poplawski",
        "email": "jarkao2@o2.pl",
        "time": "Wed May 09 02:35:05 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:55 2007 -0700"
      },
      "message": "timer: parenthesis fix in tbase_get_deferrable() etc\n\nSigned-off-by: Jarek Poplawski \u003cjarkao2@o2.pl\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "34f01cc1f512fa783302982776895c73714ebbc2",
      "tree": "776b50ee9592803853b3b4c1845f8ba527b868b9",
      "parents": [
        "d0aa7a70bf03b9de9e995ab272293be1f7937822"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Wed May 09 02:35:04 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:55 2007 -0700"
      },
      "message": "FUTEX: new PRIVATE futexes\n\n  Analysis of current linux futex code :\n  --------------------------------------\n\nA central hash table futex_queues[] holds all contexts (futex_q) of waiting\nthreads.\n\nEach futex_wait()/futex_wait() has to obtain a spinlock on a hash slot to\nperform lookups or insert/deletion of a futex_q.\n\nWhen a futex_wait() is done, calling thread has to :\n\n1) - Obtain a read lock on mmap_sem to be able to validate the user pointer\n     (calling find_vma()). This validation tells us if the futex uses\n     an inode based store (mapped file), or mm based store (anonymous mem)\n\n2) - compute a hash key\n\n3) - Atomic increment of reference counter on an inode or a mm_struct\n\n4) - lock part of futex_queues[] hash table\n\n5) - perform the test on value of futex.\n\t(rollback is value !\u003d expected_value, returns EWOULDBLOCK)\n\t(various loops if test triggers mm faults)\n\n6) queue the context into hash table, release the lock got in 4)\n\n7) - release the read_lock on mmap_sem\n\n   \u003cblock\u003e\n\n8) Eventually unqueue the context (but rarely, as this part  may be done\n   by the futex_wake())\n\nFutexes were designed to improve scalability but current implementation has\nvarious problems :\n\n- Central hashtable :\n\n  This means scalability problems if many processes/threads want to use\n  futexes at the same time.\n  This means NUMA unbalance because this hashtable is located on one node.\n\n- Using mmap_sem on every futex() syscall :\n\n  Even if mmap_sem is a rw_semaphore, up_read()/down_read() are doing atomic\n  ops on mmap_sem, dirtying cache line :\n    - lot of cache line ping pongs on SMP configurations.\n\n  mmap_sem is also extensively used by mm code (page faults, mmap()/munmap())\n  Highly threaded processes might suffer from mmap_sem contention.\n\n  mmap_sem is also used by oprofile code. Enabling oprofile hurts threaded\n  programs because of contention on the mmap_sem cache line.\n\n- Using an atomic_inc()/atomic_dec() on inode ref counter or mm ref counter:\n  It\u0027s also a cache line ping pong on SMP. It also increases mmap_sem hold time\n  because of cache misses.\n\nMost of these scalability problems come from the fact that futexes are in\none global namespace.  As we use a central hash table, we must make sure\nthey are all using the same reference (given by the mm subsystem).  We\nchose to force all futexes be \u0027shared\u0027.  This has a cost.\n\nBut fact is POSIX defined PRIVATE and SHARED, allowing clear separation,\nand optimal performance if carefuly implemented.  Time has come for linux\nto have better threading performance.\n\nThe goal is to permit new futex commands to avoid :\n - Taking the mmap_sem semaphore, conflicting with other subsystems.\n - Modifying a ref_count on mm or an inode, still conflicting with mm or fs.\n\nThis is possible because, for one process using PTHREAD_PROCESS_PRIVATE\nfutexes, we only need to distinguish futexes by their virtual address, no\nmatter the underlying mm storage is.\n\nIf glibc wants to exploit this new infrastructure, it should use new\n_PRIVATE futex subcommands for PTHREAD_PROCESS_PRIVATE futexes.  And be\nprepared to fallback on old subcommands for old kernels.  Using one global\nvariable with the FUTEX_PRIVATE_FLAG or 0 value should be OK.\n\nPTHREAD_PROCESS_SHARED futexes should still use the old subcommands.\n\nCompatibility with old applications is preserved, they still hit the\nscalability problems, but new applications can fly :)\n\nNote : the same SHARED futex (mapped on a file) can be used by old binaries\n*and* new binaries, because both binaries will use the old subcommands.\n\nNote : Vast majority of futexes should be using PROCESS_PRIVATE semantic,\nas this is the default semantic. Almost all applications should benefit\nof this changes (new kernel and updated libc)\n\nSome bench results on a Pentium M 1.6 GHz (SMP kernel on a UP machine)\n\n/* calling futex_wait(addr, value) with value !\u003d *addr */\n433 cycles per futex(FUTEX_WAIT) call (mixing 2 futexes)\n424 cycles per futex(FUTEX_WAIT) call (using one futex)\n334 cycles per futex(FUTEX_WAIT_PRIVATE) call (mixing 2 futexes)\n334 cycles per futex(FUTEX_WAIT_PRIVATE) call (using one futex)\nFor reference :\n187 cycles per getppid() call\n188 cycles per umask() call\n181 cycles per ni_syscall() call\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nPierre Peiffer \u003cpierre.peiffer@bull.net\u003e\nCc: \"Ulrich Drepper\" \u003cdrepper@gmail.com\u003e\nCc: \"Nick Piggin\" \u003cnickpiggin@yahoo.com.au\u003e\nCc: \"Ingo Molnar\" \u003cmingo@elte.hu\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d0aa7a70bf03b9de9e995ab272293be1f7937822",
      "tree": "194b30b7b8374b946f166996cb99fb95eb3b7819",
      "parents": [
        "c19384b5b296905d4988c7c684ff540a0f9d65be"
      ],
      "author": {
        "name": "Pierre Peiffer",
        "email": "pierre.peiffer@bull.net",
        "time": "Wed May 09 02:35:02 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:55 2007 -0700"
      },
      "message": "futex_requeue_pi optimization\n\nThis patch provides the futex_requeue_pi functionality, which allows some\nthreads waiting on a normal futex to be requeued on the wait-queue of a\nPI-futex.\n\nThis provides an optimization, already used for (normal) futexes, to be used\nwith the PI-futexes.\n\nThis optimization is currently used by the glibc in pthread_broadcast, when\nusing \"normal\" mutexes.  With futex_requeue_pi, it can be used with\nPRIO_INHERIT mutexes too.\n\nSigned-off-by: Pierre Peiffer \u003cpierre.peiffer@bull.net\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Ulrich Drepper \u003cdrepper@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": "c19384b5b296905d4988c7c684ff540a0f9d65be",
      "tree": "071cfe0855d409d63de80ec1b9b663738efb09de",
      "parents": [
        "ec92d08292d3e9b0823eba138a4564d2d39f25c7"
      ],
      "author": {
        "name": "Pierre Peiffer",
        "email": "pierre.peiffer@bull.net",
        "time": "Wed May 09 02:35:02 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:55 2007 -0700"
      },
      "message": "Make futex_wait() use an hrtimer for timeout\n\nThis patch modifies futex_wait() to use an hrtimer + schedule() in place of\nschedule_timeout().\n\nschedule_timeout() is tick based, therefore the timeout granularity is the\ntick (1 ms, 4 ms or 10 ms depending on HZ).  By using a high resolution timer\nfor timeout wakeup, we can attain a much finer timeout granularity (in the\nmicrosecond range).  This parallels what is already done for futex_lock_pi().\n\nThe timeout passed to the syscall is no longer converted to jiffies and is\ntherefore passed to do_futex() and futex_wait() as an absolute ktime_t\ntherefore keeping nanosecond resolution.\n\nAlso this removes the need to pass the nanoseconds timeout part to\nfutex_lock_pi() in val2.\n\nIn futex_wait(), if there is no timeout then a regular schedule() is\nperformed.  Otherwise, an hrtimer is fired before schedule() is called.\n\n[akpm@linux-foundation.org: fix `make headers_check\u0027]\nSigned-off-by: Sebastien Dugue \u003csebastien.dugue@bull.net\u003e\nSigned-off-by: Pierre Peiffer \u003cpierre.peiffer@bull.net\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Ulrich Drepper \u003cdrepper@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": "ec92d08292d3e9b0823eba138a4564d2d39f25c7",
      "tree": "4dc94792e83d51b036d52e92e8d4f137a2efce97",
      "parents": [
        "f34c506b0385b43abd25c490335036ecbb173aed"
      ],
      "author": {
        "name": "Pierre Peiffer",
        "email": "pierre.peiffer@bull.net",
        "time": "Wed May 09 02:35:00 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:55 2007 -0700"
      },
      "message": "futex priority based wakeup\n\nToday, all threads waiting for a given futex are woken in FIFO order (first\nwaiter woken first) instead of priority order.\n\nThis patch makes use of plist (pirotity ordered lists) instead of simple list\nin futex_hash_bucket.\n\nAll non-RT threads are stored with priority MAX_RT_PRIO, causing them to be\nwoken last, in FIFO order (RT-threads are woken first, in priority order).\n\nSigned-off-by: Sebastien Dugue \u003csebastien.dugue@bull.net\u003e\nSigned-off-by: Pierre Peiffer \u003cpierre.peiffer@bull.net\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Ulrich Drepper \u003cdrepper@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": "f34c506b0385b43abd25c490335036ecbb173aed",
      "tree": "97b8348ddb9acbe6d931a62bdd94c389ecc534f4",
      "parents": [
        "b8522ead3534c6cd06752b47a3bc380956191a2a"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Wed May 09 02:34:59 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:54 2007 -0700"
      },
      "message": "declare struct ktime\n\nSome smarty went and inflicted ktime_t as a typedef upon us, so we cannot\nforward declare it.\n\nCreate a new `union ktime\u0027, map ktime_t onto that.  Now we need to kill off\nthis ktime_t thing.\n\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: john stultz \u003cjohnstul@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": "b8522ead3534c6cd06752b47a3bc380956191a2a",
      "tree": "748ff93b4d5a49e6e21392c30ecad143694dcd94",
      "parents": [
        "b41eeef14d7c73af6d16c7d02b7a939082a137ff"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Wed May 09 02:34:58 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:54 2007 -0700"
      },
      "message": "aio is unlikely\n\nStick an unlikely() around is_aio(): I assert that most IO is synchronous.\n\nCc: Suparna Bhattacharya \u003csuparna@in.ibm.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Benjamin LaHaise \u003cbcrl@kvack.org\u003e\nCc: Zach Brown \u003czach.brown@oracle.com\u003e\nCc: Ulrich Drepper \u003cdrepper@redhat.com\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b41eeef14d7c73af6d16c7d02b7a939082a137ff",
      "tree": "eafe41b86a825f7effc4ba596c56507451c60367",
      "parents": [
        "072f62ed85a71bbb3429a52678500ec9f9441e0d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed May 09 02:34:57 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:54 2007 -0700"
      },
      "message": "knfsd: avoid Oops if buggy userspace performs confusing filehandle-\u003edentry mapping\n\nWhen a lookup request arrives, nfsd uses information provided by userspace\n(mountd) to find the right filesystem.\n\nIt then assumes that the same filehandle type as the incoming filehandle can\nbe used to create an outgoing filehandle.\n\nHowever if mountd is buggy, or maybe just being creative, the filesystem may\nnot support that filesystem type, and the kernel could oops, particularly if\n\u0027ex_uuid\u0027 is NULL but a FSID_UUID* filehandle type is used.\n\nSo add some proper checking that the fsid version/type from the incoming\nfilehandle is actually supportable, and ignore that information if it isn\u0027t\nsupportable.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "072f62ed85a71bbb3429a52678500ec9f9441e0d",
      "tree": "016660b8c3de979be1d623c18306ab4c72088adb",
      "parents": [
        "f725b217b16e2cb1777c5a6e13c99f7913f1514a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed May 09 02:34:57 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:54 2007 -0700"
      },
      "message": "knfsd: various nfsd xdr cleanups\n\n1/ decode_sattr and decode_sattr3 never return NULL, so remove\n   several checks for that. ditto for xdr_decode_hyper.\n\n2/ replace some open coded XDR_QUADLEN calls with calls to\n   XDR_QUADLEN\n\n3/ in decode_writeargs, simply an \u0027if\u0027 to use a single\n   calculation.\n   .page_len is the length of that part of the packet that did\n   not fit in the first page (the head).\n   So the length of the data part is the remainder of the\n   head, plus page_len.\n\n3/ other minor cleanups.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f725b217b16e2cb1777c5a6e13c99f7913f1514a",
      "tree": "7ba67527cc570e327b6d17eac92fc9c8b44d0b4d",
      "parents": [
        "05ed690efbb28b54af79f97af8c9705e82a6fbd7"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Wed May 09 02:34:56 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:54 2007 -0700"
      },
      "message": "knfsd: trivial makefile cleanup\n\nkbuild directly interprets \u003cmodulename\u003e-y as objects to build into a module,\nno need to assign it to the old foo-objs variable.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "05ed690efbb28b54af79f97af8c9705e82a6fbd7",
      "tree": "f6c5a437cb8f8c0a666cd1f1a13e39d1fa354146",
      "parents": [
        "c5e434c98b49f4877ea1614a629499e082b1a818"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed May 09 02:34:55 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:54 2007 -0700"
      },
      "message": "knfsd: simplify a \u0027while\u0027 condition in svcsock.c\n\nThis while loop has an overly complex condition, which performs a couple of\nassignments.  This hurts readability.\n\nWe don\u0027t really need a loop at all.  We can just return -EAGAIN and (providing\nwe set SK_DATA), the function will be called again.\n\nSo discard the loop, make the complex conditional become a few clear function\ncalls, and hopefully improve readability.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c5e434c98b49f4877ea1614a629499e082b1a818",
      "tree": "782331ad72eb4920825d3a0e9b99fef74e3d3c5f",
      "parents": [
        "54f9247b3f6e51b24a4b7e873b3ab34d8e59dc45"
      ],
      "author": {
        "name": "Wei Yongjun",
        "email": "yjwei@cn.fujitsu.com",
        "time": "Wed May 09 02:34:54 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:54 2007 -0700"
      },
      "message": "knfsd: rpcgss: RPC_GSS_PROC_ DESTROY request will get a bad rpc\n\nIf I send a RPC_GSS_PROC_DESTROY message to NFSv4 server, it will reply with a\nbad rpc reply which lacks an authentication verifier.  Maybe this patch is\nneeded.\n\nSend/recv packets as following:\n\nsend:\n\nRemoteProcedureCall\n    xid\n    rpcvers \u003d 2\n    prog \u003d 100003\n    vers \u003d 4\n    proc \u003d 0\n    cred \u003d AUTH_GSS\n        version \u003d 1\n        gss_proc \u003d 3 (RPCSEC_GSS_DESTROY)\n        service  \u003d 1 (RPC_GSS_SVC_NONE)\n    verf \u003d AUTH_GSS\n        checksum\n\nreply:\n\nRemoteProcedureReply\n    xid\n    msg_type\n    reply_stat\n    accepted_reply\n\nSigned-off-by: Wei Yongjun \u003cyjwei@cn.fujitsu.com\u003e\nSigned-off-by: \"J. Bruce Fields\" \u003cbfields@citi.umich.edu\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "54f9247b3f6e51b24a4b7e873b3ab34d8e59dc45",
      "tree": "30954f9f05e622798e11a368a487d6cb7e87e132",
      "parents": [
        "153e44d22fb5f98198f90fbf56e89b345e48534d"
      ],
      "author": {
        "name": "Frank Filz",
        "email": "ffilzlnx@us.ibm.com",
        "time": "Wed May 09 02:34:53 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:54 2007 -0700"
      },
      "message": "knfsd: fix resource leak resulting in module refcount leak for rpcsec_gss_krb5.ko\n\nI have been investigating a module reference count leak on the server for\nrpcsec_gss_krb5.ko.  It turns out the problem is a reference count leak for\nthe security context in net/sunrpc/auth_gss/svcauth_gss.c.\n\nThe problem is that gss_write_init_verf() calls gss_svc_searchbyctx() which\ndoes a rsc_lookup() but never releases the reference to the context.  There is\nanother issue that rpc.svcgssd sets an \"end of time\" expiration for the\ncontext\n\nBy adding a cache_put() call in gss_svc_searchbyctx(), and setting an\nexpiration timeout in the downcall, cache_clean() does clean up the context\nand the module reference count now goes to zero after unmount.\n\nI also verified that if the context expires and then the client makes a new\nrequest, a new context is established.\n\nHere is the patch to fix the kernel, I will start a separate thread to discuss\nwhat expiration time should be set by rpc.svcgssd.\n\nAcked-by: \"J. Bruce Fields\" \u003cbfields@citi.umich.edu\u003e\nSigned-off-by: Frank Filz \u003cffilzlnx@us.ibm.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "153e44d22fb5f98198f90fbf56e89b345e48534d",
      "tree": "1bb266798f1a08d2c5f09f2bd3c87564fea52744",
      "parents": [
        "402acd29e552cb80109d1d5c0ada53f634465d87"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed May 09 02:34:52 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:54 2007 -0700"
      },
      "message": "knfsd: rpc: fix server-side wrapping of krb5i replies\n\nIt\u0027s not necessarily correct to assume that the xdr_buf used to hold the\nserver\u0027s reply must have page data whenever it has tail data.\n\nAnd there\u0027s no need for us to deal with that case separately anyway.\n\nAcked-by: \"J. Bruce Fields\" \u003cbfields@citi.umich.edu\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\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": "402acd29e552cb80109d1d5c0ada53f634465d87",
      "tree": "12c86f3421d3d8679401742e1bc6569c75908ee3",
      "parents": [
        "5bd5f5812bfa753218e02cb773e06ede48055798"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed May 09 02:34:52 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:54 2007 -0700"
      },
      "message": "knfsd: avoid use of unitialised variables on error path when nfs exports\n\nWe need to zero various parts of \u0027exp\u0027 before any \u0027goto out\u0027, otherwise when\nwe go to free the contents...  we die.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\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": "5bd5f5812bfa753218e02cb773e06ede48055798",
      "tree": "266b416bca305ff32cf121490d31fd1b6bf32a75",
      "parents": [
        "cd123012d99fde4759500fee611e724e4f3016e3"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Wed May 09 02:34:51 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:54 2007 -0700"
      },
      "message": "sunrpc: fix error path in module_init\n\nregister_rpc_pipefs() needs to clean up rpc_inode_cache\nby kmem_cache_destroy() on register_filesystem() failure.\n\ninit_sunrpc() needs to unregister rpc_pipe_fs by unregister_rpc_pipefs()\nwhen rpc_init_mempool() returns error.\n\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cd123012d99fde4759500fee611e724e4f3016e3",
      "tree": "a947c5e4210a2a51ea6619b3e127650feaa00421",
      "parents": [
        "669716433598a1498049e75a84a5aaf69c8da173"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Wed May 09 02:34:50 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:54 2007 -0700"
      },
      "message": "RPC: add wrapper for svc_reserve to account for checksum\n\nWhen the kernel calls svc_reserve to downsize the expected size of an RPC\nreply, it fails to account for the possibility of a checksum at the end of\nthe packet.  If a client mounts a NFSv2/3 with sec\u003dkrb5i/p, and does I/O\nthen you\u0027ll generally see messages similar to this in the server\u0027s ring\nbuffer:\n\nRPC request reserved 164 but used 208\n\nWhile I was never able to verify it, I suspect that this problem is also\nthe root cause of some oopses I\u0027ve seen under these conditions:\n\nhttps://bugzilla.redhat.com/bugzilla/show_bug.cgi?id\u003d227726\n\nThis is probably also a problem for other sec\u003d types and for NFSv4.  The\nlarge reserved size for NFSv4 compound packets seems to generally paper\nover the problem, however.\n\nThis patch adds a wrapper for svc_reserve that accounts for the possibility\nof a checksum.  It also fixes up the appropriate callers of svc_reserve to\ncall the wrapper.  For now, it just uses a hardcoded value that I\ndetermined via testing.  That value may need to be revised upward as things\nchange, or we may want to eventually add a new auth_op that attempts to\ncalculate this somehow.\n\nUnfortunately, there doesn\u0027t seem to be a good way to reliably determine\nthe expected checksum length prior to actually calculating it, particularly\nwith schemes like spkm3.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nAcked-by: Neil Brown \u003cneilb@suse.de\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nAcked-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "669716433598a1498049e75a84a5aaf69c8da173",
      "tree": "6f925e6ddaaa31b485972ccc08fd725b5ea65e27",
      "parents": [
        "7ac1bea5507218da03f6005d228789da5a831c3f"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Wed May 09 02:34:49 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:54 2007 -0700"
      },
      "message": "nfsd/nfs4state: remove unnecessary daemonize call\n\nAcked-by: Neil Brown \u003cneilb@suse.de\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7ac1bea5507218da03f6005d228789da5a831c3f",
      "tree": "43c0a68d468352f8ca1f42ada7970e3a97411f5b",
      "parents": [
        "f34b95689d2ce001c157b1604289ff240b4bdee0"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed May 09 02:34:48 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:54 2007 -0700"
      },
      "message": "knfsd: rename sk_defer_lock to sk_lock\n\nNow that sk_defer_lock protects two different things, make the name more\ngeneric.\n\nAlso don\u0027t bother with disabling _bh as the lock is only ever taken from\nprocess context.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f34b95689d2ce001c157b1604289ff240b4bdee0",
      "tree": "e249e166e3c66656ad1b5ac895da6e4c207830e1",
      "parents": [
        "8842c9655b2b7f0e8e6c50a773b649e5d8a57678"
      ],
      "author": {
        "name": "Peter Staubach",
        "email": "staubach@redhat.com",
        "time": "Wed May 09 02:34:48 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:54 2007 -0700"
      },
      "message": "The NFSv2/NFSv3 server does not handle zero length WRITE requests correctly\n\nThe NFSv2 and NFSv3 servers do not handle WRITE requests for 0 bytes\ncorrectly.  The specifications indicate that the server should accept the\nrequest, but it should mostly turn into a no-op.  Currently, the server\nwill return an XDR decode error, which it should not.\n\nAttached is a patch which addresses this issue.  It also adds some boundary\nchecking to ensure that the request contains as much data as was requested\nto be written.  It also correctly handles an NFSv3 request which requests\nto write more data than the server has stated that it is prepared to\nhandle.  Previously, there was some support which looked like it should\nwork, but wasn\u0027t quite right.\n\nSigned-off-by: Peter Staubach \u003cstaubach@redhat.com\u003e\nAcked-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8842c9655b2b7f0e8e6c50a773b649e5d8a57678",
      "tree": "5f5e682ee03286f33c70775fed05c4645bbeb3ae",
      "parents": [
        "6e84d644b5929789398914b0ccf447355dec6fb0"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Wed May 09 02:34:46 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:54 2007 -0700"
      },
      "message": "remove nfs4_acl_add_ace()\n\nnfs4_acl_add_ace() can now be removed.\n\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nAcked-by: Neil Brown \u003cneilb@cse.unsw.edu.au\u003e\nAcked-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6e84d644b5929789398914b0ccf447355dec6fb0",
      "tree": "0de4bd0c8d3bf4cd764275f02d56d8576f376ae5",
      "parents": [
        "7b0834c26fd796c79dfcc3939ed2b9122b75246f"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed May 09 02:34:46 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:53 2007 -0700"
      },
      "message": "make cancel_rearming_delayed_work() reliable\n\nThanks to Jarek Poplawski for the ideas and for spotting the bug in the\ninitial draft patch.\n\ncancel_rearming_delayed_work() currently has many limitations, because it\nrequires that dwork always re-arms itself via queue_delayed_work().  So it\nhangs forever if dwork doesn\u0027t do this, or cancel_rearming_delayed_work/\ncancel_delayed_work was already called.  It uses flush_workqueue() in a\nloop, so it can\u0027t be used if workqueue was freezed, and it is potentially\nlive- lockable on busy system if delay is small.\n\nWith this patch cancel_rearming_delayed_work() doesn\u0027t make any assumptions\nabout dwork, it can re-arm itself via queue_delayed_work(), or\nqueue_work(), or do nothing.\n\nAs a \"side effect\", cancel_work_sync() was changed to handle re-arming works\nas well.\n\nDisadvantages:\n\n\t- this patch adds wmb() to insert_work().\n\n\t- slowdowns the fast path (when del_timer() succeeds on entry) of\n\t  cancel_rearming_delayed_work(), because wait_on_work() is called\n\t  unconditionally. In that case, compared to the old version, we are\n\t  doing \"unneeded\" lock/unlock for each online CPU.\n\n\t  On the other hand, this means we don\u0027t need to use cancel_work_sync()\n\t  after cancel_rearming_delayed_work().\n\n\t- complicates the code (.text grows by 130 bytes).\n\n[akpm@linux-foundation.org: fix speling]\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: David Chinner \u003cdgc@sgi.com\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: Gautham Shenoy \u003cego@in.ibm.com\u003e\nAcked-by: Jarek Poplawski \u003cjarkao2@o2.pl\u003e\nCc: Srivatsa Vaddagiri \u003cvatsa@in.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": "7b0834c26fd796c79dfcc3939ed2b9122b75246f",
      "tree": "870eb42cd02b9012fd0ab06d7efb5e7596376bad",
      "parents": [
        "10ab825bdef8df510f99c703a5a2d9b13a4e31a5"
      ],
      "author": {
        "name": "Gautham R Shenoy",
        "email": "ego@in.ibm.com",
        "time": "Wed May 09 02:34:41 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:53 2007 -0700"
      },
      "message": "Remove kthread_bind() call from _cpu_down()\n\nWe are anyway kthread_stop()ping other per-cpu kernel threads after\nmove_task_off_dead_cpu(), so we can do it with the stop_machine_run thread\nas well.\n\nI just checked with Vatsa if there was any subtle reason why they\nhad put in the kthread_bind() in cpu.c. Vatsa cannot seem to recollect\nany and I can\u0027t see any. So let us just remove the kthread_bind.\n\nSigned-off-by: Gautham R Shenoy \u003cego@in.ibm.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.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": "10ab825bdef8df510f99c703a5a2d9b13a4e31a5",
      "tree": "e4db81f26c03ba5a5bff43ed44646a4ed4509d67",
      "parents": [
        "5de18d169739293e27e0cf9acfc75a2d2f4aa572"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed May 09 02:34:37 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:53 2007 -0700"
      },
      "message": "change kernel threads to ignore signals instead of blocking them\n\nCurrently kernel threads use sigprocmask(SIG_BLOCK) to protect against\nsignals.  This doesn\u0027t prevent the signal delivery, this only blocks\nsignal_wake_up().  Every \"killall -33 kthreadd\" means a \"struct siginfo\"\nleak.\n\nChange kthreadd_setup() to set all handlers to SIG_IGN instead of blocking\nthem (make a new helper ignore_signals() for that).  If the kernel thread\nneeds some signal, it should use allow_signal() anyway, and in that case it\nshould not use CLONE_SIGHAND.\n\nNote that we can\u0027t change daemonize() (should die!) in the same way,\nbecause it can be used along with CLONE_SIGHAND.  This means that\nallow_signal() still should unblock the signal to work correctly with\ndaemonize()ed threads.\n\nHowever, disallow_signal() doesn\u0027t block the signal any longer but ignores\nit.\n\nNOTE: with or without this patch the kernel threads are not protected from\nhandle_stop_signal(), this seems harmless, but not good.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nAcked-by: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5de18d169739293e27e0cf9acfc75a2d2f4aa572",
      "tree": "3360a4235a92d787fb7e48fccfc945fa0ee15758",
      "parents": [
        "90cce03d9bfcb28600a56efef6b0a5a4fbf6c2b1"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed May 09 02:34:36 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:53 2007 -0700"
      },
      "message": "worker_thread: don\u0027t play with SIGCHLD and numa policy\n\nworker_thread() inherits ignored SIGCHLD and numa_default_policy() from its\nparent, kthreadd.  No need to setup this again.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nAcked-by: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "90cce03d9bfcb28600a56efef6b0a5a4fbf6c2b1",
      "tree": "f0b1909311fe5662eeac7923bd7830a9811ac2aa",
      "parents": [
        "b8a124da9261873e3e3541898d5c46d273afee34"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed May 09 02:34:36 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:53 2007 -0700"
      },
      "message": "wait_for_helper: remove unneeded do_sigaction()\n\nallow_signal(SIGCHLD) does all necessary job, no need to call do_sigaction()\nprior to.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b8a124da9261873e3e3541898d5c46d273afee34",
      "tree": "aea4c3062ccef6b2a7703bba331a184b4ed5b4f3",
      "parents": [
        "49d769d52e16efabd3ad47b7995522fff771371d"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed May 09 02:34:35 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:53 2007 -0700"
      },
      "message": "usbatm_heavy_init: don\u0027t use CLONE_SIGHAND\n\nusbatm_do_heavy_init() calls allow_signal() which plays with parent process\u0027s\n-\u003esighand.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nAcked-by: Duncan Sands \u003cduncan.sands@free.fr\u003e\nCc: Greg KH \u003cgreg@kroah.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "49d769d52e16efabd3ad47b7995522fff771371d",
      "tree": "cf6ec2c39ae671c3f4cae34daf9d0558ca4fcf49",
      "parents": [
        "73c279927f89561ecb45b2dfdf9314bafcfd9f67"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Wed May 09 02:34:33 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:53 2007 -0700"
      },
      "message": "Change reparent_to_init to reparent_to_kthreadd\n\nWhen a kernel thread calls daemonize, instead of reparenting the thread to\ninit reparent the thread to kthreadd next to the threads created by\nkthread_create.\n\nThis is really just a stop gap until daemonize goes away, but it does\nensure no kernel threads are under init and they are all in one place that\nis easy to find.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\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": "73c279927f89561ecb45b2dfdf9314bafcfd9f67",
      "tree": "2186e28c92c6f8229ea20eb9856714186bf77a4c",
      "parents": [
        "c93465181fed0f8f5942a41108943dadea0aa345"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Wed May 09 02:34:32 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:53 2007 -0700"
      },
      "message": "kthread: don\u0027t depend on work queues\n\nCurrently there is a circular reference between work queue initialization\nand kthread initialization.  This prevents the kthread infrastructure from\ninitializing until after work queues have been initialized.\n\nWe want the properties of tasks created with kthread_create to be as close\nas possible to the init_task and to not be contaminated by user processes.\nThe later we start our kthreadd that creates these tasks the harder it is\nto avoid contamination from user processes and the more of a mess we have\nto clean up because the defaults have changed on us.\n\nSo this patch modifies the kthread support to not use work queues but to\ninstead use a simple list of structures, and to have kthreadd start from\ninit_task immediately after our kernel thread that execs /sbin/init.\n\nBy being a true child of init_task we only have to change those process\nsettings that we want to have different from init_task, such as our process\nname, the cpus that are allowed, blocking all signals and setting SIGCHLD\nto SIG_IGN so that all of our children are reaped automatically.\n\nBy being a true child of init_task we also naturally get our ppid set to 0\nand do not wind up as a child of PID \u003d\u003d 1.  Ensuring that tasks generated\nby kthread_create will not slow down the functioning of the wait family of\nfunctions.\n\n[akpm@linux-foundation.org: use interruptible sleeps]\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\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": "c93465181fed0f8f5942a41108943dadea0aa345",
      "tree": "a2c1a8fe514b97c31bd3832136894933c3f28fee",
      "parents": [
        "28e53bddf814485699a4142bc056fd37d4e11dd4"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed May 09 02:34:23 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:53 2007 -0700"
      },
      "message": "____call_usermodehelper: don\u0027t flush_signals()\n\n____call_usermodehelper() has no reason for flush_signals().  It is a fresh\nforked process which is going to exec a user-space application or exit on\nfailure.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\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": "5830c5902138f80b0a097b797200c739466beedd",
      "tree": "f325f18365db79f9d17793b8d551e81094f48e15",
      "parents": [
        "a4798833d26b293fd18b7bf102991426aa0b56fd"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "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": "slab: shut down cache_reaper when cpu goes down\n\nShutdown the cache_reaper if the cpu is brought down and set the\ncache_reap.func to NULL.  Otherwise hotplug shuts down the reaper for good.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\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": "a4798833d26b293fd18b7bf102991426aa0b56fd",
      "tree": "a564a45ee791e8418692c4171ed018dc90734238",
      "parents": [
        "85f4186af944c1240c84934a9ab578743df2d69b"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed May 09 02:34:21 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:53 2007 -0700"
      },
      "message": "zap_other_threads: remove unneeded -\u003eexit_signal change\n\nWe already depend on fact that all sub-threads have -\u003eexit_signal \u003d\u003d -1, no\nneed to set it in zap_other_threads().\n\nSigned-off-by: 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": "85f4186af944c1240c84934a9ab578743df2d69b",
      "tree": "743d6a619538cda98495aaaac67a86246d3007e4",
      "parents": [
        "b9aac8e0d32499217417ff0b494731811f185b18"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed May 09 02:34:20 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:53 2007 -0700"
      },
      "message": "worker_thread: fix racy try_to_freeze() usage\n\nworker_thread() can miss freeze_process()-\u003esignal_wake_up() if it happens\nbetween try_to_freeze() and prepare_to_wait().  We should check freezing()\nbefore entering schedule().\n\nThis race was introduced by me in\n\n\t[PATCH 1/1] workqueue: don\u0027t migrate pending works from the dead CPU\n\nLooks like mm/vmscan.c:kswapd() has the same race.\n\nSigned-off-by: 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": "b9aac8e0d32499217417ff0b494731811f185b18",
      "tree": "1cd79adb88431d3ebe6b9dd253b8ed1bbd4f9e07",
      "parents": [
        "23b2e5991afde5af91a1a661d7f47ee56120759e"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed May 09 02:34:20 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:53 2007 -0700"
      },
      "message": "worker_thread: don\u0027t play with signals\n\nworker_thread() doesn\u0027t need to \"Block and flush all signals\", this was\nalready done by its caller, kthread().\n\nSigned-off-by: 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": "23b2e5991afde5af91a1a661d7f47ee56120759e",
      "tree": "d4b8e5bc1a311abd6b6de469f862a8b53c5f9f36",
      "parents": [
        "c214b2cc5f9be7c236f9b91acf524688ff0e3e72"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed May 09 02:34:19 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:52 2007 -0700"
      },
      "message": "workqueue: kill NOAUTOREL works\n\nWe don\u0027t have any users, and it is not so trivial to use NOAUTOREL works\ncorrectly.  It is better to simplify API.\n\nDelete NOAUTOREL support and rename work_release to work_clear_pending to\navoid a confusion.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nAcked-by: David Howells \u003cdhowells@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": "c214b2cc5f9be7c236f9b91acf524688ff0e3e72",
      "tree": "9edffda8f78422d01219dacf9ab2fb0104302a1d",
      "parents": [
        "1634c48f8b85dcb05101f1eb2eab9af40b5976da"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed May 09 02:34:18 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:52 2007 -0700"
      },
      "message": "ipvs: flush defense_work before module unload\n\nnet/ipv4/ipvs/ip_vs_core.c\n\n\tmodule_exit\n\t    ip_vs_cleanup\n\t\tip_vs_control_cleanup\n\t\t    cancel_rearming_delayed_work\n\t// done\n\nThis is unsafe.  The module may be unloaded and the memory may be freed\nwhile defense_work\u0027s handler is still running/preempted.\n\nDo flush_work(\u0026defense_work.work) after cancel_rearming_delayed_work().\n\nAlternatively, we could add flush_work() to cancel_rearming_delayed_work(),\nbut note that we can\u0027t change cancel_delayed_work() in the same manner\nbecause it may be called from atomic context.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1634c48f8b85dcb05101f1eb2eab9af40b5976da",
      "tree": "143aa0fbf21e712a5258806b37f2024ba432b522",
      "parents": [
        "a848e3b67c07ed79374bd0f9b82f9ce45a419643"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed May 09 02:34:18 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:52 2007 -0700"
      },
      "message": "make cancel_rearming_delayed_work() work on any workqueue, not just keventd_wq\n\ncancel_rearming_delayed_workqueue(wq, dwork) doesn\u0027t need the first\nparameter.  We don\u0027t hang on un-queued dwork any longer, and work-\u003edata\ndoesn\u0027t change its type.  This means we can always figure out \"wq\" from\ndwork when it is needed.\n\nRemove this parameter, and rename the function to\ncancel_rearming_delayed_work().  Re-create an inline \"obsolete\"\ncancel_rearming_delayed_workqueue(wq) which just calls\ncancel_rearming_delayed_work().\n\nSigned-off-by: 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": "a848e3b67c07ed79374bd0f9b82f9ce45a419643",
      "tree": "72f4385e12310bf8e1b959d4d90d32f05c10cd61",
      "parents": [
        "63bc0362521cbaae3ed17b8de7b094f9492453f0"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed May 09 02:34:17 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:52 2007 -0700"
      },
      "message": "workqueue: introduce wq_per_cpu() helper\n\nCleanup.  A number of per_cpu_ptr(wq-\u003ecpu_wq, cpu) users have to check that\ncpu is valid for this wq.  Make a simple helper.\n\nSigned-off-by: 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": "63bc0362521cbaae3ed17b8de7b094f9492453f0",
      "tree": "2a1bee6651fe00b76828cf75742bbff221188990",
      "parents": [
        "ed7c0feede39d70092d048ec30f59bb1df69eec6"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed May 09 02:34:16 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:52 2007 -0700"
      },
      "message": "unify queue_delayed_work() and queue_delayed_work_on()\n\nChange queue_delayed_work() to use queue_delayed_work_on() to avoid the code\nduplication (saves 133 bytes).\n\nQ: queue_delayed_work() enqueues \u0026dwork-\u003ework directly when delay \u003d\u003d 0, why?\n\n[jirislaby@gmail.com: oops fix]\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Jiri Slaby \u003cjirislaby@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": "ed7c0feede39d70092d048ec30f59bb1df69eec6",
      "tree": "67ff89df1a5db2037da34ddf17002b4c7ff218df",
      "parents": [
        "06ba38a9a0f6ceffe70343f684c5a690e3710ef4"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed May 09 02:34:16 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:52 2007 -0700"
      },
      "message": "make queue_delayed_work() friendly to flush_fork()\n\nCurrently typeof(delayed_work-\u003ework.data) is\n\n\t\"struct workqueue_struct\" when the timer is pending\n\n\t\"struct cpu_workqueue_struct\" whe the work is queued\n\nThis makes impossible to use flush_fork(delayed_work-\u003ework) in addition\nto cancel_delayed_work/cancel_rearming_delayed_work, not good.\n\nChange queue_delayed_work/delayed_work_timer_fn to use cwq, not wq. This\ncomplicates (and uglifies) these functions a little bit, but alows us to\nuse flush_fork(dwork) and imho makes the whole code more consistent.\n\nAlso, document the fact that cancel_rearming_delayed_work() doesn\u0027t garantee\nthe completion of work-\u003efunc() upon return.\n\nSigned-off-by: 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": "06ba38a9a0f6ceffe70343f684c5a690e3710ef4",
      "tree": "500f4d8a3be212ececa80ead44d9658c8b7a4ce1",
      "parents": [
        "c12920d19078eb8fd99560ec232a6e05c6ff1aa8"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed May 09 02:34:15 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:52 2007 -0700"
      },
      "message": "workqueues: shift kthread_bind() from CPU_UP_PREPARE to CPU_ONLINE\n\nCPU_UP_PREPARE binds cwq-\u003ethread to the new CPU.  So CPU_UP_CANCELED tries to\nwake up the task which is bound to the failed CPU.\n\nWith this patch we don\u0027t bind cwq-\u003ethread until CPU becomes online.  The first\nwake_up() after kthread_create() is a bit special, make a simple helper for\nthat.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Gautham R Shenoy \u003cego@in.ibm.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": "c12920d19078eb8fd99560ec232a6e05c6ff1aa8",
      "tree": "614d7acbb8393bc3ae16d41c5a7f69a0abb4c9c1",
      "parents": [
        "cce1a1656c9a3fdc6c6c1029b576e4ab6ecaac37"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed May 09 02:34:14 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:52 2007 -0700"
      },
      "message": "workqueue: make init_workqueues() __init\n\nThe only caller of init_workqueues() is do_basic_setup().\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cce1a1656c9a3fdc6c6c1029b576e4ab6ecaac37",
      "tree": "016a79e653156e32766f17bd801ffd0e4dd3a79f",
      "parents": [
        "b1f4ec172f75bc2f5cc4f4be69b5587660a955d2"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed May 09 02:34:13 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:52 2007 -0700"
      },
      "message": "workqueue: introduce workqueue_struct-\u003esinglethread\n\nAdd explicit workqueue_struct-\u003esinglethread flag.  This lessens .text a\nlittle, but most importantly this allows us to manipulate wq-\u003elist without\nchangine the meaning of is_single_threaded().\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b1f4ec172f75bc2f5cc4f4be69b5587660a955d2",
      "tree": "41a96f3996246d1f8667b9b84705a800f03d7c49",
      "parents": [
        "dfb4b82e1c631b1a6057e77212996a890aa515b7"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed May 09 02:34:12 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:52 2007 -0700"
      },
      "message": "workqueue: introduce cpu_singlethread_map\n\nThe code like\n\n\tif (is_single_threaded(wq))\n\t\tdo_something(singlethread_cpu);\n\telse {\n\t\tfor_each_cpu_mask(cpu, cpu_populated_map)\n\t\t\tdo_something(cpu);\n\t}\n\nlooks very annoying. We can add \"static cpumask_t cpu_singlethread_map\" and\nsimplify the code. Lessens .text a bit, and imho makes the code more readable.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "dfb4b82e1c631b1a6057e77212996a890aa515b7",
      "tree": "9e2fcd9ff6bd990740b3f0a48fc4194f2e64d89f",
      "parents": [
        "f293ea92007419e4f9c52db0cf57af17f45b9f94"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed May 09 02:34:11 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:52 2007 -0700"
      },
      "message": "workqueue: make cancel_rearming_delayed_workqueue() work on idle dwork\n\ncancel_rearming_delayed_workqueue(dwork) will hang forever if dwork was not\nscheduled, because in that case cancel_delayed_work()-\u003edel_timer_sync() never\nreturns true.\n\nI don\u0027t know if there are any callers which may have problems, but this is not\nso convenient, and the fix is very simple.\n\nQ: looks like we don\u0027t need \"struct workqueue_struct *wq\" parameter.  If the\ntimer was aborted successfully, get_wq_data() \u003d\u003d wq.  Is it worth to add the\nnew function?\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f293ea92007419e4f9c52db0cf57af17f45b9f94",
      "tree": "829d06499c1d9004ca530e5f23de43df27d3baa4",
      "parents": [
        "7097a87afe937a5879528d52880c2d95f089e96c"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed May 09 02:34:10 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:52 2007 -0700"
      },
      "message": "workqueue: don\u0027t save interrupts in run_workqueue()\n\nwork-\u003efunc() may sleep, it\u0027s a bug to call run_workqueue() with irqs disabled.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7097a87afe937a5879528d52880c2d95f089e96c",
      "tree": "f06090c0f6ed327ee2894deb8ac7c588ab55bf4e",
      "parents": [
        "3af24433efac62f451bfdb1cf1edb7181fb73645"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed May 09 02:34:10 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:52 2007 -0700"
      },
      "message": "workqueue: kill run_scheduled_work()\n\nBecause it has no callers.\n\nActually, I think the whole idea of run_scheduled_work() was not right, not\ngood to mix \"unqueue this work and execute its -\u003efunc()\" in one function.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3af24433efac62f451bfdb1cf1edb7181fb73645",
      "tree": "330353b50a88615ef6e99440e8412667ae0a855e",
      "parents": [
        "36aa9dfc39bf473780439f5629c30f59d677e793"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed May 09 02:34:09 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:52 2007 -0700"
      },
      "message": "workqueue: don\u0027t migrate pending works from the dead CPU\n\nCurrently CPU_DEAD uses kthread_stop() to stop cwq-\u003ethread and then\ntransfers cwq-\u003eworklist to another CPU.  However, it is very unlikely that\nworker_thread() will notice kthread_should_stop() before flushing\ncwq-\u003eworklist.  It is only possible if worker_thread() was preempted after\nrun_workqueue(cwq), a new work_struct was added, and CPU_DEAD happened\nbefore cwq-\u003ethread has a chance to run.\n\nThis means that take_over_work() mostly adds unneeded complications.  Note\nalso that kthread_stop() is not good per se, wake_up_process() may confuse\nwork-\u003efunc() if it sleeps waiting for some event.\n\nRemove take_over_work() and migrate_sequence complications.  CPU_DEAD sets\nthe cwq-\u003eshould_stop flag (introduced by this patch) and waits for\ncwq-\u003ethread to flush cwq-\u003eworklist and exit.  Because the dead CPU is not\non cpu_online_map, no more works can be added to that cwq.\n\ncpu_populated_map was introduced to optimize for_each_possible_cpu(), it is\nnot strictly needed, and it is more a documentation in fact.\n\nSaves 418 bytes.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Srivatsa Vaddagiri \u003cvatsa@in.ibm.com\u003e\nCc: \"Pallipadi, Venkatesh\" \u003cvenkatesh.pallipadi@intel.com\u003e\nCc: Gautham shenoy \u003cego@in.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": "36aa9dfc39bf473780439f5629c30f59d677e793",
      "tree": "301d615747210733a271c376fc036a7480594207",
      "parents": [
        "d721304dce0ced0b3b0366996cc02929669708a8"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed May 09 02:34:08 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:52 2007 -0700"
      },
      "message": "workqueue: don\u0027t clear cwq-\u003ethread until it exits\n\nPointed out by Srivatsa Vaddagiri.\n\ncleanup_workqueue_thread() sets cwq-\u003ethread \u003d NULL and does kthread_stop().\nThis breaks the \"if (cwq-\u003ethread \u003d\u003d current)\" logic in flush_cpu_workqueue()\nand leads to deadlock.\n\nKill the thead first, then clear cwq-\u003ethread. workqueue_mutex protects us\nfrom create_workqueue_thread() so we don\u0027t need cwq-\u003elock.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Srivatsa Vaddagiri \u003cvatsa@in.ibm.com\u003e\nCc: \"Pallipadi, Venkatesh\" \u003cvenkatesh.pallipadi@intel.com\u003e\nCc: Gautham shenoy \u003cego@in.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": "d721304dce0ced0b3b0366996cc02929669708a8",
      "tree": "a7c41390d082e4d2c70b185e508368293cf68b92",
      "parents": [
        "319c2a986eb45989690c955d9667b814ef0ed56f"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed May 09 02:34:07 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:52 2007 -0700"
      },
      "message": "workqueue: fix flush_workqueue() vs CPU_DEAD race\n\nMany thanks to Srivatsa Vaddagiri for the helpful discussion and for spotting\nthe bug in my previous attempt.\n\nwork-\u003efunc() (and thus flush_workqueue()) must not use workqueue_mutex,\nthis leads to deadlock when CPU_DEAD does kthread_stop(). However without\nthis mutex held we can\u0027t detect CPU_DEAD in progress, which can move pending\nworks to another CPU while the dead one is not on cpu_online_map.\n\nChange flush_workqueue() to use for_each_possible_cpu(). This means that\nflush_cpu_workqueue() may hit CPU which is already dead. However in that\ncase\n\n\t!list_empty(\u0026cwq-\u003eworklist) || cwq-\u003ecurrent_work !\u003d NULL\n\nmeans that CPU_DEAD in progress, it will do kthread_stop() + take_over_work()\nso we can proceed and insert a barrier. We hold cwq-\u003elock, so we are safe.\n\nAlso, add migrate_sequence incremented by take_over_work() under cwq-\u003elock.\nIf take_over_work() happened before we checked this CPU, we should see the\nnew value after spin_unlock().\n\nFurther possible changes:\n\n\tremove CPU_DEAD handling (along with take_over_work, migrate_sequence)\n\tfrom workqueue.c. CPU_DEAD just sets cwq-\u003eplease_exit_after_flush flag.\n\n\tCPU_UP_PREPARE-\u003ecreate_workqueue_thread() clears this flag, and creates\n\tthe new thread if cwq-\u003ethread \u003d\u003d NULL.\n\nThis way the workqueue/cpu-hotplug interaction is almost zero, workqueue_mutex\njust protects \"workqueues\" list, CPU_LOCK_ACQUIRE/CPU_LOCK_RELEASE go away.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Srivatsa Vaddagiri \u003cvatsa@in.ibm.com\u003e\nCc: \"Pallipadi, Venkatesh\" \u003cvenkatesh.pallipadi@intel.com\u003e\nCc: Gautham shenoy \u003cego@in.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": "319c2a986eb45989690c955d9667b814ef0ed56f",
      "tree": "1408756a141247f703b2866886d9707006ab33a9",
      "parents": [
        "38c3bd96a0a7d375e12f173c34fbebf9f153cb56"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed May 09 02:34:06 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:51 2007 -0700"
      },
      "message": "workqueue: fix freezeable workqueues implementation\n\nCurrently -\u003efreezeable is per-cpu, this is wrong. CPU_UP_PREPARE creates\ncwq-\u003ethread which is not freezeable. Move -\u003efreezeable to workqueue_struct.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Srivatsa Vaddagiri \u003cvatsa@in.ibm.com\u003e\nCc: \"Pallipadi, Venkatesh\" \u003cvenkatesh.pallipadi@intel.com\u003e\nCc: Gautham shenoy \u003cego@in.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ],
  "next": "38c3bd96a0a7d375e12f173c34fbebf9f153cb56"
}
