)]}'
{
  "log": [
    {
      "commit": "e93dd910b906d2bb881f334685eb03431fd3fa48",
      "tree": "ae8527dcdc9237e1bd7a65490d98e77fbe006307",
      "parents": [
        "b4820416dd92bc3df33f261c60ec21b2c4481bec",
        "e8603136cb04ec2d0c9b4b5be7a071fc003cb399"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 25 15:12:46 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 25 15:12:46 2013 -0700"
      },
      "message": "Merge tag \u0027dm-3.12-fixes\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm\n\nPull device-mapper fixes from Mike Snitzer:\n \"A few fixes for dm-snapshot, a 32 bit fix for dm-stats, a couple error\n  handling fixes for dm-multipath.  A fix for the thin provisioning\n  target to not expose non-zero discard limits if discards are disabled.\n\n  Lastly, add two DM module parameters which allow users to tune the\n  emergency memory reserves that DM mainatins per device -- this helps\n  fix a long-standing issue for dm-multipath.  The conservative default\n  reserve for request-based dm-multipath devices (256) has proven\n  problematic for users with many multipathed SCSI devices but\n  relatively little memory.  To responsibly select a smaller value users\n  should use the new nr_bios tracepoint info (via commit 75afb352\n  \"block: Add nr_bios to block_rq_remap tracepoint\") to determine the\n  peak number of bios their workloads create\"\n\n* tag \u0027dm-3.12-fixes\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm:\n  dm: add reserved_bio_based_ios module parameter\n  dm: add reserved_rq_based_ios module parameter\n  dm: lower bio-based mempool reservation\n  dm thin: do not expose non-zero discard limits if discards disabled\n  dm mpath: disable WRITE SAME if it fails\n  dm-snapshot: fix performance degradation due to small hash size\n  dm snapshot: workaround for a false positive lockdep warning\n  dm stats: fix possible counter corruption on 32-bit systems\n  dm mpath: do not fail path on -ENOSPC\n"
    },
    {
      "commit": "0608f43da64a1f1c42507304b5f25bc8b1227aa4",
      "tree": "3138a251439bee1f12bd176f41f3fc63e194f455",
      "parents": [
        "bb4cc1a8b5eaf3b9e5707d7c270400b05d11a2b7"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Tue Sep 24 15:27:41 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 24 17:00:26 2013 -0700"
      },
      "message": "revert \"memcg, vmscan: integrate soft reclaim tighter with zone shrinking code\"\n\nRevert commit 3b38722efd9f (\"memcg, vmscan: integrate soft reclaim\ntighter with zone shrinking code\")\n\nI merged this prematurely - Michal and Johannes still disagree about the\noverall design direction and the future remains unclear.\n\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b1aff7fcf86c88472b0a70f15d89d7a4adba07bb",
      "tree": "00a1b6194f6abe8a93a1bfb180365800a2873b65",
      "parents": [
        "694fbc0fe78518d06efa63910bf4ecee660e7852"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Tue Sep 24 15:27:38 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 24 17:00:26 2013 -0700"
      },
      "message": "revert \"vmscan, memcg: do softlimit reclaim also for targeted reclaim\"\n\nRevert commit a5b7c87f9207 (\"vmscan, memcg: do softlimit reclaim also\nfor targeted reclaim\")\n\nI merged this prematurely - Michal and Johannes still disagree about the\noverall design direction and the future remains unclear.\n\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "694fbc0fe78518d06efa63910bf4ecee660e7852",
      "tree": "895244c4cc010759ce5c29333bee3cddc8c852d2",
      "parents": [
        "30361e51cae7a4df3fec89f935a450a6fe6f16fa"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Tue Sep 24 15:27:37 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 24 17:00:26 2013 -0700"
      },
      "message": "revert \"memcg: enhance memcg iterator to support predicates\"\n\nRevert commit de57780dc659 (\"memcg: enhance memcg iterator to support\npredicates\")\n\nI merged this prematurely - Michal and Johannes still disagree about the\noverall design direction and the future remains unclear.\n\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9809b18fcf6b8d8ec4d3643677345907e6b50eca",
      "tree": "0dfb9bf2f84f5a18736567d126cb9ed7478fe008",
      "parents": [
        "359e6fab6600562073162348cd4c18c5958296d8"
      ],
      "author": {
        "name": "Michal Hocko",
        "email": "mhocko@suse.cz",
        "time": "Tue Sep 24 15:27:30 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 24 17:00:25 2013 -0700"
      },
      "message": "watchdog: update watchdog_thresh properly\n\nwatchdog_tresh controls how often nmi perf event counter checks per-cpu\nhrtimer_interrupts counter and blows up if the counter hasn\u0027t changed\nsince the last check.  The counter is updated by per-cpu\nwatchdog_hrtimer hrtimer which is scheduled with 2/5 watchdog_thresh\nperiod which guarantees that hrtimer is scheduled 2 times per the main\nperiod.  Both hrtimer and perf event are started together when the\nwatchdog is enabled.\n\nSo far so good.  But...\n\nBut what happens when watchdog_thresh is updated from sysctl handler?\n\nproc_dowatchdog will set a new sampling period and hrtimer callback\n(watchdog_timer_fn) will use the new value in the next round.  The\nproblem, however, is that nobody tells the perf event that the sampling\nperiod has changed so it is ticking with the period configured when it\nhas been set up.\n\nThis might result in an ear ripping dissonance between perf and hrtimer\nparts if the watchdog_thresh is increased.  And even worse it might lead\nto KABOOM if the watchdog is configured to panic on such a spurious\nlockup.\n\nThis patch fixes the issue by updating both nmi perf even counter and\nhrtimers if the threshold value has changed.\n\nThe nmi one is disabled and then reinitialized from scratch.  This has\nan unpleasant side effect that the allocation of the new event might\nfail theoretically so the hard lockup detector would be disabled for\nsuch cpus.  On the other hand such a memory allocation failure is very\nunlikely because the original event is deallocated right before.\n\nIt would be much nicer if we just changed perf event period but there\ndoesn\u0027t seem to be any API to do that right now.  It is also unfortunate\nthat perf_event_alloc uses GFP_KERNEL allocation unconditionally so we\ncannot use on_each_cpu() and do the same thing from the per-cpu context.\nThe update from the current CPU should be safe because\nperf_event_disable removes the event atomically before it clears the\nper-cpu watchdog_ev so it cannot change anything under running handler\nfeet.\n\nThe hrtimer is simply restarted (thanks to Don Zickus who has pointed\nthis out) if it is queued because we cannot rely it will fire\u0026adopt to\nthe new sampling period before a new nmi event triggers (when the\ntreshold is decreased).\n\n[akpm@linux-foundation.org: the UP version of __smp_call_function_single ended up in the wrong place]\nSigned-off-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nAcked-by: Don Zickus \u003cdzickus@redhat.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Ingo Molnar \u003cmingo@kernel.org\u003e\nCc: Fabio Estevam \u003cfestevam@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": "68cf8d0c720cdb76dc912c983d8dae9de6d6e5cf",
      "tree": "41779dfce5cae3dc495f27f76ed8e66dd046ac4c",
      "parents": [
        "0fbf2cc983ca15208545010863c6536d36a25f3a",
        "f3cff25f05f2ac29b2ee355e611b0657482f6f1d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Sep 22 15:00:11 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Sep 22 15:00:11 2013 -0700"
      },
      "message": "Merge branch \u0027for-3.12/core\u0027 of git://git.kernel.dk/linux-block\n\nPull block IO fixes from Jens Axboe:\n \"After merge window, no new stuff this time only a collection of neatly\n  confined and simple fixes\"\n\n* \u0027for-3.12/core\u0027 of git://git.kernel.dk/linux-block:\n  cfq: explicitly use 64bit divide operation for 64bit arguments\n  block: Add nr_bios to block_rq_remap tracepoint\n  If the queue is dying then we only call the rq-\u003eend_io callout. This leaves bios setup on the request, because the caller assumes when the blk_execute_rq_nowait/blk_execute_rq call has completed that the rq-\u003ebios have been cleaned up.\n  bio-integrity: Fix use of bs-\u003ebio_integrity_pool after free\n  blkcg: relocate root_blkg setting and clearing\n  block: Convert kmalloc_node(...GFP_ZERO...) to kzalloc_node(...)\n  block: trace all devices plug operation\n"
    },
    {
      "commit": "75afb352991ff1cd3cf5955bfe611de6d83a0c87",
      "tree": "2873c9fa5c098c4dd5134f395207af9463cc21d9",
      "parents": [
        "7652113c2f508b1c8176640dcd034730fe79bc48"
      ],
      "author": {
        "name": "Jun\u0027ichi Nomura",
        "email": "j-nomura@ce.jp.nec.com",
        "time": "Sat Sep 21 13:57:47 2013 -0600"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Sat Sep 21 13:57:47 2013 -0600"
      },
      "message": "block: Add nr_bios to block_rq_remap tracepoint\n\nAdding the number of bios in a remapped request to \u0027block_rq_remap\u0027\ntracepoint.\n\nRequest remapper clones bios in a request to track the completion\nstatus of each bio. So the number of bios can be useful information\nfor investigation.\n\nRelated discussions:\n  http://www.redhat.com/archives/dm-devel/2013-August/msg00084.html\n  http://www.redhat.com/archives/dm-devel/2013-September/msg00024.html\n\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nAcked-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "f84cb8a46a771f36a04a02c61ea635c968ed5f6a",
      "tree": "af75fbffdf13f3765f4d8ddc13494585533351f8",
      "parents": [
        "60e356f381954d79088d0455e357db48cfdd6857"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Thu Sep 19 12:13:58 2013 -0400"
      },
      "committer": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Fri Sep 20 10:36:34 2013 -0400"
      },
      "message": "dm mpath: disable WRITE SAME if it fails\n\nWorkaround the SCSI layer\u0027s problematic WRITE SAME heuristics by\ndisabling WRITE SAME in the DM multipath device\u0027s queue_limits if an\nunderlying device disabled it.\n\nThe WRITE SAME heuristics, with both the original commit 5db44863b6eb\n(\"[SCSI] sd: Implement support for WRITE SAME\") and the updated commit\n66c28f971 (\"[SCSI] sd: Update WRITE SAME heuristics\"), default to enabling\nWRITE SAME(10) even without successfully determining it is supported.\nAfter the first failed WRITE SAME the SCSI layer will disable WRITE SAME\nfor the device (by setting sdkp-\u003edevice-\u003eno_write_same which results in\n\u0027max_write_same_sectors\u0027 in device\u0027s queue_limits to be set to 0).\n\nWhen a device is stacked ontop of such a SCSI device any changes to that\nSCSI device\u0027s queue_limits do not automatically propagate up the stack.\nAs such, a DM multipath device will not have its WRITE SAME support\ndisabled.  This causes the block layer to continue to issue WRITE SAME\nrequests to the mpath device which causes paths to fail and (if mpath IO\nisn\u0027t configured to queue when no paths are available) it will result in\nactual IO errors to the upper layers.\n\nThis fix doesn\u0027t help configurations that have additional devices\nstacked ontop of the mpath device (e.g. LVM created linear DM devices\nontop).  A proper fix that restacks all the queue_limits from the bottom\nof the device stack up will need to be explored if SCSI will continue to\nuse this model of optimistically allowing op codes and then disabling\nthem after they fail for the first time.\n\nBefore this patch:\n\nEXT4-fs (dm-6): mounted filesystem with ordered data mode. Opts: (null)\ndevice-mapper: multipath: XXX snitm debugging: got -EREMOTEIO (-121)\ndevice-mapper: multipath: XXX snitm debugging: failing WRITE SAME IO with error\u003d-121\nend_request: critical target error, dev dm-6, sector 528\ndm-6: WRITE SAME failed. Manually zeroing.\ndevice-mapper: multipath: Failing path 8:112.\nend_request: I/O error, dev dm-6, sector 4616\ndm-6: WRITE SAME failed. Manually zeroing.\nend_request: I/O error, dev dm-6, sector 4616\nend_request: I/O error, dev dm-6, sector 5640\nend_request: I/O error, dev dm-6, sector 6664\nend_request: I/O error, dev dm-6, sector 7688\nend_request: I/O error, dev dm-6, sector 524288\nBuffer I/O error on device dm-6, logical block 65536\nlost page write due to I/O error on dm-6\nJBD2: Error -5 detected when updating journal superblock for dm-6-8.\nend_request: I/O error, dev dm-6, sector 524296\nAborting journal on device dm-6-8.\nend_request: I/O error, dev dm-6, sector 524288\nBuffer I/O error on device dm-6, logical block 65536\nlost page write due to I/O error on dm-6\nJBD2: Error -5 detected when updating journal superblock for dm-6-8.\n\n# cat /sys/block/sdh/queue/write_same_max_bytes\n0\n# cat /sys/block/dm-6/queue/write_same_max_bytes\n33553920\n\nAfter this patch:\n\nEXT4-fs (dm-6): mounted filesystem with ordered data mode. Opts: (null)\ndevice-mapper: multipath: XXX snitm debugging: got -EREMOTEIO (-121)\ndevice-mapper: multipath: XXX snitm debugging: WRITE SAME I/O failed with error\u003d-121\nend_request: critical target error, dev dm-6, sector 528\ndm-6: WRITE SAME failed. Manually zeroing.\n\n# cat /sys/block/sdh/queue/write_same_max_bytes\n0\n# cat /sys/block/dm-6/queue/write_same_max_bytes\n0\n\nIt should be noted that WRITE SAME support wasn\u0027t enabled in DM\nmultipath until v3.10.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nCc: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nCc: Hannes Reinecke \u003chare@suse.de\u003e\nCc: stable@vger.kernel.org # 3.10+\n"
    },
    {
      "commit": "b75ff5e84bb6c2d43a8ec39b240c80f0543821f0",
      "tree": "faa21bd0cd3617c0847c6eccb50005b1c65d61b2",
      "parents": [
        "f05f8198e415151bc6f8369c93e25befcafe8026",
        "c71380ff0b199f1e8be5ca46dd91262f7fbe4cb4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 19 13:57:28 2013 -0500"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 19 13:57:28 2013 -0500"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net\n\nPull networking fixes from David Miller:\n\n 1) If the local_df boolean is set on an SKB we have to allocate a\n    unique ID even if IP_DF is set in the ipv4 headers, from Ansis\n    Atteka.\n\n 2) Some fixups for the new chipset support that went into the sfc\n    driver, from Ben Hutchings.\n\n 3) Because SCTP bypasses a good chunk of, and actually duplicates, the\n    logic of the ipv6 output path, some IPSEC things don\u0027t get done\n    properly.  Integrate SCTP better into the ipv6 output path so that\n    these problems are fixed and such issues don\u0027t get missed in the\n    future either.  From Daniel Borkmann.\n\n 4) Fix skge regressions added by the DMA mapping error return checking\n    added in v3.10, from Mikulas Patocka.\n\n 5) Kill some more IRQF_DISABLED references, from Michael Opdenacker.\n\n 6) Fix races and deadlocks in the bridging code, from Hong Zhiguo.\n\n 7) Fix error handling in tun_set_iff(), in particular don\u0027t leak\n    resources.  From Jason Wang.\n\n 8) Prevent format-string injection into xen-netback driver, from Kees\n    Cook.\n\n 9) Fix regression added to netpoll ARP packet handling, in particular\n    check for the right ETH_P_ARP protocol code.  From Sonic Zhang.\n\n10) Try to deal with AMD IOMMU errors when using r8169 chips, from\n    Francois Romieu.\n\n11) Cure freezes due to recent changes in the rt2x00 wireless driver,\n    from Stanislaw Gruszka.\n\n12) Don\u0027t do SPI transfers (which can sleep) in interrupt context in\n    cw1200 driver, from Solomon Peachy.\n\n13) Fix LEDs handling bug in 5720 tg3 chips already handled for 5719.\n    From Nithin Sujir.\n\n14) Make xen_netbk_count_skb_slots() count the actual number of slots\n    that will be used, taking into consideration packing and other\n    issues that the transmit path will run into.  From David Vrabel.\n\n15) Use the correct maximum age when calculating the bridge\n    message_age_timer, from Chris Healy.\n\n16) Get rid of memory leaks in mcs7780 IRDA driver, from Alexey\n    Khoroshilov.\n\n17) Netfilter conntrack extensions were converted to RCU but are not\n    always freed properly using kfree_rcu().  Fix from Michal Kubecek.\n\n18) VF reset recovery not being done correctly in qlcnic driver, from\n    Manish Chopra.\n\n19) Fix inverted test in ATM nicstar driver, from Andy Shevchenko.\n\n20) Missing workqueue destroy in cxgb4 error handling, from Wei Yang.\n\n21) Internal switch not initialized properly in bgmac driver, from Rafał\n    Miłecki.\n\n22) Netlink messages report wrong local and remote addresses in IPv6\n    tunneling, from Ding Zhi.\n\n23) ICMP redirects should not generate socket errors in DCCP and SCTP.\n    We\u0027re still working out how this should be handled for RAW and UDP\n    sockets.  From Daniel Borkmann and Duan Jiong.\n\n24) We\u0027ve had several bugs wherein the network namespace\u0027s loopback\n    device gets accessed after it is free\u0027d, NULL it out so that we can\n    catch these problems more readily.  From Eric W Biederman.\n\n25) Fix regression in TCP RTO calculations, from Neal Cardwell.\n\n26) Fix too early free of xen-netback network device when VIFs still\n    exist.  From Paul Durrant.\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (87 commits)\n  netconsole: fix a deadlock with rtnl and netconsole\u0027s mutex\n  netpoll: fix NULL pointer dereference in netpoll_cleanup\n  skge: fix broken driver\n  ip: generate unique IP identificator if local fragmentation is allowed\n  ip: use ip_hdr() in __ip_make_skb() to retrieve IP header\n  xen-netback: Don\u0027t destroy the netdev until the vif is shut down\n  net:dccp: do not report ICMP redirects to user space\n  cnic: Fix crash in cnic_bnx2x_service_kcq()\n  bnx2x, cnic, bnx2i, bnx2fc: Fix bnx2i and bnx2fc regressions.\n  vxlan: Avoid creating fdb entry with NULL destination\n  tcp: fix RTO calculated from cached RTT\n  drivers: net: phy: cicada.c: clears warning Use #include \u003clinux/io.h\u003e instead of \u003casm/io.h\u003e\n  net loopback: Set loopback_dev to NULL when freed\n  batman-adv: set the TAG flag for the vid passed to BLA\n  netfilter: nfnetlink_queue: use network skb for sequence adjustment\n  net: sctp: rfc4443: do not report ICMP redirects to user space\n  net: usb: cdc_ether: use usb.h macros whenever possible\n  net: usb: cdc_ether: fix checkpatch errors and warnings\n  net: usb: cdc_ether: Use wwan interface for Telit modules\n  ip6_tunnels: raddr and laddr are inverted in nl msg\n  ...\n"
    },
    {
      "commit": "e9ff04dd94d46c817bbb103531cdef6e7bd5d022",
      "tree": "f6544ac65503d04b7760492e7f2592132e4a6d6c",
      "parents": [
        "ed24fee24a6be9568b1ee30209bafe4dad66be0e",
        "9c89d62948c4740e379a7e0085dd8d7c1561f53f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 19 12:50:37 2013 -0500"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 19 12:50:37 2013 -0500"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client\n\nPull ceph fixes from Sage Weil:\n \"These fix several bugs with RBD from 3.11 that didn\u0027t get tested in\n  time for the merge window: some error handling, a use-after-free, and\n  a sequencing issue when unmapping and image races with a notify\n  operation.\n\n  There is also a patch fixing a problem with the new ceph + fscache\n  code that just went in\"\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client:\n  fscache: check consistency does not decrement refcount\n  rbd: fix error handling from rbd_snap_name()\n  rbd: ignore unmapped snapshots that no longer exist\n  rbd: fix use-after free of rbd_dev-\u003edisk\n  rbd: make rbd_obj_notify_ack() synchronous\n  rbd: complete notifies before cleaning up osd_client and rbd_dev\n  libceph: add function to ensure notifies are complete\n"
    },
    {
      "commit": "9d2cd7048b1ec21309e2d1a32bf50732eb5d5de8",
      "tree": "0fd13d51002dc3d0991cb5bdd6e026970171d457",
      "parents": [
        "7e28b2712e5ebd8d73d25561585bc2ae77da5c30",
        "7bd36014460f793c19e7d6c94dab67b0afcfcb7f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 18 11:24:49 2013 -0500"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 18 11:24:49 2013 -0500"
      },
      "message": "Merge branch \u0027timers-urgent-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip\n\nPull timer fix from Ingo Molnar:\n \"An NTP related lockup fix\"\n\n* \u0027timers-urgent-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:\n  timekeeping: Fix HRTICK related deadlock from ntp lock changes\n"
    },
    {
      "commit": "62d228b8c676232eca579f91cc0782b060a59097",
      "tree": "18acffcd94343a510dee6a8c14d7db2449359d86",
      "parents": [
        "84fca9f38c5d646e95cdeef70e41cf15db549b95",
        "0be9c7a89f75072e091cd079d76194aec8d1fb09"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 17 22:20:30 2013 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 17 22:20:30 2013 -0400"
      },
      "message": "Merge branch \u0027fixes\u0027 of git://git.kernel.org/pub/scm/virt/kvm/kvm\n\nPull KVM fixes from Gleb Natapov.\n\n* \u0027fixes\u0027 of git://git.kernel.org/pub/scm/virt/kvm/kvm:\n  KVM: VMX: set \"blocked by NMI\" flag if EPT violation happens during IRET from NMI\n  kvm: free resources after canceling async_pf\n  KVM: nEPT: reset PDPTR register cache on nested vmentry emulation\n  KVM: mmu: allow page tables to be in read-only slots\n  KVM: x86 emulator: emulate RETF imm\n"
    },
    {
      "commit": "84fca9f38c5d646e95cdeef70e41cf15db549b95",
      "tree": "c904715c9b70a2f0716c84931e2d58b1a226a1e0",
      "parents": [
        "03e1261778cca782d41a3d8e3945ca88cf93e01e",
        "0ccdd9e7476680c16113131264ad6597bd10299d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 17 21:54:05 2013 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 17 21:54:05 2013 -0400"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid\n\nPull HID updates from Jiri Kosina:\n \"Fixes for CVE-2013-2897, CVE-2013-2895, CVE-2013-2897, CVE-2013-2894,\n  CVE-2013-2893, CVE-2013-2891, CVE-2013-2890, CVE-2013-2889.\n\n  All the bugs are triggerable only by specially crafted evil-on-purpose\n  HW devices.  Fixes by Kees Cook and Benjamin Tissoires\"\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid:\n  HID: lenovo-tpkbd: fix leak if tpkbd_probe_tp fails\n  HID: multitouch: validate indexes details\n  HID: logitech-dj: validate output report details\n  HID: validate feature and input report details\n  HID: lenovo-tpkbd: validate output report details\n  HID: LG: validate HID output report details\n  HID: steelseries: validate output report details\n  HID: sony: validate HID output report details\n  HID: zeroplus: validate output report details\n  HID: provide a helper for validating hid reports\n"
    },
    {
      "commit": "61c5923a2f2d8ab98a1e3c76f17e0f4a871ec75b",
      "tree": "0bcacd43538e7e1952f7e8696e48f9ffdbb1e0d0",
      "parents": [
        "2936b6ab455433a5ad14c7a1d2473afe1fa3faa7",
        "0a0d80eb39aa465b7bdf6f7754d0ba687eb3d2a7"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Sep 17 20:22:53 2013 -0400"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Sep 17 20:22:53 2013 -0400"
      },
      "message": "Merge branch \u0027master\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf\n\nPablo Neira Ayuso says:\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nThe following patchset contains Netfilter fixes for you net tree,\nmostly targeted to ipset, they are:\n\n* Fix ICMPv6 NAT due to wrong comparison, code instead of type, from\n  Phil Oester.\n\n* Fix RCU race in conntrack extensions release path, from Michal Kubecek.\n\n* Fix missing inversion in the userspace ipset test command match if\n  the nomatch option is specified, from Jozsef Kadlecsik.\n\n* Skip layer 4 protocol matching in ipset in case of IPv6 fragments,\n  also from Jozsef Kadlecsik.\n\n* Fix sequence adjustment in nfnetlink_queue due to using the netlink\n  skb instead of the network skb, from Gao feng.\n\n* Make sure we cannot swap of sets with different layer 3 family in\n  ipset, from Jozsef Kadlecsik.\n\n* Fix possible bogus matching in ipset if hash sets with net elements\n  are used, from Oliver Smith.\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ba6a3541545542721ce821d1e7e5ce35752e6fdf",
      "tree": "b53ff602454f383dc8148d38d7d870972d7866db",
      "parents": [
        "3261107ebfd8f6bba57cfcdb89385779fd149a00"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Mon Sep 09 13:52:33 2013 +0200"
      },
      "committer": {
        "name": "Gleb Natapov",
        "email": "gleb@redhat.com",
        "time": "Tue Sep 17 12:52:31 2013 +0300"
      },
      "message": "KVM: mmu: allow page tables to be in read-only slots\n\nPage tables in a read-only memory slot will currently cause a triple\nfault because the page walker uses gfn_to_hva and it fails on such a slot.\n\nOVMF uses such a page table; however, real hardware seems to be fine with\nthat as long as the accessed/dirty bits are set.  Save whether the slot\nis readonly, and later check it when updating the accessed and dirty bits.\n\nReviewed-by: Xiao Guangrong \u003cxiaoguangrong@linux.vnet.ibm.com\u003e\nReviewed-by: Gleb Natapov \u003cgleb@redhat.com\u003e\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n"
    },
    {
      "commit": "a4ae54f90e0a7063799eb90852aa8648ccfbb791",
      "tree": "88fd7f7920c8849fed99c782ab1fc605da69a375",
      "parents": [
        "3369d116934b70bd2755cdd8b2af9741d18a4047",
        "63ce2cc474ce962d936ae6dfaa6ae2354b1db5b2"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Sep 16 16:10:26 2013 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Sep 16 16:10:26 2013 -0400"
      },
      "message": "Merge branch \u0027timers/core\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip\n\nPull timer code update from Thomas Gleixner:\n - armada SoC clocksource overhaul with a trivial merge conflict\n - Minor improvements to various SoC clocksource drivers\n\n* \u0027timers/core\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:\n  clocksource: armada-370-xp: Add detailed clock requirements in devicetree binding\n  clocksource: armada-370-xp: Get reference fixed-clock by name\n  clocksource: armada-370-xp: Replace WARN_ON with BUG_ON\n  clocksource: armada-370-xp: Fix device-tree binding\n  clocksource: armada-370-xp: Introduce new compatibles\n  clocksource: armada-370-xp: Use CLOCKSOURCE_OF_DECLARE\n  clocksource: armada-370-xp: Simplify TIMER_CTRL register access\n  clocksource: armada-370-xp: Use BIT()\n  ARM: timer-sp: Set dynamic irq affinity\n  ARM: nomadik: add dynamic irq flag to the timer\n  clocksource: sh_cmt: 32-bit control register support\n  clocksource: em_sti: Convert to devm_* managed helpers\n"
    },
    {
      "commit": "0f1799ba1a5db4c48b72ac2da2dc70d8c190a73d",
      "tree": "5b7c5e791c45eb6cc4c174dc27ac98eb2643cf86",
      "parents": [
        "55524c219aa803887d1c247853842a9566598cba"
      ],
      "author": {
        "name": "Jozsef Kadlecsik",
        "email": "kadlec@blackhole.kfki.hu",
        "time": "Mon Sep 16 20:04:53 2013 +0200"
      },
      "committer": {
        "name": "Jozsef Kadlecsik",
        "email": "kadlec@blackhole.kfki.hu",
        "time": "Mon Sep 16 20:35:55 2013 +0200"
      },
      "message": "netfilter: ipset: Consistent userspace testing with nomatch flag\n\nThe \"nomatch\" commandline flag should invert the matching at testing,\nsimilarly to the --return-nomatch flag of the \"set\" match of iptables.\nUntil now it worked with the elements with \"nomatch\" flag only. From\nnow on it works with elements without the flag too, i.e:\n\n # ipset n test hash:net\n # ipset a test 10.0.0.0/24 nomatch\n # ipset t test 10.0.0.1\n 10.0.0.1 is NOT in set test.\n # ipset t test 10.0.0.1 nomatch\n 10.0.0.1 is in set test.\n\n # ipset a test 192.168.0.0/24\n # ipset t test 192.168.0.1\n 192.168.0.1 is in set test.\n # ipset t test 192.168.0.1 nomatch\n 192.168.0.1 is NOT in set test.\n\n Before the patch the results were\n\n ...\n # ipset t test 192.168.0.1\n 192.168.0.1 is in set test.\n # ipset t test 192.168.0.1 nomatch\n 192.168.0.1 is in set test.\n\nSigned-off-by: Jozsef Kadlecsik \u003ckadlec@blackhole.kfki.hu\u003e\n"
    },
    {
      "commit": "35e4237973665c8a1ad4e3f7a7cb87573deaa24a",
      "tree": "ce2529c137ec6b1da4f81aa77c2882706bd0c80c",
      "parents": [
        "5c44bbdab5fd7831859cf0d38626317ffcf39558"
      ],
      "author": {
        "name": "Joseph Gasparakis",
        "email": "joseph.gasparakis@intel.com",
        "time": "Fri Sep 13 07:34:13 2013 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Sep 15 22:18:13 2013 -0400"
      },
      "message": "vxlan: Fix sparse warnings\n\nThis patch fixes sparse warnings when incorrectly handling the port number\nand using int instead of unsigned int iterating through \u0026vn-\u003esock_list[].\nKeeping the port as __be16 also makes things clearer wrt endianess.\nAlso, it was pointed out that vxlan_get_rx_port() had unnecessary checks\nwhich got removed.\n\nSigned-off-by: Joseph Gasparakis \u003cjoseph.gasparakis@intel.com\u003e\nSigned-off-by: Jeff Kirsher \u003cjeffrey.t.kirsher@intel.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "0375ec5899a37e80af7be8e813548df3292325ff",
      "tree": "6f3e60e0430988255ea6507d2c018b06227f8349",
      "parents": [
        "bff157b3ad4b9f6be0af6987fcd62deaf0f2b799",
        "fc85799ee362e3ef13b8f2f5c687101490aaaa7e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Sep 15 17:41:30 2013 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Sep 15 17:41:30 2013 -0400"
      },
      "message": "Merge tag \u0027scsi-misc\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi\n\nPull misc SCSI driver updates from James Bottomley:\n \"This patch set is a set of driver updates (megaraid_sas, fnic, lpfc,\n  ufs, hpsa) we also have a couple of bug fixes (sd out of bounds and\n  ibmvfc error handling) and the first round of esas2r checker fixes and\n  finally the much anticipated big endian additions for megaraid_sas\"\n\n* tag \u0027scsi-misc\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: (47 commits)\n  [SCSI] fnic: fnic Driver Tuneables Exposed through CLI\n  [SCSI] fnic: Kernel panic while running sh/nosh with max lun cfg\n  [SCSI] fnic: Hitting BUG_ON(io_req-\u003eabts_done) in fnic_rport_exch_reset\n  [SCSI] fnic: Remove QUEUE_FULL handling code\n  [SCSI] fnic: On system with \u003e1.1TB RAM, VIC fails multipath after boot up\n  [SCSI] fnic: FC stat param seconds_since_last_reset not getting updated\n  [SCSI] sd: Fix potential out-of-bounds access\n  [SCSI] lpfc 8.3.42: Update lpfc version to driver version 8.3.42\n  [SCSI] lpfc 8.3.42: Fixed issue of task management commands having a fixed timeout\n  [SCSI] lpfc 8.3.42: Fixed inconsistent spin lock usage.\n  [SCSI] lpfc 8.3.42: Fix driver\u0027s abort loop functionality to skip IOs already getting aborted\n  [SCSI] lpfc 8.3.42: Fixed failure to allocate SCSI buffer on PPC64 platform for SLI4 devices\n  [SCSI] lpfc 8.3.42: Fix WARN_ON when driver unloads\n  [SCSI] lpfc 8.3.42: Avoided making pci bar ioremap call during dual-chute WQ/RQ pci bar selection\n  [SCSI] lpfc 8.3.42: Fixed driver iocbq structure\u0027s iocb_flag field running out of space\n  [SCSI] lpfc 8.3.42: Fix crash on driver load due to cpu affinity logic\n  [SCSI] lpfc 8.3.42: Fixed logging format of setting driver sysfs attributes hard to interpret\n  [SCSI] lpfc 8.3.42: Fixed back to back RSCNs discovery failure.\n  [SCSI] lpfc 8.3.42: Fixed race condition between BSG I/O dispatch and timeout handling\n  [SCSI] lpfc 8.3.42: Fixed function mode field defined too small for not recognizing dual-chute mode\n  ...\n"
    },
    {
      "commit": "bff157b3ad4b9f6be0af6987fcd62deaf0f2b799",
      "tree": "02ae68620a40fefd9ffc2de739a8bb362baa3f08",
      "parents": [
        "8bf5e36d0429e9b8fc2c84966577f10386bd7195",
        "23774a2f6fee0848503bfb8004eeeb5adef94f5c"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Sep 15 07:15:06 2013 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Sep 15 07:15:06 2013 -0400"
      },
      "message": "Merge branch \u0027slab/next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/linux\n\nPull SLAB update from Pekka Enberg:\n \"Nothing terribly exciting here apart from Christoph\u0027s kmalloc\n  unification patches that brings sl[aou]b implementations closer to\n  each other\"\n\n* \u0027slab/next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/linux:\n  slab: Use correct GFP_DMA constant\n  slub: remove verify_mem_not_deleted()\n  mm/sl[aou]b: Move kmallocXXX functions to common code\n  mm, slab_common: add \u0027unlikely\u0027 to size check of kmalloc_slab()\n  mm/slub.c: beautify code for removing redundancy \u0027break\u0027 statement.\n  slub: Remove unnecessary page NULL check\n  slub: don\u0027t use cpu partial pages on UP\n  mm/slub: beautify code for 80 column limitation and tab alignment\n  mm/slub: remove \u0027per_cpu\u0027 which is useless variable\n"
    },
    {
      "commit": "3711d86a2de17e967b576af8b8a1e9351a7d1466",
      "tree": "f7d6028b81a475a83a6c2471645e0202b2b5f427",
      "parents": [
        "89dc77bcdabf42ec99553f5837aa4bb8255a088c",
        "a8855990e382fc81c04187c5fdb48743307baf32"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Sep 13 23:06:40 2013 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Sep 13 23:06:40 2013 -0400"
      },
      "message": "Merge tag \u0027writeback-fixes\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/linux\n\nPull writeback fix from Wu Fengguang:\n \"A trivial writeback fix\"\n\n* tag \u0027writeback-fixes\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/linux:\n  writeback: Do not sort b_io list only because of block device inode\n"
    },
    {
      "commit": "9bf12df31f282e845b3dfaac1e5d5376a041da22",
      "tree": "10d7a21d34c7f2c47eff3e807f5efef46228d507",
      "parents": [
        "399a946edbbe90bd03aec2e93ce58c9b3f18e70b",
        "d9b2c8714aef102dea95544a8cd9372b21af463f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Sep 13 10:55:58 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Sep 13 10:55:58 2013 -0700"
      },
      "message": "Merge git://git.kvack.org/~bcrl/aio-next\n\nPull aio changes from Ben LaHaise:\n \"First off, sorry for this pull request being late in the merge window.\n  Al had raised a couple of concerns about 2 items in the series below.\n  I addressed the first issue (the race introduced by Gu\u0027s use of\n  mm_populate()), but he has not provided any further details on how he\n  wants to rework the anon_inode.c changes (which were sent out months\n  ago but have yet to be commented on).\n\n  The bulk of the changes have been sitting in the -next tree for a few\n  months, with all the issues raised being addressed\"\n\n* git://git.kvack.org/~bcrl/aio-next: (22 commits)\n  aio: rcu_read_lock protection for new rcu_dereference calls\n  aio: fix race in ring buffer page lookup introduced by page migration support\n  aio: fix rcu sparse warnings introduced by ioctx table lookup patch\n  aio: remove unnecessary debugging from aio_free_ring()\n  aio: table lookup: verify ctx pointer\n  staging/lustre: kiocb-\u003eki_left is removed\n  aio: fix error handling and rcu usage in \"convert the ioctx list to table lookup v3\"\n  aio: be defensive to ensure request batching is non-zero instead of BUG_ON()\n  aio: convert the ioctx list to table lookup v3\n  aio: double aio_max_nr in calculations\n  aio: Kill ki_dtor\n  aio: Kill ki_users\n  aio: Kill unneeded kiocb members\n  aio: Kill aio_rw_vect_retry()\n  aio: Don\u0027t use ctx-\u003etail unnecessarily\n  aio: io_cancel() no longer returns the io_event\n  aio: percpu ioctx refcount\n  aio: percpu reqs_available\n  aio: reqs_active -\u003e reqs_available\n  aio: fix build when migration is disabled\n  ...\n"
    },
    {
      "commit": "331415ff16a12147d57d5c953f3a961b7ede348b",
      "tree": "79a497ffd03b720215e567c9c9862090fc76d0fa",
      "parents": [
        "b04c99e3b845892d754ee8052d6324c39c4040de"
      ],
      "author": {
        "name": "Kees Cook",
        "email": "keescook@chromium.org",
        "time": "Wed Sep 11 21:56:50 2013 +0200"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Fri Sep 13 15:11:21 2013 +0200"
      },
      "message": "HID: provide a helper for validating hid reports\n\nMany drivers need to validate the characteristics of their HID report\nduring initialization to avoid misusing the reports. This adds a common\nhelper to perform validation of the report exisitng, the field existing,\nand the expected number of values within the field.\n\nSigned-off-by: Kees Cook \u003ckeescook@chromium.org\u003e\nCc: stable@vger.kernel.org\nReviewed-by: Benjamin Tissoires \u003cbenjamin.tissoires@redhat.com\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "0244ad004a54e39308d495fee0a2e637f8b5c317",
      "tree": "b59152dc7cf57e7ffb9c8388ae9095e665406633",
      "parents": [
        "5a7d8a28080caed7fd4cb1b81d092adac4445e8e"
      ],
      "author": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Fri Aug 30 09:39:53 2013 +0200"
      },
      "committer": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Fri Sep 13 15:09:52 2013 +0200"
      },
      "message": "Remove GENERIC_HARDIRQ config option\n\nAfter the last architecture switched to generic hard irqs the config\noptions HAVE_GENERIC_HARDIRQS \u0026 GENERIC_HARDIRQS and the related code\nfor !CONFIG_GENERIC_HARDIRQS can be removed.\n\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\n"
    },
    {
      "commit": "48efe453e6b29561f78a1df55c7f58375259cb8c",
      "tree": "53d6ac1f2010b102c15b264b13fc4c98ba634d48",
      "parents": [
        "ac4de9543aca59f2b763746647577302fbedd57e",
        "2999ee7fda3f670effbfa746164c525f9d1be4b8"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 12 16:11:45 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 12 16:11:45 2013 -0700"
      },
      "message": "Merge branch \u0027for-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending\n\nPull SCSI target updates from Nicholas Bellinger:\n \"Lots of activity again this round for I/O performance optimizations\n  (per-cpu IDA pre-allocation for vhost + iscsi/target), and the\n  addition of new fabric independent features to target-core\n  (COMPARE_AND_WRITE + EXTENDED_COPY).\n\n  The main highlights include:\n\n   - Support for iscsi-target login multiplexing across individual\n     network portals\n   - Generic Per-cpu IDA logic (kent + akpm + clameter)\n   - Conversion of vhost to use per-cpu IDA pre-allocation for\n     descriptors, SGLs and userspace page pointer list\n   - Conversion of iscsi-target + iser-target to use per-cpu IDA\n     pre-allocation for descriptors\n   - Add support for generic COMPARE_AND_WRITE (AtomicTestandSet)\n     emulation for virtual backend drivers\n   - Add support for generic EXTENDED_COPY (CopyOffload) emulation for\n     virtual backend drivers.\n   - Add support for fast memory registration mode to iser-target (Vu)\n\n  The patches to add COMPARE_AND_WRITE and EXTENDED_COPY support are of\n  particular significance, which make us the first and only open source\n  target to support the full set of VAAI primitives.\n\n  Currently Linux clients are lacking upstream support to actually\n  utilize these primitives.  However, with server side support now in\n  place for folks like MKP + ZAB working on the client, this logic once\n  reserved for the highest end of storage arrays, can now be run in VMs\n  on their laptops\"\n\n* \u0027for-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending: (50 commits)\n  target/iscsi: Bump versions to v4.1.0\n  target: Update copyright ownership/year information to 2013\n  iscsi-target: Bump default TCP listen backlog to 256\n  target: Fix \u003e\u003d v3.9+ regression in PR APTPL + ALUA metadata write-out\n  iscsi-target; Bump default CmdSN Depth to 64\n  iscsi-target: Remove unnecessary wait_for_completion in iscsi_get_thread_set\n  iscsi-target: Add thread_set-\u003ets_activate_sem + use common deallocate\n  iscsi-target: Fix race with thread_pre_handler flush_signals + ISCSI_THREAD_SET_DIE\n  target: remove unused including \u003clinux/version.h\u003e\n  iser-target: introduce fast memory registration mode (FRWR)\n  iser-target: generalize rdma memory registration and cleanup\n  iser-target: move rdma wr processing to a shared function\n  target: Enable global EXTENDED_COPY setup/release\n  target: Add Third Party Copy (3PC) bit in INQUIRY response\n  target: Enable EXTENDED_COPY setup in spc_parse_cdb\n  target: Add support for EXTENDED_COPY copy offload emulation\n  target: Avoid non-existent tg_pt_gp_mem in target_alua_state_check\n  target: Add global device list for EXTENDED_COPY\n  target: Make helpers non static for EXTENDED_COPY command setup\n  target: Make spc_parse_naa_6h_vendor_specific non static\n  ...\n"
    },
    {
      "commit": "ac4de9543aca59f2b763746647577302fbedd57e",
      "tree": "40407750569ee030de56233c41c9a97f7e89cf67",
      "parents": [
        "26935fb06ee88f1188789807687c03041f3c70d9",
        "de32a8177f64bc62e1b19c685dd391af664ab13f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 12 15:44:27 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 12 15:44:27 2013 -0700"
      },
      "message": "Merge branch \u0027akpm\u0027 (patches from Andrew Morton)\n\nMerge more patches from Andrew Morton:\n \"The rest of MM.  Plus one misc cleanup\"\n\n* emailed patches from Andrew Morton \u003cakpm@linux-foundation.org\u003e: (35 commits)\n  mm/Kconfig: add MMU dependency for MIGRATION.\n  kernel: replace strict_strto*() with kstrto*()\n  mm, thp: count thp_fault_fallback anytime thp fault fails\n  thp: consolidate code between handle_mm_fault() and do_huge_pmd_anonymous_page()\n  thp: do_huge_pmd_anonymous_page() cleanup\n  thp: move maybe_pmd_mkwrite() out of mk_huge_pmd()\n  mm: cleanup add_to_page_cache_locked()\n  thp: account anon transparent huge pages into NR_ANON_PAGES\n  truncate: drop \u0027oldsize\u0027 truncate_pagecache() parameter\n  mm: make lru_add_drain_all() selective\n  memcg: document cgroup dirty/writeback memory statistics\n  memcg: add per cgroup writeback pages accounting\n  memcg: check for proper lock held in mem_cgroup_update_page_stat\n  memcg: remove MEMCG_NR_FILE_MAPPED\n  memcg: reduce function dereference\n  memcg: avoid overflow caused by PAGE_ALIGN\n  memcg: rename RESOURCE_MAX to RES_COUNTER_MAX\n  memcg: correct RESOURCE_MAX to ULLONG_MAX\n  mm: memcg: do not trap chargers with full callstack on OOM\n  mm: memcg: rework and document OOM waiting and wakeup\n  ...\n"
    },
    {
      "commit": "c02925540ca7019465a43c00f8a3c0186ddace2b",
      "tree": "3097ece86eedd0a01cf5dbc0a8f6c28fcbd1f4f7",
      "parents": [
        "128ec037bafe5905b2e6f2796f426a1d247d0066"
      ],
      "author": {
        "name": "Kirill A. Shutemov",
        "email": "kirill.shutemov@linux.intel.com",
        "time": "Thu Sep 12 15:14:05 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 12 15:38:03 2013 -0700"
      },
      "message": "thp: consolidate code between handle_mm_fault() and do_huge_pmd_anonymous_page()\n\ndo_huge_pmd_anonymous_page() has copy-pasted piece of handle_mm_fault()\nto handle fallback path.\n\nLet\u0027s consolidate code back by introducing VM_FAULT_FALLBACK return\ncode.\n\nSigned-off-by: Kirill A. Shutemov \u003ckirill.shutemov@linux.intel.com\u003e\nAcked-by: Hillf Danton \u003cdhillf@gmail.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Andi Kleen \u003cak@linux.intel.com\u003e\nCc: Matthew Wilcox \u003cwilly@linux.intel.com\u003e\nCc: Dave Hansen \u003cdave.hansen@linux.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": "7caef26767c1727d7abfbbbfbe8b2bb473430d48",
      "tree": "909e2a3c1b0a20a976fa3f84a17a00f8a21607bf",
      "parents": [
        "5fbc461636c32efdb9d5216d491d37a40d54535b"
      ],
      "author": {
        "name": "Kirill A. Shutemov",
        "email": "kirill.shutemov@linux.intel.com",
        "time": "Thu Sep 12 15:13:56 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 12 15:38:02 2013 -0700"
      },
      "message": "truncate: drop \u0027oldsize\u0027 truncate_pagecache() parameter\n\ntruncate_pagecache() doesn\u0027t care about old size since commit\ncedabed49b39 (\"vfs: Fix vmtruncate() regression\").  Let\u0027s drop it.\n\nSigned-off-by: Kirill A. Shutemov \u003ckirill.shutemov@linux.intel.com\u003e\nCc: OGAWA Hirofumi \u003chirofumi@mail.parknet.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5fbc461636c32efdb9d5216d491d37a40d54535b",
      "tree": "119599fe279ba3daf94422d54cfc7bd2a5ae4a80",
      "parents": [
        "9cb2dc1c950cf0624202c1ea2705705e1e51c278"
      ],
      "author": {
        "name": "Chris Metcalf",
        "email": "cmetcalf@tilera.com",
        "time": "Thu Sep 12 15:13:55 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 12 15:38:02 2013 -0700"
      },
      "message": "mm: make lru_add_drain_all() selective\n\nmake lru_add_drain_all() only selectively interrupt the cpus that have\nper-cpu free pages that can be drained.\n\nThis is important in nohz mode where calling mlockall(), for example,\notherwise will interrupt every core unnecessarily.\n\nThis is important on workloads where nohz cores are handling 10 Gb traffic\nin userspace.  Those CPUs do not enter the kernel and place pages into LRU\npagevecs and they really, really don\u0027t want to be interrupted, or they\ndrop packets on the floor.\n\nSigned-off-by: Chris Metcalf \u003ccmetcalf@tilera.com\u003e\nReviewed-by: Tejun Heo \u003ctj@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": "3ea67d06e4679a16f69f66f43a8d6ee4778985fc",
      "tree": "0ec35a312de85ce91bf0bf6e4c5b88440f3d0f1d",
      "parents": [
        "658b72c5a7a033f0dde61b15dff86bf423ce425e"
      ],
      "author": {
        "name": "Sha Zhengju",
        "email": "handai.szj@taobao.com",
        "time": "Thu Sep 12 15:13:53 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 12 15:38:02 2013 -0700"
      },
      "message": "memcg: add per cgroup writeback pages accounting\n\nAdd memcg routines to count writeback pages, later dirty pages will also\nbe accounted.\n\nAfter Kame\u0027s commit 89c06bd52fb9 (\"memcg: use new logic for page stat\naccounting\"), we can use \u0027struct page\u0027 flag to test page state instead\nof per page_cgroup flag.  But memcg has a feature to move a page from a\ncgroup to another one and may have race between \"move\" and \"page stat\naccounting\".  So in order to avoid the race we have designed a new lock:\n\n         mem_cgroup_begin_update_page_stat()\n         modify page information        --\u003e(a)\n         mem_cgroup_update_page_stat()  --\u003e(b)\n         mem_cgroup_end_update_page_stat()\n\nIt requires both (a) and (b)(writeback pages accounting) to be pretected\nin mem_cgroup_{begin/end}_update_page_stat().  It\u0027s full no-op for\n!CONFIG_MEMCG, almost no-op if memcg is disabled (but compiled in), rcu\nread lock in the most cases (no task is moving), and spin_lock_irqsave\non top in the slow path.\n\nThere\u0027re two writeback interfaces to modify: test_{clear/set}_page_writeback().\nAnd the lock order is:\n\t--\u003e memcg-\u003emove_lock\n\t  --\u003e mapping-\u003etree_lock\n\nSigned-off-by: Sha Zhengju \u003chandai.szj@taobao.com\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nReviewed-by: Greg Thelen \u003cgthelen@google.com\u003e\nCc: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "68b4876d996e8749142b2895bc2e251448996363",
      "tree": "bd21b2e160d48dc38b11869c1bef5d38100ddd98",
      "parents": [
        "1a36e59d4833de19120dc7482c61ef69e228c73c"
      ],
      "author": {
        "name": "Sha Zhengju",
        "email": "handai.szj@taobao.com",
        "time": "Thu Sep 12 15:13:50 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 12 15:38:02 2013 -0700"
      },
      "message": "memcg: remove MEMCG_NR_FILE_MAPPED\n\nWhile accounting memcg page stat, it\u0027s not worth to use\nMEMCG_NR_FILE_MAPPED as an extra layer of indirection because of the\ncomplexity and presumed performance overhead.  We can use\nMEM_CGROUP_STAT_FILE_MAPPED directly.\n\nSigned-off-by: Sha Zhengju \u003chandai.szj@taobao.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nAcked-by: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\nReviewed-by: Greg Thelen \u003cgthelen@google.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6de5a8bfcae6e3b427d642eff078d8305b324b52",
      "tree": "333d73c79bdec97184c4a60e45453a167730fd7b",
      "parents": [
        "34ff8dc08956098563989d8599840b130be81252"
      ],
      "author": {
        "name": "Sha Zhengju",
        "email": "handai.szj@taobao.com",
        "time": "Thu Sep 12 15:13:47 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 12 15:38:02 2013 -0700"
      },
      "message": "memcg: rename RESOURCE_MAX to RES_COUNTER_MAX\n\nRESOURCE_MAX is far too general name, change it to RES_COUNTER_MAX.\n\nSigned-off-by: Sha Zhengju \u003chandai.szj@taobao.com\u003e\nSigned-off-by: Qiang Huang \u003ch.huangqiang@huawei.com\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Jeff Liu \u003cjeff.liu@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "34ff8dc08956098563989d8599840b130be81252",
      "tree": "39c964226586a57b0b1e97d9eb1f34b1dc99519e",
      "parents": [
        "3812c8c8f3953921ef18544110dafc3505c1ac62"
      ],
      "author": {
        "name": "Sha Zhengju",
        "email": "handai.szj@taobao.com",
        "time": "Thu Sep 12 15:13:46 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 12 15:38:02 2013 -0700"
      },
      "message": "memcg: correct RESOURCE_MAX to ULLONG_MAX\n\nCurrent RESOURCE_MAX is ULONG_MAX, but the value we used to set resource\nlimit is unsigned long long, so we can set bigger value than that which is\nstrange.  The XXX_MAX should be reasonable max value, bigger than that\nshould be overflow.\n\nNotice that this change will affect user output of default *.limit_in_bytes:\nbefore change:\n\n  $ cat /cgroup/memory/memory.limit_in_bytes\n  9223372036854775807\n\nafter change:\n\n  $ cat /cgroup/memory/memory.limit_in_bytes\n  18446744073709551615\n\nBut it doesn\u0027t alter the API in term of input - we can still use \"echo -1\n\u003e *.limit_in_bytes\" to reset the numbers to \"unlimited\".\n\nSigned-off-by: Sha Zhengju \u003chandai.szj@taobao.com\u003e\nSigned-off-by: Qiang Huang \u003ch.huangqiang@huawei.com\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Jeff Liu \u003cjeff.liu@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3812c8c8f3953921ef18544110dafc3505c1ac62",
      "tree": "8e5efc15fec4700644774df5fb5302f5c82f4a31",
      "parents": [
        "fb2a6fc56be66c169f8b80e07ed999ba453a2db2"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Thu Sep 12 15:13:44 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 12 15:38:02 2013 -0700"
      },
      "message": "mm: memcg: do not trap chargers with full callstack on OOM\n\nThe memcg OOM handling is incredibly fragile and can deadlock.  When a\ntask fails to charge memory, it invokes the OOM killer and loops right\nthere in the charge code until it succeeds.  Comparably, any other task\nthat enters the charge path at this point will go to a waitqueue right\nthen and there and sleep until the OOM situation is resolved.  The problem\nis that these tasks may hold filesystem locks and the mmap_sem; locks that\nthe selected OOM victim may need to exit.\n\nFor example, in one reported case, the task invoking the OOM killer was\nabout to charge a page cache page during a write(), which holds the\ni_mutex.  The OOM killer selected a task that was just entering truncate()\nand trying to acquire the i_mutex:\n\nOOM invoking task:\n  mem_cgroup_handle_oom+0x241/0x3b0\n  mem_cgroup_cache_charge+0xbe/0xe0\n  add_to_page_cache_locked+0x4c/0x140\n  add_to_page_cache_lru+0x22/0x50\n  grab_cache_page_write_begin+0x8b/0xe0\n  ext3_write_begin+0x88/0x270\n  generic_file_buffered_write+0x116/0x290\n  __generic_file_aio_write+0x27c/0x480\n  generic_file_aio_write+0x76/0xf0           # takes -\u003ei_mutex\n  do_sync_write+0xea/0x130\n  vfs_write+0xf3/0x1f0\n  sys_write+0x51/0x90\n  system_call_fastpath+0x18/0x1d\n\nOOM kill victim:\n  do_truncate+0x58/0xa0              # takes i_mutex\n  do_last+0x250/0xa30\n  path_openat+0xd7/0x440\n  do_filp_open+0x49/0xa0\n  do_sys_open+0x106/0x240\n  sys_open+0x20/0x30\n  system_call_fastpath+0x18/0x1d\n\nThe OOM handling task will retry the charge indefinitely while the OOM\nkilled task is not releasing any resources.\n\nA similar scenario can happen when the kernel OOM killer for a memcg is\ndisabled and a userspace task is in charge of resolving OOM situations.\nIn this case, ALL tasks that enter the OOM path will be made to sleep on\nthe OOM waitqueue and wait for userspace to free resources or increase\nthe group\u0027s limit.  But a userspace OOM handler is prone to deadlock\nitself on the locks held by the waiting tasks.  For example one of the\nsleeping tasks may be stuck in a brk() call with the mmap_sem held for\nwriting but the userspace handler, in order to pick an optimal victim,\nmay need to read files from /proc/\u003cpid\u003e, which tries to acquire the same\nmmap_sem for reading and deadlocks.\n\nThis patch changes the way tasks behave after detecting a memcg OOM and\nmakes sure nobody loops or sleeps with locks held:\n\n1. When OOMing in a user fault, invoke the OOM killer and restart the\n   fault instead of looping on the charge attempt.  This way, the OOM\n   victim can not get stuck on locks the looping task may hold.\n\n2. When OOMing in a user fault but somebody else is handling it\n   (either the kernel OOM killer or a userspace handler), don\u0027t go to\n   sleep in the charge context.  Instead, remember the OOMing memcg in\n   the task struct and then fully unwind the page fault stack with\n   -ENOMEM.  pagefault_out_of_memory() will then call back into the\n   memcg code to check if the -ENOMEM came from the memcg, and then\n   either put the task to sleep on the memcg\u0027s OOM waitqueue or just\n   restart the fault.  The OOM victim can no longer get stuck on any\n   lock a sleeping task may hold.\n\nDebugged by Michal Hocko.\n\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nReported-by: azurIt \u003cazurit@pobox.sk\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "519e52473ebe9db5cdef44670d5a97f1fd53d721",
      "tree": "635fce64ff3658250745b9c8dfebd47e981a5b16",
      "parents": [
        "3a13c4d761b4b979ba8767f42345fed3274991b0"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Thu Sep 12 15:13:42 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 12 15:38:01 2013 -0700"
      },
      "message": "mm: memcg: enable memcg OOM killer only for user faults\n\nSystem calls and kernel faults (uaccess, gup) can handle an out of memory\nsituation gracefully and just return -ENOMEM.\n\nEnable the memcg OOM killer only for user faults, where it\u0027s really the\nonly option available.\n\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: azurIt \u003cazurit@pobox.sk\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "759496ba6407c6994d6a5ce3a5e74937d7816208",
      "tree": "aeff8de8af36f70f2591114cef58c9ae7df25565",
      "parents": [
        "871341023c771ad233620b7a1fb3d9c7031c4e5c"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Thu Sep 12 15:13:39 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 12 15:38:01 2013 -0700"
      },
      "message": "arch: mm: pass userspace fault flag to generic fault handler\n\nUnlike global OOM handling, memory cgroup code will invoke the OOM killer\nin any OOM situation because it has no way of telling faults occuring in\nkernel context - which could be handled more gracefully - from\nuser-triggered faults.\n\nPass a flag that identifies faults originating in user space from the\narchitecture-specific fault handlers to generic code so that memcg OOM\nhandling can be improved.\n\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nReviewed-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: azurIt \u003cazurit@pobox.sk\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "de57780dc659f95b17ccb649f003278dde0b5b86",
      "tree": "d2493cc412c16946f3ead9158a61b26dd1f0c45a",
      "parents": [
        "a5b7c87f92076352dbff2fe0423ec255e1c9a71b"
      ],
      "author": {
        "name": "Michal Hocko",
        "email": "mhocko@suse.cz",
        "time": "Thu Sep 12 15:13:26 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 12 15:38:00 2013 -0700"
      },
      "message": "memcg: enhance memcg iterator to support predicates\n\nThe caller of the iterator might know that some nodes or even subtrees\nshould be skipped but there is no way to tell iterators about that so the\nonly choice left is to let iterators to visit each node and do the\nselection outside of the iterating code.  This, however, doesn\u0027t scale\nwell with hierarchies with many groups where only few groups are\ninteresting.\n\nThis patch adds mem_cgroup_iter_cond variant of the iterator with a\ncallback which gets called for every visited node.  There are three\npossible ways how the callback can influence the walk.  Either the node is\nvisited, it is skipped but the tree walk continues down the tree or the\nwhole subtree of the current group is skipped.\n\n[hughd@google.com: fix memcg-less page reclaim]\nSigned-off-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Balbir Singh \u003cbsingharora@gmail.com\u003e\nCc: Glauber Costa \u003cglommer@openvz.org\u003e\nCc: Greg Thelen \u003cgthelen@google.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Michel Lespinasse \u003cwalken@google.com\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Ying Han \u003cyinghan@google.com\u003e\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a5b7c87f92076352dbff2fe0423ec255e1c9a71b",
      "tree": "fbc14b98d1412a078fc570914b050cd618e359f2",
      "parents": [
        "e883110aad718b65de658db77387aaa69cce996d"
      ],
      "author": {
        "name": "Michal Hocko",
        "email": "mhocko@suse.cz",
        "time": "Thu Sep 12 15:13:25 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 12 15:38:00 2013 -0700"
      },
      "message": "vmscan, memcg: do softlimit reclaim also for targeted reclaim\n\nSoft reclaim has been done only for the global reclaim (both background\nand direct).  Since \"memcg: integrate soft reclaim tighter with zone\nshrinking code\" there is no reason for this limitation anymore as the soft\nlimit reclaim doesn\u0027t use any special code paths and it is a part of the\nzone shrinking code which is used by both global and targeted reclaims.\n\nFrom the semantic point of view it is natural to consider soft limit\nbefore touching all groups in the hierarchy tree which is touching the\nhard limit because soft limit tells us where to push back when there is a\nmemory pressure.  It is not important whether the pressure comes from the\nlimit or imbalanced zones.\n\nThis patch simply enables soft reclaim unconditionally in\nmem_cgroup_should_soft_reclaim so it is enabled for both global and\ntargeted reclaim paths.  mem_cgroup_soft_reclaim_eligible needs to learn\nabout the root of the reclaim to know where to stop checking soft limit\nstate of parents up the hierarchy.  Say we have\n\nA (over soft limit)\n \\\n  B (below s.l., hit the hard limit)\n / \\\nC   D (below s.l.)\n\nB is the source of the outside memory pressure now for D but we shouldn\u0027t\nsoft reclaim it because it is behaving well under B subtree and we can\nstill reclaim from C (pressumably it is over the limit).\nmem_cgroup_soft_reclaim_eligible should therefore stop climbing up the\nhierarchy at B (root of the memory pressure).\n\nSigned-off-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nReviewed-by: Glauber Costa \u003cglommer@openvz.org\u003e\nReviewed-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Balbir Singh \u003cbsingharora@gmail.com\u003e\nCc: Greg Thelen \u003cgthelen@google.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Michel Lespinasse \u003cwalken@google.com\u003e\nCc: Ying Han \u003cyinghan@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": "3b38722efd9f66da63bbbd41520c2e6fa9db3d68",
      "tree": "aeec255d0358051b8ffe83f6744a2054b383c62e",
      "parents": [
        "c33bd8354f3a3bb26a98d2b6bf600b7b35657328"
      ],
      "author": {
        "name": "Michal Hocko",
        "email": "mhocko@suse.cz",
        "time": "Thu Sep 12 15:13:21 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 12 15:38:00 2013 -0700"
      },
      "message": "memcg, vmscan: integrate soft reclaim tighter with zone shrinking code\n\nThis patchset is sitting out of tree for quite some time without any\nobjections.  I would be really happy if it made it into 3.12.  I do not\nwant to push it too hard but I think this work is basically ready and\nwaiting more doesn\u0027t help.\n\nThe basic idea is quite simple.  Pull soft reclaim into shrink_zone in the\nfirst step and get rid of the previous soft reclaim infrastructure.\nshrink_zone is done in two passes now.  First it tries to do the soft\nlimit reclaim and it falls back to reclaim-all mode if no group is over\nthe limit or no pages have been scanned.  The second pass happens at the\nsame priority so the only time we waste is the memcg tree walk which has\nbeen updated in the third step to have only negligible overhead.\n\nAs a bonus we will get rid of a _lot_ of code by this and soft reclaim\nwill not stand out like before when it wasn\u0027t integrated into the zone\nshrinking code and it reclaimed at priority 0 (the testing results show\nthat some workloads suffers from such an aggressive reclaim).  The clean\nup is in a separate patch because I felt it would be easier to review that\nway.\n\nThe second step is soft limit reclaim integration into targeted reclaim.\nIt should be rather straight forward.  Soft limit has been used only for\nthe global reclaim so far but it makes sense for any kind of pressure\ncoming from up-the-hierarchy, including targeted reclaim.\n\nThe third step (patches 4-8) addresses the tree walk overhead by enhancing\nmemcg iterators to enable skipping whole subtrees and tracking number of\nover soft limit children at each level of the hierarchy.  This information\nis updated same way the old soft limit tree was updated (from\nmemcg_check_events) so we shouldn\u0027t see an additional overhead.  In fact\nmem_cgroup_update_soft_limit is much simpler than tree manipulation done\npreviously.\n\n__shrink_zone uses mem_cgroup_soft_reclaim_eligible as a predicate for\nmem_cgroup_iter so the decision whether a particular group should be\nvisited is done at the iterator level which allows us to decide to skip\nthe whole subtree as well (if there is no child in excess).  This reduces\nthe tree walk overhead considerably.\n\n* TEST 1\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nMy primary test case was a parallel kernel build with 2 groups (make is\nrunning with -j8 with a distribution .config in a separate cgroup without\nany hard limit) on a 32 CPU machine booted with 1GB memory and both builds\nrun taskset to Node 0 cpus.\n\nI was mostly interested in 2 setups.  Default - no soft limit set and -\nand 0 soft limit set to both groups.  The first one should tell us whether\nthe rework regresses the default behavior while the second one should show\nus improvements in an extreme case where both workloads are always over\nthe soft limit.\n\n/usr/bin/time -v has been used to collect the statistics and each\nconfiguration had 3 runs after fresh boot without any other load on the\nsystem.\n\nbase is mmotm-2013-07-18-16-40\nrework all 8 patches applied on top of base\n\n* No-limit\nUser\nno-limit/base: min: 651.92 max: 672.65 avg: 664.33 std: 8.01 runs: 6\nno-limit/rework: min: 657.34 [100.8%] max: 668.39 [99.4%] avg: 663.13 [99.8%] std: 3.61 runs: 6\nSystem\nno-limit/base: min: 69.33 max: 71.39 avg: 70.32 std: 0.79 runs: 6\nno-limit/rework: min: 69.12 [99.7%] max: 71.05 [99.5%] avg: 70.04 [99.6%] std: 0.59 runs: 6\nElapsed\nno-limit/base: min: 398.27 max: 422.36 avg: 408.85 std: 7.74 runs: 6\nno-limit/rework: min: 386.36 [97.0%] max: 438.40 [103.8%] avg: 416.34 [101.8%] std: 18.85 runs: 6\n\nThe results are within noise. Elapsed time has a bigger variance but the\naverage looks good.\n\n* 0-limit\nUser\n0-limit/base: min: 573.76 max: 605.63 avg: 585.73 std: 12.21 runs: 6\n0-limit/rework: min: 645.77 [112.6%] max: 666.25 [110.0%] avg: 656.97 [112.2%] std: 7.77 runs: 6\nSystem\n0-limit/base: min: 69.57 max: 71.13 avg: 70.29 std: 0.54 runs: 6\n0-limit/rework: min: 68.68 [98.7%] max: 71.40 [100.4%] avg: 69.91 [99.5%] std: 0.87 runs: 6\nElapsed\n0-limit/base: min: 1306.14 max: 1550.17 avg: 1430.35 std: 90.86 runs: 6\n0-limit/rework: min: 404.06 [30.9%] max: 465.94 [30.1%] avg: 434.81 [30.4%] std: 22.68 runs: 6\n\nThe improvement is really huge here (even bigger than with my previous\ntesting and I suspect that this highly depends on the storage).  Page\nfault statistics tell us at least part of the story:\n\nMinor\n0-limit/base: min: 37180461.00 max: 37319986.00 avg: 37247470.00 std: 54772.71 runs: 6\n0-limit/rework: min: 36751685.00 [98.8%] max: 36805379.00 [98.6%] avg: 36774506.33 [98.7%] std: 17109.03 runs: 6\nMajor\n0-limit/base: min: 170604.00 max: 221141.00 avg: 196081.83 std: 18217.01 runs: 6\n0-limit/rework: min: 2864.00 [1.7%] max: 10029.00 [4.5%] avg: 5627.33 [2.9%] std: 2252.71 runs: 6\n\nSame as with my previous testing Minor faults are more or less within\nnoise but Major fault count is way bellow the base kernel.\n\nWhile this looks as a nice win it is fair to say that 0-limit\nconfiguration is quite artificial. So I was playing with 0-no-limit\nloads as well.\n\n* TEST 2\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nThe following results are from 2 groups configuration on a 16GB machine\n(single NUMA node).\n\n- A running stream IO (dd if\u003d/dev/zero of\u003dlocal.file bs\u003d1024) with\n  2*TotalMem with 0 soft limit.\n- B running a mem_eater which consumes TotalMem-1G without any limit. The\n  mem_eater consumes the memory in 100 chunks with 1s nap after each\n  mmap+poppulate so that both loads have chance to fight for the memory.\n\nThe expected result is that B shouldn\u0027t be reclaimed and A shouldn\u0027t see\na big dropdown in elapsed time.\n\nUser\nbase: min: 2.68 max: 2.89 avg: 2.76 std: 0.09 runs: 3\nrework: min: 3.27 [122.0%] max: 3.74 [129.4%] avg: 3.44 [124.6%] std: 0.21 runs: 3\nSystem\nbase: min: 86.26 max: 88.29 avg: 87.28 std: 0.83 runs: 3\nrework: min: 81.05 [94.0%] max: 84.96 [96.2%] avg: 83.14 [95.3%] std: 1.61 runs: 3\nElapsed\nbase: min: 317.28 max: 332.39 avg: 325.84 std: 6.33 runs: 3\nrework: min: 281.53 [88.7%] max: 298.16 [89.7%] avg: 290.99 [89.3%] std: 6.98 runs: 3\n\nSystem time improved slightly as well as Elapsed. My previous testing\nhas shown worse numbers but this again seem to depend on the storage\nspeed.\n\nMy theory is that the writeback doesn\u0027t catch up and prio-0 soft reclaim\nfalls into wait on writeback page too often in the base kernel. The\npatched kernel doesn\u0027t do that because the soft reclaim is done from the\nkswapd/direct reclaim context. This can be seen on the following graph\nnicely. The A\u0027s group usage_in_bytes regurarly drops really low very often.\n\nAll 3 runs\nhttp://labs.suse.cz/mhocko/soft_limit_rework/stream_io-vs-mem_eater/stream.png\nresp. a detail of the single run\nhttp://labs.suse.cz/mhocko/soft_limit_rework/stream_io-vs-mem_eater/stream-one-run.png\n\nmem_eater seems to be doing better as well. It gets to the full\nallocation size faster as can be seen on the following graph:\nhttp://labs.suse.cz/mhocko/soft_limit_rework/stream_io-vs-mem_eater/mem_eater-one-run.png\n\n/proc/meminfo collected during the test also shows that rework kernel\nhasn\u0027t swapped that much (well almost not at all):\nbase: max: 123900 K avg: 56388.29 K\nrework: max: 300 K avg: 128.68 K\n\nkswapd and direct reclaim statistics are of no use unfortunatelly because\nsoft reclaim is not accounted properly as the counters are hidden by\nglobal_reclaim() checks in the base kernel.\n\n* TEST 3\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nAnother test was the same configuration as TEST2 except the stream IO was\nreplaced by a single kbuild (16 parallel jobs bound to Node0 cpus same as\nin TEST1) and mem_eater allocated TotalMem-200M so kbuild had only 200MB\nleft.\n\nKbuild did better with the rework kernel here as well:\nUser\nbase: min: 860.28 max: 872.86 avg: 868.03 std: 5.54 runs: 3\nrework: min: 880.81 [102.4%] max: 887.45 [101.7%] avg: 883.56 [101.8%] std: 2.83 runs: 3\nSystem\nbase: min: 84.35 max: 85.06 avg: 84.79 std: 0.31 runs: 3\nrework: min: 85.62 [101.5%] max: 86.09 [101.2%] avg: 85.79 [101.2%] std: 0.21 runs: 3\nElapsed\nbase: min: 135.36 max: 243.30 avg: 182.47 std: 45.12 runs: 3\nrework: min: 110.46 [81.6%] max: 116.20 [47.8%] avg: 114.15 [62.6%] std: 2.61 runs: 3\nMinor\nbase: min: 36635476.00 max: 36673365.00 avg: 36654812.00 std: 15478.03 runs: 3\nrework: min: 36639301.00 [100.0%] max: 36695541.00 [100.1%] avg: 36665511.00 [100.0%] std: 23118.23 runs: 3\nMajor\nbase: min: 14708.00 max: 53328.00 avg: 31379.00 std: 16202.24 runs: 3\nrework: min: 302.00 [2.1%] max: 414.00 [0.8%] avg: 366.33 [1.2%] std: 47.22 runs: 3\n\nAgain we can see a significant improvement in Elapsed (it also seems to\nbe more stable), there is a huge dropdown for the Major page faults and\nmuch more swapping:\nbase: max: 583736 K avg: 112547.43 K\nrework: max: 4012 K avg: 124.36 K\n\nGraphs from all three runs show the variability of the kbuild quite\nnicely.  It even seems that it took longer after every run with the base\nkernel which would be quite surprising as the source tree for the build is\nremoved and caches are dropped after each run so the build operates on a\nfreshly extracted sources everytime.\nhttp://labs.suse.cz/mhocko/soft_limit_rework/stream_io-vs-mem_eater/kbuild-mem_eater.png\n\nMy other testing shows that this is just a matter of timing and other runs\nbehave differently the std for Elapsed time is similar ~50.  Example of\nother three runs:\nhttp://labs.suse.cz/mhocko/soft_limit_rework/stream_io-vs-mem_eater/kbuild-mem_eater2.png\n\nSo to wrap this up.  The series is still doing good and improves the soft\nlimit.\n\nThe testing results for bunch of cgroups with both stream IO and kbuild\nloads can be found in \"memcg: track children in soft limit excess to\nimprove soft limit\".\n\nThis patch:\n\nMemcg soft reclaim has been traditionally triggered from the global\nreclaim paths before calling shrink_zone.  mem_cgroup_soft_limit_reclaim\nthen picked up a group which exceeds the soft limit the most and reclaimed\nit with 0 priority to reclaim at least SWAP_CLUSTER_MAX pages.\n\nThe infrastructure requires per-node-zone trees which hold over-limit\ngroups and keep them up-to-date (via memcg_check_events) which is not cost\nfree.  Although this overhead hasn\u0027t turned out to be a bottle neck the\nimplementation is suboptimal because mem_cgroup_update_tree has no idea\nwhich zones consumed memory over the limit so we could easily end up\nhaving a group on a node-zone tree having only few pages from that\nnode-zone.\n\nThis patch doesn\u0027t try to fix node-zone trees management because it seems\nthat integrating soft reclaim into zone shrinking sounds much easier and\nmore appropriate for several reasons.  First of all 0 priority reclaim was\na crude hack which might lead to big stalls if the group\u0027s LRUs are big\nand hard to reclaim (e.g.  a lot of dirty/writeback pages).  Soft reclaim\nshould be applicable also to the targeted reclaim which is awkward right\nnow without additional hacks.  Last but not least the whole infrastructure\neats quite some code.\n\nAfter this patch shrink_zone is done in 2 passes.  First it tries to do\nthe soft reclaim if appropriate (only for global reclaim for now to keep\ncompatible with the original state) and fall back to ignoring soft limit\nif no group is eligible to soft reclaim or nothing has been scanned during\nthe first pass.  Only groups which are over their soft limit or any of\ntheir parents up the hierarchy is over the limit are considered eligible\nduring the first pass.\n\nSoft limit tree which is not necessary anymore will be removed in the\nfollow up patch to make this patch smaller and easier to review.\n\nSigned-off-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nReviewed-by: Glauber Costa \u003cglommer@openvz.org\u003e\nReviewed-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Ying Han \u003cyinghan@google.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Michel Lespinasse \u003cwalken@google.com\u003e\nCc: Greg Thelen \u003cgthelen@google.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbsingharora@gmail.com\u003e\nCc: Glauber Costa \u003cglommer@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": "26935fb06ee88f1188789807687c03041f3c70d9",
      "tree": "381c487716540b52348d78bee6555f8fa61d77ef",
      "parents": [
        "3cc69b638e11bfda5d013c2b75b60934aa0e88a1",
        "bf2ba3bc185269eca274b458aac46ba1ad7c1121"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 12 15:01:38 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 12 15:01:38 2013 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs\n\nPull vfs pile 4 from Al Viro:\n \"list_lru pile, mostly\"\n\nThis came out of Andrew\u0027s pile, Al ended up doing the merge work so that\nAndrew didn\u0027t have to.\n\nAdditionally, a few fixes.\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (42 commits)\n  super: fix for destroy lrus\n  list_lru: dynamically adjust node arrays\n  shrinker: Kill old -\u003eshrink API.\n  shrinker: convert remaining shrinkers to count/scan API\n  staging/lustre/libcfs: cleanup linux-mem.h\n  staging/lustre/ptlrpc: convert to new shrinker API\n  staging/lustre/obdclass: convert lu_object shrinker to count/scan API\n  staging/lustre/ldlm: convert to shrinkers to count/scan API\n  hugepage: convert huge zero page shrinker to new shrinker API\n  i915: bail out earlier when shrinker cannot acquire mutex\n  drivers: convert shrinkers to new count/scan API\n  fs: convert fs shrinkers to new scan/count API\n  xfs: fix dquot isolation hang\n  xfs-convert-dquot-cache-lru-to-list_lru-fix\n  xfs: convert dquot cache lru to list_lru\n  xfs: rework buffer dispose list tracking\n  xfs-convert-buftarg-lru-to-generic-code-fix\n  xfs: convert buftarg LRU to generic code\n  fs: convert inode and dentry shrinking to be node aware\n  vmscan: per-node deferred work\n  ...\n"
    },
    {
      "commit": "5223161dc0f5e44fbf3d5e42d23697b6796cdf4e",
      "tree": "10837ec58d96e751469d78d347f76c0d49238d72",
      "parents": [
        "e5d0c874391a500be7643d3eef9fb07171eee129",
        "61abeba5222895d6900b13115f5d8eba7988d7d6"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 12 11:35:33 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 12 11:35:33 2013 -0700"
      },
      "message": "Merge branch \u0027for-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/linux-leds\n\nPull led updates from Bryan Wu:\n \"Sorry for the late pull request, since I\u0027m just back from vacation.\n\n  LED subsystem updates for 3.12:\n   - pca9633 driver DT supporting and pca9634 chip supporting\n   - restore legacy device attributes for lp5521\n   - other fixing and updates\"\n\n* \u0027for-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/linux-leds: (28 commits)\n  leds: wm831x-status: Request a REG resource\n  leds: trigger: ledtrig-backlight: Fix invalid memory access in fb_event notification callback\n  leds-pca963x: Fix device tree parsing\n  leds-pca9633: Rename to leds-pca963x\n  leds-pca9633: Add mutex to the ledout register\n  leds-pca9633: Unique naming of the LEDs\n  leds-pca9633: Add support for PCA9634\n  leds: lp5562: use LP55xx common macros for device attributes\n  Documentation: leds-lp5521,lp5523: update device attribute information\n  leds: lp5523: remove unnecessary writing commands\n  leds: lp5523: restore legacy device attributes\n  leds: lp5523: LED MUX configuration on initializing\n  leds: lp5523: make separate API for loading engine\n  leds: lp5521: remove unnecessary writing commands\n  leds: lp5521: restore legacy device attributes\n  leds: lp55xx: add common macros for device attributes\n  leds: lp55xx: add common data structure for program\n  Documentation: leds: Fix a typo\n  leds: ss4200: Fix incorrect placement of __initdata\n  leds: clevo-mail: Fix incorrect placement of __initdata\n  ...\n"
    },
    {
      "commit": "e5d0c874391a500be7643d3eef9fb07171eee129",
      "tree": "e584dda865c5628fbb8e59a50096a0f4c21bf2bd",
      "parents": [
        "d5adf7e2db897f9d4a00be59262875ae5d9574f4",
        "d6a60fc1a8187004792a01643d8af1d06a465026"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 12 11:29:26 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 12 11:29:26 2013 -0700"
      },
      "message": "Merge tag \u0027iommu-updates-v3.12\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu\n\nPull IOMMU Updates from Joerg Roedel:\n \"This round the updates contain:\n\n   - A new driver for the Freescale PAMU IOMMU from Varun Sethi.\n\n     This driver has cooked for a while and required changes to the\n     IOMMU-API and infrastructure that were already merged before.\n\n   - Updates for the ARM-SMMU driver from Will Deacon\n\n   - Various fixes, the most important one is probably a fix from Alex\n     Williamson for a memory leak in the VT-d page-table freeing code\n\n  In summary not all that much.  The biggest part in the diffstat is the\n  new PAMU driver\"\n\n* tag \u0027iommu-updates-v3.12\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu:\n  intel-iommu: Fix leaks in pagetable freeing\n  iommu/amd: Fix resource leak in iommu_init_device()\n  iommu/amd: Clean up unnecessary MSI/MSI-X capability find\n  iommu/arm-smmu: Simplify VMID and ASID allocation\n  iommu/arm-smmu: Don\u0027t use VMIDs for stage-1 translations\n  iommu/arm-smmu: Tighten up global fault reporting\n  iommu/arm-smmu: Remove broken big-endian check\n  iommu/fsl: Remove unnecessary \u0027fsl-pamu\u0027 prefixes\n  iommu/fsl: Fix whitespace problems noticed by git-am\n  iommu/fsl: Freescale PAMU driver and iommu implementation.\n  iommu/fsl: Add additional iommu attributes required by the PAMU driver.\n  powerpc: Add iommu domain pointer to device archdata\n  iommu/exynos: Remove dead code (set_prefbuf)\n"
    },
    {
      "commit": "02b9735c12892e04d3e101b06e4c6d64a814f566",
      "tree": "7907deb1cbfd1599d4f34d414873170d3266f164",
      "parents": [
        "75acebf2423ab13ff6198daa6e17ef7a2543bfe4",
        "f1728fd1599112239ed5cebc7be9810264db6792"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 12 11:22:45 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 12 11:22:45 2013 -0700"
      },
      "message": "Merge tag \u0027pm+acpi-fixes-3.12-rc1\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm\n\nPull ACPI and power management fixes from Rafael Wysocki:\n \"All of these commits are fixes that have emerged recently and some of\n  them fix bugs introduced during this merge window.\n\n  Specifics:\n\n   1) ACPI-based PCI hotplug (ACPIPHP) fixes related to spurious events\n\n      After the recent ACPIPHP changes we\u0027ve seen some interesting\n      breakage on a system that triggers device check notifications\n      during boot for non-existing devices.  Although those\n      notifications are really spurious, we should be able to deal with\n      them nevertheless and that shouldn\u0027t introduce too much overhead.\n      Four commits to make that work properly.\n\n   2) Memory hotplug and hibernation mutual exclusion rework\n\n      This was maent to be a cleanup, but it happens to fix a classical\n      ABBA deadlock between system suspend/hibernation and ACPI memory\n      hotplug which is possible if they are started roughly at the same\n      time.  Three commits rework memory hotplug so that it doesn\u0027t\n      acquire pm_mutex and make hibernation use device_hotplug_lock\n      which prevents it from racing with memory hotplug.\n\n   3) ACPI Intel LPSS (Low-Power Subsystem) driver crash fix\n\n      The ACPI LPSS driver crashes during boot on Apple Macbook Air with\n      Haswell that has slightly unusual BIOS configuration in which one\n      of the LPSS device\u0027s _CRS method doesn\u0027t return all of the\n      information expected by the driver.  Fix from Mika Westerberg, for\n      stable.\n\n   4) ACPICA fix related to Store-\u003eArgX operation\n\n      AML interpreter fix for obscure breakage that causes AML to be\n      executed incorrectly on some machines (observed in practice).\n      From Bob Moore.\n\n   5) ACPI core fix for PCI ACPI device objects lookup\n\n      There still are cases in which there is more than one ACPI device\n      object matching a given PCI device and we don\u0027t choose the one\n      that the BIOS expects us to choose, so this makes the lookup take\n      more criteria into account in those cases.\n\n   6) Fix to prevent cpuidle from crashing in some rare cases\n\n      If the result of cpuidle_get_driver() is NULL, which can happen on\n      some systems, cpuidle_driver_ref() will crash trying to use that\n      pointer and the Daniel Fu\u0027s fix prevents that from happening.\n\n   7) cpufreq fixes related to CPU hotplug\n\n      Stephen Boyd reported a number of concurrency problems with\n      cpufreq related to CPU hotplug which are addressed by a series of\n      fixes from Srivatsa S Bhat and Viresh Kumar.\n\n   8) cpufreq fix for time conversion in time_in_state attribute\n\n      Time conversion carried out by cpufreq when user space attempts to\n      read /sys/devices/system/cpu/cpu*/cpufreq/stats/time_in_state\n      won\u0027t work correcty if cputime_t doesn\u0027t map directly to jiffies.\n      Fix from Andreas Schwab.\n\n   9) Revert of a troublesome cpufreq commit\n\n      Commit 7c30ed5 (cpufreq: make sure frequency transitions are\n      serialized) was intended to address some known concurrency\n      problems in cpufreq related to the ordering of transitions, but\n      unfortunately it introduced several problems of its own, so I\n      decided to revert it now and address the original problems later\n      in a more robust way.\n\n  10) Intel Haswell CPU models for intel_pstate from Nell Hardcastle.\n\n  11) cpufreq fixes related to system suspend/resume\n\n      The recent cpufreq changes that made it preserve CPU sysfs\n      attributes over suspend/resume cycles introduced a possible NULL\n      pointer dereference that caused it to crash during the second\n      attempt to suspend.  Three commits from Srivatsa S Bhat fix that\n      problem and a couple of related issues.\n\n  12) cpufreq locking fix\n\n      cpufreq_policy_restore() should acquire the lock for reading, but\n      it acquires it for writing.  Fix from Lan Tianyu\"\n\n* tag \u0027pm+acpi-fixes-3.12-rc1\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (25 commits)\n  cpufreq: Acquire the lock in cpufreq_policy_restore() for reading\n  cpufreq: Prevent problems in update_policy_cpu() if last_cpu \u003d\u003d new_cpu\n  cpufreq: Restructure if/else block to avoid unintended behavior\n  cpufreq: Fix crash in cpufreq-stats during suspend/resume\n  intel_pstate: Add Haswell CPU models\n  Revert \"cpufreq: make sure frequency transitions are serialized\"\n  cpufreq: Use signed type for \u0027ret\u0027 variable, to store negative error values\n  cpufreq: Remove temporary fix for race between CPU hotplug and sysfs-writes\n  cpufreq: Synchronize the cpufreq store_*() routines with CPU hotplug\n  cpufreq: Invoke __cpufreq_remove_dev_finish() after releasing cpu_hotplug.lock\n  cpufreq: Split __cpufreq_remove_dev() into two parts\n  cpufreq: Fix wrong time unit conversion\n  cpufreq: serialize calls to __cpufreq_governor()\n  cpufreq: don\u0027t allow governor limits to be changed when it is disabled\n  ACPI / bind: Prefer device objects with _STA to those without it\n  ACPI / hotplug / PCI: Avoid parent bus rescans on spurious device checks\n  ACPI / hotplug / PCI: Use _OST to notify firmware about notify status\n  ACPI / hotplug / PCI: Avoid doing too much for spurious notifies\n  ACPICA: Fix for a Store-\u003eArgX when ArgX contains a reference to a field.\n  ACPI / hotplug / PCI: Don\u0027t trim devices before scanning the namespace\n  ...\n"
    },
    {
      "commit": "5762482f5496cb1dd86acd2aace3ea25d1404e1f",
      "tree": "6d74d7b501002f7516e2eb3068f5a942f63098ee",
      "parents": [
        "b7c09ad4014e3678e8cc01fdf663c9f43b272dc6"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 12 10:12:47 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 12 10:12:47 2013 -0700"
      },
      "message": "vfs: move get_fs_root_and_pwd() to single caller\n\nLet\u0027s not pollute the include files with inline functions that are only\nused in a single place.  Especially not if we decide we might want to\nchange the semantics of said function to make it more efficient..\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1370e97bb2eb1ef2df7355204e5a4ba13e12b861",
      "tree": "9e3c2e9b0e0a7f67e50898e8ff5ecb462f260625",
      "parents": [
        "decf7abcc97444ecd2d3cf278f5cc8093f33f49a"
      ],
      "author": {
        "name": "Waiman Long",
        "email": "Waiman.Long@hp.com",
        "time": "Thu Sep 12 10:55:34 2013 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 12 09:25:23 2013 -0700"
      },
      "message": "seqlock: Add a new locking reader type\n\nThe sequence lock (seqlock) was originally designed for the cases where\nthe readers do not need to block the writers by making the readers retry\nthe read operation when the data change.\n\nSince then, the use cases have been expanded to include situations where\na thread does not need to change the data (effectively a reader) at all\nbut have to take the writer lock because it can\u0027t tolerate changes to\nthe protected structure.  Some examples are the d_path() function and\nthe getcwd() syscall in fs/dcache.c where the functions take the writer\nlock on rename_lock even though they don\u0027t need to change anything in\nthe protected data structure at all.  This is inefficient as a reader is\nnow blocking other sequence number reading readers from moving forward\nby pretending to be a writer.\n\nThis patch tries to eliminate this inefficiency by introducing a new\ntype of locking reader to the seqlock locking mechanism.  This new\nlocking reader will try to take an exclusive lock preventing other\nwriters and locking readers from going forward.  However, it won\u0027t\naffect the progress of the other sequence number reading readers as the\nsequence number won\u0027t be changed.\n\nSigned-off-by: Waiman Long \u003cWaiman.Long@hp.com\u003e\nCc: Alexander Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d6a60fc1a8187004792a01643d8af1d06a465026",
      "tree": "033a6976e47fc49c5f095c38008f1d1f6be5f93e",
      "parents": [
        "6e4664525b1db28f8c4e1130957f70a94c19213e",
        "ca19243e9ce81f8e8a25ee33969444f11b0590b7",
        "634544bf718dd29cd2e29efba6801a8d08daf335",
        "ecfadb6e5b49a0a56df2038bf39f1fcd652788b9",
        "e644a013fe67f2bccd54378b88556d07fa2714d6",
        "3269ee0bd6686baf86630300d528500ac5b516d7"
      ],
      "author": {
        "name": "Joerg Roedel",
        "email": "joro@8bytes.org",
        "time": "Thu Sep 12 16:46:34 2013 +0200"
      },
      "committer": {
        "name": "Joerg Roedel",
        "email": "joro@8bytes.org",
        "time": "Thu Sep 12 16:46:34 2013 +0200"
      },
      "message": "Merge branches \u0027arm/exynos\u0027, \u0027ppc/pamu\u0027, \u0027arm/smmu\u0027, \u0027x86/amd\u0027 and \u0027iommu/fixes\u0027 into next\n"
    },
    {
      "commit": "b9b42eeb88d36cc7400925302f1587aaaa348905",
      "tree": "f5260ad8013adeca9f86c85c096099844238c725",
      "parents": [
        "7b7a2f0a31c6c1ff53a3c87c0bca4f8d01471391",
        "50e66c7ed8a1cd7e933628f9f5cf2617394adf5a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 12 07:42:59 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 12 07:42:59 2013 -0700"
      },
      "message": "Merge branch \u0027next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rzhang/linux\n\nPull thermal management updates from Zhang Rui:\n \"We have a lot of SOC changes and a few thermal core fixes this time.\n\n  The biggest change is about exynos thermal driver restructure.  The\n  patch set adds TMU (Thermal management Unit) driver support for\n  exynos5440 platform.  There are 3 instances of the TMU controllers so\n  necessary cleanup/re-structure is done to handle multiple thermal\n  zone.\n\n  The next biggest change is the introduction of the imx thermal driver.\n  It adds the imx thermal support using Temperature Monitor (TEMPMON)\n  block found on some Freescale i.MX SoCs.  The driver uses syscon\n  regmap interface to access TEMPMON control registers and calibration\n  data, and supports cpufreq as the cooling device.\n\n  Highlights:\n\n   - restructure exynos thermal driver.\n\n   - introduce new imx thermal driver.\n\n   - fix a bug in thermal core, which powers on the fans unexpectedly\n     after resume from suspend\"\n\n* \u0027next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rzhang/linux: (46 commits)\n  drivers: thermal: add check when unregistering cpu cooling\n  thermal: thermal_core: allow binding with limits on bind_params\n  drivers: thermal: make usage of CONFIG_THERMAL_HWMON optional\n  drivers: thermal: parent virtual hwmon with thermal zone\n  thermal: hwmon: move hwmon support to single file\n  thermal: exynos: Clean up non-DT remnants\n  thermal: exynos: Fix potential NULL pointer dereference\n  thermal: exynos: Fix typos in Kconfig\n  thermal: ti-soc-thermal: Ensure to compute thermal trend\n  thermal: ti-soc-thermal: Set the bandgap mask counter delay value\n  thermal: ti-soc-thermal: Initialize counter_delay field for TI DRA752 sensors\n  thermal: step_wise: return instance-\u003etarget by default\n  thermal: step_wise: cdev only needs update on a new target state\n  Thermal/cpu_cooling: Return directly for the cpu out of allowed_cpus in the cpufreq_thermal_notifier()\n  thermal: exynos_tmu: fix wrong error check for mapped memory\n  thermal: imx: implement thermal alarm interrupt handling\n  thermal: imx: dynamic passive and SoC specific critical trip points\n  Documentation: thermal: Explain the exynos thermal driver model\n  ARM: dts: thermal: exynos: Add documentation for Exynos SoC thermal bindings\n  thermal: exynos: Support for TMU regulator defined at device tree\n  ...\n"
    },
    {
      "commit": "7bd36014460f793c19e7d6c94dab67b0afcfcb7f",
      "tree": "aff35c1d376508c4436591df0895111c73cc75b8",
      "parents": [
        "5a8e01f8fa51f5cbce8f37acc050eb2319d12956"
      ],
      "author": {
        "name": "John Stultz",
        "email": "john.stultz@linaro.org",
        "time": "Wed Sep 11 16:50:56 2013 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Thu Sep 12 07:49:51 2013 +0200"
      },
      "message": "timekeeping: Fix HRTICK related deadlock from ntp lock changes\n\nGerlando Falauto reported that when HRTICK is enabled, it is\npossible to trigger system deadlocks. These were hard to\nreproduce, as HRTICK has been broken in the past, but seemed\nto be connected to the timekeeping_seq lock.\n\nSince seqlock/seqcount\u0027s aren\u0027t supported w/ lockdep, I added\nsome extra spinlock based locking and triggered the following\nlockdep output:\n\n[   15.849182] ntpd/4062 is trying to acquire lock:\n[   15.849765]  (\u0026(\u0026pool-\u003elock)-\u003erlock){..-...}, at: [\u003cffffffff810aa9b5\u003e] __queue_work+0x145/0x480\n[   15.850051]\n[   15.850051] but task is already holding lock:\n[   15.850051]  (timekeeper_lock){-.-.-.}, at: [\u003cffffffff810df6df\u003e] do_adjtimex+0x7f/0x100\n\n\u003csnip\u003e\n\n[   15.850051] Chain exists of: \u0026(\u0026pool-\u003elock)-\u003erlock --\u003e \u0026p-\u003epi_lock --\u003e timekeeper_lock\n[   15.850051]  Possible unsafe locking scenario:\n[   15.850051]\n[   15.850051]        CPU0                    CPU1\n[   15.850051]        ----                    ----\n[   15.850051]   lock(timekeeper_lock);\n[   15.850051]                                lock(\u0026p-\u003epi_lock);\n[   15.850051] lock(timekeeper_lock);\n[   15.850051] lock(\u0026(\u0026pool-\u003elock)-\u003erlock);\n[   15.850051]\n[   15.850051]  *** DEADLOCK ***\n\nThe deadlock was introduced by 06c017fdd4dc48451a (\"timekeeping:\nHold timekeepering locks in do_adjtimex and hardpps\") in 3.10\n\nThis patch avoids this deadlock, by moving the call to\nschedule_delayed_work() outside of the timekeeper lock\ncritical section.\n\nReported-by: Gerlando Falauto \u003cgerlando.falauto@keymile.com\u003e\nTested-by: Lin Ming \u003cminggr@gmail.com\u003e\nSigned-off-by: John Stultz \u003cjohn.stultz@linaro.org\u003e\nCc: Mathieu Desnoyers \u003cmathieu.desnoyers@efficios.com\u003e\nCc: stable \u003cstable@vger.kernel.org\u003e #3.11, 3.10\nLink: http://lkml.kernel.org/r/1378943457-27314-1-git-send-email-john.stultz@linaro.org\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "b34081f1cd59585451efaa69e1dff1b9507e6c89",
      "tree": "b04c842059aeeed535e71e72570a29e2989ceeb3",
      "parents": [
        "20b8875abcf2daa1dda5cf70bd6369df5e85d4c1"
      ],
      "author": {
        "name": "Sergey Senozhatsky",
        "email": "sergey.senozhatsky@gmail.com",
        "time": "Wed Sep 11 14:26:32 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 11 15:59:45 2013 -0700"
      },
      "message": "lz4: fix compression/decompression signedness mismatch\n\nLZ4 compression and decompression functions require different in\nsignedness input/output parameters: unsigned char for compression and\nsigned char for decompression.\n\nChange decompression API to require \"(const) unsigned char *\".\n\nSigned-off-by: Sergey Senozhatsky \u003csergey.senozhatsky@gmail.com\u003e\nCc: Kyungsik Lee \u003ckyungsik.lee@lge.com\u003e\nCc: Geert Uytterhoeven \u003cgeert@linux-m68k.org\u003e\nCc: Yann Collet \u003cyann.collet.73@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": "d9a605e40b1376eb02b067d7690580255a0df68f",
      "tree": "b21254f7172ae8db6faffd9b7941d579fa421478",
      "parents": [
        "c2c737a0461e61a34676bd0bd1bc1a70a1b4e396"
      ],
      "author": {
        "name": "Davidlohr Bueso",
        "email": "davidlohr.bueso@hp.com",
        "time": "Wed Sep 11 14:26:24 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 11 15:59:42 2013 -0700"
      },
      "message": "ipc: rename ids-\u003erw_mutex\n\nSince in some situations the lock can be shared for readers, we shouldn\u0027t\nbe calling it a mutex, rename it to rwsem.\n\nSigned-off-by: Davidlohr Bueso \u003cdavidlohr.bueso@hp.com\u003e\nTested-by: Sedat Dilek \u003csedat.dilek@gmail.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Manfred Spraul \u003cmanfred@colorfullife.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "57f150a58c40cda598c31af8bceb8598f43c3e5f",
      "tree": "fde3e7fc48c97f0db5b3975fd74e12773f423fe2",
      "parents": [
        "4bbee76bc986af326be0a84ad661000cf89b29f6"
      ],
      "author": {
        "name": "Rob Landley",
        "email": "rob@landley.net",
        "time": "Wed Sep 11 14:26:10 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 11 15:59:37 2013 -0700"
      },
      "message": "initmpfs: move rootfs code from fs/ramfs/ to init/\n\nWhen the rootfs code was a wrapper around ramfs, having them in the same\nfile made sense.  Now that it can wrap another filesystem type, move it in\nwith the init code instead.\n\nThis also allows a subsequent patch to access rootfstype\u003d command line\narg.\n\nSigned-off-by: Rob Landley \u003crob@landley.net\u003e\nCc: Jeff Layton \u003cjlayton@redhat.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Stephen Warren \u003cswarren@nvidia.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Jim Cromie \u003cjim.cromie@gmail.com\u003e\nCc: Sam Ravnborg \u003csam@ravnborg.org\u003e\nCc: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Alexander Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5e4c0d974139a98741b829b27cf38dc8f9284490",
      "tree": "fddd959828300c1de1ade15eeb33606c317b79db",
      "parents": [
        "4b39248365e09fb8268b6fecd1704907ffc3d980"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Sep 11 14:26:05 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 11 15:59:36 2013 -0700"
      },
      "message": "lib/radix-tree.c: make radix_tree_node_alloc() work correctly within interrupt\n\nWith users of radix_tree_preload() run from interrupt (block/blk-ioc.c is\none such possible user), the following race can happen:\n\nradix_tree_preload()\n...\nradix_tree_insert()\n  radix_tree_node_alloc()\n    if (rtp-\u003enr) {\n      ret \u003d rtp-\u003enodes[rtp-\u003enr - 1];\n\u003cinterrupt\u003e\n...\nradix_tree_preload()\n...\nradix_tree_insert()\n  radix_tree_node_alloc()\n    if (rtp-\u003enr) {\n      ret \u003d rtp-\u003enodes[rtp-\u003enr - 1];\n\nAnd we give out one radix tree node twice.  That clearly results in radix\ntree corruption with different results (usually OOPS) depending on which\ntwo users of radix tree race.\n\nWe fix the problem by making radix_tree_node_alloc() always allocate fresh\nradix tree nodes when in interrupt.  Using preloading when in interrupt\ndoesn\u0027t make sense since all the allocations have to be atomic anyway and\nwe cannot steal nodes from process-context users because some users rely\non radix_tree_insert() succeeding after radix_tree_preload().\nin_interrupt() check is somewhat ugly but we cannot simply key off passed\ngfp_mask as that is acquired from root_gfp_mask() and thus the same for\nall preload users.\n\nAnother part of the fix is to avoid node preallocation in\nradix_tree_preload() when passed gfp_mask doesn\u0027t allow waiting.  Again,\npreallocation in such case doesn\u0027t make sense and when preallocation would\nhappen in interrupt we could possibly leak some allocated nodes.  However,\nsome users of radix_tree_preload() require following radix_tree_insert()\nto succeed.  To avoid unexpected effects for these users,\nradix_tree_preload() only warns if passed gfp mask doesn\u0027t allow waiting\nand we provide a new function radix_tree_maybe_preload() for those users\nwhich get different gfp mask from different call sites and which are\nprepared to handle radix_tree_insert() failure.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nCc: Jens Axboe \u003cjaxboe@fusionio.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2b529089257705499207ce7da9d0e3ae26a844ba",
      "tree": "fffde388176946c7de6eaddd4e7bdd2b7ea27ffd",
      "parents": [
        "9dee5c51516d2c3fff22633c1272c5652e68075a"
      ],
      "author": {
        "name": "Cody P Schafer",
        "email": "cody@linux.vnet.ibm.com",
        "time": "Wed Sep 11 14:25:11 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 11 15:59:20 2013 -0700"
      },
      "message": "rbtree: add rbtree_postorder_for_each_entry_safe() helper\n\nBecause deletion (of the entire tree) is a relatively common use of the\nrbtree_postorder iteration, and because doing it safely means fiddling\nwith temporary storage, provide a helper to simplify postorder rbtree\niteration.\n\nSigned-off-by: Cody P Schafer \u003ccody@linux.vnet.ibm.com\u003e\nReviewed-by: Seth Jennings \u003csjenning@linux.vnet.ibm.com\u003e\nCc: David Woodhouse \u003cDavid.Woodhouse@intel.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Michel Lespinasse \u003cwalken@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": "9dee5c51516d2c3fff22633c1272c5652e68075a",
      "tree": "b8d1811b0357a74c720008911e06559f772ce731",
      "parents": [
        "b4bc4a18a226f46fec4ef47f2df28ea209db8b5d"
      ],
      "author": {
        "name": "Cody P Schafer",
        "email": "cody@linux.vnet.ibm.com",
        "time": "Wed Sep 11 14:25:10 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 11 15:59:19 2013 -0700"
      },
      "message": "rbtree: add postorder iteration functions\n\nPostorder iteration yields all of a node\u0027s children prior to yielding the\nnode itself, and this particular implementation also avoids examining the\nleaf links in a node after that node has been yielded.\n\nIn what I expect will be its most common usage, postorder iteration allows\nthe deletion of every node in an rbtree without modifying the rbtree nodes\n(no _requirement_ that they be nulled) while avoiding referencing child\nnodes after they have been \"deleted\" (most commonly, freed).\n\nI have only updated zswap to use this functionality at this point, but\nnumerous bits of code (most notably in the filesystem drivers) use a hand\nrolled postorder iteration that NULLs child links as it traverses the\ntree.  Each of those instances could be replaced with this common\nimplementation.\n\n1 \u0026 2 add rbtree postorder iteration functions.\n3 adds testing of the iteration to the rbtree runtime tests\n4 allows building the rbtree runtime tests as builtins\n5 updates zswap.\n\nThis patch:\n\nAdd postorder iteration functions for rbtree.  These are useful for safely\nfreeing an entire rbtree without modifying the tree at all.\n\nSigned-off-by: Cody P Schafer \u003ccody@linux.vnet.ibm.com\u003e\nReviewed-by: Seth Jennings \u003csjenning@linux.vnet.ibm.com\u003e\nCc: David Woodhouse \u003cDavid.Woodhouse@intel.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Michel Lespinasse \u003cwalken@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": "9cb218131de1c59dca9063b2efe876f053f316af",
      "tree": "e01f110a4137e8e2d33bc28f1f77e3a6361c0ee4",
      "parents": [
        "97b0f6f9cd73ff8285835c5e295d3c4b0e2dbf78"
      ],
      "author": {
        "name": "Michael Holzheu",
        "email": "holzheu@linux.vnet.ibm.com",
        "time": "Wed Sep 11 14:24:51 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 11 15:59:10 2013 -0700"
      },
      "message": "vmcore: introduce remap_oldmem_pfn_range()\n\nFor zfcpdump we can\u0027t map the HSA storage because it is only available via\na read interface.  Therefore, for the new vmcore mmap feature we have\nintroduce a new mechanism to create mappings on demand.\n\nThis patch introduces a new architecture function remap_oldmem_pfn_range()\nthat should be used to create mappings with remap_pfn_range() for oldmem\nareas that can be directly mapped.  For zfcpdump this is everything\nbesides of the HSA memory.  For the areas that are not mapped by\nremap_oldmem_pfn_range() a generic vmcore a new generic vmcore fault\nhandler mmap_vmcore_fault() is called.\n\nThis handler works as follows:\n\n* Get already available or new page from page cache (find_or_create_page)\n* Check if /proc/vmcore page is filled with data (PageUptodate)\n* If yes:\n  Return that page\n* If no:\n  Fill page using __vmcore_read(), set PageUptodate, and return page\n\nSigned-off-by: Michael Holzheu \u003cholzheu@linux.vnet.ibm.com\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nCc: HATAYAMA Daisuke \u003cd.hatayama@jp.fujitsu.com\u003e\nCc: Jan Willeke \u003cwilleke@de.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": "be8a8d069e508d4408125e2b1471f549e7813d25",
      "tree": "d69d792fdefbaebc9346f7c3bad36ee4383ef659",
      "parents": [
        "80c74f6a40284c5c5d49f3b3289172bbce0b30b8"
      ],
      "author": {
        "name": "Michael Holzheu",
        "email": "holzheu@linux.vnet.ibm.com",
        "time": "Wed Sep 11 14:24:49 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 11 15:59:10 2013 -0700"
      },
      "message": "vmcore: introduce ELF header in new memory feature\n\nFor s390 we want to use /proc/vmcore for our SCSI stand-alone dump\n(zfcpdump).  We have support where the first HSA_SIZE bytes are saved into\na hypervisor owned memory area (HSA) before the kdump kernel is booted.\nWhen the kdump kernel starts, it is restricted to use only HSA_SIZE bytes.\n\nThe advantages of this mechanism are:\n\n * No crashkernel memory has to be defined in the old kernel.\n * Early boot problems (before kexec_load has been done) can be dumped\n * Non-Linux systems can be dumped.\n\nWe modify the s390 copy_oldmem_page() function to read from the HSA memory\nif memory below HSA_SIZE bytes is requested.\n\nSince we cannot use the kexec tool to load the kernel in this scenario,\nwe have to build the ELF header in the 2nd (kdump/new) kernel.\n\nSo with the following patch set we would like to introduce the new\nfunction that the ELF header for /proc/vmcore can be created in the 2nd\nkernel memory.\n\nThe following steps are done during zfcpdump execution:\n\n1.  Production system crashes\n2.  User boots a SCSI disk that has been prepared with the zfcpdump tool\n3.  Hypervisor saves CPU state of boot CPU and HSA_SIZE bytes of memory into HSA\n4.  Boot loader loads kernel into low memory area\n5.  Kernel boots and uses only HSA_SIZE bytes of memory\n6.  Kernel saves registers of non-boot CPUs\n7.  Kernel does memory detection for dump memory map\n8.  Kernel creates ELF header for /proc/vmcore\n9.  /proc/vmcore uses this header for initialization\n10. The zfcpdump user space reads /proc/vmcore to write dump to SCSI disk\n    - copy_oldmem_page() copies from HSA for memory below HSA_SIZE\n    - copy_oldmem_page() copies from real memory for memory above HSA_SIZE\n\nCurrently for s390 we create the ELF core header in the 2nd kernel with a\nsmall trick.  We relocate the addresses in the ELF header in a way that\nfor the /proc/vmcore code it seems to be in the 1st kernel (old) memory\nand the read_from_oldmem() returns the correct data.  This allows the\n/proc/vmcore code to use the ELF header in the 2nd kernel.\n\nThis patch:\n\nExchange the old mechanism with the new and much cleaner function call\noverride feature that now offcially allows to create the ELF core header\nin the 2nd kernel.\n\nTo use the new feature the following function have to be defined\nby the architecture backend code to read from new memory:\n\n * elfcorehdr_alloc: Allocate ELF header\n * elfcorehdr_free: Free the memory of the ELF header\n * elfcorehdr_read: Read from ELF header\n * elfcorehdr_read_notes: Read from ELF notes\n\nSigned-off-by: Michael Holzheu \u003cholzheu@linux.vnet.ibm.com\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nCc: HATAYAMA Daisuke \u003cd.hatayama@jp.fujitsu.com\u003e\nCc: Jan Willeke \u003cwilleke@de.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": "131b2f9f1214f338f0bf7c0d9760019f2b1d0c20",
      "tree": "b60a498414e259fe4e81f210378538f90ada9224",
      "parents": [
        "5d1baf3b63bfc8c709dc44df85ff1475c7ef489d"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Sep 11 14:24:39 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 11 15:59:04 2013 -0700"
      },
      "message": "exec: kill \"int depth\" in search_binary_handler()\n\nNobody except search_binary_handler() should touch -\u003erecursion_depth, \"int\ndepth\" buys nothing but complicates the code, kill it.\n\nProbably we should also kill \"fn\" and the !NULL check, -\u003eload_binary\nshould be always defined.  And it can not go away after read_unlock() or\nthis code is buggy anyway.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Kees Cook \u003ckeescook@chromium.org\u003e\nCc: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nCc: Evgeniy Polyakov \u003czbr@ioremap.net\u003e\nCc: Zach Levis \u003czml@linux.vnet.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": "af96397de8600232effbff43dc8b4ca20ddc02b1",
      "tree": "d236fe3b4d37d5439ee41497a0d179a0b7614883",
      "parents": [
        "c802d64a356b5cf349121ac4c5e005f037ce548d"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed Sep 11 14:24:13 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 11 15:58:52 2013 -0700"
      },
      "message": "kprobes: allow to specify custom allocator for insn caches\n\nThe current two insn slot caches both use module_alloc/module_free to\nallocate and free insn slot cache pages.\n\nFor s390 this is not sufficient since there is the need to allocate insn\nslots that are either within the vmalloc module area or within dma memory.\n\nTherefore add a mechanism which allows to specify an own allocator for an\nown insn slot cache.\n\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nAcked-by: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nCc: Ananth N Mavinakayanahalli \u003cananth@in.ibm.com\u003e\nCc: Ingo Molnar \u003cmingo@kernel.org\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.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": "c802d64a356b5cf349121ac4c5e005f037ce548d",
      "tree": "654c5af4d00a40eeaa576acc1aee238e7c8a8a87",
      "parents": [
        "ae79744975cb0b3b9c469fe1a05db37d2943c863"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed Sep 11 14:24:11 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 11 15:58:52 2013 -0700"
      },
      "message": "kprobes: unify insn caches\n\nThe current kpropes insn caches allocate memory areas for insn slots\nwith module_alloc().  The assumption is that the kernel image and module\narea are both within the same +/- 2GB memory area.\n\nThis however is not true for s390 where the kernel image resides within\nthe first 2GB (DMA memory area), but the module area is far away in the\nvmalloc area, usually somewhere close below the 4TB area.\n\nFor new pc relative instructions s390 needs insn slots that are within\n+/- 2GB of each area.  That way we can patch displacements of\npc-relative instructions within the insn slots just like x86 and\npowerpc.\n\nThe module area works already with the normal insn slot allocator,\nhowever there is currently no way to get insn slots that are within the\nfirst 2GB on s390 (aka DMA area).\n\nTherefore this patch set modifies the kprobes insn slot cache code in\norder to allow to specify a custom allocator for the insn slot cache\npages.  In addition architecure can now have private insn slot caches\nwithhout the need to modify common code.\n\nPatch 1 unifies and simplifies the current insn and optinsn caches\n        implementation. This is a preparation which allows to add more\n        insn caches in a simple way.\n\nPatch 2 adds the possibility to specify a custom allocator.\n\nPatch 3 makes s390 use the new insn slot mechanisms and adds support for\n        pc-relative instructions with long displacements.\n\nThis patch (of 3):\n\nThe two insn caches (insn, and optinsn) each have an own mutex and\nalloc/free functions (get_[opt]insn_slot() / free_[opt]insn_slot()).\n\nSince there is the need for yet another insn cache which satifies dma\nallocations on s390, unify and simplify the current implementation:\n\n- Move the per insn cache mutex into struct kprobe_insn_cache.\n- Move the alloc/free functions to kprobe.h so they are simply\n  wrappers for the generic __get_insn_slot/__free_insn_slot functions.\n  The implementation is done with a DEFINE_INSN_CACHE_OPS() macro\n  which provides the alloc/free functions for each cache if needed.\n- move the struct kprobe_insn_cache to kprobe.h which allows to generate\n  architecture specific insn slot caches outside of the core kprobes\n  code.\n\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nCc: Ananth N Mavinakayanahalli \u003cananth@in.ibm.com\u003e\nCc: Ingo Molnar \u003cmingo@kernel.org\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.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": "f9597f24c089dcbddbd2d9e99fbf00df57fb70c6",
      "tree": "c7aa5c1ab542839a07bafff202dc4c68e8f3486f",
      "parents": [
        "e656a634118285142063527b2cd40c749036de82"
      ],
      "author": {
        "name": "Sergei Trofimovich",
        "email": "slyfox@gentoo.org",
        "time": "Wed Sep 11 14:23:28 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 11 15:58:25 2013 -0700"
      },
      "message": "syscalls.h: add forward declarations for inplace syscall wrappers\n\nUnclutter -Wmissing-prototypes warning types (enabled at make W\u003d1)\n\n    linux/include/linux/syscalls.h:190:18: warning: no previous prototype for \u0027SyS_semctl\u0027 [-Wmissing-prototypes]\n      asmlinkage long SyS##name(__MAP(x,__SC_LONG,__VA_ARGS__)) \\\n                      ^\n    linux/include/linux/syscalls.h:183:2: note: in expansion of macro \u0027__SYSCALL_DEFINEx\u0027\n      __SYSCALL_DEFINEx(x, sname, __VA_ARGS__)\n      ^\nby adding forward declarations right before definitions.\n\nSigned-off-by: Sergei Trofimovich \u003cslyfox@gentoo.org\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bff2dc42bcafdd75c0296987747f782965d691a0",
      "tree": "3e921a8fc93d7bff9a5ac1d5221be9f9938447e4",
      "parents": [
        "081192b25c2d4620b5f5838620624d3daee94b66"
      ],
      "author": {
        "name": "David Daney",
        "email": "david.daney@cavium.com",
        "time": "Wed Sep 11 14:23:26 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 11 15:58:25 2013 -0700"
      },
      "message": "smp.h: move !SMP version of on_each_cpu() out-of-line\n\nAll of the other non-trivial !SMP versions of functions in smp.h are\nout-of-line in up.c.  Move on_each_cpu() there as well.\n\nThis allows us to get rid of the #include \u003clinux/irqflags.h\u003e.  The\ndrawback is that this makes both the x86_64 and i386 defconfig !SMP\nkernels about 200 bytes larger each.\n\nSigned-off-by: David Daney \u003cdavid.daney@cavium.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "fa688207c9db48b64ab6538abc3fcdf26110b9ec",
      "tree": "47fff6ebaa5b0b7d3feca64010051899e29db475",
      "parents": [
        "c14c338cb05c700a260480c197cfd6da8f8b7d2e"
      ],
      "author": {
        "name": "David Daney",
        "email": "david.daney@cavium.com",
        "time": "Wed Sep 11 14:23:24 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 11 15:58:23 2013 -0700"
      },
      "message": "smp: quit unconditionally enabling irq in on_each_cpu_mask and on_each_cpu_cond\n\nAs in commit f21afc25f9ed (\"smp.h: Use local_irq_{save,restore}() in\n!SMP version of on_each_cpu()\"), we don\u0027t want to enable irqs if they\nare not already enabled.  There are currently no known problematical\ncallers of these functions, but since it is a known failure pattern, we\npreemptively fix them.\n\nSince they are not trivial functions, make them non-inline by moving\nthem to up.c.  This also makes it so we don\u0027t have to fix #include\ndependancies for preempt_{disable,enable}.\n\nSigned-off-by: David Daney \u003cdavid.daney@cavium.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f9121153fdfbfaa930bf65077a5597e20d3ac608",
      "tree": "a72e82c0c3394cf84b3ff8698134ff124a61b491",
      "parents": [
        "841fcc583f81c632d20a27e17beccb20320530a1"
      ],
      "author": {
        "name": "Wanpeng Li",
        "email": "liwanp@linux.vnet.ibm.com",
        "time": "Wed Sep 11 14:22:52 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 11 15:58:08 2013 -0700"
      },
      "message": "mm/hwpoison: don\u0027t need to hold compound lock for hugetlbfs page\n\ncompound lock is introduced by commit e9da73d67(\"thp: compound_lock.\"), it\nis used to serialize put_page against __split_huge_page_refcount().  In\naddition, transparent hugepages will be splitted in hwpoison handler and\njust one subpage will be poisoned.  There is unnecessary to hold compound\nlock for hugetlbfs page.  This patch replace compound_trans_order by\ncompond_order in the place where the page is hugetlbfs page.\n\nSigned-off-by: Wanpeng Li \u003cliwanp@linux.vnet.ibm.com\u003e\nReviewed-by: Naoya Horiguchi \u003cn-horiguchi@ah.jp.nec.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Tony Luck \u003ctony.luck@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": "5a53748568f79641eaf40e41081a2f4987f005c2",
      "tree": "929e07be4f378f96398110dce35a64b61e1505d7",
      "parents": [
        "4c3bffc272755c98728c2b58b1a8148cf9e9fd1f"
      ],
      "author": {
        "name": "Maxim Patlasov",
        "email": "mpatlasov@parallels.com",
        "time": "Wed Sep 11 14:22:46 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 11 15:58:04 2013 -0700"
      },
      "message": "mm/page-writeback.c: add strictlimit feature\n\nThe feature prevents mistrusted filesystems (ie: FUSE mounts created by\nunprivileged users) to grow a large number of dirty pages before\nthrottling.  For such filesystems balance_dirty_pages always check bdi\ncounters against bdi limits.  I.e.  even if global \"nr_dirty\" is under\n\"freerun\", it\u0027s not allowed to skip bdi checks.  The only use case for now\nis fuse: it sets bdi max_ratio to 1% by default and system administrators\nare supposed to expect that this limit won\u0027t be exceeded.\n\nThe feature is on if a BDI is marked by BDI_CAP_STRICTLIMIT flag.  A\nfilesystem may set the flag when it initializes its BDI.\n\nThe problematic scenario comes from the fact that nobody pays attention to\nthe NR_WRITEBACK_TEMP counter (i.e.  number of pages under fuse\nwriteback).  The implementation of fuse writeback releases original page\n(by calling end_page_writeback) almost immediately.  A fuse request queued\nfor real processing bears a copy of original page.  Hence, if userspace\nfuse daemon doesn\u0027t finalize write requests in timely manner, an\naggressive mmap writer can pollute virtually all memory by those temporary\nfuse page copies.  They are carefully accounted in NR_WRITEBACK_TEMP, but\nnobody cares.\n\nTo make further explanations shorter, let me use \"NR_WRITEBACK_TEMP\nproblem\" as a shortcut for \"a possibility of uncontrolled grow of amount\nof RAM consumed by temporary pages allocated by kernel fuse to process\nwriteback\".\n\nThe problem was very easy to reproduce.  There is a trivial example\nfilesystem implementation in fuse userspace distribution: fusexmp_fh.c.  I\nadded \"sleep(1);\" to the write methods, then recompiled and mounted it.\nThen created a huge file on the mount point and run a simple program which\nmmap-ed the file to a memory region, then wrote a data to the region.  An\nhour later I observed almost all RAM consumed by fuse writeback.  Since\nthen some unrelated changes in kernel fuse made it more difficult to\nreproduce, but it is still possible now.\n\nPutting this theoretical happens-in-the-lab thing aside, there is another\nthing that really hurts real world (FUSE) users.  This is write-through\npage cache policy FUSE currently uses.  I.e.  handling write(2), kernel\nfuse populates page cache and flushes user data to the server\nsynchronously.  This is excessively suboptimal.  Pavel Emelyanov\u0027s patches\n(\"writeback cache policy\") solve the problem, but they also make resolving\nNR_WRITEBACK_TEMP problem absolutely necessary.  Otherwise, simply copying\na huge file to a fuse mount would result in memory starvation.  Miklos,\nthe maintainer of FUSE, believes strictlimit feature the way to go.\n\nAnd eventually putting FUSE topics aside, there is one more use-case for\nstrictlimit feature.  Using a slow USB stick (mass storage) in a machine\nwith huge amount of RAM installed is a well-known pain.  Let\u0027s make simple\ncomputations.  Assuming 64GB of RAM installed, existing implementation of\nbalance_dirty_pages will start throttling only after 9.6GB of RAM becomes\ndirty (freerun \u003d\u003d 15% of total RAM).  So, the command \"cp 9GB_file\n/media/my-usb-storage/\" may return in a few seconds, but subsequent\n\"umount /media/my-usb-storage/\" will take more than two hours if effective\nthroughput of the storage is, to say, 1MB/sec.\n\nAfter inclusion of strictlimit feature, it will be trivial to add a knob\n(e.g.  /sys/devices/virtual/bdi/x:y/strictlimit) to enable it on demand.\nManually or via udev rule.  May be I\u0027m wrong, but it seems to be quite a\nnatural desire to limit the amount of dirty memory for some devices we are\nnot fully trust (in the sense of sustainable throughput).\n\n[akpm@linux-foundation.org: fix warning in page-writeback.c]\nSigned-off-by: Maxim Patlasov \u003cMPatlasov@parallels.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Pavel Emelyanov \u003cxemul@parallels.com\u003e\nCc: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7d9f073b8da45a894bb7148433bd84d21eed6757",
      "tree": "513aa8ce5502ba3f1c167c7b63774136fafaac8f",
      "parents": [
        "187320932dcece9c4b93f38f56d1f888bd5c325f"
      ],
      "author": {
        "name": "Wanpeng Li",
        "email": "liwanp@linux.vnet.ibm.com",
        "time": "Wed Sep 11 14:22:40 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 11 15:58:02 2013 -0700"
      },
      "message": "mm/writeback: make writeback_inodes_wb static\n\nIt\u0027s not used globally and could be static.\n\nSigned-off-by: Wanpeng Li \u003cliwanp@linux.vnet.ibm.com\u003e\nCc: Dave Hansen \u003cdave.hansen@linux.intel.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\nCc: Joonsoo Kim \u003ciamjoonsoo.kim@lge.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Yasuaki Ishimatsu \u003cisimatu.yasuaki@jp.fujitsu.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Jiri Kosina \u003cjkosina@suse.cz\u003e\nCc: Wanpeng Li \u003cliwanp@linux.vnet.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": "6e543d5780e36ff5ee56c44d7e2e30db3457a7ed",
      "tree": "094208c4caad9d0d766137c243d0cfe97a1ce0b9",
      "parents": [
        "7a8010cd36273ff5f6fea5201ef9232f30cebbd9"
      ],
      "author": {
        "name": "Lisa Du",
        "email": "cldu@marvell.com",
        "time": "Wed Sep 11 14:22:36 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 11 15:58:01 2013 -0700"
      },
      "message": "mm: vmscan: fix do_try_to_free_pages() livelock\n\nThis patch is based on KOSAKI\u0027s work and I add a little more description,\nplease refer https://lkml.org/lkml/2012/6/14/74.\n\nCurrently, I found system can enter a state that there are lots of free\npages in a zone but only order-0 and order-1 pages which means the zone is\nheavily fragmented, then high order allocation could make direct reclaim\npath\u0027s long stall(ex, 60 seconds) especially in no swap and no compaciton\nenviroment.  This problem happened on v3.4, but it seems issue still lives\nin current tree, the reason is do_try_to_free_pages enter live lock:\n\nkswapd will go to sleep if the zones have been fully scanned and are still\nnot balanced.  As kswapd thinks there\u0027s little point trying all over again\nto avoid infinite loop.  Instead it changes order from high-order to\n0-order because kswapd think order-0 is the most important.  Look at\n73ce02e9 in detail.  If watermarks are ok, kswapd will go back to sleep\nand may leave zone-\u003eall_unreclaimable \u003d3D 0.  It assume high-order users\ncan still perform direct reclaim if they wish.\n\nDirect reclaim continue to reclaim for a high order which is not a\nCOSTLY_ORDER without oom-killer until kswapd turn on\nzone-\u003eall_unreclaimble\u003d .  This is because to avoid too early oom-kill.\nSo it means direct_reclaim depends on kswapd to break this loop.\n\nIn worst case, direct-reclaim may continue to page reclaim forever when\nkswapd sleeps forever until someone like watchdog detect and finally kill\nthe process.  As described in:\nhttp://thread.gmane.org/gmane.linux.kernel.mm/103737\n\nWe can\u0027t turn on zone-\u003eall_unreclaimable from direct reclaim path because\ndirect reclaim path don\u0027t take any lock and this way is racy.  Thus this\npatch removes zone-\u003eall_unreclaimable field completely and recalculates\nzone reclaimable state every time.\n\nNote: we can\u0027t take the idea that direct-reclaim see zone-\u003epages_scanned\ndirectly and kswapd continue to use zone-\u003eall_unreclaimable.  Because, it\nis racy.  commit 929bea7c71 (vmscan: all_unreclaimable() use\nzone-\u003eall_unreclaimable as a name) describes the detail.\n\n[akpm@linux-foundation.org: uninline zone_reclaimable_pages() and zone_reclaimable()]\nCc: Aaditya Kumar \u003caaditya.kumar.30@gmail.com\u003e\nCc: Ying Han \u003cyinghan@google.com\u003e\nCc: Nick Piggin \u003cnpiggin@gmail.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nCc: Bob Liu \u003clliubbo@gmail.com\u003e\nCc: Neil Zhang \u003czhangwm@marvell.com\u003e\nCc: Russell King - ARM Linux \u003clinux@arm.linux.org.uk\u003e\nReviewed-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nAcked-by: Minchan Kim \u003cminchan@kernel.org\u003e\nAcked-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Lisa Du \u003ccldu@marvell.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7a8010cd36273ff5f6fea5201ef9232f30cebbd9",
      "tree": "3805f3d9a8a1f1c1c555ef31bc1bdb51fb51e33e",
      "parents": [
        "5b40998ae35cf64561868370e6c9f3d3e94b6bf7"
      ],
      "author": {
        "name": "Vlastimil Babka",
        "email": "vbabka@suse.cz",
        "time": "Wed Sep 11 14:22:35 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 11 15:58:01 2013 -0700"
      },
      "message": "mm: munlock: manual pte walk in fast path instead of follow_page_mask()\n\nCurrently munlock_vma_pages_range() calls follow_page_mask() to obtain\neach individual struct page.  This entails repeated full page table\ntranslations and page table lock taken for each page separately.\n\nThis patch avoids the costly follow_page_mask() where possible, by\niterating over ptes within single pmd under single page table lock.  The\nfirst pte is obtained by get_locked_pte() for non-THP page acquired by the\ninitial follow_page_mask().  The rest of the on-stack pagevec for munlock\nis filled up using pte_walk as long as pte_present() and vm_normal_page()\nare sufficient to obtain the struct page.\n\nAfter this patch, a 14% speedup was measured for munlocking a 56GB large\nmemory area with THP disabled.\n\nSigned-off-by: Vlastimil Babka \u003cvbabka@suse.cz\u003e\nCc: Jörn Engel \u003cjoern@logfs.org\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Michel Lespinasse \u003cwalken@google.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Vlastimil Babka \u003cvbabka@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d9104d1ca9662498339c0de975b4666c30485f4e",
      "tree": "cb95c72dde19930ca985b9834d604958ef4eecde",
      "parents": [
        "3b11f0aaae830f0f569cb8fb7fd26f4133ebdabd"
      ],
      "author": {
        "name": "Cyrill Gorcunov",
        "email": "gorcunov@gmail.com",
        "time": "Wed Sep 11 14:22:24 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 11 15:57:56 2013 -0700"
      },
      "message": "mm: track vma changes with VM_SOFTDIRTY bit\n\nPavel reported that in case if vma area get unmapped and then mapped (or\nexpanded) in-place, the soft dirty tracker won\u0027t be able to recognize this\nsituation since it works on pte level and ptes are get zapped on unmap,\nloosing soft dirty bit of course.\n\nSo to resolve this situation we need to track actions on vma level, there\nVM_SOFTDIRTY flag comes in.  When new vma area created (or old expanded)\nwe set this bit, and keep it here until application calls for clearing\nsoft dirty bit.\n\nThus when user space application track memory changes now it can detect if\nvma area is renewed.\n\nReported-by: Pavel Emelyanov \u003cxemul@parallels.com\u003e\nSigned-off-by: Cyrill Gorcunov \u003cgorcunov@openvz.org\u003e\nCc: Andy Lutomirski \u003cluto@amacapital.net\u003e\nCc: Matt Mackall \u003cmpm@selenic.com\u003e\nCc: Xiao Guangrong \u003cxiaoguangrong@linux.vnet.ibm.com\u003e\nCc: Marcelo Tosatti \u003cmtosatti@redhat.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@gmail.com\u003e\nCc: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: \"Aneesh Kumar K.V\" \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nCc: Rob Landley \u003crob@landley.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e76b63f80d938a1319eb5fb0ae7ea69bddfbae38",
      "tree": "4480ea31ebd4cbae35fcf7fa75c834ab06e39ffd",
      "parents": [
        "0bf598d863e3c741d47e3178d645f04c9d6c186c"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yinghai@kernel.org",
        "time": "Wed Sep 11 14:22:17 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 11 15:57:51 2013 -0700"
      },
      "message": "memblock, numa: binary search node id\n\nCurrent early_pfn_to_nid() on arch that support memblock go over\nmemblock.memory one by one, so will take too many try near the end.\n\nWe can use existing memblock_search to find the node id for given pfn,\nthat could save some time on bigger system that have many entries\nmemblock.memory array.\n\nHere are the timing differences for several machines.  In each case with\nthe patch less time was spent in __early_pfn_to_nid().\n\n                        3.11-rc5        with patch      difference (%)\n                        --------        ----------      --------------\nUV1: 256 nodes  9TB:     411.66          402.47         -9.19 (2.23%)\nUV2: 255 nodes 16TB:    1141.02         1138.12         -2.90 (0.25%)\nUV2:  64 nodes  2TB:     128.15          126.53         -1.62 (1.26%)\nUV2:  32 nodes  2TB:     121.87          121.07         -0.80 (0.66%)\n                        Time in seconds.\n\nSigned-off-by: Yinghai Lu \u003cyinghai@kernel.org\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Russ Anderson \u003crja@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": "83467efbdb7948146581a56cbd683a22a0684bbb",
      "tree": "8faaf4d713adcfd5875190ee23f0218212838f24",
      "parents": [
        "c8721bbbdd36382de51cd6b7a56322e0acca2414"
      ],
      "author": {
        "name": "Naoya Horiguchi",
        "email": "n-horiguchi@ah.jp.nec.com",
        "time": "Wed Sep 11 14:22:11 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 11 15:57:49 2013 -0700"
      },
      "message": "mm: migrate: check movability of hugepage in unmap_and_move_huge_page()\n\nCurrently hugepage migration works well only for pmd-based hugepages\n(mainly due to lack of testing,) so we had better not enable migration of\nother levels of hugepages until we are ready for it.\n\nSome users of hugepage migration (mbind, move_pages, and migrate_pages) do\npage table walk and check pud/pmd_huge() there, so they are safe.  But the\nother users (softoffline and memory hotremove) don\u0027t do this, so without\nthis patch they can try to migrate unexpected types of hugepages.\n\nTo prevent this, we introduce hugepage_migration_support() as an\narchitecture dependent check of whether hugepage are implemented on a pmd\nbasis or not.  And on some architecture multiple sizes of hugepages are\navailable, so hugepage_migration_support() also checks hugepage size.\n\nSigned-off-by: Naoya Horiguchi \u003cn-horiguchi@ah.jp.nec.com\u003e\nCc: Andi Kleen \u003cak@linux.intel.com\u003e\nCc: Hillf Danton \u003cdhillf@gmail.com\u003e\nCc: Wanpeng Li \u003cliwanp@linux.vnet.ibm.com\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: \"Aneesh Kumar K.V\" \u003caneesh.kumar@linux.vnet.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": "c8721bbbdd36382de51cd6b7a56322e0acca2414",
      "tree": "8fb7b55974defcde9a4b07f571f0dd2dd1ad591f",
      "parents": [
        "71ea2efb1e936a127690a0a540b3a6162f95e48a"
      ],
      "author": {
        "name": "Naoya Horiguchi",
        "email": "n-horiguchi@ah.jp.nec.com",
        "time": "Wed Sep 11 14:22:09 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 11 15:57:48 2013 -0700"
      },
      "message": "mm: memory-hotplug: enable memory hotplug to handle hugepage\n\nUntil now we can\u0027t offline memory blocks which contain hugepages because a\nhugepage is considered as an unmovable page.  But now with this patch\nseries, a hugepage has become movable, so by using hugepage migration we\ncan offline such memory blocks.\n\nWhat\u0027s different from other users of hugepage migration is that we need to\ndecompose all the hugepages inside the target memory block into free buddy\npages after hugepage migration, because otherwise free hugepages remaining\nin the memory block intervene the memory offlining.  For this reason we\nintroduce new functions dissolve_free_huge_page() and\ndissolve_free_huge_pages().\n\nOther than that, what this patch does is straightforwardly to add hugepage\nmigration code, that is, adding hugepage code to the functions which scan\nover pfn and collect hugepages to be migrated, and adding a hugepage\nallocation function to alloc_migrate_target().\n\nAs for larger hugepages (1GB for x86_64), it\u0027s not easy to do hotremove\nover them because it\u0027s larger than memory block.  So we now simply leave\nit to fail as it is.\n\n[yongjun_wei@trendmicro.com.cn: remove duplicated include]\nSigned-off-by: Naoya Horiguchi \u003cn-horiguchi@ah.jp.nec.com\u003e\nAcked-by: Andi Kleen \u003cak@linux.intel.com\u003e\nCc: Hillf Danton \u003cdhillf@gmail.com\u003e\nCc: Wanpeng Li \u003cliwanp@linux.vnet.ibm.com\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: \"Aneesh Kumar K.V\" \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: Wei Yongjun \u003cyongjun_wei@trendmicro.com.cn\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "71ea2efb1e936a127690a0a540b3a6162f95e48a",
      "tree": "a511e464a3c5efb48d7f31e38a97ea9f05660bfe",
      "parents": [
        "74060e4d78795c7c43805133cb717d82533d4e0d"
      ],
      "author": {
        "name": "Naoya Horiguchi",
        "email": "n-horiguchi@ah.jp.nec.com",
        "time": "Wed Sep 11 14:22:08 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 11 15:57:48 2013 -0700"
      },
      "message": "mm: migrate: remove VM_HUGETLB from vma flag check in vma_migratable()\n\nEnable hugepage migration from migrate_pages(2), move_pages(2), and\nmbind(2).\n\nSigned-off-by: Naoya Horiguchi \u003cn-horiguchi@ah.jp.nec.com\u003e\nAcked-by: Hillf Danton \u003cdhillf@gmail.com\u003e\nAcked-by: Andi Kleen \u003cak@linux.intel.com\u003e\nReviewed-by: Wanpeng Li \u003cliwanp@linux.vnet.ibm.com\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: \"Aneesh Kumar K.V\" \u003caneesh.kumar@linux.vnet.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": "74060e4d78795c7c43805133cb717d82533d4e0d",
      "tree": "923febdc5b4565fbbcf05387d7cc423c72648695",
      "parents": [
        "e632a938d914d271bec26e570d36c755a1e35e4c"
      ],
      "author": {
        "name": "Naoya Horiguchi",
        "email": "n-horiguchi@ah.jp.nec.com",
        "time": "Wed Sep 11 14:22:06 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 11 15:57:48 2013 -0700"
      },
      "message": "mm: mbind: add hugepage migration code to mbind()\n\nExtend do_mbind() to handle vma with VM_HUGETLB set.  We will be able to\nmigrate hugepage with mbind(2) after applying the enablement patch which\ncomes later in this series.\n\nSigned-off-by: Naoya Horiguchi \u003cn-horiguchi@ah.jp.nec.com\u003e\nAcked-by: Andi Kleen \u003cak@linux.intel.com\u003e\nReviewed-by: Wanpeng Li \u003cliwanp@linux.vnet.ibm.com\u003e\nAcked-by: Hillf Danton \u003cdhillf@gmail.com\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: \"Aneesh Kumar K.V\" \u003caneesh.kumar@linux.vnet.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": "b8ec1cee5a4375c1244b85709138a2eac2d89cb6",
      "tree": "c3c548949ac53e1a66d891171d4b176f1d11538d",
      "parents": [
        "31caf665e666b51fe36efd1e54031ed29e86c0b4"
      ],
      "author": {
        "name": "Naoya Horiguchi",
        "email": "n-horiguchi@ah.jp.nec.com",
        "time": "Wed Sep 11 14:22:01 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 11 15:57:47 2013 -0700"
      },
      "message": "mm: soft-offline: use migrate_pages() instead of migrate_huge_page()\n\nCurrently migrate_huge_page() takes a pointer to a hugepage to be migrated\nas an argument, instead of taking a pointer to the list of hugepages to be\nmigrated.  This behavior was introduced in commit 189ebff28 (\"hugetlb:\nsimplify migrate_huge_page()\"), and was OK because until now hugepage\nmigration is enabled only for soft-offlining which migrates only one\nhugepage in a single call.\n\nBut the situation will change in the later patches in this series which\nenable other users of page migration to support hugepage migration.  They\ncan kick migration for both of normal pages and hugepages in a single\ncall, so we need to go back to original implementation which uses linked\nlists to collect the hugepages to be migrated.\n\nWith this patch, soft_offline_huge_page() switches to use migrate_pages(),\nand migrate_huge_page() is not used any more.  So let\u0027s remove it.\n\nSigned-off-by: Naoya Horiguchi \u003cn-horiguchi@ah.jp.nec.com\u003e\nAcked-by: Andi Kleen \u003cak@linux.intel.com\u003e\nReviewed-by: Wanpeng Li \u003cliwanp@linux.vnet.ibm.com\u003e\nAcked-by: Hillf Danton \u003cdhillf@gmail.com\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: \"Aneesh Kumar K.V\" \u003caneesh.kumar@linux.vnet.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": "31caf665e666b51fe36efd1e54031ed29e86c0b4",
      "tree": "e17452c7c698aade9946cd5557e3d999663e3f76",
      "parents": [
        "07443a85ad90c7b62fbe11dcd3d6a1de1e10516f"
      ],
      "author": {
        "name": "Naoya Horiguchi",
        "email": "n-horiguchi@ah.jp.nec.com",
        "time": "Wed Sep 11 14:21:59 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 11 15:57:46 2013 -0700"
      },
      "message": "mm: migrate: make core migration code aware of hugepage\n\nCurrently hugepage migration is available only for soft offlining, but\nit\u0027s also useful for some other users of page migration (clearly because\nusers of hugepage can enjoy the benefit of mempolicy and memory hotplug.)\nSo this patchset tries to extend such users to support hugepage migration.\n\nThe target of this patchset is to enable hugepage migration for NUMA\nrelated system calls (migrate_pages(2), move_pages(2), and mbind(2)), and\nmemory hotplug.\n\nThis patchset does not add hugepage migration for memory compaction,\nbecause users of memory compaction mainly expect to construct thp by\narranging raw pages, and there\u0027s little or no need to compact hugepages.\nCMA, another user of page migration, can have benefit from hugepage\nmigration, but is not enabled to support it for now (just because of lack\nof testing and expertise in CMA.)\n\nHugepage migration of non pmd-based hugepage (for example 1GB hugepage in\nx86_64, or hugepages in architectures like ia64) is not enabled for now\n(again, because of lack of testing.)\n\nAs for how these are achived, I extended the API (migrate_pages()) to\nhandle hugepage (with patch 1 and 2) and adjusted code of each caller to\ncheck and collect movable hugepages (with patch 3-7).  Remaining 2 patches\nare kind of miscellaneous ones to avoid unexpected behavior.  Patch 8 is\nabout making sure that we only migrate pmd-based hugepages.  And patch 9\nis about choosing appropriate zone for hugepage allocation.\n\nMy test is mainly functional one, simply kicking hugepage migration via\neach entry point and confirm that migration is done correctly.  Test code\nis available here:\n\n  git://github.com/Naoya-Horiguchi/test_hugepage_migration_extension.git\n\nAnd I always run libhugetlbfs test when changing hugetlbfs\u0027s code.  With\nthis patchset, no regression was found in the test.\n\nThis patch (of 9):\n\nBefore enabling each user of page migration to support hugepage,\nthis patch enables the list of pages for migration to link not only\nLRU pages, but also hugepages. As a result, putback_movable_pages()\nand migrate_pages() can handle both of LRU pages and hugepages.\n\nSigned-off-by: Naoya Horiguchi \u003cn-horiguchi@ah.jp.nec.com\u003e\nAcked-by: Andi Kleen \u003cak@linux.intel.com\u003e\nReviewed-by: Wanpeng Li \u003cliwanp@linux.vnet.ibm.com\u003e\nAcked-by: Hillf Danton \u003cdhillf@gmail.com\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: \"Aneesh Kumar K.V\" \u003caneesh.kumar@linux.vnet.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": "674470d97958a0ec72f72caf7f6451da40159cc7",
      "tree": "5085abf683ef3ac3f2dcf745b0d214dc70031582",
      "parents": [
        "eee87e1726af8c746f0e15ae6c57a97675f5e960"
      ],
      "author": {
        "name": "Joonyoung Shim",
        "email": "jy0922.shim@samsung.com",
        "time": "Wed Sep 11 14:21:43 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 11 15:57:35 2013 -0700"
      },
      "message": "lib/genalloc.c: fix overflow of ending address of memory chunk\n\nIn struct gen_pool_chunk, end_addr means the end address of memory chunk\n(inclusive), but in the implementation it is treated as address + size of\nmemory chunk (exclusive), so it points to the address plus one instead of\ncorrect ending address.\n\nThe ending address of memory chunk plus one will cause overflow on the\nmemory chunk including the last address of memory map, e.g.  when starting\naddress is 0xFFF00000 and size is 0x100000 on 32bit machine, ending\naddress will be 0x100000000.\n\nUse correct ending address like starting address + size - 1.\n\n[akpm@linux-foundation.org: add comment to struct gen_pool_chunk:end_addr]\nSigned-off-by: Joonyoung Shim \u003cjy0922.shim@samsung.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2bb921e526656556e68f99f5f15a4a1bf2691844",
      "tree": "91b009a59938d7713de0781df9d5c0c2eacfc51f",
      "parents": [
        "d2cf5ad6312ca9913464fac40fb47ba47ad945c4"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Wed Sep 11 14:21:30 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 11 15:57:31 2013 -0700"
      },
      "message": "vmstat: create separate function to fold per cpu diffs into local counters\n\nThe main idea behind this patchset is to reduce the vmstat update overhead\nby avoiding interrupt enable/disable and the use of per cpu atomics.\n\nThis patch (of 3):\n\nIt is better to have a separate folding function because\nrefresh_cpu_vm_stats() also does other things like expire pages in the\npage allocator caches.\n\nIf we have a separate function then refresh_cpu_vm_stats() is only called\nfrom the local cpu which allows additional optimizations.\n\nThe folding function is only called when a cpu is being downed and\ntherefore no other processor will be accessing the counters.  Also\nsimplifies synchronization.\n\n[akpm@linux-foundation.org: fix UP build]\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCC: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Joonsoo Kim \u003cjs1304@gmail.com\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d2cf5ad6312ca9913464fac40fb47ba47ad945c4",
      "tree": "05590c6fed5ee9b86b65e1c23a899e921faeb040",
      "parents": [
        "bc4b4448dba660afc8df3790564320302d9709a1"
      ],
      "author": {
        "name": "Joonsoo Kim",
        "email": "iamjoonsoo.kim@lge.com",
        "time": "Wed Sep 11 14:21:29 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 11 15:57:31 2013 -0700"
      },
      "message": "swap: clean-up #ifdef in page_mapping()\n\nPageSwapCache() is always false when !CONFIG_SWAP, so compiler\nproperly discard related code. Therefore, we don\u0027t need #ifdef explicitly.\n\nSigned-off-by: Joonsoo Kim \u003ciamjoonsoo.kim@lge.com\u003e\nAcked-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Rik van Riel \u003criel@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": "81c0a2bb515fd4daae8cab64352877480792b515",
      "tree": "5ef326d226fdd14332cd0e5382e6dd2759dd08e3",
      "parents": [
        "e085dbc52fad8d79fa2245339c84bf3ef0b3a802"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Wed Sep 11 14:20:47 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 11 15:57:23 2013 -0700"
      },
      "message": "mm: page_alloc: fair zone allocator policy\n\nEach zone that holds userspace pages of one workload must be aged at a\nspeed proportional to the zone size.  Otherwise, the time an individual\npage gets to stay in memory depends on the zone it happened to be\nallocated in.  Asymmetry in the zone aging creates rather unpredictable\naging behavior and results in the wrong pages being reclaimed, activated\netc.\n\nBut exactly this happens right now because of the way the page allocator\nand kswapd interact.  The page allocator uses per-node lists of all zones\nin the system, ordered by preference, when allocating a new page.  When\nthe first iteration does not yield any results, kswapd is woken up and the\nallocator retries.  Due to the way kswapd reclaims zones below the high\nwatermark while a zone can be allocated from when it is above the low\nwatermark, the allocator may keep kswapd running while kswapd reclaim\nensures that the page allocator can keep allocating from the first zone in\nthe zonelist for extended periods of time.  Meanwhile the other zones\nrarely see new allocations and thus get aged much slower in comparison.\n\nThe result is that the occasional page placed in lower zones gets\nrelatively more time in memory, even gets promoted to the active list\nafter its peers have long been evicted.  Meanwhile, the bulk of the\nworking set may be thrashing on the preferred zone even though there may\nbe significant amounts of memory available in the lower zones.\n\nEven the most basic test -- repeatedly reading a file slightly bigger than\nmemory -- shows how broken the zone aging is.  In this scenario, no single\npage should be able stay in memory long enough to get referenced twice and\nactivated, but activation happens in spades:\n\n  $ grep active_file /proc/zoneinfo\n      nr_inactive_file 0\n      nr_active_file 0\n      nr_inactive_file 0\n      nr_active_file 8\n      nr_inactive_file 1582\n      nr_active_file 11994\n  $ cat data data data data \u003e/dev/null\n  $ grep active_file /proc/zoneinfo\n      nr_inactive_file 0\n      nr_active_file 70\n      nr_inactive_file 258753\n      nr_active_file 443214\n      nr_inactive_file 149793\n      nr_active_file 12021\n\nFix this with a very simple round robin allocator.  Each zone is allowed a\nbatch of allocations that is proportional to the zone\u0027s size, after which\nit is treated as full.  The batch counters are reset when all zones have\nbeen tried and the allocator enters the slowpath and kicks off kswapd\nreclaim.  Allocation and reclaim is now fairly spread out to all\navailable/allowable zones:\n\n  $ grep active_file /proc/zoneinfo\n      nr_inactive_file 0\n      nr_active_file 0\n      nr_inactive_file 174\n      nr_active_file 4865\n      nr_inactive_file 53\n      nr_active_file 860\n  $ cat data data data data \u003e/dev/null\n  $ grep active_file /proc/zoneinfo\n      nr_inactive_file 0\n      nr_active_file 0\n      nr_inactive_file 666622\n      nr_active_file 4988\n      nr_inactive_file 190969\n      nr_active_file 937\n\nWhen zone_reclaim_mode is enabled, allocations will now spread out to all\nzones on the local node, not just the first preferred zone (which on a 4G\nnode might be a tiny Normal zone).\n\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nAcked-by: Mel Gorman \u003cmgorman@suse.de\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Paul Bolle \u003cpaul.bollee@gmail.com\u003e\nCc: Zlatko Calusic \u003czcalusic@bitsync.net\u003e\nTested-by: Kevin Hilman \u003ckhilman@linaro.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ebc2a1a69111eadfeda8487e577f1a5d42ef0dae",
      "tree": "8a1d08bc6c0a1eb7e1bcd93056141614c22a7d40",
      "parents": [
        "edfe23dac3e2981277087b05bec7fec7790d1835"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shli@kernel.org",
        "time": "Wed Sep 11 14:20:32 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 11 15:57:17 2013 -0700"
      },
      "message": "swap: make cluster allocation per-cpu\n\nswap cluster allocation is to get better request merge to improve\nperformance.  But the cluster is shared globally, if multiple tasks are\ndoing swap, this will cause interleave disk access.  While multiple tasks\nswap is quite common, for example, each numa node has a kswapd thread\ndoing swap and multiple threads/processes doing direct page reclaim.\n\nioscheduler can\u0027t help too much here, because tasks don\u0027t send swapout IO\ndown to block layer in the meantime.  Block layer does merge some IOs, but\na lot not, depending on how many tasks are doing swapout concurrently.  In\npractice, I\u0027ve seen a lot of small size IO in swapout workloads.\n\nWe makes the cluster allocation per-cpu here.  The interleave disk access\nissue goes away.  All tasks swapout to their own cluster, so swapout will\nbecome sequential, which can be easily merged to big size IO.  If one CPU\ncan\u0027t get its per-cpu cluster (for example, there is no free cluster\nanymore in the swap), it will fallback to scan swap_map.  The CPU can\nstill continue swap.  We don\u0027t need recycle free swap entries of other\nCPUs.\n\nIn my test (swap to a 2-disk raid0 partition), this improves around 10%\nswapout throughput, and request size is increased significantly.\n\nHow does this impact swap readahead is uncertain though.  On one side,\npage reclaim always isolates and swaps several adjancent pages, this will\nmake page reclaim write the pages sequentially and benefit readahead.  On\nthe other side, several CPU write pages interleave means the pages don\u0027t\nlive _sequentially_ but relatively _near_.  In the per-cpu allocation\ncase, if adjancent pages are written by different cpus, they will live\nrelatively _far_.  So how this impacts swap readahead depends on how many\npages page reclaim isolates and swaps one time.  If the number is big,\nthis patch will benefit swap readahead.  Of course, this is about\nsequential access pattern.  The patch has no impact for random access\npattern, because the new cluster allocation algorithm is just for SSD.\n\nAlternative solution is organizing swap layout to be per-mm instead of\nthis per-cpu approach.  In the per-mm layout, we allocate a disk range for\neach mm, so pages of one mm live in swap disk adjacently.  per-mm layout\nhas potential issues of lock contention if multiple reclaimers are swap\npages from one mm.  For a sequential workload, per-mm layout is better to\nimplement swap readahead, because pages from the mm are adjacent in disk.\nBut per-cpu layout isn\u0027t very bad in this workload, as page reclaim always\nisolates and swaps several pages one time, such pages will still live in\ndisk sequentially and readahead can utilize this.  For a random workload,\nper-mm layout isn\u0027t beneficial of request merge, because it\u0027s quite\npossible pages from different mm are swapout in the meantime and IO can\u0027t\nbe merged in per-mm layout.  while with per-cpu layout we can merge\nrequests from any mm.  Considering random workload is more popular in\nworkloads with swap (and per-cpu approach isn\u0027t too bad for sequential\nworkload too), I\u0027m choosing per-cpu layout.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Shaohua Li \u003cshli@fusionio.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Kyungmin Park \u003ckmpark@infradead.org\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Rafael Aquini \u003caquini@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": "815c2c543d3aeb914a361f981440ece552778724",
      "tree": "7d6f0de8493abbb08f0a42cb565087868b9eaeb4",
      "parents": [
        "2a8f9449343260373398d59228a62a4332ea513a"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shli@kernel.org",
        "time": "Wed Sep 11 14:20:30 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 11 15:57:15 2013 -0700"
      },
      "message": "swap: make swap discard async\n\nswap can do cluster discard for SSD, which is good, but there are some\nproblems here:\n\n1. swap do the discard just before page reclaim gets a swap entry and\n   writes the disk sectors.  This is useless for high end SSD, because an\n   overwrite to a sector implies a discard to original sector too.  A\n   discard + overwrite \u003d\u003d overwrite.\n\n2. the purpose of doing discard is to improve SSD firmware garbage\n   collection.  Idealy we should send discard as early as possible, so\n   firmware can do something smart.  Sending discard just after swap entry\n   is freed is considered early compared to sending discard before write.\n   Of course, if workload is already bound to gc speed, sending discard\n   earlier or later doesn\u0027t make\n\n3. block discard is a sync API, which will delay scan_swap_map()\n   significantly.\n\n4. Write and discard command can be executed parallel in PCIe SSD.\n   Making swap discard async can make execution more efficiently.\n\nThis patch makes swap discard async and moves discard to where swap entry\nis freed.  Discard and write have no dependence now, so above issues can\nbe avoided.  Idealy we should do discard for any freed sectors, but some\nSSD discard is very slow.  This patch still does discard for a whole\ncluster.\n\nMy test does a several round of \u0027mmap, write, unmap\u0027, which will trigger a\nlot of swap discard.  In a fusionio card, with this patch, the test\nruntime is reduced to 18% of the time without it, so around 5.5x faster.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Shaohua Li \u003cshli@fusionio.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Kyungmin Park \u003ckmpark@infradead.org\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Rafael Aquini \u003caquini@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": "2a8f9449343260373398d59228a62a4332ea513a",
      "tree": "76c6ddf2a99d9dc7519585ba65c9883005908286",
      "parents": [
        "15ca220e1a63af06e000691e4ae1beaba5430c32"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shli@kernel.org",
        "time": "Wed Sep 11 14:20:28 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 11 15:57:15 2013 -0700"
      },
      "message": "swap: change block allocation algorithm for SSD\n\nI\u0027m using a fast SSD to do swap.  scan_swap_map() sometimes uses up to\n20~30% CPU time (when cluster is hard to find, the CPU time can be up to\n80%), which becomes a bottleneck.  scan_swap_map() scans a byte array to\nsearch a 256 page cluster, which is very slow.\n\nHere I introduced a simple algorithm to search cluster.  Since we only\ncare about 256 pages cluster, we can just use a counter to track if a\ncluster is free.  Every 256 pages use one int to store the counter.  If\nthe counter of a cluster is 0, the cluster is free.  All free clusters\nwill be added to a list, so searching cluster is very efficient.  With\nthis, scap_swap_map() overhead disappears.\n\nThis might help low end SD card swap too.  Because if the cluster is\naligned, SD firmware can do flash erase more efficiently.\n\nWe only enable the algorithm for SSD.  Hard disk swap isn\u0027t fast enough\nand has downside with the algorithm which might introduce regression (see\nbelow).\n\nThe patch slightly changes which cluster is choosen.  It always adds free\ncluster to list tail.  This can help wear leveling for low end SSD too.\nAnd if no cluster found, the scan_swap_map() will do search from the end\nof last cluster.  So if no cluster found, the scan_swap_map() will do\nsearch from the end of last free cluster, which is random.  For SSD, this\nisn\u0027t a problem at all.\n\nAnother downside is the cluster must be aligned to 256 pages, which will\nreduce the chance to find a cluster.  I would expect this isn\u0027t a big\nproblem for SSD because of the non-seek penality.  (And this is the reason\nI only enable the algorithm for SSD).\n\nSigned-off-by: Shaohua Li \u003cshli@fusionio.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Kyungmin Park \u003ckmpark@infradead.org\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Rafael Aquini \u003caquini@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": "6df46865ff8715932e7d42e52cac17e8461758cb",
      "tree": "7c7e1d43b22a2bec2d4a6fce95ddc3cbd481aa1e",
      "parents": [
        "9824cf9753ecbe8f5b47aa9b2f218207defea211"
      ],
      "author": {
        "name": "Dave Hansen",
        "email": "dave@sr71.net",
        "time": "Wed Sep 11 14:20:24 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 11 15:57:09 2013 -0700"
      },
      "message": "mm: vmstats: track TLB flush stats on UP too\n\nThe previous patch doing vmstats for TLB flushes (\"mm: vmstats: tlb flush\ncounters\") effectively missed UP since arch/x86/mm/tlb.c is only compiled\nfor SMP.\n\nUP systems do not do remote TLB flushes, so compile those counters out on\nUP.\n\narch/x86/kernel/cpu/mtrr/generic.c calls __flush_tlb() directly.  This is\nprobably an optimization since both the mtrr code and __flush_tlb() write\ncr4.  It would probably be safe to make that a flush_tlb_all() (and then\nget these statistics), but the mtrr code is ancient and I\u0027m hesitant to\ntouch it other than to just stick in the counters.\n\n[akpm@linux-foundation.org: tweak comments]\nSigned-off-by: Dave Hansen \u003cdave.hansen@linux.intel.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9824cf9753ecbe8f5b47aa9b2f218207defea211",
      "tree": "5baf98172d2f6bedaf83487b04bbeb579be2ff18",
      "parents": [
        "822518dc56810a0de44cff0f85a227268818749c"
      ],
      "author": {
        "name": "Dave Hansen",
        "email": "dave@sr71.net",
        "time": "Wed Sep 11 14:20:23 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 11 15:57:08 2013 -0700"
      },
      "message": "mm: vmstats: tlb flush counters\n\nI was investigating some TLB flush scaling issues and realized that we do\nnot have any good methods for figuring out how many TLB flushes we are\ndoing.\n\nIt would be nice to be able to do these in generic code, but the\narch-independent calls don\u0027t explicitly specify whether we actually need\nto do remote flushes or not.  In the end, we really need to know if we\nactually _did_ global vs.  local invalidations, so that leaves us with few\noptions other than to muck with the counters from arch-specific code.\n\nSigned-off-by: Dave Hansen \u003cdave.hansen@linux.intel.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ef0855d334e1e4af7c3e0c42146a8479ea14a5ab",
      "tree": "5955b0424bb392e1949acc0ad5066cb461bef867",
      "parents": [
        "c07303c0af38ffb1e5fd9b5ff37d0798298a7acf"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Sep 11 14:20:14 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 11 15:57:00 2013 -0700"
      },
      "message": "mm: mempolicy: turn vma_set_policy() into vma_dup_policy()\n\nSimple cleanup.  Every user of vma_set_policy() does the same work, this\nlooks a bit annoying imho.  And the new trivial helper which does\nmpol_dup() + vma_set_policy() to simplify the callers.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: 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": "bab55417b10c95e6bff8cea315c315adfa009487",
      "tree": "56bfc578d47c7ea786bf6a35bf946f37e9b458b1",
      "parents": [
        "ed751e683c563be64322b9bfa0f0f7e5da9bd37c"
      ],
      "author": {
        "name": "Cai Zhiyong",
        "email": "caizhiyong@huawei.com",
        "time": "Wed Sep 11 14:20:09 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 11 15:56:57 2013 -0700"
      },
      "message": "block: support embedded device command line partition\n\nRead block device partition table from command line.  The partition used\nfor fixed block device (eMMC) embedded device.  It is no MBR, save\nstorage space.  Bootloader can be easily accessed by absolute address of\ndata on the block device.  Users can easily change the partition.\n\nThis code reference MTD partition, source \"drivers/mtd/cmdlinepart.c\"\nAbout the partition verbose reference\n\"Documentation/block/cmdline-partition.txt\"\n\n[akpm@linux-foundation.org: fix printk text]\n[yongjun_wei@trendmicro.com.cn: fix error return code in parse_parts()]\nSigned-off-by: Cai Zhiyong \u003ccaizhiyong@huawei.com\u003e\nCc: Karel Zak \u003ckzak@redhat.com\u003e\nCc: \"Wanglin (Albert)\" \u003calbert.wanglin@huawei.com\u003e\nCc: Marius Groeger \u003cmag@sysgo.de\u003e\nCc: David Woodhouse \u003cdwmw2@infradead.org\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Brian Norris \u003ccomputersforpeace@gmail.com\u003e\nCc: Artem Bityutskiy \u003cdedekind@infradead.org\u003e\nSigned-off-by: Wei Yongjun \u003cyongjun_wei@trendmicro.com.cn\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e1403b8edf669ff49bbdf602cc97fefa2760cb15",
      "tree": "ab4c68709afca445b444577e9b29b53ed72eee17",
      "parents": [
        "28e8be31803b19d0d8f76216cb11b480b8a98bec"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Sep 11 14:20:06 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 11 15:56:56 2013 -0700"
      },
      "message": "include/linux/sched.h: don\u0027t use task-\u003epid/tgid in same_thread_group/has_group_leader_pid\n\ntask_struct-\u003epid/tgid should go away.\n\n1. Change same_thread_group() to use task-\u003esignal for comparison.\n\n2. Change has_group_leader_pid(task) to compare task_pid(task) with\n   signal-\u003eleader_pid.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Sergey Dyasly \u003cdserrg@gmail.com\u003e\nReviewed-by: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3b8967d713d7426e9dd107d065208b84adface91",
      "tree": "f1df2b00ef08ac92636fdc4e7bc273963deec433",
      "parents": [
        "e831cbfc1ad843b5542cc45f777e1a00b73c0685"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Wed Sep 11 14:19:37 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 11 15:56:19 2013 -0700"
      },
      "message": "include/linux/smp.h:on_each_cpu(): switch back to a C function\n\nRevert commit c846ef7deba2 (\"include/linux/smp.h:on_each_cpu(): switch\nback to a macro\").  It turns out that the problematic linux/irqflags.h\ninclude was fixed within ia64 and mn10300.\n\nCc: Geert Uytterhoeven \u003cgeert@linux-m68k.org\u003e\nCc: David Daney \u003cdavid.daney@cavium.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0df03a30c333d67ee9b4c37f32d423624f48fe05",
      "tree": "c8f8304fb05926777defdc4607c95f91d340d6a3",
      "parents": [
        "0a733e6effb4a429551d8b000aa02750cc7e04ba",
        "6cdcdb793791f776ea9408581b1242b636d43b37"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rafael.j.wysocki@intel.com",
        "time": "Wed Sep 11 15:23:15 2013 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rafael.j.wysocki@intel.com",
        "time": "Wed Sep 11 15:23:15 2013 +0200"
      },
      "message": "Merge branch \u0027pm-cpufreq\u0027\n\n* pm-cpufreq:\n  intel_pstate: Add Haswell CPU models\n  Revert \"cpufreq: make sure frequency transitions are serialized\"\n  cpufreq: Use signed type for \u0027ret\u0027 variable, to store negative error values\n  cpufreq: Remove temporary fix for race between CPU hotplug and sysfs-writes\n  cpufreq: Synchronize the cpufreq store_*() routines with CPU hotplug\n  cpufreq: Invoke __cpufreq_remove_dev_finish() after releasing cpu_hotplug.lock\n  cpufreq: Split __cpufreq_remove_dev() into two parts\n  cpufreq: Fix wrong time unit conversion\n  cpufreq: serialize calls to __cpufreq_governor()\n  cpufreq: don\u0027t allow governor limits to be changed when it is disabled\n"
    },
    {
      "commit": "a22a0fdba4191473581f86c9dd5361cf581521d3",
      "tree": "ef5d3992f791641d6c8c16cee781f214fecbb105",
      "parents": [
        "bf83e61464803d386d0ec3fc92e5449d7963a409",
        "db15e6312efd537e2deb2cbad110c23f98704a3c"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 10 22:58:14 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 10 22:58:14 2013 -0700"
      },
      "message": "Merge tag \u0027for-v3.12\u0027 of git://git.infradead.org/battery-2.6\n\nPull battery/power supply driver updates from Anton Vorontsov:\n \"New drivers:\n\n   - APM X-Gene system reboot driver by Feng Kan and Loc Ho (APM).\n\n   - Qualcomm MSM reboot/poweroff driver by Abhimanyu Kapur (Codeaurora).\n\n   - Texas Instruments BQ24190 charger driver by Mark A.  Greer (Animal\n     Creek Technologies).\n\n   - Texas Instruments TWL4030 MADC battery driver by Lukas Märdian and\n     Marek Belisko (Golden Delicious Computers).  The driver is used on\n     Freerunner GTA04 phones.\n\n  Highlighted fixes and improvements:\n\n   - Suspend/wakeup logic improvements: power supply objects will block\n     system suspend until all power supply events are processed.  Thanks\n     to Zoran Markovic (Linaro), Arve Hjonnevag and Todd Poynor (Google)\"\n\n* tag \u0027for-v3.12\u0027 of git://git.infradead.org/battery-2.6:\n  rx51_battery: Fix channel number when reading adc value\n  power: Add twl4030_madc battery driver.\n  bq24190_charger: Workaround SS definition problem on i386 builds\n  power_supply: Prevent suspend until power supply events are processed\n  vexpress-poweroff: Should depend on the required infrastructure\n  twl4030-charger: Fix compiler warning with regulator_enable()\n  rx51_battery: Replace hardcoded channels values.\n  bq24190_charger: Add support for TI BQ24190 Battery Charger\n  ab8500-charger: We print an unintended error message\n  max8925_power: Fix missing of_node_put\n  power_supply: Replace strict_strtol() with kstrtol()\n  power: Add APM X-Gene system reboot driver\n  power_supply: tosa_battery: Get rid of irq_to_gpio usage\n  power supply: collie_battery: Convert to use dev_pm_ops\n  power_supply: Make goldfish_battery depend on GOLDFISH || COMPILE_TEST\n  power: reset: Add msm restart support\n  MAINTAINERS: drivers/power: add entry for SmartReflex AVS drivers\n"
    },
    {
      "commit": "fa1586a7e43760f0e25e72b2e3f97ee18b2be967",
      "tree": "ff202134366622b72a7d5d743f940b8f57182d7c",
      "parents": [
        "cf596766fc53bbfa0e2b21e3569932aa54f5f9ca",
        "01172772c7c973debf5b4881fcb9463891ea97ec"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 10 20:05:57 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 10 20:05:57 2013 -0700"
      },
      "message": "Merge branch \u0027drm-fixes\u0027 of git://people.freedesktop.org/~airlied/linux\n\nPull drm fixes from Dave Airlie:\n \"Daniel had some fixes queued up, that were delayed, the stolen memory\n  ones and vga arbiter ones are quite useful, along with his usual bunch\n  of stuff, nothing for HSW outputs yet.\n\n  The one nouveau fix is for a regression I caused with the poweroff stuff\"\n\n* \u0027drm-fixes\u0027 of git://people.freedesktop.org/~airlied/linux: (30 commits)\n  drm/nouveau: fix oops on runtime suspend/resume\n  drm/i915: Delay disabling of VGA memory until vgacon-\u003efbcon handoff is done\n  drm/i915: try not to lose backlight CBLV precision\n  drm/i915: Confine page flips to BCS on Valleyview\n  drm/i915: Skip stolen region initialisation if none is reserved\n  drm/i915: fix gpu hang vs. flip stall deadlocks\n  drm/i915: Hold an object reference whilst we shrink it\n  drm/i915: fix i9xx_crtc_clock_get for multiplied pixels\n  drm/i915: handle sdvo input pixel multiplier correctly again\n  drm/i915: fix hpd work vs. flush_work in the pageflip code deadlock\n  drm/i915: fix up the relocate_entry refactoring\n  drm/i915: Fix pipe config warnings when dealing with LVDS fixed mode\n  drm/i915: Don\u0027t call sg_free_table() if sg_alloc_table() fails\n  i915: Update VGA arbiter support for newer devices\n  vgaarb: Fix VGA decodes changes\n  vgaarb: Don\u0027t disable resources that are not owned\n  drm/i915: Pin pages whilst mapping the dma-buf\n  drm/i915: enable trickle feed on Haswell\n  x86: add early quirk for reserving Intel graphics stolen memory v5\n  drm/i915: split PCI IDs out into i915_drm.h v4\n  ...\n"
    },
    {
      "commit": "cf596766fc53bbfa0e2b21e3569932aa54f5f9ca",
      "tree": "6e88bae48c06f5b4a099989abb04178b939d2b24",
      "parents": [
        "516f7b3f2a7dbe93d3075e76a06bbfcd0c0ee4f7",
        "d4a516560fc96a9d486a9939bcb567e3fdce8f49"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 10 20:04:59 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 10 20:04:59 2013 -0700"
      },
      "message": "Merge branch \u0027nfsd-next\u0027 of git://linux-nfs.org/~bfields/linux\n\nPull nfsd updates from Bruce Fields:\n \"This was a very quiet cycle! Just a few bugfixes and some cleanup\"\n\n* \u0027nfsd-next\u0027 of git://linux-nfs.org/~bfields/linux:\n  rpc: let xdr layer allocate gssproxy receieve pages\n  rpc: fix huge kmalloc\u0027s in gss-proxy\n  rpc: comment on linux_cred encoding, treat all as unsigned\n  rpc: clean up decoding of gssproxy linux creds\n  svcrpc: remove unused rq_resused\n  nfsd4: nfsd4_create_clid_dir prints uninitialized data\n  nfsd4: fix leak of inode reference on delegation failure\n  Revert \"nfsd: nfs4_file_get_access: need to be more careful with O_RDWR\"\n  sunrpc: prepare NFS for 2038\n  nfsd4: fix setlease error return\n  nfsd: nfs4_file_get_access: need to be more careful with O_RDWR\n"
    },
    {
      "commit": "5ca302c8e502ca53b7d75f12127ec0289904003a",
      "tree": "80a5b248c01fc3f33392a0b6ef14a2baab86cdb0",
      "parents": [
        "a0b02131c5fcd8545b867db72224b3659e813f10"
      ],
      "author": {
        "name": "Glauber Costa",
        "email": "glommer@openvz.org",
        "time": "Wed Aug 28 10:18:18 2013 +1000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Sep 10 18:56:32 2013 -0400"
      },
      "message": "list_lru: dynamically adjust node arrays\n\nWe currently use a compile-time constant to size the node array for the\nlist_lru structure.  Due to this, we don\u0027t need to allocate any memory at\ninitialization time.  But as a consequence, the structures that contain\nembedded list_lru lists can become way too big (the superblock for\ninstance contains two of them).\n\nThis patch aims at ameliorating this situation by dynamically allocating\nthe node arrays with the firmware provided nr_node_ids.\n\nSigned-off-by: Glauber Costa \u003cglommer@openvz.org\u003e\nCc: Dave Chinner \u003cdchinner@redhat.com\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: Adrian Hunter \u003cadrian.hunter@intel.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Artem Bityutskiy \u003cartem.bityutskiy@linux.intel.com\u003e\nCc: Arve Hjønnevåg \u003carve@android.com\u003e\nCc: Carlos Maiolino \u003ccmaiolino@redhat.com\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nCc: Daniel Vetter \u003cdaniel.vetter@ffwll.ch\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Gleb Natapov \u003cgleb@redhat.com\u003e\nCc: Greg Thelen \u003cgthelen@google.com\u003e\nCc: J. Bruce Fields \u003cbfields@redhat.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Jerome Glisse \u003cjglisse@redhat.com\u003e\nCc: John Stultz \u003cjohn.stultz@linaro.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Kent Overstreet \u003ckoverstreet@google.com\u003e\nCc: Kirill A. Shutemov \u003ckirill.shutemov@linux.intel.com\u003e\nCc: Marcelo Tosatti \u003cmtosatti@redhat.com\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Thomas Hellstrom \u003cthellstrom@vmware.com\u003e\nCc: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a0b02131c5fcd8545b867db72224b3659e813f10",
      "tree": "3ba5156965ca4625cd5a4ad78405180143eaf15c",
      "parents": [
        "70534a739c12b908789e27b08512d2615ba40f2f"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Wed Aug 28 10:18:16 2013 +1000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Sep 10 18:56:32 2013 -0400"
      },
      "message": "shrinker: Kill old -\u003eshrink API.\n\nThere are no more users of this API, so kill it dead, dead, dead and\nquietly bury the corpse in a shallow, unmarked grave in a dark forest deep\nin the hills...\n\n[glommer@openvz.org: added flowers to the grave]\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Glauber Costa \u003cglommer@openvz.org\u003e\nReviewed-by: Greg Thelen \u003cgthelen@google.com\u003e\nAcked-by: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: Adrian Hunter \u003cadrian.hunter@intel.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Artem Bityutskiy \u003cartem.bityutskiy@linux.intel.com\u003e\nCc: Arve Hjønnevåg \u003carve@android.com\u003e\nCc: Carlos Maiolino \u003ccmaiolino@redhat.com\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nCc: Daniel Vetter \u003cdaniel.vetter@ffwll.ch\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Gleb Natapov \u003cgleb@redhat.com\u003e\nCc: Greg Thelen \u003cgthelen@google.com\u003e\nCc: J. Bruce Fields \u003cbfields@redhat.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Jerome Glisse \u003cjglisse@redhat.com\u003e\nCc: John Stultz \u003cjohn.stultz@linaro.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Kent Overstreet \u003ckoverstreet@google.com\u003e\nCc: Kirill A. Shutemov \u003ckirill.shutemov@linux.intel.com\u003e\nCc: Marcelo Tosatti \u003cmtosatti@redhat.com\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Thomas Hellstrom \u003cthellstrom@vmware.com\u003e\nCc: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "9b17c62382dd2e7507984b9890bf44e070cdd8bb",
      "tree": "e64979ddbd8f0b6924f6b940fa15804490301908",
      "parents": [
        "1d3d4437eae1bb2963faab427f65f90663c64aa1"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Wed Aug 28 10:18:05 2013 +1000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Sep 10 18:56:31 2013 -0400"
      },
      "message": "fs: convert inode and dentry shrinking to be node aware\n\nNow that the shrinker is passing a node in the scan control structure, we\ncan pass this to the the generic LRU list code to isolate reclaim to the\nlists on matching nodes.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Glauber Costa \u003cglommer@parallels.com\u003e\nAcked-by: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: Adrian Hunter \u003cadrian.hunter@intel.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Artem Bityutskiy \u003cartem.bityutskiy@linux.intel.com\u003e\nCc: Arve Hjønnevåg \u003carve@android.com\u003e\nCc: Carlos Maiolino \u003ccmaiolino@redhat.com\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nCc: Daniel Vetter \u003cdaniel.vetter@ffwll.ch\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Gleb Natapov \u003cgleb@redhat.com\u003e\nCc: Greg Thelen \u003cgthelen@google.com\u003e\nCc: J. Bruce Fields \u003cbfields@redhat.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Jerome Glisse \u003cjglisse@redhat.com\u003e\nCc: John Stultz \u003cjohn.stultz@linaro.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Kent Overstreet \u003ckoverstreet@google.com\u003e\nCc: Kirill A. Shutemov \u003ckirill.shutemov@linux.intel.com\u003e\nCc: Marcelo Tosatti \u003cmtosatti@redhat.com\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Thomas Hellstrom \u003cthellstrom@vmware.com\u003e\nCc: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "1d3d4437eae1bb2963faab427f65f90663c64aa1",
      "tree": "1a5aa2be9b9f260fcd5dbd70b5c4e540b177b3f3",
      "parents": [
        "0ce3d74450815500e31f16a0b65f6bab687985c3"
      ],
      "author": {
        "name": "Glauber Costa",
        "email": "glommer@openvz.org",
        "time": "Wed Aug 28 10:18:04 2013 +1000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Sep 10 18:56:31 2013 -0400"
      },
      "message": "vmscan: per-node deferred work\n\nThe list_lru infrastructure already keeps per-node LRU lists in its\nnode-specific list_lru_node arrays and provide us with a per-node API, and\nthe shrinkers are properly equiped with node information.  This means that\nwe can now focus our shrinking effort in a single node, but the work that\nis deferred from one run to another is kept global at nr_in_batch.  Work\ncan be deferred, for instance, during direct reclaim under a GFP_NOFS\nallocation, where situation, all the filesystem shrinkers will be\nprevented from running and accumulate in nr_in_batch the amount of work\nthey should have done, but could not.\n\nThis creates an impedance problem, where upon node pressure, work deferred\nwill accumulate and end up being flushed in other nodes.  The problem we\ndescribe is particularly harmful in big machines, where many nodes can\naccumulate at the same time, all adding to the global counter nr_in_batch.\n As we accumulate more and more, we start to ask for the caches to flush\neven bigger numbers.  The result is that the caches are depleted and do\nnot stabilize.  To achieve stable steady state behavior, we need to tackle\nit differently.\n\nIn this patch we keep the deferred count per-node, in the new array\nnr_deferred[] (the name is also a bit more descriptive) and will never\naccumulate that to other nodes.\n\nSigned-off-by: Glauber Costa \u003cglommer@openvz.org\u003e\nCc: Dave Chinner \u003cdchinner@redhat.com\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: Adrian Hunter \u003cadrian.hunter@intel.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Artem Bityutskiy \u003cartem.bityutskiy@linux.intel.com\u003e\nCc: Arve Hjønnevåg \u003carve@android.com\u003e\nCc: Carlos Maiolino \u003ccmaiolino@redhat.com\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nCc: Daniel Vetter \u003cdaniel.vetter@ffwll.ch\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Gleb Natapov \u003cgleb@redhat.com\u003e\nCc: Greg Thelen \u003cgthelen@google.com\u003e\nCc: J. Bruce Fields \u003cbfields@redhat.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Jerome Glisse \u003cjglisse@redhat.com\u003e\nCc: John Stultz \u003cjohn.stultz@linaro.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Kent Overstreet \u003ckoverstreet@google.com\u003e\nCc: Kirill A. Shutemov \u003ckirill.shutemov@linux.intel.com\u003e\nCc: Marcelo Tosatti \u003cmtosatti@redhat.com\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Thomas Hellstrom \u003cthellstrom@vmware.com\u003e\nCc: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "0ce3d74450815500e31f16a0b65f6bab687985c3",
      "tree": "82c7a5a75958da8f44102276e862eaf325c5f0ce",
      "parents": [
        "4e717f5c1083995c334ced639cc77a75e9972567"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Wed Aug 28 10:18:03 2013 +1000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Sep 10 18:56:31 2013 -0400"
      },
      "message": "shrinker: add node awareness\n\nPass the node of the current zone being reclaimed to shrink_slab(),\nallowing the shrinker control nodemask to be set appropriately for node\naware shrinkers.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Glauber Costa \u003cglommer@openvz.org\u003e\nAcked-by: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: Adrian Hunter \u003cadrian.hunter@intel.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Artem Bityutskiy \u003cartem.bityutskiy@linux.intel.com\u003e\nCc: Arve Hjønnevåg \u003carve@android.com\u003e\nCc: Carlos Maiolino \u003ccmaiolino@redhat.com\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nCc: Daniel Vetter \u003cdaniel.vetter@ffwll.ch\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Gleb Natapov \u003cgleb@redhat.com\u003e\nCc: Greg Thelen \u003cgthelen@google.com\u003e\nCc: J. Bruce Fields \u003cbfields@redhat.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Jerome Glisse \u003cjglisse@redhat.com\u003e\nCc: John Stultz \u003cjohn.stultz@linaro.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Kent Overstreet \u003ckoverstreet@google.com\u003e\nCc: Kirill A. Shutemov \u003ckirill.shutemov@linux.intel.com\u003e\nCc: Marcelo Tosatti \u003cmtosatti@redhat.com\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Thomas Hellstrom \u003cthellstrom@vmware.com\u003e\nCc: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "4e717f5c1083995c334ced639cc77a75e9972567",
      "tree": "f236061b46b4401913652b167798210132d611ad",
      "parents": [
        "6a4f496fd2fc74fa036732ae52c184952d6e3e37"
      ],
      "author": {
        "name": "Glauber Costa",
        "email": "glommer@gmail.com",
        "time": "Wed Aug 28 10:18:03 2013 +1000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Sep 10 18:56:31 2013 -0400"
      },
      "message": "list_lru: remove special case function list_lru_dispose_all.\n\nThe list_lru implementation has one function, list_lru_dispose_all, with\nonly one user (the dentry code).  At first, such function appears to make\nsense because we are really not interested in the result of isolating each\ndentry separately - all of them are going away anyway.  However, it\u0027s\nimplementation is buggy in the following way:\n\nWhen we call list_lru_dispose_all in fs/dcache.c, we scan all dentries\nmarking them with DCACHE_SHRINK_LIST.  However, this is done without the\nnlru-\u003elock taken.  The imediate result of that is that someone else may\nadd or remove the dentry from the LRU at the same time.  When list_lru_del\nhappens in that scenario we will see an element that is not yet marked\nwith DCACHE_SHRINK_LIST (even though it will be in the future) and\nobviously remove it from an lru where the element no longer is.  Since\nlist_lru_dispose_all will in effect count down nlru\u0027s nr_items and\nlist_lru_del will do the same, this will lead to an imbalance.\n\nThe solution for this would not be so simple: we can obviously just keep\nthe lru_lock taken, but then we have no guarantees that we will be able to\nacquire the dentry lock (dentry-\u003ed_lock).  To properly solve this, we need\na communication mechanism between the lru and dentry code, so they can\ncoordinate this with each other.\n\nSuch mechanism already exists in the form of the list_lru_walk_cb\ncallback.  So it is possible to construct a dcache-side prune function\nthat does the right thing only by calling list_lru_walk in a loop until no\nmore dentries are available.\n\nWith only one user, plus the fact that a sane solution for the problem\nwould involve boucing between dcache and list_lru anyway, I see little\njustification to keep the special case list_lru_dispose_all in tree.\n\nSigned-off-by: Glauber Costa \u003cglommer@openvz.org\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nAcked-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "6a4f496fd2fc74fa036732ae52c184952d6e3e37",
      "tree": "f0d68cd73062f87b54f070756775fd022fdf865e",
      "parents": [
        "5cedf721a7cdb54e9222133516c916210d836470"
      ],
      "author": {
        "name": "Glauber Costa",
        "email": "glommer@openvz.org",
        "time": "Wed Aug 28 10:18:02 2013 +1000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Sep 10 18:56:30 2013 -0400"
      },
      "message": "list_lru: per-node API\n\nThis patch adapts the list_lru API to accept an optional node argument, to\nbe used by NUMA aware shrinking functions.  Code that does not care about\nthe NUMA placement of objects can still call into the very same functions\nas before.  They will simply iterate over all nodes.\n\nSigned-off-by: Glauber Costa \u003cglommer@openvz.org\u003e\nCc: Dave Chinner \u003cdchinner@redhat.com\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: Adrian Hunter \u003cadrian.hunter@intel.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Artem Bityutskiy \u003cartem.bityutskiy@linux.intel.com\u003e\nCc: Arve Hjønnevåg \u003carve@android.com\u003e\nCc: Carlos Maiolino \u003ccmaiolino@redhat.com\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nCc: Daniel Vetter \u003cdaniel.vetter@ffwll.ch\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Gleb Natapov \u003cgleb@redhat.com\u003e\nCc: Greg Thelen \u003cgthelen@google.com\u003e\nCc: J. Bruce Fields \u003cbfields@redhat.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Jerome Glisse \u003cjglisse@redhat.com\u003e\nCc: John Stultz \u003cjohn.stultz@linaro.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Kent Overstreet \u003ckoverstreet@google.com\u003e\nCc: Kirill A. Shutemov \u003ckirill.shutemov@linux.intel.com\u003e\nCc: Marcelo Tosatti \u003cmtosatti@redhat.com\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Thomas Hellstrom \u003cthellstrom@vmware.com\u003e\nCc: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "3b1d58a4c96799eb4c92039e1b851b86f853548a",
      "tree": "3d72b6c0506c0a5138ef44dec8ab5c02fd5b29ba",
      "parents": [
        "f604156751db77e08afe47ce29fe8f3d51ad9b04"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Wed Aug 28 10:18:00 2013 +1000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Sep 10 18:56:30 2013 -0400"
      },
      "message": "list_lru: per-node list infrastructure\n\nNow that we have an LRU list API, we can start to enhance the\nimplementation.  This splits the single LRU list into per-node lists and\nlocks to enhance scalability.  Items are placed on lists according to the\nnode the memory belongs to.  To make scanning the lists efficient, also\ntrack whether the per-node lists have entries in them in a active\nnodemask.\n\nNote: We use a fixed-size array for the node LRU, this struct can be very\nbig if MAX_NUMNODES is big.  If this becomes a problem this is fixable by\nturning this into a pointer and dynamically allocating this to\nnr_node_ids.  This quantity is firwmare-provided, and still would provide\nroom for all nodes at the cost of a pointer lookup and an extra\nallocation.  Because that allocation will most likely come from a may very\nwell fail.\n\n[glommer@openvz.org: fix warnings, added note about node lru]\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Glauber Costa \u003cglommer@openvz.org\u003e\nReviewed-by: Greg Thelen \u003cgthelen@google.com\u003e\nAcked-by: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: Adrian Hunter \u003cadrian.hunter@intel.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Artem Bityutskiy \u003cartem.bityutskiy@linux.intel.com\u003e\nCc: Arve Hjønnevåg \u003carve@android.com\u003e\nCc: Carlos Maiolino \u003ccmaiolino@redhat.com\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nCc: Daniel Vetter \u003cdaniel.vetter@ffwll.ch\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Gleb Natapov \u003cgleb@redhat.com\u003e\nCc: Greg Thelen \u003cgthelen@google.com\u003e\nCc: J. Bruce Fields \u003cbfields@redhat.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Jerome Glisse \u003cjglisse@redhat.com\u003e\nCc: John Stultz \u003cjohn.stultz@linaro.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Kent Overstreet \u003ckoverstreet@google.com\u003e\nCc: Kirill A. Shutemov \u003ckirill.shutemov@linux.intel.com\u003e\nCc: Marcelo Tosatti \u003cmtosatti@redhat.com\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Thomas Hellstrom \u003cthellstrom@vmware.com\u003e\nCc: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    }
  ],
  "next": "f604156751db77e08afe47ce29fe8f3d51ad9b04"
}
