)]}'
{
  "log": [
    {
      "commit": "22a3e233ca08a2ddc949ba1ae8f6e16ec7ef1a13",
      "tree": "7ef158ba2c30e0dde2dc103d1904fae243759a6b",
      "parents": [
        "39302175c26d74be35715c05a0f342c9e64c21bf",
        "6ab3d5624e172c553004ecc862bfeac16d9d68b7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 30 15:39:30 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 30 15:39:30 2006 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/bunk/trivial\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/bunk/trivial:\n  Remove obsolete #include \u003clinux/config.h\u003e\n  remove obsolete swsusp_encrypt\n  arch/arm26/Kconfig typos\n  Documentation/IPMI typos\n  Kconfig: Typos in net/sched/Kconfig\n  v9fs: do not include linux/version.h\n  Documentation/DocBook/mtdnand.tmpl: typo fixes\n  typo fixes: specfic -\u003e specific\n  typo fixes in Documentation/networking/pktgen.txt\n  typo fixes: occuring -\u003e occurring\n  typo fixes: infomation -\u003e information\n  typo fixes: disadvantadge -\u003e disadvantage\n  typo fixes: aquire -\u003e acquire\n  typo fixes: mecanism -\u003e mechanism\n  typo fixes: bandwith -\u003e bandwidth\n  fix a typo in the RTC_CLASS help text\n  smb is no longer maintained\n\nManually merged trivial conflict in arch/um/kernel/vmlinux.lds.S\n"
    },
    {
      "commit": "f8891e5e1f93a128c3900f82035e8541357896a7",
      "tree": "97b078ac97970962b17c85d39fd64cb48dc01168",
      "parents": [
        "ca889e6c45e0b112cb2ca9d35afc66297519b5d5"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Fri Jun 30 01:55:45 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 30 11:25:36 2006 -0700"
      },
      "message": "[PATCH] Light weight event counters\n\nThe remaining counters in page_state after the zoned VM counter patches\nhave been applied are all just for show in /proc/vmstat.  They have no\nessential function for the VM.\n\nWe use a simple increment of per cpu variables.  In order to avoid the most\nsevere races we disable preempt.  Preempt does not prevent the race between\nan increment and an interrupt handler incrementing the same statistics\ncounter.  However, that race is exceedingly rare, we may only loose one\nincrement or so and there is no requirement (at least not in kernel) that\nthe vm event counters have to be accurate.\n\nIn the non preempt case this results in a simple increment for each\ncounter.  For many architectures this will be reduced by the compiler to a\nsingle instruction.  This single instruction is atomic for i386 and x86_64.\n And therefore even the rare race condition in an interrupt is avoided for\nboth architectures in most cases.\n\nThe patchset also adds an off switch for embedded systems that allows a\nbuilding of linux kernels without these counters.\n\nThe implementation of these counters is through inline code that hopefully\nresults in only a single instruction increment instruction being emitted\n(i386, x86_64) or in the increment being hidden though instruction\nconcurrency (EPIC architectures such as ia64 can get that done).\n\nBenefits:\n- VM event counter operations usually reduce to a single inline instruction\n  on i386 and x86_64.\n- No interrupt disable, only preempt disable for the preempt case.\n  Preempt disable can also be avoided by moving the counter into a spinlock.\n- Handling is similar to zoned VM counters.\n- Simple and easily extendable.\n- Can be omitted to reduce memory use for embedded use.\n\nReferences:\n\nRFC http://marc.theaimsgroup.com/?l\u003dlinux-kernel\u0026m\u003d113512330605497\u0026w\u003d2\nRFC http://marc.theaimsgroup.com/?l\u003dlinux-kernel\u0026m\u003d114988082814934\u0026w\u003d2\nlocal_t http://marc.theaimsgroup.com/?l\u003dlinux-kernel\u0026m\u003d114991748606690\u0026w\u003d2\nV2 http://marc.theaimsgroup.com/?t\u003d115014808400007\u0026r\u003d1\u0026w\u003d2\nV3 http://marc.theaimsgroup.com/?l\u003dlinux-kernel\u0026m\u003d115024767022346\u0026w\u003d2\nV4 http://marc.theaimsgroup.com/?l\u003dlinux-kernel\u0026m\u003d115047968808926\u0026w\u003d2\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "347ce434d57da80fd5809c0c836f206a50999c26",
      "tree": "f730d151be77977f594e5cc083a93bbeb4c602cc",
      "parents": [
        "65ba55f500a37272985d071c9bbb35256a2f7c14"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Fri Jun 30 01:55:35 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 30 11:25:34 2006 -0700"
      },
      "message": "[PATCH] zoned vm counters: conversion of nr_pagecache to per zone counter\n\nCurrently a single atomic variable is used to establish the size of the page\ncache in the whole machine.  The zoned VM counters have the same method of\nimplementation as the nr_pagecache code but also allow the determination of\nthe pagecache size per zone.\n\nRemove the special implementation for nr_pagecache and make it a zoned counter\nnamed NR_FILE_PAGES.\n\nUpdates of the page cache counters are always performed with interrupts off.\nWe can therefore use the __ variant here.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "6ab3d5624e172c553004ecc862bfeac16d9d68b7",
      "tree": "6d98881fe91fd9583c109208d5c27131b93fa248",
      "parents": [
        "e02169b682bc448ccdc819dc8639ed34a23cedd8"
      ],
      "author": {
        "name": "Jörn Engel",
        "email": "joern@wohnheim.fh-wedel.de",
        "time": "Fri Jun 30 19:25:36 2006 +0200"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Fri Jun 30 19:25:36 2006 +0200"
      },
      "message": "Remove obsolete #include \u003clinux/config.h\u003e\n\nSigned-off-by: Jörn Engel \u003cjoern@wohnheim.fh-wedel.de\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\n"
    },
    {
      "commit": "81b0c8713385ce1b1b9058e916edcf9561ad76d6",
      "tree": "4c5e8fde3d15503c609d5c5f74911f95fc528f03",
      "parents": [
        "0686cd8fbe3e5fb1441ae84b9cbc813f9297b879"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Thu Jun 29 02:24:26 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Thu Jun 29 10:26:20 2006 -0700"
      },
      "message": "[PATCH] generic_file_buffered_write(): handle zero-length iovec segments\n\nThe recent generic_file_write() deadlock fix caused\ngeneric_file_buffered_write() to loop inifinitely when presented with a\nzero-length iovec segment.  Fix.\n\nNote that this fix deliberately avoids calling -\u003eprepare_write(),\n-\u003ecommit_write() etc with a zero-length write.  This is because I don\u0027t trust\nall filesystems to get that right.\n\nThis is a cautious approach, for 2.6.17.x.  For 2.6.18 we should just go ahead\nand call -\u003eprepare_write() and -\u003ecommit_write() with the zero length and fix\nany broken filesystems.  So I\u0027ll make that change once this code is stabilised\nand backported into 2.6.17.x.\n\nThe reason for preferring to call -\u003eprepare_write() and -\u003ecommit_write() with\nthe zero-length segment: a zero-length segment _should_ be sufficiently\nuncommon that this is the correct way of handling it.  We don\u0027t want to\noptimise for poorly-written userspace at the expense of well-written\nuserspace.\n\nCc: \"Vladimir V. Saveliev\" \u003cvs@namesys.com\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Chris Wright \u003cchrisw@sous-sol.org\u003e\nCc: Greg KH \u003cgreg@kroah.com\u003e\nCc: \u003cstable@kernel.org\u003e\nCc: walt \u003cwa1ter@myrealbox.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f5e54d6e53a20cef45af7499e86164f0e0d16bb2",
      "tree": "cb92acbb89b84796261bf5563182261ec5654127",
      "parents": [
        "a052b68b1e7a31f1e6a721290035e9deb0f6fed9"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Wed Jun 28 04:26:44 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Jun 28 14:59:04 2006 -0700"
      },
      "message": "[PATCH] mark address_space_operations const\n\nSame as with already do with the file operations: keep them in .rodata and\nprevents people from doing runtime patching.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Steven French \u003csfrench@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "6527c2bdf1f833cc18e8f42bd97973d583e4aa83",
      "tree": "737055ae276cdfa75e7b3e55a3ebdd1f88105606",
      "parents": [
        "1c0f16e5cdff59f3b132a1b0c0d44a941f8813d2"
      ],
      "author": {
        "name": "Vladimir V. Saveliev",
        "email": "vs@namesys.com",
        "time": "Tue Jun 27 02:53:57 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Jun 27 17:32:39 2006 -0700"
      },
      "message": "[PATCH] generic_file_buffered_write(): deadlock on vectored write\n\ngeneric_file_buffered_write() prefaults in user pages in order to avoid\ndeadlock on copying from the same page as write goes to.\n\nHowever, it looks like there is a problem when write is vectored:\nfault_in_pages_readable brings in current segment or its part (maxlen).\nOTOH, filemap_copy_from_user_iovec is called to copy number of bytes\n(bytes) which may exceed current segment, so filemap_copy_from_user_iovec\nswitches to the next segment which is not brought in yet.  Pagefault is\ngenerated.  That causes the deadlock if pagefault is for the same page\nwrite goes to: page being written is locked and not uptodate, pagefault\nwill deadlock trying to lock locked page.\n\n[akpm@osdl.org: somewhat rewritten]\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "76d42bd96984832c4ea8bc8cbd74e496ac31409e",
      "tree": "138fb5c39d671166485cf2e16e450332daeb7081",
      "parents": [
        "78dbe706e22f54bce61571ad837238382e1ba5f9"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "wfg@mail.ustc.edu.cn",
        "time": "Sun Jun 25 05:48:43 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Jun 25 10:01:17 2006 -0700"
      },
      "message": "[PATCH] readahead: backoff on I/O error\n\nBackoff readahead size exponentially on I/O error.\n\nMichael Tokarev \u003cmjt@tls.msk.ru\u003e described the problem as:\n\n[QUOTE]\nSuppose there\u0027s a CD-rom with a scratch/etc, one sector is unreadable.\nIn order to \"fix\" it, one have to read it and write to another CD-rom,\nor something.. or just ignore the error (if it\u0027s just a skip in a video\nstream).  Let\u0027s assume the unreadable block is number U.\n\nBut current behavior is just insane.  An application requests block\nnumber N, which is before U. Kernel tries to read-ahead blocks N..U.\nCdrom drive tries to read it, re-read it.. for some time.  Finally,\nwhen all the N..U-1 blocks are read, kernel returns block number N\n(as requested) to an application, successefully.\n\nNow an app requests block number N+1, and kernel tries to read\nblocks N+1..U+1.  Retrying again as in previous step.\n\nAnd so on, up to when an app requests block number U-1.  And when,\nfinally, it requests block U, it receives read error.\n\nSo, kernel currentry tries to re-read the same failing block as\nmany times as the current readahead value (256 (times?) by default).\n\nThis whole process already killed my cdrom drive (I posted about it\nto LKML several months ago) - literally, the drive has fried, and\ndoes not work anymore.  Ofcourse that problem was a bug in firmware\n(or whatever) of the drive *too*, but.. main problem with that is\ncurrent readahead logic as described above.\n[/QUOTE]\n\nWhich was confirmed by Jens Axboe \u003caxboe@suse.de\u003e:\n\n[QUOTE]\nFor ide-cd, it tends do only end the first part of the request on a\nmedium error. So you may see a lot of repeats :/\n[/QUOTE]\n\nWith this patch, retries are expected to be reduced from, say, 256, to 5.\n\n[akpm@osdl.org: cleanups]\nSigned-off-by: Wu Fengguang \u003cwfg@mail.ustc.edu.cn\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "01408c4939479ec46c15aa7ef6e2406be50eeeca",
      "tree": "106ee144cc7214cc5cb78bc35a49fc654ef16fe9",
      "parents": [
        "5f507d9e05b4dbfee34f3d967623ad3fbf0f28b3"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sun Jun 25 05:47:58 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Jun 25 10:01:09 2006 -0700"
      },
      "message": "[PATCH] Prepare for __copy_from_user_inatomic to not zero missed bytes\n\nThe problem is that when we write to a file, the copy from userspace to\npagecache is first done with preemption disabled, so if the source address is\nnot immediately available the copy fails *and* *zeros* *the* *destination*.\n\nThis is a problem because a concurrent read (which admittedly is an odd thing\nto do) might see zeros rather that was there before the write, or what was\nthere after, or some mixture of the two (any of these being a reasonable thing\nto see).\n\nIf the copy did fail, it will immediately be retried with preemption\nre-enabled so any transient problem with accessing the source won\u0027t cause an\nerror.\n\nThe first copying does not need to zero any uncopied bytes, and doing so\ncauses the problem.  It uses copy_from_user_atomic rather than copy_from_user\nso the simple expedient is to change copy_from_user_atomic to *not* zero out\nbytes on failure.\n\nThe first of these two patches prepares for the change by fixing two places\nwhich assume copy_from_user_atomic does zero the tail.  The two usages are\nvery similar pieces of code which copy from a userspace iovec into one or more\npage-cache pages.  These are changed to remove the assumption.\n\nThe second patch changes __copy_from_user_inatomic* to not zero the tail.\nOnce these are accepted, I will look at similar patches of other architectures\nwhere this is important (ppc, mips and sparc being the ones I can find).\n\nThis patch:\n\nThere is a problem with __copy_from_user_inatomic zeroing the tail of the\nbuffer in the case of an error.  As it is called in atomic context, the error\nmay be transient, so it results in zeros being written where maybe they\nshouldn\u0027t be.\n\nIn the usage in filemap, this opens a window for a well timed read to see data\n(zeros) which is not consistent with any ordering of reads and writes.\n\nMost cases where __copy_from_user_inatomic is called, a failure results in\n__copy_from_user being called immediately.  As long as the latter zeros the\ntail, the former doesn\u0027t need to.  However in *copy_from_user_iovec\nimplementations (in both filemap and ntfs/file), it is assumed that\ncopy_from_user_inatomic will zero the tail.\n\nThis patch removes that assumption, so that after this patch it will\nbe safe for copy_from_user_inatomic to not zero the tail.\n\nThis patch also adds some commentary to filemap.h and asm-i386/uaccess.h.\n\nAfter this patch, all architectures that might disable preempt when\nkmap_atomic is called need to have their __copy_from_user_inatomic* \"fixed\".\nThis includes\n - powerpc\n - i386\n - mips\n - sparc\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: Anton Altaparmakov \u003caia21@cantab.net\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "c22ce143d15eb288543fe9873e1c5ac1c01b69a1",
      "tree": "dc7d457b8952fc50dfc90df659b35de4117c61fc",
      "parents": [
        "7dbdf43cfa635ddc3701cc8d1eab07597cd731c0"
      ],
      "author": {
        "name": "Hiro Yoshioka",
        "email": "hyoshiok@miraclelinux.com",
        "time": "Fri Jun 23 02:04:16 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 23 07:42:56 2006 -0700"
      },
      "message": "[PATCH] x86: cache pollution aware __copy_from_user_ll()\n\nUse the x86 cache-bypassing copy instructions for copy_from_user().\n\nSome performance data are\n\nTotal of GLOBAL_POWER_EVENTS (CPU cycle samples)\n\n2.6.12.4.orig    1921587\n2.6.12.4.nt      1599424\n1599424/1921587\u003d83.23% (16.77% reduction)\n\nBSQ_CACHE_REFERENCE (L3 cache miss)\n2.6.12.4.orig      57427\n2.6.12.4.nt        20858\n20858/57427\u003d36.32% (63.7% reduction)\n\nL3 cache miss reduction of __copy_from_user_ll\nsamples  %\n37408    65.1412  vmlinux                  __copy_from_user_ll\n23        0.1103  vmlinux                  __copy_user_zeroing_intel_nocache\n23/37408\u003d0.061% (99.94% reduction)\n\nTop 5 of 2.6.12.4.nt\nCounted GLOBAL_POWER_EVENTS events (time during which processor is not stopped) with a unit mask of 0x01 (mandatory) count 100000\nsamples  %        app name                 symbol name\n128392    8.0274  vmlinux                  __copy_user_zeroing_intel_nocache\n64206     4.0143  vmlinux                  journal_add_journal_head\n59746     3.7355  vmlinux                  do_get_write_access\n47674     2.9807  vmlinux                  journal_put_journal_head\n46021     2.8774  vmlinux                  journal_dirty_metadata\npattern9-0-cpu4-0-09011728/summary.out\n\nCounted BSQ_CACHE_REFERENCE events (cache references seen by the bus unit) with a unit mask of 0x3f (multiple flags) count 3000\nsamples  %        app name                 symbol name\n69755     4.2861  vmlinux                  __copy_user_zeroing_intel_nocache\n55685     3.4215  vmlinux                  journal_add_journal_head\n52371     3.2179  vmlinux                  __find_get_block\n45504     2.7960  vmlinux                  journal_put_journal_head\n36005     2.2123  vmlinux                  journal_stop\npattern9-0-cpu4-0-09011744/summary.out\n\nCounted BSQ_CACHE_REFERENCE events (cache references seen by the bus unit) with a unit mask of 0x200 (read 3rd level cache miss) count 3000\nsamples  %        app name                 symbol name\n1147      5.4994  vmlinux                  journal_add_journal_head\n881       4.2240  vmlinux                  journal_dirty_data\n872       4.1809  vmlinux                  blk_rq_map_sg\n734       3.5192  vmlinux                  journal_commit_transaction\n617       2.9582  vmlinux                  radix_tree_delete\npattern9-0-cpu4-0-09011731/summary.out\n\niozone results are\n\noriginal 2.6.12.4 CPU time \u003d 207.768 sec\ncache aware       CPU time \u003d 184.783 sec\n(three times run)\n184.783/207.768\u003d88.94% (11.06% reduction)\n\noriginal:\npattern9-0-cpu4-0-08191720/iozone.out:  CPU Utilization: Wall time   45.997    CPU time   64.527    CPU utilization 140.28 %\npattern9-0-cpu4-0-08191741/iozone.out:  CPU Utilization: Wall time   46.878    CPU time   71.933    CPU utilization 153.45 %\npattern9-0-cpu4-0-08191743/iozone.out:  CPU Utilization: Wall time   45.152    CPU time   71.308    CPU utilization 157.93 %\n\ncache awre:\npattern9-0-cpu4-0-09011728/iozone.out:  CPU Utilization: Wall time   44.842    CPU time   62.465    CPU utilization 139.30 %\npattern9-0-cpu4-0-09011731/iozone.out:  CPU Utilization: Wall time   44.718    CPU time   59.273    CPU utilization 132.55 %\npattern9-0-cpu4-0-09011744/iozone.out:  CPU Utilization: Wall time   44.367    CPU time   63.045    CPU utilization 142.10 %\n\nSigned-off-by: Hiro Yoshioka \u003chyoshiok@miraclelinux.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "485bb99b49a173a22a0bbf4e189465414947ecac",
      "tree": "28d0975d4d205162ce1bd0e52537fc22b766e719",
      "parents": [
        "800590f523bf3bde9fa6c8e4d6763e4bf6a2c8ec"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "rdunlap@xenotime.net",
        "time": "Fri Jun 23 02:03:49 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 23 07:42:52 2006 -0700"
      },
      "message": "[PATCH] kernel-doc for mm/filemap.c\n\nmm/filemap.c:\n- add lots of kernel-doc;\n- fix some typos and kernel-doc errors;\n- drop some blank lines between function close and EXPORT_SYMBOL();\n\nSigned-off-by: Randy Dunlap \u003crdunlap@xenotime.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "111ebb6e6f7bd7de6d722c5848e95621f43700d9",
      "tree": "bb00b13001db9be201e9b6d31468a79f4d1240bf",
      "parents": [
        "4c91c3648c620003cb7b21b8858f36cd6132e168"
      ],
      "author": {
        "name": "OGAWA Hirofumi",
        "email": "hirofumi@mail.parknet.co.jp",
        "time": "Fri Jun 23 02:03:26 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 23 07:42:49 2006 -0700"
      },
      "message": "[PATCH] writeback: fix range handling\n\nWhen a writeback_control\u0027s `start\u0027 and `end\u0027 fields are used to\nindicate a one-byte-range starting at file offset zero, the required\nvalues of .start\u003d0,.end\u003d0 mean that the -\u003ewritepages() implementation\nhas no way of telling that it is being asked to perform a range\nrequest.  Because we\u0027re currently overloading (start \u003d\u003d 0 \u0026\u0026 end \u003d\u003d 0)\nto mean \"this is not a write-a-range request\".\n\nTo make all this sane, the patch changes range of writeback_control.\n\nSo caller does: If it is calling -\u003ewritepages() to write pages, it\nsets range (range_start/end or range_cyclic) always.\n\nAnd if range_cyclic is true, -\u003ewritepages() thinks the range is\ncyclic, otherwise it just uses range_start and range_end.\n\nThis patch does,\n\n    - Add LLONG_MAX, LLONG_MIN, ULLONG_MAX to include/linux/kernel.h\n      -1 is usually ok for range_end (type is long long). But, if someone did,\n\n\t\trange_end +\u003d val;\t\trange_end is \"val - 1\"\n\t\tu64val \u003d range_end \u003e\u003e bits;\tu64val is \"~(0ULL)\"\n\n      or something, they are wrong. So, this adds LLONG_MAX to avoid nasty\n      things, and uses LLONG_MAX for range_end.\n\n    - All callers of -\u003ewritepages() sets range_start/end or range_cyclic.\n\n    - Fix updates of -\u003ewriteback_index. It seems already bit strange.\n      If it starts at 0 and ended by check of nr_to_write, this last\n      index may reduce chance to scan end of file.  So, this updates\n      -\u003ewriteback_index only if range_cyclic is true or whole-file is\n      scanned.\n\nSigned-off-by: OGAWA Hirofumi \u003chirofumi@mail.parknet.co.jp\u003e\nCc: Nathan Scott \u003cnathans@sgi.com\u003e\nCc: Anton Altaparmakov \u003caia21@cantab.net\u003e\nCc: Steven French \u003csfrench@us.ibm.com\u003e\nCc: \"Vladimir V. Saveliev\" \u003cvs@namesys.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "ebf43500ef148a380bd132743c3fc530111ac620",
      "tree": "01ddb60f5662cf92b96b0468bf9820518a611209",
      "parents": [
        "eb645a24de82496434cc81171d7f350edb327399"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Thu Apr 27 08:46:01 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Thu Apr 27 08:59:48 2006 +0200"
      },
      "message": "[PATCH] Add find_get_pages_contig(): contiguous variant of find_get_pages()\n\nfind_get_pages_contig() will break out if we hit a hole in the page cache.\nFrom Andrew Morton, small modifications and documentation by me.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "ebcf28e1c7a295f3321249dd235ad2e45938fdd9",
      "tree": "fdd2e131e627af55d3741a7fafad0edaa61410c1",
      "parents": [
        "469eb4d03878b676418f853011ebfb54ccf83a5e"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Fri Mar 24 03:18:04 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Mar 24 07:33:25 2006 -0800"
      },
      "message": "[PATCH] fadvise(): write commands\n\nAdd two new linux-specific fadvise extensions():\n\nLINUX_FADV_ASYNC_WRITE: start async writeout of any dirty pages between file\noffsets `offset\u0027 and `offset+len\u0027.  Any pages which are currently under\nwriteout are skipped, whether or not they are dirty.\n\nLINUX_FADV_WRITE_WAIT: wait upon writeout of any dirty pages between file\noffsets `offset\u0027 and `offset+len\u0027.\n\nBy combining these two operations the application may do several things:\n\nLINUX_FADV_ASYNC_WRITE: push some or all of the dirty pages at the disk.\n\nLINUX_FADV_WRITE_WAIT, LINUX_FADV_ASYNC_WRITE: push all of the currently dirty\npages at the disk.\n\nLINUX_FADV_WRITE_WAIT, LINUX_FADV_ASYNC_WRITE, LINUX_FADV_WRITE_WAIT: push all\nof the currently dirty pages at the disk, wait until they have been written.\n\nIt should be noted that none of these operations write out the file\u0027s\nmetadata.  So unless the application is strictly performing overwrites of\nalready-instantiated disk blocks, there are no guarantees here that the data\nwill be available after a crash.\n\nTo complete this suite of operations I guess we should have a \"sync file\nmetadata only\" operation.  This gives applications access to all the building\nblocks needed for all sorts of sync operations.  But sync-metadata doesn\u0027t fit\nwell with the fadvise() interface.  Probably it should be a new syscall:\nsys_fmetadatasync().\n\nThe patch also diddles with the meaning of `endbyte\u0027 in sys_fadvise64_64().\nIt is made to represent that last affected byte in the file (ie: it is\ninclusive).  Generally, all these byterange and pagerange functions are\ninclusive so we can easily represent EOF with -1.\n\nAs Ulrich notes, these two functions are somewhat abusive of the fadvise()\nconcept, which appears to be \"set the future policy for this fd\".\n\nBut these commands are a perfect fit with the fadvise() impementation, and\nseveral of the existing fadvise() commands are synchronous and don\u0027t affect\nfuture policy either.   I think we can live with the slight incongruity.\n\nCc: Michael Kerrisk \u003cmtk-manpages@gmx.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "469eb4d03878b676418f853011ebfb54ccf83a5e",
      "tree": "38b10385c6241778ca88c6015ded3ba68d39a23c",
      "parents": [
        "604bf5a216e7f2d97cdf62614ca1281921531040"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Fri Mar 24 03:17:45 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Mar 24 07:33:25 2006 -0800"
      },
      "message": "[PATCH] filemap_fdatawrite_range() api: clarify -end parameter\n\nI had trouble understanding working out whether filemap_fdatawrite_range()\u0027s\n`end\u0027 parameter describes the last-byte-to-be-written or the last-plus-one.\nClarify that in comments.\n\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "44110fe385af23ca5eee8a6ad4ff55d50339097a",
      "tree": "50ed2bfe054b8e35968d8e4a5fbe95c8b3db843b",
      "parents": [
        "825a46af5ac171f9f41f794a0a00165588ba1589"
      ],
      "author": {
        "name": "Paul Jackson",
        "email": "pj@sgi.com",
        "time": "Fri Mar 24 03:16:04 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Mar 24 07:33:22 2006 -0800"
      },
      "message": "[PATCH] cpuset memory spread page cache implementation and hooks\n\nChange the page cache allocation calls to support cpuset memory spreading.\n\nSee the previous patch, cpuset_mem_spread, for an explanation of cpuset memory\nspreading.\n\nOn systems without cpusets configured in the kernel, this is no change.\n\nOn systems with cpusets configured in the kernel, but the \"memory_spread\"\ncpuset option not enabled for the current tasks cpuset, this adds a call to a\ncpuset routine and failed bit test of the processor state flag PF_SPREAD_PAGE.\n\nOn tasks in cpusets with \"memory_spread\" enabled, this adds a call to a cpuset\nroutine that computes which of the tasks mems_allowed nodes should be\npreferred for this allocation.\n\nIf memory spreading applies to a particular allocation, then any other NUMA\nmempolicy does not apply.\n\nSigned-off-by: Paul Jackson \u003cpj@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "0f8053a509ceba4a077a50ea7b77039b5559b428",
      "tree": "5a66021540395e20256f38a3a45174617428a832",
      "parents": [
        "4fa4f53bf92139595cae6f1a3d972fc0a3451d29"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Wed Mar 22 00:08:33 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Mar 22 07:54:01 2006 -0800"
      },
      "message": "[PATCH] mm: make __put_page internal\n\nRemove __put_page from outside the core mm/.  It is dangerous because it does\nnot handle compound pages nicely, and misses 1-\u003e0 transitions.  If a user\nlater appears that really needs the extra speed we can reevaluate.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "053837fce7aa79025ed57656855df09f80175527",
      "tree": "05d7615894131a368fc4943f641b11acdd2ae694",
      "parents": [
        "e236a166b2bc437769a9b8b5d19186a3761bde48"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Wed Jan 18 17:42:27 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Jan 18 19:20:17 2006 -0800"
      },
      "message": "[PATCH] mm: migration page refcounting fix\n\nMigration code currently does not take a reference to target page\nproperly, so between unlocking the pte and trying to take a new\nreference to the page with isolate_lru_page, anything could happen to\nit.\n\nFix this by holding the pte lock until we get a chance to elevate the\nrefcount.\n\nOther small cleanups while we\u0027re here.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "c59ede7b78db329949d9cdcd7064e22d357560ef",
      "tree": "f9dc9d464fdad5bfd464d983e77c1af031389dda",
      "parents": [
        "e16885c5ad624a6efe1b1bf764e075d75f65a788"
      ],
      "author": {
        "name": "Randy.Dunlap",
        "email": "rdunlap@xenotime.net",
        "time": "Wed Jan 11 12:17:46 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Jan 11 18:42:13 2006 -0800"
      },
      "message": "[PATCH] move capable() to capability.h\n\n- Move capable() from sched.h to capability.h;\n\n- Use \u003clinux/capability.h\u003e where capable() is used\n\t(in include/, block/, ipc/, kernel/, a few drivers/,\n\tmm/, security/, \u0026 sound/;\n\tmany more drivers/ to go)\n\nSigned-off-by: Randy Dunlap \u003crdunlap@xenotime.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "870f481793b585323fbda3e87c54efc116f46351",
      "tree": "08dce269f14c18ae1b1682d3cb0f149b938d40bb",
      "parents": [
        "3542c6e18f6470bad2bde1e94331e4f488a8d3f1"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Mon Jan 09 20:52:01 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Jan 10 08:01:30 2006 -0800"
      },
      "message": "[PATCH] replace inode_update_time with file_update_time\n\nTo allow various options to work per-mount instead of per-sb we need a\nstruct vfsmount when updating ctime and mtime.  This preparation patch\nreplaces the inode_update_time routine with a file_update_atime routine so\nwe can easily get at the vfsmount.  (and the file makes more sense in this\ncontext anyway).  Also get rid of the unused second argument - we always\nwant to update the ctime when calling this routine.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Al Viro \u003cviro@ftp.linux.org.uk\u003e\nCc: Anton Altaparmakov \u003caia21@cantab.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1b1dcc1b57a49136f118a0f16367256ff9994a69",
      "tree": "b0b36d4f41d28c9d6514fb309d33c1a084d6309b",
      "parents": [
        "794ee1baee1c26be40410233e6c20bceb2b03c08"
      ],
      "author": {
        "name": "Jes Sorensen",
        "email": "jes@sgi.com",
        "time": "Mon Jan 09 15:59:24 2006 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@hera.kernel.org",
        "time": "Mon Jan 09 15:59:24 2006 -0800"
      },
      "message": "[PATCH] mutex subsystem, semaphore to mutex: VFS, -\u003ei_sem\n\nThis patch converts the inode semaphore to a mutex. I have tested it on\nXFS and compiled as much as one can consider on an ia64. Anyway your\nluck with it might be different.\n\nModified-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n\n(finished the conversion)\n\nSigned-off-by: Jes Sorensen \u003cjes@sgi.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "28fd129827b00e12829d48a5290f46277600619b",
      "tree": "38e50e1b88965fec41ea5b36aa557fb5c2b1ca73",
      "parents": [
        "05eb0b51fb46430050d5873458612f53e0234f2e"
      ],
      "author": {
        "name": "OGAWA Hirofumi",
        "email": "hirofumi@mail.parknet.co.jp",
        "time": "Sun Jan 08 01:02:14 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Jan 08 20:13:47 2006 -0800"
      },
      "message": "[PATCH] Fix and add EXPORT_SYMBOL(filemap_write_and_wait)\n\nThis patch add EXPORT_SYMBOL(filemap_write_and_wait) and use it.\n\nSee mm/filemap.c:\n\nAnd changes the filemap_write_and_wait() and filemap_write_and_wait_range().\n\nCurrent filemap_write_and_wait() doesn\u0027t wait if filemap_fdatawrite()\nreturns error.  However, even if filemap_fdatawrite() returned an\nerror, it may have submitted the partially data pages to the device.\n(e.g. in the case of -ENOSPC)\n\n\u003cquotation\u003e\nAndrew Morton writes,\n\nIf filemap_fdatawrite() returns an error, this might be due to some\nI/O problem: dead disk, unplugged cable, etc.  Given the generally\ncrappy quality of the kernel\u0027s handling of such exceptions, there\u0027s a\ngood chance that the filemap_fdatawait() will get stuck in D state\nforever.\n\u003c/quotation\u003e\n\nSo, this patch doesn\u0027t wait if filemap_fdatawrite() returns the -EIO.\n\nTrond, could you please review the nfs part?  Especially I\u0027m not sure,\nnfs must use the \"filemap_fdatawrite(inode-\u003ei_mapping) \u003d\u003d 0\", or not.\n\nAcked-by: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "268fc16e343b4f8e249468747db2e658da46a814",
      "tree": "871a1b1ad8250d1f5b0e4585fe32d00f90443bd3",
      "parents": [
        "e5174baaea7585760f02eef23b225847d209a8db"
      ],
      "author": {
        "name": "OGAWA Hirofumi",
        "email": "hirofumi@mail.parknet.co.jp",
        "time": "Sun Jan 08 01:02:12 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Jan 08 20:13:47 2006 -0800"
      },
      "message": "[PATCH] export/change sync_page_range/_nolock()\n\nThis exports/changes the sync_page_range/_nolock().  The fatfs needs\nsync_page_range/_nolock() for expanding truncate, and changes \"size_t count\"\nto \"loff_t count\".\n\nSigned-off-by: OGAWA Hirofumi \u003chirofumi@mail.parknet.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "bbfbb7cec9dd7266534b2b4b9c8be2fa425bbfc9",
      "tree": "d1949123224d1674a7192743d188ff652c964663",
      "parents": [
        "a226f6c899799fe2c4919daa0767ac579c88f7bd"
      ],
      "author": {
        "name": "Nikita Danilov",
        "email": "nikita@clusterfs.com",
        "time": "Fri Jan 06 00:11:08 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jan 06 08:33:26 2006 -0800"
      },
      "message": "[PATCH] find_lock_page(): call __lock_page() directly.\n\nAs find_lock_page() already checks with TestSetPageLocked() that page is\nlocked, there is no need to call lock_page() that will try-lock page again\n(chances of page being unlocked in between are small).  Call __lock_page()\ndirectly, this saves one atomic operation.\n\nAlso, mark truncate-while-slept path as unlikely while we are here.\n\n(akpm: ug.  But this is actually a common path for normal old read()s against\na page which is under readahead I/O so ho-hum.)\n\nSigned-off-by: Nikita Danilov \u003cdanilov@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "994fc28c7b1e697ac56befe4aecabf23f0689f46",
      "tree": "da36d162e9bd077e9b5be385b28e2db90475c263",
      "parents": [
        "7063fbf2261194f72ee75afca67b3b38b554b5fa"
      ],
      "author": {
        "name": "Zach Brown",
        "email": "zach.brown@oracle.com",
        "time": "Thu Dec 15 14:28:17 2005 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Jan 03 11:45:42 2006 -0800"
      },
      "message": "[PATCH] add AOP_TRUNCATED_PAGE, prepend AOP_ to WRITEPAGE_ACTIVATE\n\nreadpage(), prepare_write(), and commit_write() callers are updated to\nunderstand the special return code AOP_TRUNCATED_PAGE in the style of\nwritepage() and WRITEPAGE_ACTIVATE.  AOP_TRUNCATED_PAGE tells the caller that\nthe callee has unlocked the page and that the operation should be tried again\nwith a new page.  OCFS2 uses this to detect and work around a lock inversion in\nits aop methods.  There should be no change in behaviour for methods that don\u0027t\nreturn AOP_TRUNCATED_PAGE.\n\nWRITEPAGE_ACTIVATE is also prepended with AOP_ for consistency and they are\nmade enums so that kerneldoc can be used to document their semantics.\n\nSigned-off-by: Zach Brown \u003czach.brown@oracle.com\u003e\n"
    },
    {
      "commit": "07808b74e7dab1aa385e698795875337d72daf7d",
      "tree": "3b593c31e6e58364f4001105bfeebefa94708209",
      "parents": [
        "1dff7f3db5f045ccbfeca5bb00b0958a78501557"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@suse.de",
        "time": "Sat Nov 05 17:25:53 2005 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Nov 14 19:55:14 2005 -0800"
      },
      "message": "[PATCH] x86_64: Remove obsolete ARCH_HAS_ATOMIC_UNSIGNED and page_flags_t\n\nHas been introduced for x86-64 at some point to save memory\nin struct page, but has been obsolete for some time. Just\nremove it.\n\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "39e88ca2c9d0f6d1e9f34ea2a6e86a652bb69a7a",
      "tree": "6ee9c7f3c26ac47bb45cc835e14dc9552ceed095",
      "parents": [
        "30e0fca6c1d7d26f3f2daa4dd2b12c51dadc778a"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Sun Oct 30 15:02:40 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Oct 30 17:37:22 2005 -0800"
      },
      "message": "[PATCH] fs: error case fix in __generic_file_aio_read\n\nWhen __generic_file_aio_read() hits an error during reading, it reports the\nerror iff nothing has successfully been read yet.  This is condition - when\nan error occurs, if nothing has been read/written, report the error code;\notherwise, report the amount of bytes successfully transferred upto that\npoint.\n\nThis corner case can be exposed by performing readv(2) with the following\niov.\n\n iov[0] \u003d len0 @ ptr0\n iov[1] \u003d len1 @ NULL (or any other invalid pointer)\n iov[2] \u003d len2 @ ptr2\n\nWhen file size is enough, performing above readv(2) results in\n\n len0 bytes from file_pos @ ptr0\n len2 bytes from file_pos + len0 @ ptr2\n\nAnd the return value is len0 + len2.  Test program is attached to this\nmail.\n\nThis patch makes __generic_file_aio_read()\u0027s error handling identical to\nother functions.\n\n#include \u003cstdio.h\u003e\n#include \u003cstdlib.h\u003e\n#include \u003csys/types.h\u003e\n#include \u003csys/stat.h\u003e\n#include \u003cfcntl.h\u003e\n#include \u003cunistd.h\u003e\n#include \u003csys/uio.h\u003e\n#include \u003cerrno.h\u003e\n#include \u003cstring.h\u003e\n\nint main(int argc, char **argv)\n{\n\tconst char *path;\n\tstruct stat stbuf;\n\tsize_t len0, len1;\n\tvoid *buf0, *buf1;\n\tstruct iovec iov[3];\n\tint fd, i;\n\tssize_t ret;\n\n\tif (argc \u003c 2) {\n\t\tfprintf(stderr, \"Usage: testreadv path (better be a \"\n\t\t\t\"small text file)\\n\");\n\t\treturn 1;\n\t}\n\tpath \u003d argv[1];\n\n\tif (stat(path, \u0026stbuf) \u003c 0) {\n\t\tperror(\"stat\");\n\t\treturn 1;\n\t}\n\n\tlen0 \u003d stbuf.st_size / 2;\n\tlen1 \u003d stbuf.st_size - len0;\n\n\tif (!len0 || !len1) {\n\t\tfprintf(stderr, \"Dude, file is too small\\n\");\n\t\treturn 1;\n\t}\n\n\tif ((fd \u003d open(path, O_RDONLY)) \u003c 0) {\n\t\tperror(\"open\");\n\t\treturn 1;\n\t}\n\n\tif (!(buf0 \u003d malloc(len0)) || !(buf1 \u003d malloc(len1))) {\n\t\tperror(\"malloc\");\n\t\treturn 1;\n\t}\n\n\tmemset(buf0, 0, len0);\n\tmemset(buf1, 0, len1);\n\n\tiov[0].iov_base \u003d buf0;\n\tiov[0].iov_len \u003d len0;\n\tiov[1].iov_base \u003d NULL;\n\tiov[1].iov_len \u003d len1;\n\tiov[2].iov_base \u003d buf1;\n\tiov[2].iov_len \u003d len1;\n\n\tprintf(\"vector \");\n\tfor (i \u003d 0; i \u003c 3; i++)\n\t\tprintf(\"%p:%zu \", iov[i].iov_base, iov[i].iov_len);\n\tprintf(\"\\n\");\n\n\tret \u003d readv(fd, iov, 3);\n\tif (ret \u003c 0)\n\t\tperror(\"readv\");\n\n\tprintf(\"readv returned %zd\\nbuf0 \u003d [%s]\\nbuf1 \u003d [%s]\\n\",\n\t       ret, (char *)buf0, (char *)buf1);\n\n\treturn 0;\n}\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nCc: Benjamin LaHaise \u003cbcrl@kvack.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "b1459461f1e0abd5c28317d6bff6f2ca612a719d",
      "tree": "32ba1d395e8532d14749c2d95ff57fdba2aaddc2",
      "parents": [
        "2f96996de0eda378df2a5f857ee1ef615ae10a4f"
      ],
      "author": {
        "name": "Nikita Danilov",
        "email": "nikita@clusterfs.com",
        "time": "Sat Oct 29 18:17:02 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:45 2005 -0700"
      },
      "message": "[PATCH] mm/filemap.c:filemap_populate(): move export.\n\nmove EXPORT_SYMBOL(filemap_populate) to the proper place: just after\nfunction itself: it\u0027s easy to miss that function is exported otherwise.\n\nSigned-off-by: Nikita Danilov \u003cnikita@clusterfs.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "b8072f099b7829a6ff3eba618e1d079a81f753f8",
      "tree": "80bf801b68ecf5f29a61f0f4fd5976b4daa91c6a",
      "parents": [
        "f412ac08c9861b4791af0145934c22f1458686da"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Oct 29 18:16:41 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:42 2005 -0700"
      },
      "message": "[PATCH] mm: update comments to pte lock\n\nUpdated several references to page_table_lock in common code comments.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4c21e2f2441dc5fbb957b030333f5a3f2d02dea7",
      "tree": "1f76d33bb1d76221c6424bc5fed080a4f91349a6",
      "parents": [
        "b38c6845b695141259019e2b7c0fe6c32a6e720d"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Oct 29 18:16:40 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:42 2005 -0700"
      },
      "message": "[PATCH] mm: split page table lock\n\nChristoph Lameter demonstrated very poor scalability on the SGI 512-way, with\na many-threaded application which concurrently initializes different parts of\na large anonymous area.\n\nThis patch corrects that, by using a separate spinlock per page table page, to\nguard the page table entries in that page, instead of using the mm\u0027s single\npage_table_lock.  (But even then, page_table_lock is still used to guard page\ntable allocation, and anon_vma allocation.)\n\nIn this implementation, the spinlock is tucked inside the struct page of the\npage table page: with a BUILD_BUG_ON in case it overflows - which it would in\nthe case of 32-bit PA-RISC with spinlock debugging enabled.\n\nSplitting the lock is not quite for free: another cacheline access.  Ideally,\nI suppose we would use split ptlock only for multi-threaded processes on\nmulti-cpu machines; but deciding that dynamically would have its own costs.\nSo for now enable it by config, at some number of cpus - since the Kconfig\nlanguage doesn\u0027t support inequalities, let preprocessor compare that with\nNR_CPUS.  But I don\u0027t think it\u0027s worth being user-configurable: for good\ntesting of both split and unsplit configs, split now at 4 cpus, and perhaps\nchange that to 8 later.\n\nThere is a benefit even for singly threaded processes: kswapd can be attacking\none part of the mm while another part is busy faulting.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "65500d234e74fc4e8f18e1a429bc24e51e75de4a",
      "tree": "2bae8c3622b6537dbd142ba2744c7cc9430d3b69",
      "parents": [
        "7c1fd6b964860cdcf44b6b98d7dcd8cc16a0a26d"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Oct 29 18:15:59 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:37 2005 -0700"
      },
      "message": "[PATCH] mm: page fault handlers tidyup\n\nImpose a little more consistency on the page fault handlers do_wp_page,\ndo_swap_page, do_anonymous_page, do_no_page, do_file_page: why not pass their\narguments in the same order, called the same names?\n\nbreak_cow is all very well, but what it did was inlined elsewhere: easier to\ncompare if it\u0027s brought back into do_wp_page.\n\ndo_file_page\u0027s fallback to do_no_page dates from a time when we were testing\npte_file by using it wherever possible: currently it\u0027s peculiar to nonlinear\nvmas, so just check that.  BUG_ON if not?  Better not, it\u0027s probably page\ntable corruption, so just show the pte: hmm, there\u0027s a pte_ERROR macro, let\u0027s\nuse that for do_wp_page\u0027s invalid pfn too.\n\nHah!  Someone in the ppc64 world noticed pte_ERROR was unused so removed it:\nrestored (and say \"pud\" not \"pmd\" in its pud_ERROR).\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "6daa0e28627abf362138244a620a821a9027d816",
      "tree": "5ca9cbc421cc1adf228cdd30cd627bca8be6242c",
      "parents": [
        "af4ca457eaf2d6682059c18463eb106e2ce58198"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Oct 21 03:18:50 2005 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Oct 28 08:16:47 2005 -0700"
      },
      "message": "[PATCH] gfp_t: mm/* (easy parts)\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "5ce7852cdf07ab903fb1c72d0915ac492c6e07c7",
      "tree": "7992224cd306be5e827de0bdf6255bc87a2bf4c8",
      "parents": [
        "dd81eca83c8300c95d8a1eaf0d38f56513711535"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Sat Sep 10 00:26:28 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Sep 10 10:06:25 2005 -0700"
      },
      "message": "[PATCH] mm/filemap.c: make two functions static\n\nWith Nick Piggin \u003cnpiggin@suse.de\u003e\n\nGive some things static scope.\n\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d44ed4f86892e350f4b16a3489b7e7c1a9bb7ead",
      "tree": "19614a214c186c62ee6c5d3879392f6184f93e5b",
      "parents": [
        "0abf40c1ac3f25d264c019e1cfe155d590defb87"
      ],
      "author": {
        "name": "Paolo \u0027Blaisorblade\u0027 Giarrusso",
        "email": "blaisorblade@yahoo.it",
        "time": "Sat Sep 03 15:54:55 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@evo.osdl.org",
        "time": "Mon Sep 05 00:05:45 2005 -0700"
      },
      "message": "[PATCH] shmem_populate: avoid an useless check, and some comments\n\nEither shmem_getpage returns a failure, or it found a page, or it was told\nit couldn\u0027t do any I/O.  So it\u0027s useless to check nonblock in the else\nbranch.  We could add a BUG() there but I preferred to comment the\noffending function.\n\nThis was taken out from one Ingo Molnar\u0027s old patch I\u0027m resurrecting.\n\nSigned-off-by: Paolo \u0027Blaisorblade\u0027 Giarrusso \u003cblaisorblade@yahoo.it\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "5d337b9194b1ce3b6fd5f3cb2799455ed2f9a3d1",
      "tree": "91ed9ef6f4cb5f6a1832f2baaaabd53fcd83513e",
      "parents": [
        "048c27fd72816b44e096997d1c6901c3abbfd45b"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Sep 03 15:54:41 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@evo.osdl.org",
        "time": "Mon Sep 05 00:05:42 2005 -0700"
      },
      "message": "[PATCH] swap: swap_lock replace list+device\n\nThe idea of a swap_device_lock per device, and a swap_list_lock over them all,\nis appealing; but in practice almost every holder of swap_device_lock must\nalready hold swap_list_lock, which defeats the purpose of the split.\n\nThe only exceptions have been swap_duplicate, valid_swaphandles and an\nuntrodden path in try_to_unuse (plus a few places added in this series).\nvalid_swaphandles doesn\u0027t show up high in profiles, but swap_duplicate does\ndemand attention.  However, with the hold time in get_swap_pages so much\nreduced, I\u0027ve not yet found a load and set of swap device priorities to show\neven swap_duplicate benefitting from the split.  Certainly the split is mere\noverhead in the common case of a single swap device.\n\nSo, replace swap_list_lock and swap_device_lock by spinlock_t swap_lock\n(generally we seem to prefer an _ in the name, and not hide in a macro).\n\nIf someone can show a regression in swap_duplicate, then probably we should\nadd a hashlock for the swap_map entries alone (shorts being anatomic), so as\nto help the case of the single swap device too.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "b0cfbd995d091b10841eeb948976f5d1fbf13cdd",
      "tree": "a693416656084c99581c8ef6d2ca830b0cfe13a9",
      "parents": [
        "8ae0b77811d97552b3b3c745e97de18849583bf7"
      ],
      "author": {
        "name": "Badari Pulavarty",
        "email": "pbadari@us.ibm.com",
        "time": "Sat Jun 25 14:55:42 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Jun 25 16:24:39 2005 -0700"
      },
      "message": "[PATCH] fix for generic_file_write iov problem\n\nHere is the fix for the problem described in\n\n\thttp://bugzilla.kernel.org/show_bug.cgi?id\u003d4721\n\nBasically, problem is generic_file_buffered_write() is accessing beyond end\nof the iov[] vector after handling the last vector.  If we happen to cross\npage boundary, we get a fault.\n\nI think this simple patch is good enough.  If we really don\u0027t want to\ndepend on the \"count\", then we need pass nr_segs to\nfilemap_set_next_iovec() and decrement it and check it.\n\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1e8a81c5a37907bc082025d3468718116dca1eeb",
      "tree": "0b9dae5a22d8caeab40a5e08150bfad27411cc41",
      "parents": [
        "b4819b593740a6d11db07b52e0fe35975b29a185"
      ],
      "author": {
        "name": "Hifumi Hisashi",
        "email": "hifumi.hisashi@lab.ntt.co.jp",
        "time": "Sat Jun 25 14:54:32 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Jun 25 16:24:25 2005 -0700"
      },
      "message": "[PATCH] Fix the error handling in direct I/O\n\nFix a bug on error handling in the direct I/O function.\n\nCurrently, if a file is opened with the O_DIRECT|O_SYNC flag, the write()\nsyscall cannot receive the EIO error after an I/O error (SCSI cable is\ndisconnected etc.).\n\nReturn values of other points that call generic_osync_inode() are treated\nappropriately.\n\nSigned-off-by: Hisashi Hifumi  \u003chifumi.hisashi@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "ceffc078528befc008c6f2c2c4decda79eabd534",
      "tree": "a289e10162bdef0c0d9f6533f1a647b0fe1ed7a9",
      "parents": [
        "420edbcc09008342c7b2665453f6b370739aadb0"
      ],
      "author": {
        "name": "Carsten Otte",
        "email": "cotte@de.ibm.com",
        "time": "Thu Jun 23 22:05:25 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Fri Jun 24 00:06:41 2005 -0700"
      },
      "message": "[PATCH] xip: fs/mm: execute in place\n\n- generic_file* file operations do no longer have a xip/non-xip split\n- filemap_xip.c implements a new set of fops that require get_xip_page\n  aop to work proper. all new fops are exported GPL-only (don\u0027t like to\n  see whatever code use those except GPL modules)\n- __xip_unmap now uses page_check_address, which is no longer static\n  in rmap.c, and defined in linux/rmap.h\n- mm/filemap.h is now much more clean, plainly having just Linus\u0027\n  inline funcs moved here from filemap.c\n- fix includes in filemap_xip to make it build cleanly on i386\n\nSigned-off-by: Carsten Otte \u003ccotte@de.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "45778ca819accab1a4a3378b3566cab0f189164f",
      "tree": "9214491346c8d2d91eb1a11cb6c2e6a9387e4290",
      "parents": [
        "280dedb8d64ccfe1166ae03d3b254fc3b65de6a5"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "christoph@graphe.net",
        "time": "Thu Jun 23 00:10:17 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:33 2005 -0700"
      },
      "message": "[PATCH] Remove f_error field from struct file\n\nThe following patch removes the f_error field and all checks of f_error.\n\nTrond said:\n\n  f_error was introduced for NFS, and made sense when we were guaranteed\n  always to have a file pointer around when write errors occurred.  Since\n  then, we have (for various reasons) had to introduce the nfs_open_context in\n  order to track the file read/write state, and it made sense to move our\n  f_error tracking there too.\n\nSigned-off-by: Christoph Lameter \u003cchristoph@lameter.com\u003e\nAcked-by: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "a51171816826b074828fa96cb6ef60fc3b13631a",
      "tree": "e3c6f7a9852d45e9fdec75d7c71548ba404625e7",
      "parents": [
        "7cef5677ef3a8084f2588ce0a129dc95d65161f6"
      ],
      "author": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Mon Jun 06 13:35:54 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Mon Jun 06 14:42:23 2005 -0700"
      },
      "message": "[PATCH] broken fault_in_pages_readable call in generic_file_buffered_write()\n\nfault_in_pages_readable() is being passed an incorrect `end\u0027 address, which\ncan result in writes accidentally faulting in pages which will not be affected\nby the write() call.\n\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "b5c44c2147a447f77e07fecdb087ae288e1f4e40",
      "tree": "ec1d95eb1e03e320fc5eb5cfb40379f2f4a7267d",
      "parents": [
        "f359b74c80bc76c1f6c2cb8f2837882f2335ba0c"
      ],
      "author": {
        "name": "Suparna Bhattacharya",
        "email": "suparna@in.ibm.com",
        "time": "Sat May 21 16:33:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat May 21 16:45:24 2005 -0700"
      },
      "message": "[PATCH] fix for __generic_file_aio_read() to return 0 on EOF\n\nI came across the following problem while running ltp-aiodio testcases from\nltp-full-20050405 on linux-2.6.12-rc3-mm3.  I tried running the tests with\nEXT3 as well as JFS filesystems.\n\nOne or two fsx-linux testcases were hung after some time.  These testcases\nwere hanging at wait_for_all_aios().\n\nDebugging shows that there were some iocbs which were not getting completed\neventhough the last retry for those returned -EIOCBQUEUED.  Also all such\npending iocbs represented READ operation.\n\nFurther debugging revealed that all such iocbs hit EOF in the DIO layer.\nTo be more precise, the \"pos\" from which they were trying to read was\ngreater than the \"size\" of the file.  So the generic_file_direct_IO\nreturned 0.\n\nThis happens rarely as there is already a check in\n__generic_file_aio_read(), for whether \"pos\" \u003c \"size\" before calling direct\nIO routine.\n\n\u003esize \u003d i_size_read(inode);\n\u003eif (pos \u003c size) {\n\u003e\t  retval \u003d generic_file_direct_IO(READ, iocb,\n\u003e                               iov, pos, nr_segs);\n\nBut for READ, we are taking the inode-\u003ei_sem only in the DIO layer.  So it\nis possible that some other process can change the size of the file before\nwe take the i_sem.  In such a case ( when \"pos\" \u003e \"size\"), the\n__generic_file_aio_read() would return -EIOCBQUEUED even though there were\nno I/O requests submitted by the DIO layer.  This would cause the AIO layer\nto expect aio_complete() for THE iocb, which doesnot happen.  And thus the\ntest hangs forever, waiting for an I/O completion, where there are no\nrequests submitted at all.\n\nThe following patch makes __generic_file_aio_read() return 0 (instead of\nreturning -EIOCBQUEUED), on getting 0 from generic_file_direct_IO(), so\nthat the AIO layer does the aio_complete().\n\nTesting:\n\nI have tested the patch on a SMP machine(with 2 Pentium 4 (HT)) running\nlinux-2.6.12-rc3-mm3.  I ran the ltp-aiodio testcases and none of the\nfsx-linux tests hung.  Also the aio-stress tests ran without any problem.\n\nSigned-off-by: Suzuki K P \u003csuzuki@in.ibm.com\u003e\nSigned-off-by: Suparna Bhattacharya \u003csuparna@in.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "91bb52416854dfd581efe6e2a0aca8dc655f043e",
      "tree": "d1c30d46a1c4053b34ff3aaaf04adcbd41cc54e8",
      "parents": [
        "5b76ffd5d9f12ba850fc988188f55056204ad4e2"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Thu May 05 16:15:59 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu May 05 16:36:43 2005 -0700"
      },
      "message": "[PATCH] remove outdated comments from filemap.c\n\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "67be2dd1bace0ec7ce2dbc1bba3f8df3d7be597e",
      "tree": "317d114a0288d3b19ef9902f94b536a5a8731dbd",
      "parents": [
        "6013d5445f9a6d0b28090027868f455c5012d1cc"
      ],
      "author": {
        "name": "Martin Waitz",
        "email": "tali@admingilde.org",
        "time": "Sun May 01 08:59:26 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sun May 01 08:59:26 2005 -0700"
      },
      "message": "[PATCH] DocBook: fix some descriptions\n\nSome KernelDoc descriptions are updated to match the current code.\nNo code changes.\n\nSigned-off-by: Martin Waitz \u003ctali@admingilde.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "cd7619d6bf36564cf54ff7218ef54e558a741913",
      "tree": "c11674169b6d8f0b498e7ebe8a85d624cca82502",
      "parents": [
        "c8538a7aa5527d02c7191ac5da124efadf6a2827"
      ],
      "author": {
        "name": "Matt Mackall",
        "email": "mpm@selenic.com",
        "time": "Sun May 01 08:59:01 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sun May 01 08:59:01 2005 -0700"
      },
      "message": "[PATCH] Exterminate PAGE_BUG\n\nRemove PAGE_BUG - repalce it with BUG and BUG_ON.\n\nSigned-off-by: Matt Mackall \u003cmpm@selenic.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "dd1d5afca8d3bda7ff9db773fc08e648d2503dc6",
      "tree": "b0cc49be9dc43558e31be18d6045181661492018",
      "parents": [
        "93ea1d0a12623dc1a693642b5758261f35f9bf96"
      ],
      "author": {
        "name": "William Lee Irwin III",
        "email": "wli@holomorphy.com",
        "time": "Sun May 01 08:58:38 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sun May 01 08:58:38 2005 -0700"
      },
      "message": "[PATCH] sync_page() smp_mb() comment\n\nThe smp_mb() is becaus sync_page() doesn\u0027t have PG_locked while it accesses\npage_mapping(page).  The comments in the patch (the entire patch is the\naddition of this comment) try to explain further how and why smp_mb() is\nused.\n\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f021e9210185b46e41ec3a0e78ec1621e168eacb",
      "tree": "5661ced2f5c69f737dcf7673db2ef6e852003d6d",
      "parents": [
        "69aa3f71580990f39e387d96ed1001d2f5fb04b1"
      ],
      "author": {
        "name": "akpm@osdl.org",
        "email": "akpm@osdl.org",
        "time": "Sun May 01 08:58:35 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sun May 01 08:58:35 2005 -0700"
      },
      "message": "[PATCH] generic_file_buffered_write fixes\n\nAnton Altaparmakov \u003caia21@cam.ac.uk\u003e points out:\n\n- It calls fault_in_pages_readable() which is completely bogus if @nr_segs \u003e\n  1.  It needs to be replaced by a to be written\n  \"fault_in_pages_readable_iovec()\".\n\n- It increments @buf even in the iovec case thus @buf can point to random\n  memory really quickly (in the iovec case) and then it calls\n  fault_in_pages_readable() on this random memory.\n\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d345734267dbec642f4e34a9d392d2fd85b5fa9b",
      "tree": "9a74f4b8292a696620f95933171ac5ddff970ef9",
      "parents": [
        "41aac24f8fb5a21ff3d0f6f56f85fad3cf0e88a9"
      ],
      "author": {
        "name": "Jeff Moyer",
        "email": "jmoyer@redhat.com",
        "time": "Sat Apr 16 15:24:05 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:24:05 2005 -0700"
      },
      "message": "[PATCH] filemap_getpage can block when MAP_NONBLOCK specified\n\nWe will return NULL from filemap_getpage when a page does not exist in the\npage cache and MAP_NONBLOCK is specified, here:\n\n\tpage \u003d find_get_page(mapping, pgoff);\n\tif (!page) {\n\t\tif (nonblock)\n\t\t\treturn NULL;\n\t\tgoto no_cached_page;\n\t}\n\nBut we forget to do so when the page in the cache is not uptodate.  The\nfollowing could result in a blocking call:\n\n\t/*\n\t * Ok, found a page in the page cache, now we need to check\n\t * that it\u0027s up-to-date.\n\t */\n\tif (!PageUptodate(page))\n\t\tgoto page_not_uptodate;\n\n\n\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
      "tree": "0bba044c4ce775e45a88a51686b5d9f90697ea9d",
      "parents": [],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "message": "Linux-2.6.12-rc2\n\nInitial git repository build. I\u0027m not bothering with the full history,\neven though we have it. We can create a separate \"historical\" git\narchive of that later if we want to, and in the meantime it\u0027s about\n3.2GB when imported into git - space that would just make the early\ngit days unnecessarily complicated, when we don\u0027t have a lot of good\ninfrastructure for it.\n\nLet it rip!\n"
    }
  ]
}
