)]}'
{
  "log": [
    {
      "commit": "90324cc1b11a211e37eabd8cb863e1a1561d6b1d",
      "tree": "c8b79c6850420a114ca6660c1b44fc486b1ba86d",
      "parents": [
        "fb8b00675eb6462aacab56bca31ed6107bda5314",
        "169ebd90131b2ffca74bb2dbe7eeacd39fb83714"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon May 28 09:54:45 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon May 28 09:54:45 2012 -0700"
      },
      "message": "Merge tag \u0027writeback\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/linux\n\nPull writeback tree from Wu Fengguang:\n \"Mainly from Jan Kara to avoid iput() in the flusher threads.\"\n\n* tag \u0027writeback\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/linux:\n  writeback: Avoid iput() from flusher thread\n  vfs: Rename end_writeback() to clear_inode()\n  vfs: Move waiting for inode writeback from end_writeback() to evict_inode()\n  writeback: Refactor writeback_single_inode()\n  writeback: Remove wb-\u003elist_lock from writeback_single_inode()\n  writeback: Separate inode requeueing after writeback\n  writeback: Move I_DIRTY_PAGES handling\n  writeback: Move requeueing when I_SYNC set to writeback_sb_inodes()\n  writeback: Move clearing of I_SYNC into inode_sync_complete()\n  writeback: initialize global_dirty_limit\n  fs: remove 8 bytes of padding from struct writeback_control on 64 bit builds\n  mm: page-writeback.c: local functions should not be exposed globally\n"
    },
    {
      "commit": "1523299d5817773e344d135d4b1c485f269400bc",
      "tree": "eef0768f5418facb1d37dbe99f346b9d77223f9f",
      "parents": [
        "b8a9f9e183229d163d8ace855cbbb63c209fba3c"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue Feb 07 15:41:24 2012 -0800"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue May 15 14:59:27 2012 -0700"
      },
      "message": "userns: Convert ext3 to use kuid/kgid where appropriate\n\nAcked-by: Serge Hallyn \u003cserge.hallyn@canonical.com\u003e\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "dbd5768f87ff6fb0a4fe09c4d7b6c4a24de99430",
      "tree": "42ea94ea733538f797aa745945fc43c4d1b89217",
      "parents": [
        "7994e6f7254354e03028a11f98a27bd67dace9f1"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu May 03 14:48:02 2012 +0200"
      },
      "committer": {
        "name": "Fengguang Wu",
        "email": "fengguang.wu@intel.com",
        "time": "Sun May 06 13:43:41 2012 +0800"
      },
      "message": "vfs: Rename end_writeback() to clear_inode()\n\nAfter we moved inode_sync_wait() from end_writeback() it doesn\u0027t make sense\nto call the function end_writeback() anymore. Rename it to clear_inode()\nwhich well says what the function really does - set I_CLEAR flag.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\n"
    },
    {
      "commit": "4613ad180d19082f99551477dcb13cb23d23661b",
      "tree": "c90407d53b5e7270c55831e394bd879825e0c6e9",
      "parents": [
        "f7699f2b0114fcd0ea5ad5f8aa2142f1bcc27fd0"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Mar 29 22:30:07 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Mar 31 16:03:16 2012 -0400"
      },
      "message": "ext3: move headers to fs/ext3/\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ac1334bfdae33be17ae6ae641bbbd1e6a2f04005",
      "tree": "1d7beae4467acc1ba18a90d18b07eab5563c14de",
      "parents": [
        "053800a84b942511054b51299db4430b3d1b06bc"
      ],
      "author": {
        "name": "Kazuya Mio",
        "email": "k-mio@sx.jp.nec.com",
        "time": "Wed Feb 08 16:34:29 2012 +0900"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Feb 29 21:53:46 2012 +0100"
      },
      "message": "ext3: Update ctime in ext3_splice_branch() only when needed\n\nCurrently ext3 updates ctime in ext3_splice_branch() which is called whenever\nwe allocate one block. But it is wasteful because ext3 doesn\u0027t support\nnanosecond timestamp. This leads to a performance loss.\n\nSigned-off-by: Kazuya Mio \u003ck-mio@sx.jp.nec.com\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "ac69e0928054ff29a5049902fb477f9c7605c773",
      "tree": "05be6b9285186823452e0adeffe40e1dfee6e354",
      "parents": [
        "9e203936eac786f9268d6a13e6442d2accef1829",
        "302bf2f3259948c93361d501b04a5ed69c3bd4f8"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 09 12:51:21 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 09 12:51:21 2012 -0800"
      },
      "message": "Merge branch \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs\n\n* \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs:\n  ext2/3/4: delete unneeded includes of module.h\n  ext{3,4}: Fix potential race when setversion ioctl updates inode\n  udf: Mark LVID buffer as uptodate before marking it dirty\n  ext3: Don\u0027t warn from writepage when readonly inode is spotted after error\n  jbd: Remove j_barrier mutex\n  reiserfs: Force inode evictions before umount to avoid crash\n  reiserfs: Fix quota mount option parsing\n  udf: Treat symlink component of type 2 as /\n  udf: Fix deadlock when converting file from in-ICB one to normal one\n  udf: Cleanup calling convention of inode_getblk()\n  ext2: Fix error handling on inode bitmap corruption\n  ext3: Fix error handling on inode bitmap corruption\n  ext3: replace ll_rw_block with other functions\n  ext3: NULL dereference in ext3_evict_inode()\n  jbd: clear revoked flag on buffers before a new transaction started\n  ext3: call ext3_mark_recovery_complete() when recovery is really needed\n"
    },
    {
      "commit": "302bf2f3259948c93361d501b04a5ed69c3bd4f8",
      "tree": "22ccdf5774a28476745a94532b5ce2c2cc454d98",
      "parents": [
        "6c2155b9cc5a193e85194bbeaae2e2e4512dd597"
      ],
      "author": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Wed Jan 04 15:59:47 2012 -0500"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Jan 09 13:52:10 2012 +0100"
      },
      "message": "ext2/3/4: delete unneeded includes of module.h\n\nDelete any instances of include module.h that were not strictly\nrequired.  In the case of ext2, the declaration of MODULE_LICENSE\netc. were in inode.c but the module_init/exit were in super.c, so\nrelocate the MODULE_LICENCE/AUTHOR block to super.c which makes it\nconsistent with ext3 and ext4 at the same time.\n\nSigned-off-by: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "33c104d415e92a51aaf638dc3d93920cfa601e5c",
      "tree": "d94d7312b242ee85318188b3bc8fd23481c2f529",
      "parents": [
        "0048278552e9752fd578c3d8deee756987c10873"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Dec 22 16:49:05 2011 +0100"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Jan 09 13:52:09 2012 +0100"
      },
      "message": "ext3: Don\u0027t warn from writepage when readonly inode is spotted after error\n\nWARN_ON_ONCE(IS_RDONLY(inode)) tends to trip when filesystem hits error and is\nremounted read-only. This unnecessarily scares users (well, they should be\nscared because of filesystem error, but the stack trace distracts them from the\nright source of their fear ;-). We could as well just remove the WARN_ON but\nit\u0027s not hard to fix it to not trip on filesystem with errors and not use more\ncycles in the common case so that\u0027s what we do.\n\nCC: stable@kernel.org\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "d03e1292c46721f60830c5d2e334966472002ed0",
      "tree": "bc5a9f63fc52e4b96a6e9faa9457cb47d70b2cc7",
      "parents": [
        "bcdd0c1600903e9222abfcde28947406020ccb5d"
      ],
      "author": {
        "name": "Zheng Liu",
        "email": "wenqing.lz@taobao.com",
        "time": "Mon Dec 05 15:55:11 2011 +0800"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Jan 09 13:52:07 2012 +0100"
      },
      "message": "ext3: replace ll_rw_block with other functions\n\nll_rw_block() is deprecated. Thus we replace it with other functions.\n\nCC: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Zheng Liu \u003cwenqing.lz@taobao.com\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "42b2aa86c6670347a2a07e6d7af0e0ecc8fdbff9",
      "tree": "6f8fb2a1efb3e84bf281658befe06dc6a7fb026b",
      "parents": [
        "a13b032776379fa6e2bfccf798969ca51e5fb052"
      ],
      "author": {
        "name": "Justin P. Mattock",
        "email": "justinmattock@gmail.com",
        "time": "Mon Nov 28 20:31:00 2011 -0800"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Fri Dec 02 14:57:31 2011 +0100"
      },
      "message": "treewide: Fix typos in various parts of the kernel, and fix some comments.\n\nThe below patch fixes some typos in various parts of the kernel, as well as fixes some comments.\nPlease let me know if I missed anything, and I will try to get it changed and resent.\n\nSigned-off-by: Justin P. Mattock \u003cjustinmattock@gmail.com\u003e\nAcked-by: Randy Dunlap \u003crdunlap@xenotime.net\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "bcdd0c1600903e9222abfcde28947406020ccb5d",
      "tree": "54660caee067ff2a4bcf422b711583e22ea255ce",
      "parents": [
        "8c111b3f56332a216b18cd57950bdf04ac8f2a98"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "dan.carpenter@oracle.com",
        "time": "Tue Nov 22 11:00:20 2011 +0300"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue Nov 22 13:36:15 2011 +0100"
      },
      "message": "ext3: NULL dereference in ext3_evict_inode()\n\nThis is an fsfuzzer bug.  -\u003es_journal is set at the end of\next3_load_journal() but we try to use it in the error handling from\next3_get_journal() while it\u0027s still NULL.\n\n[  337.039041] BUG: unable to handle kernel NULL pointer dereference at 0000000000000024\n[  337.040380] IP: [\u003cffffffff816e6539\u003e] _raw_spin_lock+0x9/0x30\n[  337.041687] PGD 0\n[  337.043118] Oops: 0002 [#1] SMP\n[  337.044483] CPU 3\n[  337.044495] Modules linked in: ecb md4 cifs fuse kvm_intel kvm brcmsmac brcmutil crc8 cordic r8169 [last unloaded: scsi_wait_scan]\n[  337.047633]\n[  337.049259] Pid: 8308, comm: mount Not tainted 3.2.0-rc2-next-20111121+ #24 SAMSUNG ELECTRONICS CO., LTD. RV411/RV511/E3511/S3511    /RV411/RV511/E3511/S3511\n[  337.051064] RIP: 0010:[\u003cffffffff816e6539\u003e]  [\u003cffffffff816e6539\u003e] _raw_spin_lock+0x9/0x30\n[  337.052879] RSP: 0018:ffff8800b1d11ae8  EFLAGS: 00010282\n[  337.054668] RAX: 0000000000000100 RBX: 0000000000000000 RCX: ffff8800b77c2000\n[  337.056400] RDX: ffff8800a97b5c00 RSI: 0000000000000000 RDI: 0000000000000024\n[  337.058099] RBP: ffff8800b1d11ae8 R08: 6000000000000000 R09: e018000000000000\n[  337.059841] R10: ff67366cc2607c03 R11: 00000000110688e6 R12: 0000000000000000\n[  337.061607] R13: 0000000000000000 R14: 0000000000000000 R15: ffff8800a78f06e8\n[  337.063385] FS:  00007f9d95652800(0000) GS:ffff8800b7180000(0000) knlGS:0000000000000000\n[  337.065110] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033\n[  337.066801] CR2: 0000000000000024 CR3: 00000000aef2c000 CR4: 00000000000006e0\n[  337.068581] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000\n[  337.070321] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400\n[  337.072105] Process mount (pid: 8308, threadinfo ffff8800b1d10000, task ffff8800b1d02be0)\n[  337.073800] Stack:\n[  337.075487]  ffff8800b1d11b08 ffffffff811f48cf ffff88007ac9b158 0000000000000000\n[  337.077255]  ffff8800b1d11b38 ffffffff8119405d ffff88007ac9b158 ffff88007ac9b250\n[  337.078851]  ffffffff8181bda0 ffffffff8181bda0 ffff8800b1d11b68 ffffffff81131e31\n[  337.080284] Call Trace:\n[  337.081706]  [\u003cffffffff811f48cf\u003e] log_start_commit+0x1f/0x40\n[  337.083107]  [\u003cffffffff8119405d\u003e] ext3_evict_inode+0x1fd/0x2a0\n[  337.084490]  [\u003cffffffff81131e31\u003e] evict+0xa1/0x1a0\n[  337.085857]  [\u003cffffffff81132031\u003e] iput+0x101/0x210\n[  337.087220]  [\u003cffffffff811339d1\u003e] iget_failed+0x21/0x30\n[  337.088581]  [\u003cffffffff811905fc\u003e] ext3_iget+0x15c/0x450\n[  337.089936]  [\u003cffffffff8118b0c1\u003e] ? ext3_rsv_window_add+0x81/0x100\n[  337.091284]  [\u003cffffffff816df9a4\u003e] ext3_get_journal+0x15/0xde\n[  337.092641]  [\u003cffffffff811a2e9b\u003e] ext3_fill_super+0xf2b/0x1c30\n[  337.093991]  [\u003cffffffff810ddf7d\u003e] ? register_shrinker+0x4d/0x60\n[  337.095332]  [\u003cffffffff8111c112\u003e] mount_bdev+0x1a2/0x1e0\n[  337.096680]  [\u003cffffffff811a1f70\u003e] ? ext3_setup_super+0x210/0x210\n[  337.098026]  [\u003cffffffff8119a770\u003e] ext3_mount+0x10/0x20\n[  337.099362]  [\u003cffffffff8111cbee\u003e] mount_fs+0x3e/0x1b0\n[  337.100759]  [\u003cffffffff810eda1b\u003e] ? __alloc_percpu+0xb/0x10\n[  337.102330]  [\u003cffffffff81135385\u003e] vfs_kern_mount+0x65/0xc0\n[  337.103889]  [\u003cffffffff8113611f\u003e] do_kern_mount+0x4f/0x100\n[  337.105442]  [\u003cffffffff811378fc\u003e] do_mount+0x19c/0x890\n[  337.106989]  [\u003cffffffff810e8456\u003e] ? memdup_user+0x46/0x90\n[  337.108572]  [\u003cffffffff810e84f3\u003e] ? strndup_user+0x53/0x70\n[  337.110114]  [\u003cffffffff811383fb\u003e] sys_mount+0x8b/0xe0\n[  337.111617]  [\u003cffffffff816ed93b\u003e] system_call_fastpath+0x16/0x1b\n[  337.113133] Code: 38 c2 74 0f 66 0f 1f 44 00 00 f3 90 0f b6 03 38 c2 75 f7 48 83 c4 08 5b 5d c3 0f 1f 84 00 00 00 00 00 55 b8 00 01 00 00 48 89 e5 \u003cf0\u003e 66 0f c1 07 0f b6 d4 38 c2 74 0c 0f 1f 00 f3 90 0f b6 07 38\n[  337.116588] RIP  [\u003cffffffff816e6539\u003e] _raw_spin_lock+0x9/0x30\n[  337.118260]  RSP \u003cffff8800b1d11ae8\u003e\n[  337.119998] CR2: 0000000000000024\n[  337.188701] ---[ end trace c36d790becac1615 ]---\n\nSigned-off-by: Dan Carpenter \u003cdan.carpenter@oracle.com\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "bfe8684869601dacfcb2cd69ef8cfd9045f62170",
      "tree": "4e213aaa766b26f43f0f9ec7998a7745239d9377",
      "parents": [
        "6d6b77f163c7eabedbba00ed2abb7d4a570bff76"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Fri Oct 28 14:13:29 2011 +0200"
      },
      "committer": {
        "name": "Christoph Hellwig",
        "email": "hch@serles.lst.de",
        "time": "Wed Nov 02 12:53:43 2011 +0100"
      },
      "message": "filesystems: add set_nlink()\n\nReplace remaining direct i_nlink updates with a new set_nlink()\nupdater function.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nTested-by: Toshiyuki Okajima \u003ctoshi.okajima@jp.fujitsu.com\u003e\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "65299a3b788bd274bed92f9fa3232082c9f3ea70",
      "tree": "191c0afe31c15ac4c1bab96e0a07fddb097d0de8",
      "parents": [
        "5dc06c5a70b79a323152bec7e55783e705767e63"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Tue Aug 23 14:50:29 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Aug 23 14:50:29 2011 +0200"
      },
      "message": "block: separate priority boosting from REQ_META\n\nAdd a new REQ_PRIO to let requests preempt others in the cfq I/O schedule,\nand lave REQ_META purely for marking requests as metadata in blktrace.\n\nAll existing callers of REQ_META except for XFS are updated to also\nset REQ_PRIO for now.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "5dc06c5a70b79a323152bec7e55783e705767e63",
      "tree": "8f008edc8574ecda04ee6deb13d69b489e8250b6",
      "parents": [
        "fcb8ce5cfe30ca9ca5c9a79cdfe26d1993e65e0c"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Tue Aug 23 14:49:55 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Aug 23 14:49:55 2011 +0200"
      },
      "message": "block: remove READ_META and WRITE_META\n\nReplace all occurnanced of the undocumented READ_META with READ | REQ_META\nand remove the unused WRITE_META define.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "2ac232f37fa0e8551856a575fe299c47b65b4d66",
      "tree": "58ff15ecdbc383415a82ea678e5191db16a479f3",
      "parents": [
        "fa8f53ace4af9470d8414427cb3dc3c0ffc4f182",
        "5cf49d763eb141d236e92be6d4a0dc94e31fa886"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 26 11:34:40 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 26 11:34:40 2011 -0700"
      },
      "message": "Merge branch \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6\n\n* \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6:\n  jbd: change the field \"b_cow_tid\" of struct journal_head from type unsigned to tid_t\n  ext3.txt: update the links in the section \"useful links\" to the latest ones\n  ext3: Fix data corruption in inodes with journalled data\n  ext2: check xattr name_len before acquiring xattr_sem in ext2_xattr_get\n  ext3: Fix compilation with -DDX_DEBUG\n  quota: Remove unused declaration\n  jbd: Use WRITE_SYNC in journal checkpoint.\n  jbd: Fix oops in journal_remove_journal_head()\n  ext3: Return -EINVAL when start is beyond the end of fs in ext3_trim_fs()\n  ext3/ioctl.c: silence sparse warnings about different address spaces\n  ext3/ext4 Documentation: remove bh/nobh since it has been deprecated\n  ext3: Improve truncate error handling\n  ext3: use proper little-endian bitops\n  ext2: include fs.h into ext2_fs.h\n  ext3: Fix oops in ext3_try_to_allocate_with_rsv()\n  jbd: fix a bug of leaking jh-\u003eb_jcount\n  jbd: remove dependency on __GFP_NOFAIL\n  ext3: Convert ext3 to new truncate calling convention\n  jbd: Add fixed tracepoints\n  ext3: Add fixed tracepoints\n\nResolve conflicts in fs/ext3/fsync.c due to fsync locking push-down and\nnew fixed tracepoints.\n"
    },
    {
      "commit": "b22570d9abb3d844e65c15c8bc0d57a78129e3b4",
      "tree": "455217fe8cac7529c1ed6ce351cde629729c90c4",
      "parents": [
        "03b5bb342978f99f75fb36d69cd29bab32109fd4"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Sat Jul 23 01:21:38 2011 +0200"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Sat Jul 23 01:49:00 2011 +0200"
      },
      "message": "ext3: Fix data corruption in inodes with journalled data\n\nWhen journalling data for an inode (either because it is a symlink or\nbecause the filesystem is mounted in data\u003djournal mode), ext3_evict_inode()\ncan discard unwritten data by calling truncate_inode_pages(). This is\nbecause we don\u0027t mark the buffer / page dirty when journalling data but only\nadd the buffer to the running transaction and thus mm does not know there\nare still unwritten data.\n\nFix the problem by carefully tracking transaction containing inode\u0027s data,\ncommitting this transaction, and writing uncheckpointed buffers when inode\nshould be reaped.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "aacfc19c626ebd3daa675652457d71019a1f583f",
      "tree": "9c1cfb5945e939f1ba56b4c0101c211e84e544c0",
      "parents": [
        "df2d6f26586f12a24f3ae5df4e236dc5c08d6eb4"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Fri Jun 24 14:29:47 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:49 2011 -0400"
      },
      "message": "fs: simplify the blockdev_direct_IO prototype\n\nSimple filesystems always pass inode-\u003ei_sb_bdev as the block device\nargument, and never need a end_io handler.  Let\u0027s simply things for\nthem and for my grepping activity by dropping these arguments.  The\nonly thing not falling into that scheme is ext4, which passes and\nend_io handler without needing special flags (yet), but given how\nmessy the direct I/O code there is use of __blockdev_direct_IO\nin one instead of two out of three cases isn\u0027t going to make a large\ndifference anyway.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "562c72aa57c36b178eacc3500a0215651eca9429",
      "tree": "2c522c53ab26fc72e85e08747a08e3dca1207c87",
      "parents": [
        "11b80f459adaf91a712f95e7734a17655a36bf30"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Fri Jun 24 14:29:45 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:47 2011 -0400"
      },
      "message": "fs: move inode_dio_wait calls into -\u003esetattr\n\nLet filesystems handle waiting for direct I/O requests themselves instead\nof doing it beforehand.  This means filesystem-specific locks to prevent\nnew dio referenes from appearing can be held.  This is important to allow\ngeneralizing i_dio_count to non-DIO_LOCKING filesystems.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ee3e77f18010679a889b3831c2dd931238c12d09",
      "tree": "761c06de9b82cba8a8a2e1cd2174fe7afa59efd9",
      "parents": [
        "9008593017069ad513cc7dc78a6c94e8dfddba31"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri Jun 03 21:58:11 2011 +0200"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Sat Jun 25 17:29:52 2011 +0200"
      },
      "message": "ext3: Improve truncate error handling\n\nNew truncate calling convention allows us to handle errors from\next3_block_truncate_page(). So reorganize the code so that\next3_block_truncate_page() is called before we change inode size.\n\nThis also removes unnecessary block zeroing from error recovery after failed\nbuffered writes (zeroing isn\u0027t needed because we could have never written\nnon-zero data to disk). We have to be careful and keep zeroing in direct IO\nwrite error recovery because there we might have already overwritten end of the\nlast file block.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "40680f2fa4670ab35ee554822a69dda1a118f966",
      "tree": "24d8fa1e6354b851b2a268a6681270fde4ef8b5a",
      "parents": [
        "99cb1a318c37bf462c53d43f4dacb7b4896ce0c9"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue May 24 22:24:47 2011 +0200"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Sat Jun 25 17:29:51 2011 +0200"
      },
      "message": "ext3: Convert ext3 to new truncate calling convention\n\nMostly trivial conversion. We fix a bug that IS_IMMUTABLE and IS_APPEND files\ncould not be truncated during failed writes as we change the code.  In fact the\ntest is not needed at all because both IS_IMMUTABLE and IS_APPEND is tested in\nupper layers in do_sys_[f]truncate(), may_write(), etc.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "785c4bcc0d88ff006a0b2120815a71e86ecf21ce",
      "tree": "573607ada555ca3d6136a9ec7f922ee6fef1eda3",
      "parents": [
        "5220cc9382e11ca955ce946ee6a5bac577bb14ff"
      ],
      "author": {
        "name": "Lukas Czerner",
        "email": "lczerner@redhat.com",
        "time": "Mon May 23 18:33:01 2011 +0200"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Sat Jun 25 17:29:51 2011 +0200"
      },
      "message": "ext3: Add fixed tracepoints\n\nThis commit adds fixed tracepoints to the ext3 code. It is based on ext4\ntracepoints, however due to the differences of both file systems, there\nare some tracepoints missing (those for delaloc and for multi-block\nallocator) and there are some ext3 specific as well (for reservation\nwindows).\n\nHere is a list:\n\next3_free_inode\next3_request_inode\next3_allocate_inode\next3_evict_inode\next3_drop_inode\next3_mark_inode_dirty\next3_write_begin\next3_ordered_write_end\next3_writeback_write_end\next3_journalled_write_end\next3_ordered_writepage\next3_writeback_writepage\next3_journalled_writepage\next3_readpage\next3_releasepage\next3_invalidatepage\next3_discard_blocks\next3_request_blocks\next3_allocate_blocks\next3_free_blocks\next3_sync_file_enter\next3_sync_file_exit\next3_sync_fs\next3_rsv_window_add\next3_discard_reservation\next3_alloc_new_reservation\next3_reserved\next3_forget\next3_read_block_bitmap\next3_direct_IO_enter\next3_direct_IO_exit\next3_unlink_enter\next3_unlink_exit\next3_truncate_enter\next3_truncate_exit\next3_get_blocks_enter\next3_get_blocks_exit\next3_load_inode\n\nSigned-off-by: Lukas Czerner \u003clczerner@redhat.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "aa38572954ade525817fe88c54faebf85e5a61c0",
      "tree": "ef398ec06c97134592f62a49c99f3f80041b427c",
      "parents": [
        "d6e9bd256c88ce5f4b668249e363a74f51393daa"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Fri May 27 06:53:02 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri May 27 07:04:40 2011 -0400"
      },
      "message": "fs: pass exact type of data dirties to -\u003edirty_inode\n\nTell the filesystem if we just updated timestamp (I_DIRTY_SYNC) or\nanything else, so that the filesystem can track internally if it\nneeds to push out a transaction for fdatasync or not.\n\nThis is just the prototype change with no user for it yet.  I plan\nto push large XFS changes for the next merge window, and getting\nthis trivial infrastructure in this window would help a lot to avoid\ntree interdependencies.\n\nAlso remove incorrect comments that -\u003edirty_inode can\u0027t block.  That\nhas been changed a long time ago, and many implementations rely on it.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "3d762ca1cdf38b5fb7d1774734176d1d4d56bbb7",
      "tree": "2fed11327a86c05ec945c31aa6e1307fbca527c9",
      "parents": [
        "0c3efe54d0165cecf0698b468e253577b555dde6",
        "b03f24567ce7caf2420b8be4c6eb74c191d59a91"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 08 07:35:17 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 08 07:35:17 2011 -0700"
      },
      "message": "Merge branch \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6\n\n* \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6:\n  quota: Don\u0027t write quota info in dquot_commit()\n  ext3: Fix writepage credits computation for ordered mode\n"
    },
    {
      "commit": "25985edcedea6396277003854657b5f3cb31a628",
      "tree": "f026e810210a2ee7290caeb737c23cb6472b7c38",
      "parents": [
        "6aba74f2791287ec407e0f92487a725a25908067"
      ],
      "author": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Wed Mar 30 22:57:33 2011 -0300"
      },
      "committer": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Thu Mar 31 11:26:23 2011 -0300"
      },
      "message": "Fix common misspellings\n\nFixes generated by \u0027codespell\u0027 and manually reviewed.\n\nSigned-off-by: Lucas De Marchi \u003clucas.demarchi@profusion.mobi\u003e\n"
    },
    {
      "commit": "523334ba508a8baaf5fc9f15fbad9ed04f334f48",
      "tree": "828966b99914646068667b3ec1ca61225ea1b1cf",
      "parents": [
        "eddecbb601c9ea3fab7e67d7892010fc9426d1e6"
      ],
      "author": {
        "name": "Yongqiang Yang",
        "email": "xiaoqiangnk@gmail.com",
        "time": "Thu Mar 24 08:48:39 2011 +0800"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Mar 24 12:33:51 2011 +0100"
      },
      "message": "ext3: Fix writepage credits computation for ordered mode\n\nOriginal computation forgets to count writes of indirect block themselves\n(it only counts with blocks necessary for their allocation) in ordered mode.\n\nAcked-by: Amir Goldstein \u003camir73il@users.sf.net\u003e\nSigned-off-by:Yongqiang Yang \u003cxiaoqiangnk@gmail.com\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "7eaceaccab5f40bbfda044629a6298616aeaed50",
      "tree": "33954d12f63e25a47eb6d86ef3d3d0a5e62bf752",
      "parents": [
        "73c101011926c5832e6e141682180c4debe2cf45"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 10 08:52:07 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 10 08:52:07 2011 +0100"
      },
      "message": "block: remove per-queue plugging\n\nCode has been converted over to the new explicit on-stack plugging,\nand delay users have been converted to use the new API for that.\nSo lets kill off the old plugging along with aops-\u003esync_page().\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "156e74312f1ffc0a2639c24c771c5a0e106f0505",
      "tree": "a14f861cf4bd93a8aa043532aedd2164f646feab",
      "parents": [
        "41dc6385bd6cd3366c1b4bede33688521eb21db9"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Thu Nov 25 01:53:13 2010 +0900"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Jan 10 19:04:06 2011 +0100"
      },
      "message": "ext3: Add more journal error check\n\nCheck return value of ext3_journal_get_write_acccess() and\next3_journal_dirty_metadata().\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "7d2f280e75f05919314e250cadf361a327ed555c",
      "tree": "47db5a9a0ceaf31adf49c18b663b1e08184f7cff",
      "parents": [
        "e3e1288e86a07cdeb0aee5860a2dff111c6eff79",
        "4408ea41c0ab4b711d4da44dd954fb06dce6c3f8"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Oct 27 20:13:18 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Oct 27 20:13:18 2010 -0700"
      },
      "message": "Merge branch \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6\n\n* \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6: (24 commits)\n  quota: Fix possible oops in __dquot_initialize()\n  ext3: Update kernel-doc comments\n  jbd/2: fixed typos\n  ext2: fixed typo.\n  ext3: Fix debug messages in ext3_group_extend()\n  jbd: Convert atomic_inc() to get_bh()\n  ext3: Remove misplaced BUFFER_TRACE() in ext3_truncate()\n  jbd: Fix debug message in do_get_write_access()\n  jbd: Check return value of __getblk()\n  ext3: Use DIV_ROUND_UP() on group desc block counting\n  ext3: Return proper error code on ext3_fill_super()\n  ext3: Remove unnecessary casts on bh-\u003eb_data\n  ext3: Cleanup ext3_setup_super()\n  quota: Fix issuing of warnings from dquot_transfer\n  quota: fix dquot_disable vs dquot_transfer race v2\n  jbd: Convert bitops to buffer fns\n  ext3/jbd: Avoid WARN() messages when failing to write the superblock\n  jbd: Use offset_in_page() instead of manual calculation\n  jbd: Remove unnecessary goto statement\n  jbd: Use printk_ratelimited() in journal_alloc_journal_head()\n  ...\n"
    },
    {
      "commit": "a4c18ad2eed93194a667cb9f6662c3b3e8f0bba9",
      "tree": "d7916898588fc17dec97cab1deae6705acf6eaa1",
      "parents": [
        "bcf3d0bcff9c2ab5794d9a2c5f0ebc9ce63cc63f"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Tue Oct 19 00:34:35 2010 +0900"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Oct 28 01:30:05 2010 +0200"
      },
      "message": "ext3: Update kernel-doc comments\n\nUpdate missing/broken argument descriptions and fix formatting.\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "bfa01dfbe0a02f5ba434221c351f0510c06af392",
      "tree": "84acf9d55363693b6279c794c74f40f6dad62198",
      "parents": [
        "b8ea49fa9baff99523aa51e680e76e8ccb5f25f3"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Fri Oct 15 20:03:02 2010 +0900"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Oct 28 01:30:04 2010 +0200"
      },
      "message": "ext3: Remove misplaced BUFFER_TRACE() in ext3_truncate()\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "ebdec241d509cf69f6ebf1ecdc036359d3dbe154",
      "tree": "e3c23f9b213936cb8501c83f55522a01f4a69aca",
      "parents": [
        "56b0dacfa2b8416815a2f2a5f4f51e46be4cf14c"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Wed Oct 06 10:47:23 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 25 21:18:20 2010 -0400"
      },
      "message": "fs: kill block_prepare_write\n\n__block_write_begin and block_prepare_write are identical except for slightly\ndifferent calling conventions.  Convert all callers to the __block_write_begin\ncalling conventions and drop block_prepare_write.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "5f248c9c251c60af3403902b26e08de43964ea0b",
      "tree": "6d3328e72a7e4015a64017eb30be18095c6a3c64",
      "parents": [
        "f6cec0ae58c17522a7bc4e2f39dae19f199ab534",
        "dca332528bc69e05f67161e1ed59929633d5e63d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 10 11:26:52 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 10 11:26:52 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (96 commits)\n  no need for list_for_each_entry_safe()/resetting with superblock list\n  Fix sget() race with failing mount\n  vfs: don\u0027t hold s_umount over close_bdev_exclusive() call\n  sysv: do not mark superblock dirty on remount\n  sysv: do not mark superblock dirty on mount\n  btrfs: remove junk sb_dirt change\n  BFS: clean up the superblock usage\n  AFFS: wait for sb synchronization when needed\n  AFFS: clean up dirty flag usage\n  cifs: truncate fallout\n  mbcache: fix shrinker function return value\n  mbcache: Remove unused features\n  add f_flags to struct statfs(64)\n  pass a struct path to vfs_statfs\n  update VFS documentation for method changes.\n  All filesystems that need invalidate_inode_buffers() are doing that explicitly\n  convert remaining -\u003eclear_inode() to -\u003eevict_inode()\n  Make -\u003edrop_inode() just return whether inode needs to be dropped\n  fs/inode.c:clear_inode() is gone\n  fs/inode.c:evict() doesn\u0027t care about delete vs. non-delete paths now\n  ...\n\nFix up trivial conflicts in fs/nilfs2/super.c\n"
    },
    {
      "commit": "ac14a95b5239d37b6082c3791b88d7ab4e8e444c",
      "tree": "b7a763b2e25de51730104e14fffd5b4ec035b415",
      "parents": [
        "0f3f63a4700d7c5aed51491b0113a257cf290a56"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jun 06 07:08:19 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:48:03 2010 -0400"
      },
      "message": "convert ext3 to -\u003eevict_inode()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "1025774ce411f2bd4b059ad7b53f0003569b74fa",
      "tree": "2be221c205cb5579652a6063e8ee27d1c72d1bbd",
      "parents": [
        "eef2380c187890816b73b1a4cb89a09203759469"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Jun 04 11:30:02 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:47:37 2010 -0400"
      },
      "message": "remove inode_setattr\n\nReplace inode_setattr with opencoded variants of it in all callers.  This\nmoves the remaining call to vmtruncate into the filesystem methods where it\ncan be replaced with the proper truncate sequence.\n\nIn a few cases it was obvious that we would never end up calling vmtruncate\nso it was left out in the opencoded variant:\n\n spufs: explicitly checks for ATTR_SIZE earlier\n btrfs,hugetlbfs,logfs,dlmfs: explicitly clears ATTR_SIZE earlier\n ufs: contains an opencoded simple_seattr + truncate that sets the filesize just above\n\nIn addition to that ncpfs called inode_setattr with handcrafted iattrs,\nwhich allowed to trim down the opencoded variant.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "6e1db88d536adcbbfe562b2d4b7d6425784fff12",
      "tree": "8cfcb5a6190722db6249b2e4978f39247975abcf",
      "parents": [
        "f4e420dc423148fba637af1ab618fa8896dfb2d6"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Jun 04 11:29:57 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:47:32 2010 -0400"
      },
      "message": "introduce __block_write_begin\n\nSplit up the block_write_begin implementation - __block_write_begin is a new\ntrivial wrapper for block_prepare_write that always takes an already\nallocated page and can be either called from block_write_begin or filesystem\ncode that already has a page allocated.  Remove the handling of already\nallocated pages from block_write_begin after switching all callers that\ndo it to __block_write_begin.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "eafdc7d190a944c755a9fe68573c193e6e0217e7",
      "tree": "915c3cc8004706fabf88eae1ab123a3fa0147516",
      "parents": [
        "256249584bda1a9357e2d29987a37f5b2df035f6"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Jun 04 11:29:53 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:47:29 2010 -0400"
      },
      "message": "sort out blockdev_direct_IO variants\n\nMove the call to vmtruncate to get rid of accessive blocks to the callers\nin prepearation of the new truncate calling sequence.  This was only done\nfor DIO_LOCKING filesystems, so the __blockdev_direct_IO_newtrunc variant\nwas not needed anyway.  Get rid of blockdev_direct_IO_no_locking and\nits _newtrunc variant while at it as just opencoding the two additional\nparamters is shorted than the name suffix.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "5f11e6a44059f728dddd8d0dbe5b4368ea93575b",
      "tree": "c66eed7a13b1de48d9a6539b9a7c7a27bda706c6",
      "parents": [
        "aa32a796389bedbcf1c7714385b18714a0743810"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Aug 05 12:38:26 2010 +0200"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Aug 05 21:28:28 2010 +0200"
      },
      "message": "ext3: Fix dirtying of journalled buffers in data\u003djournal mode\n\nIn data\u003djournal mode, we still use block_write_begin() to prepare page for\nwriting. This function can occasionally mark buffer dirty which violates\njournalling assumptions - when a buffer is part of a transaction, it should be\ndirty and a buffer can be already part of a forget list of some transaction\nwhen block_write_begin() gets called. This violation of journalling assumptions\nthen results in \"JBD: Spotted dirty metadata buffer...\" warnings.\n\nIn fact, temporary dirtying the buffer while the page is still locked does not\nreally cause problems to the journalling because we won\u0027t write the buffer\nuntil the page gets unlocked. So we just have to make sure to clear dirty bits\nbefore unlocking the page.\n\nReviewed-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "f25f624263445785b94f39739a6339ba9ed3275d",
      "tree": "8ec38c718b0af19d6e9cbbc9f368c43d7af14b9b",
      "parents": [
        "4c4d3901225518ed1a4c938ba15ba09842a00770"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Jul 12 21:04:31 2010 +0200"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Jul 21 16:04:26 2010 +0200"
      },
      "message": "ext3: Avoid filesystem corruption after a crash under heavy delete load\n\nIt can happen that ext3_free_branches calls ext3_forget() for an indirect block\nin an earlier transaction than a transaction in which we clear pointer to this\nindirect block. Thus if we crash before a transaction clearing the block\npointer is committed, we will see indirect block pointing to already freed\nblocks and complain during orphan list cleanup.\n\nThe fix is simple: Make sure ext3_forget() is called in the transaction\ndoing block pointer clearing.\n\nThis is a backport of an ext4 fix by Amir G. \u003camir73il@users.sourceforge.net\u003e\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "4c4d3901225518ed1a4c938ba15ba09842a00770",
      "tree": "0ed9eb0ad123174ebdd6ea507ac06b388d0d0b20",
      "parents": [
        "0411ba7902e09111d6f2041b4697a597d2cf7736"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Mon Jun 07 10:20:39 2010 +0200"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Jul 21 16:01:47 2010 +0200"
      },
      "message": "ext3: remove vestiges of nobh support\n\nThe nobh option was only supported for writeback mode, but given that all\nwrite paths (except mmapped writed) actually create buffer heads, it\neffectively was a no-op already.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "12755627bdcddcdb30a1bfb9a09395a52b1d6838",
      "tree": "b2d69696975d5457648020324f683a45302fbf3c",
      "parents": [
        "fcbc59f96e38a0999e827be9d04d46b62b53b20a"
      ],
      "author": {
        "name": "Dmitry Monakhov",
        "email": "dmonakhov@openvz.org",
        "time": "Thu Apr 08 22:04:20 2010 +0400"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri May 21 19:30:45 2010 +0200"
      },
      "message": "quota: unify quota init condition in setattr\n\nQuota must being initialized if size or uid/git changes requested.\nBut initialization performed in two different places:\nin case of i_size file system is responsible for dquot init\n, but in case of uid/gid init will be called internally in\ndquot_transfer().\nThis ambiguity makes code harder to understand.\nLet\u0027s move this logic to one common helper function.\n\nSigned-off-by: Dmitry Monakhov \u003cdmonakhov@openvz.org\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "de329820e920cd9cfbc2127cad26a37026260cce",
      "tree": "c392dbee75854e1f0b950f9d16dcf03214c63e80",
      "parents": [
        "ad4ba059005f18ec9e274966c16d99fc5ce8b2cd"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 29 14:30:19 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 29 14:30:19 2010 -0700"
      },
      "message": "ext3: fix broken handling of EXT3_STATE_NEW\n\nIn commit 9df93939b735 (\"ext3: Use bitops to read/modify\nEXT3_I(inode)-\u003ei_state\") ext3 changed its internal \u0027i_state\u0027 variable to\nuse bitops for its state handling.  However, unline the same ext4\nchange, it didn\u0027t actually change the name of the field when it changed\nthe semantics of it.\n\nAs a result, an old use of \u0027i_state\u0027 remained in fs/ext3/ialloc.c that\ninitialized the field to EXT3_STATE_NEW.  And that does not work\n_at_all_ when we\u0027re now working with individually named bits rather than\nvalues that get masked.  So the code tried to mark the state to be new,\nbut in actual fact set the field to EXT3_STATE_JDATA.  Which makes no\nsense at all, and screws up all the code that checks whether the inode\nwas newly allocated.\n\nIn particular, it made the xattr code unhappy, and caused various random\nbehavior, like apparently\n\n\thttps://bugzilla.redhat.com/show_bug.cgi?id\u003d577911\n\nSo fix the initialization, and rename the field to match ext4 so that we\ndon\u0027t have this happen again.\n\nCc: James Morris \u003cjmorris@namei.org\u003e\nCc: Stephen Smalley \u003csds@tycho.nsa.gov\u003e\nCc: Daniel J Walsh \u003cdwalsh@redhat.com\u003e\nCc: Eric Paris \u003ceparis@redhat.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e213e26ab3988c516c06eba4dcd030ac052f6dc9",
      "tree": "6e26fbdbb842b387697d73daf6e70cf718269a77",
      "parents": [
        "c812a51d11bbe983f4c24e32b59b265705ddd3c2",
        "efd8f0e6f6c1faa041f228d7113bd3a9db802d49"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 05 13:20:53 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 05 13:20:53 2010 -0800"
      },
      "message": "Merge branch \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6\n\n* \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6: (33 commits)\n  quota: stop using QUOTA_OK / NO_QUOTA\n  dquot: cleanup dquot initialize routine\n  dquot: move dquot initialization responsibility into the filesystem\n  dquot: cleanup dquot drop routine\n  dquot: move dquot drop responsibility into the filesystem\n  dquot: cleanup dquot transfer routine\n  dquot: move dquot transfer responsibility into the filesystem\n  dquot: cleanup inode allocation / freeing routines\n  dquot: cleanup space allocation / freeing routines\n  ext3: add writepage sanity checks\n  ext3: Truncate allocated blocks if direct IO write fails to update i_size\n  quota: Properly invalidate caches even for filesystems with blocksize \u003c pagesize\n  quota: generalize quota transfer interface\n  quota: sb_quota state flags cleanup\n  jbd: Delay discarding buffers in journal_unmap_buffer\n  ext3: quota_write cross block boundary behaviour\n  quota: drop permission checks from xfs_fs_set_xstate/xfs_fs_set_xquota\n  quota: split out compat_sys_quotactl support from quota.c\n  quota: split out netlink notification support from quota.c\n  quota: remove invalid optimization from quota_sync_all\n  ...\n\nFixed trivial conflicts in fs/namei.c and fs/ufs/inode.c\n"
    },
    {
      "commit": "a9185b41a4f84971b930c519f0c63bd450c4810d",
      "tree": "268cf4e206cca12fb9e1dd68984e7c190e465b46",
      "parents": [
        "26821ed40b4230259e770c9911180f38fcaa6f59"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Mar 05 09:21:37 2010 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Mar 05 13:25:52 2010 -0500"
      },
      "message": "pass writeback_control to -\u003ewrite_inode\n\nThis gives the filesystem more information about the writeback that\nis happening.  Trond requested this for the NFS unstable write handling,\nand other filesystems might benefit from this too by beeing able to\ndistinguish between the different callers in more detail.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "871a293155a24554e153538d36e3a80fa169aefb",
      "tree": "7e38f5a2f9e87f63cbc4bc1077a4bb49dde441b0",
      "parents": [
        "907f4554e2521cb28b0009d17167760650a9561c"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Mar 03 09:05:07 2010 -0500"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri Mar 05 00:20:30 2010 +0100"
      },
      "message": "dquot: cleanup dquot initialize routine\n\nGet rid of the initialize dquot operation - it is now always called from\nthe filesystem and if a filesystem really needs it\u0027s own (which none\ncurrently does) it can just call into it\u0027s own routine directly.\n\nRename the now static low-level dquot_initialize helper to __dquot_initialize\nand vfs_dq_init to dquot_initialize to have a consistent namespace.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "907f4554e2521cb28b0009d17167760650a9561c",
      "tree": "68dc49163fd34331f8efbd63592c8f1baa387031",
      "parents": [
        "9f7547580263d4a55efe06ce5cfd567f568be6e8"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Mar 03 09:05:06 2010 -0500"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri Mar 05 00:20:30 2010 +0100"
      },
      "message": "dquot: move dquot initialization responsibility into the filesystem\n\nCurrently various places in the VFS call vfs_dq_init directly.  This means\nwe tie the quota code into the VFS.  Get rid of that and make the\nfilesystem responsible for the initialization.   For most metadata operations\nthis is a straight forward move into the methods, but for truncate and\nopen it\u0027s a bit more complicated.\n\nFor truncate we currently only call vfs_dq_init for the sys_truncate case\nbecause open already takes care of it for ftruncate and open(O_TRUNC) - the\nnew code causes an additional vfs_dq_init for those which is harmless.\n\nFor open the initialization is moved from do_filp_open into the open method,\nwhich means it happens slightly earlier now, and only for regular files.\nThe latter is fine because we don\u0027t need to initialize it for operations\non special files, and we already do it as part of the namespace operations\nfor directories.\n\nAdd a dquot_file_open helper that filesystems that support generic quotas\ncan use to fill in -\u003eopen.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "b43fa8284d7790d9cca32c9c55e24f29be2fa33b",
      "tree": "acb7f205fe2a1ae324e0e11c50f43baaa6b8dfab",
      "parents": [
        "759bfee658beab14af7b357156461d0eb852be2c"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Mar 03 09:05:03 2010 -0500"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri Mar 05 00:20:29 2010 +0100"
      },
      "message": "dquot: cleanup dquot transfer routine\n\nGet rid of the transfer dquot operation - it is now always called from\nthe filesystem and if a filesystem really needs it\u0027s own (which none\ncurrently does) it can just call into it\u0027s own routine directly.\n\nRename the now static low-level dquot_transfer helper to __dquot_transfer\nand vfs_dq_transfer to dquot_transfer to have a consistent namespace,\nand make the new dquot_transfer return a normal negative errno value\nwhich all callers expect.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "5dd4056db84387975140ff2568eaa0406f07985e",
      "tree": "03c26d7f6e3367b167bfeeb1a01654c6619573f4",
      "parents": [
        "49792c806d0bfd53afc789dcdf50dc9bed2c5b83"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Mar 03 09:05:00 2010 -0500"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri Mar 05 00:20:28 2010 +0100"
      },
      "message": "dquot: cleanup space allocation / freeing routines\n\nGet rid of the alloc_space, free_space, reserve_space, claim_space and\nrelease_rsv dquot operations - they are always called from the filesystem\nand if a filesystem really needs their own (which none currently does)\nit can just call into it\u0027s own routine directly.\n\nMove shared logic into the common __dquot_alloc_space,\ndquot_claim_space_nodirty and __dquot_free_space low-level methods,\nand rationalize the wrappers around it to move as much as possible\ncode into the common block for CONFIG_QUOTA vs not.  Also rename\nall these helpers to be named dquot_* instead of vfs_dq_*.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "49792c806d0bfd53afc789dcdf50dc9bed2c5b83",
      "tree": "b24280fa76abad273e0f009a9cfe49b594c2becf",
      "parents": [
        "7eb4969e04060dcf3fbd46af9c21b1059b853068"
      ],
      "author": {
        "name": "Dmitry Monakhov",
        "email": "dmonakhov@openvz.org",
        "time": "Tue Mar 02 15:51:02 2010 +0300"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri Mar 05 00:20:27 2010 +0100"
      },
      "message": "ext3: add writepage sanity checks\n\n- There is theoretical possibility to perform writepage on\n   RO superblock. Add explicit check for what case.\n- Page must being locked before writepage.\n\nSigned-off-by: Dmitry Monakhov \u003cdmonakhov@openvz.org\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "7eb4969e04060dcf3fbd46af9c21b1059b853068",
      "tree": "ac093841df6abbe2d517af6656b149ad42536648",
      "parents": [
        "ab94c39b6fa076d4f6d2903dcc54cda35d938776"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Mar 01 14:02:37 2010 +0100"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri Mar 05 00:20:27 2010 +0100"
      },
      "message": "ext3: Truncate allocated blocks if direct IO write fails to update i_size\n\nWe have to truncate blocks allocated to file during direct IO when we\nfail to update i_size properly.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "9df93939b735dd273e49cbee290b9f4738500ef4",
      "tree": "2840172239e13d1c0fea496755b8346a9b394336",
      "parents": [
        "26245c949c8473ea7352907b5a54bc34487eb87f"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Jan 06 21:58:48 2010 +0100"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri Mar 05 00:20:20 2010 +0100"
      },
      "message": "ext3: Use bitops to read/modify EXT3_I(inode)-\u003ei_state\n\nAt several places we modify EXT3_I(inode)-\u003ei_state without holding i_mutex\n(ext3_release_file, ext3_bmap, ext3_journalled_writepage, ext3_do_update_inode,\n...). These modifications are racy and we can lose updates to i_state. So\nconvert handling of i_state to use bitops which are atomic.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "c459001fa4f71deafb62e00fa70d35f695498965",
      "tree": "ec3bf9ebcd0b06944174ff5ec0d8e7136e7d91ff",
      "parents": [
        "c9f937e4a3f4ebf9924ec21d80632e5eb61d949c"
      ],
      "author": {
        "name": "Dmitry Monakhov",
        "email": "dmonakhov@openvz.org",
        "time": "Wed Dec 09 03:05:30 2009 +0300"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Dec 23 13:33:54 2009 +0100"
      },
      "message": "ext3: quota macros cleanup [V2]\n\nCurrently all quota block reservation macros contains hardcoded \"2\"\naka MAXQUOTAS value. This is no good because in some places it is not\nobvious to understand what does this digit represent. Let\u0027s introduce\nnew macro with self descriptive name.\n\nSigned-off-by: Dmitry Monakhov \u003cdmonakhov@openvz.org\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "68eb3db08344286733adac48304d9fb7a0e53b27",
      "tree": "214133860fdb6ceac4adbeb621837df8c494f1fb",
      "parents": [
        "5a20bdfcdc5c5e5f0647d8d99a998066ef5496ac"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue Dec 01 16:53:06 2009 +0100"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Dec 10 15:02:55 2009 +0100"
      },
      "message": "ext3: Fix data / filesystem corruption when write fails to copy data\n\nWhen ext3_write_begin fails after allocating some blocks or\ngeneric_perform_write fails to copy data to write, we truncate blocks already\ninstantiated beyond i_size. Although these blocks were never inside i_size, we\nhave to truncate pagecache of these blocks so that corresponding buffers get\nunmapped. Otherwise subsequent __block_prepare_write (called because we are\nretrying the write) will find the buffers mapped, not call -\u003eget_block, and\nthus the page will be backed by already freed blocks leading to filesystem and\ndata corruption.\n\nReported-by: James Y Knight \u003cfoom@fuhm.net\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "d014d043869cdc591f3a33243d3481fa4479c2d0",
      "tree": "63626829498e647ba058a1ce06419fe7e4d5f97d",
      "parents": [
        "6ec22f9b037fc0c2e00ddb7023fad279c365324d",
        "6070d81eb5f2d4943223c96e7609a53cdc984364"
      ],
      "author": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Mon Dec 07 18:36:35 2009 +0100"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Mon Dec 07 18:36:35 2009 +0100"
      },
      "message": "Merge branch \u0027for-next\u0027 into for-linus\n\nConflicts:\n\n\tkernel/irq/chip.c\n"
    },
    {
      "commit": "bf48aabb894fd0639ab72a26e8abbd7683ef23c2",
      "tree": "cd7ba4504558ed518126966fa79f18adf2f37fd6",
      "parents": [
        "fb3d38b9904888aa8e36d88b2388dc70934b2169"
      ],
      "author": {
        "name": "Uwe Kleine-König",
        "email": "u.kleine-koenig@pengutronix.de",
        "time": "Wed Oct 28 20:11:03 2009 +0100"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Fri Dec 04 15:39:50 2009 +0100"
      },
      "message": "tree-wide: fix typos \"offest\" -\u003e \"offset\"\n\nThis patch was generated by\n\n\tgit grep -E -i -l \u0027offest\u0027 | xargs -r perl -p -i -e \u0027s/offest/offset/\u0027\n\nSigned-off-by: Uwe Kleine-König \u003cu.kleine-koenig@pengutronix.de\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "fe8bc91c4c30122b357d197117705cfd4fabaf28",
      "tree": "33e2895847d812204209444db4093af9a2c3623d",
      "parents": [
        "ea0174a7137c8ca9f130ca681f3a99c872da6778"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri Oct 16 19:26:15 2009 +0200"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Nov 11 15:22:49 2009 +0100"
      },
      "message": "ext3: Wait for proper transaction commit on fsync\n\nWe cannot rely on buffer dirty bits during fsync because pdflush can come\nbefore fsync is called and clear dirty bits without forcing a transaction\ncommit. What we do is that we track which transaction has last changed\nthe inode and which transaction last changed allocation and force it to\ndisk on fsync.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nReviewed-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "ea0174a7137c8ca9f130ca681f3a99c872da6778",
      "tree": "9736ef15e0250810f204bfb8d6987bd71eeba111",
      "parents": [
        "799dd75b1a8380a967c929a4551895788c374b31"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Mon Oct 12 21:34:27 2009 -0500"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Nov 11 15:22:49 2009 +0100"
      },
      "message": "ext3: retry failed direct IO allocations\n\nOn a 256M 4k block filesystem, doing this in a loop:\n\n    dd if\u003d/dev/zero of\u003dtest oflag\u003ddirect bs\u003d1M count\u003d64\n    rm -f test\n\neventually leads to spurious ENOSPC:\n\n    dd: writing `test\u0027: No space left on device\n\nAs with other block allocation callers, it looks like we need to\npotentially retry the allocations on the initial ENOSPC.\n\nA similar patch went into ext4 (commit\nfbbf69456619de5d251cb9f1df609069178c62d5)\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "db16826367fefcb0ddb93d76b66adc52eb4e6339",
      "tree": "626224c1eb1eb79c522714591f208b4fdbdcd9d4",
      "parents": [
        "cd6045138ed1bb5d8773e940d51c34318eef3ef2",
        "465fdd97cbe16ef8727221857e96ef62dd352017"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:53:22 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:53:22 2009 -0700"
      },
      "message": "Merge branch \u0027hwpoison\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-mce-2.6\n\n* \u0027hwpoison\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-mce-2.6: (21 commits)\n  HWPOISON: Enable error_remove_page on btrfs\n  HWPOISON: Add simple debugfs interface to inject hwpoison on arbitary PFNs\n  HWPOISON: Add madvise() based injector for hardware poisoned pages v4\n  HWPOISON: Enable error_remove_page for NFS\n  HWPOISON: Enable .remove_error_page for migration aware file systems\n  HWPOISON: The high level memory error handler in the VM v7\n  HWPOISON: Add PR_MCE_KILL prctl to control early kill behaviour per process\n  HWPOISON: shmem: call set_page_dirty() with locked page\n  HWPOISON: Define a new error_remove_page address space op for async truncation\n  HWPOISON: Add invalidate_inode_page\n  HWPOISON: Refactor truncate to allow direct truncating of page v2\n  HWPOISON: check and isolate corrupted free pages v2\n  HWPOISON: Handle hardware poisoned pages in try_to_unmap\n  HWPOISON: Use bitmask/action code for try_to_unmap behaviour\n  HWPOISON: x86: Add VM_FAULT_HWPOISON handling to x86 page fault handler v2\n  HWPOISON: Add poison check to page fault handling\n  HWPOISON: Add basic support for poisoned pages in fault handler v3\n  HWPOISON: Add new SIGBUS error codes for hardware poison signals\n  HWPOISON: Add support for poison swap entries v2\n  HWPOISON: Export some rmap vma locking to outside world\n  ...\n"
    },
    {
      "commit": "4f003fd32bc54ec438b8691795279844df27ce38",
      "tree": "2fe0a97307f9b3fe481f07713a271630951eb51b",
      "parents": [
        "00171d3c7e3b738ba582c7a9b37408e796f49046"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Sep 08 00:22:14 2009 +0200"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Sep 16 17:44:11 2009 +0200"
      },
      "message": "ext3: Add locking to ext3_do_update_inode\n\nI\u0027ve been struggling with this off and on while I\u0027ve been testing the\ndata\u003dguarded work.  The symptom is corrupted orphan lists and inodes\nwith the wrong i_size stored on disk.  I was convinced the\ndata\u003dguarded code was just missing a call to ext3_mark_inode_dirty, but\ntracing showed the i_disksize I was sending to ext3_mark_inode_dirty\nwasn\u0027t actually making it to the drive.\n\next3_mark_inode_dirty can be called without locks held (atime updates\nand a few others), so the data\u003dguarded code uses locks while updating\nthe in-memory inode, and then calls ext3_mark_inode_dirty\nwithout any locks held.\n\nBut, ext3_mark_inode_dirty has no internal locking to make sure that\nonly one CPU is updating the buffer head at a time.  Generally this\nworks out ok because everyone that changes the inode then calls\next3_mark_inode_dirty themselves.  Even though it races, eventually\nsomeone updates the buffer heads and things move on.\n\nBut there is still a risk of the wrong values getting in, and the\ndata\u003dguarded code seems to hit the race very often.\n\nSince everyone that changes the inode also logs it, it should be\npossible to fix this with some memory barriers.  I\u0027ll leave that as an\nexercise to the reader and lock the buffer head instead.\n\nIt it probably a good idea to have a different patch series for lockless\nbit flipping on the ext3 i_state field.  ext3_do_update_inode \u0026\u003d clears\nEXT3_STATE_NEW without any locks held.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "00171d3c7e3b738ba582c7a9b37408e796f49046",
      "tree": "4c43c59666d78ccb1522a99dd7966252d5878ccf",
      "parents": [
        "3adae9da0b35d2ca908039f42a1e90395c335181"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue Aug 11 19:06:10 2009 +0200"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Sep 16 17:44:11 2009 +0200"
      },
      "message": "ext3: Fix possible deadlock between ext3_truncate() and ext3_get_blocks()\n\nDuring truncate we are sometimes forced to start a new transaction as the\namount of blocks to be journaled is both quite large and hard to predict. So\nfar we restarted a transaction while holding truncate_mutex and that violates\nlock ordering because truncate_mutex ranks below transaction start (and it\ncan lead to a real deadlock with ext3_get_blocks() allocating new blocks\nfrom ext3_writepage()).\n\nLuckily, the problem is easy to fix: We just drop the truncate_mutex before\nrestarting the transaction and acquire it afterwards. We are safe to do this as\nby the time ext3_truncate() is called, all the page cache for the truncated\npart of the file is dropped and so writepage() cannot come and allocate new\nblocks in the part of the file we are truncating. The rest of writers is\nstopped by us holding i_mutex.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "aa261f549d7652258331ebb12795f3bc4395d213",
      "tree": "0ca807db32a6e3f213fa52b5a053d2b27e5e6bac",
      "parents": [
        "6a46079cf57a7f7758e8b926980a4f852f89b34d"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "andi@firstfloor.org",
        "time": "Wed Sep 16 11:50:16 2009 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Sep 16 11:50:16 2009 +0200"
      },
      "message": "HWPOISON: Enable .remove_error_page for migration aware file systems\n\nEnable removing of corrupted pages through truncation\nfor a bunch of file systems: ext*, xfs, gfs2, ocfs2, ntfs\nThese should cover most server needs.\n\nI chose the set of migration aware file systems for this\nfor now, assuming they have been especially audited.\nBut in general it should be safe for all file systems\non the data area that support read/write and truncate.\n\nCaveat: the hardware error handler does not take i_mutex\nfor now before calling the truncate function. Is that ok?\n\nCc: tytso@mit.edu\nCc: hch@infradead.org\nCc: mfasheh@suse.com\nCc: aia21@cantab.net\nCc: hugh.dickins@tiscali.co.uk\nCc: swhiteho@redhat.com\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "43237b5490e8f2f4679decd660064ff35ce490cc",
      "tree": "487380755d875bfe4e5b3700d08c85d58f97ae14",
      "parents": [
        "1e9fd53b783ea646de3ee09a4574afeb6778d504"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed May 20 18:41:58 2009 +0200"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Jul 15 21:30:46 2009 +0200"
      },
      "message": "ext3: Get rid of extenddisksize parameter of ext3_get_blocks_handle()\n\nGet rid of extenddisksize parameter of ext3_get_blocks_handle(). This seems to\nbe a relict from some old days and setting disksize in this function does not\nmake much sence. Currently it was set only by ext3_getblk().  Since the\nparameter has some effect only if create \u003d\u003d 1, it is easy to check that the\nthree callers which end up calling ext3_getblk() with create \u003d\u003d 1 (ext3_append,\next3_quota_write, ext3_mkdir) do the right thing and set disksize themselves.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "9eaaa2d5759837402ec5eee13b2a97921808c3eb",
      "tree": "c1ba576d1175a91e7fb443a7d87a76c2380ce9cf",
      "parents": [
        "7447a668a3860b66b3c9db86fdea91e355ba59ac"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Jul 13 20:26:52 2009 +0200"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Jul 15 21:28:07 2009 +0200"
      },
      "message": "ext3: Fix truncation of symlinks after failed write\n\nContents of long symlinks is written via standard write methods. So when the\nwrite fails, we add inode to orphan list. But symlinks don\u0027t have .truncate\nmethod defined so nobody properly removes them from the orphan list (both on\ndisk and in memory).\n\nFix this by calling ext3_truncate() directly instead of calling vmtruncate()\n(which is saner anyway since we don\u0027t need anything vmtruncate() does except\nfrom calling .truncate in these paths).  We also add inode to orphan list only\nif ext3_can_truncate() is true (currently, it can be false for symlinks when\nthere are no blocks allocated) - otherwise orphan list processing will complain\nand ext3_truncate() will not remove inode from on-disk orphan list.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "6582a0e6f6bc7bf64817b9e1a424782855292ab0",
      "tree": "7f7ac59f476a461a33706714e7bcb635b60977af",
      "parents": [
        "5e78b435683daaaacadad1b2aeefb8904cf6acfb"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 08 19:53:58 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jun 24 08:17:04 2009 -0400"
      },
      "message": "switch ext3 to inode-\u003ei_acl\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ef43618a47179b41e7203a624f2c7445e7da488c",
      "tree": "64d42f459e5086768e57d8e8e9bec8304b17c150",
      "parents": [
        "6f3f1cb21f08fbf757bbbbb0709ee515a7a7c6ad"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Jun 17 16:26:24 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:03:45 2009 -0700"
      },
      "message": "ext3: make sure inode is deleted from orphan list after truncate\n\nAs Ted pointed out, it can happen that ext3_truncate() returns without\nremoving inode from orphan list.  This way we could in some rare cases\n(like when we get ENOMEM from an allocation in ext3_truncate called\nbecause of failed ext3_write_begin) leave the inode on orphan list and\nthat triggers assertion failure on umount.\n\nSo make ext3_truncate() always remove inode from in-memory orphan list.\n\nCc: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e8ef7aaea79a899be4d7f50e829900c0ce15e52f",
      "tree": "1cc2370f081264e506d85e954110d363961e37bd",
      "parents": [
        "ce05b2a9db1d86635a906f14427deff97eeb6183"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Jun 17 16:26:23 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:03:45 2009 -0700"
      },
      "message": "ext3: fix chain verification in ext3_get_blocks()\n\nChain verification in ext3_get_blocks() has been hosed since it called\nverify_chain(chain, NULL) which always returns success.  As a result\nreaders could in theory race with truncate.  On the other hand the race\nprobably cannot happen with the current locking scheme, since by the\ntime ext3_truncate() is called all the pages are already removed and\nhence get_block() shouldn\u0027t be called on such pages...\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ca41f7b918294c2a17780e057568413dcbfc6d49",
      "tree": "0f10dbd7e56d5e594802898d744820e551f17cda",
      "parents": [
        "59d697b70285c348c01cfc2695c3469ba71d7539"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Mon Apr 27 09:46:42 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jun 11 21:36:05 2009 -0400"
      },
      "message": "ext3: remove -\u003ewrite_super and stop maintaining -\u003es_dirt\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "430db323fae7665da721768949ade6304811c648",
      "tree": "468f04ce720dd9ad295be1c3f3710fecc8d35a2e",
      "parents": [
        "6e34eeddf7deec1444bbddab533f03f520d8458c"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue Apr 07 18:25:01 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Apr 08 13:15:10 2009 -0400"
      },
      "message": "ext3: Try to avoid starting a transaction in writepage for data\u003dwritepage\n\nThis does the same as commit 9e80d407736161d9b8b0c5a0d44f786e44c322ea\n(avoid starting a transaction when no block allocation is needed)\nbut for data\u003dwriteback mode of ext3. We also cleanup the data\u003dordered\ncase a bit to stick to coding style...\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "20bec8ab1458c24bed0d5492ee15d87807fc415a",
      "tree": "e5f910947dbe314b96a591e41e2cfb2d3322caad",
      "parents": [
        "18b34b9546dc192d978dda940673f40928d2e36e",
        "e7c8f5079ed9ec9e6eb1abe3defc5fb4ebfdf1cb"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 03 11:10:33 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 03 11:10:33 2009 -0700"
      },
      "message": "Merge branch \u0027ext3-latency-fixes\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4\n\n* \u0027ext3-latency-fixes\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4:\n  ext3: Add replace-on-rename hueristics for data\u003dwriteback mode\n  ext3: Add replace-on-truncate hueristics for data\u003dwriteback mode\n  ext3: Use WRITE_SYNC for commits which are caused by fsync()\n  block_write_full_page: Use synchronous writes for WBC_SYNC_ALL writebacks\n"
    },
    {
      "commit": "f7ab34ea723ed304b19698efca85d6f40cecd99b",
      "tree": "28a609a654a24bc40d694fd2ec87a1f785c97c79",
      "parents": [
        "512a004382f2c60d5c4f855476ba965adc00250c"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Apr 03 01:34:35 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Apr 03 01:34:35 2009 -0400"
      },
      "message": "ext3: Add replace-on-truncate hueristics for data\u003dwriteback mode\n\nIn data\u003dwriteback mode, start an asynchronous flush when closing a\nfile which had been previously truncated down to zero.  This lowers\nthe probability of data loss in the case of applications that attempt\nto replace a file using truncate.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "695f6ae0dcea3dd83bfbb9634ff067f780649ba8",
      "tree": "0c97d92bfdc0791d0456faad6ef93b88e5739247",
      "parents": [
        "de18f3b2d68c1f3481839be760a5ff93f6a9a5e5"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Apr 02 16:57:17 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:04:52 2009 -0700"
      },
      "message": "ext3: avoid false EIO errors\n\nSometimes block_write_begin() can map buffers in a page but later we\nfail to copy data into those buffers (because the source page has been\npaged out in the mean time).  We then end up with !uptodate mapped\nbuffers.  To add a bit more to the confusion, block_write_end() does\nnot commit any data (and thus does not any mark buffers as uptodate) if\nwe didn\u0027t succeed with copying all the data.\n\nCommit f4fc66a894546bdc88a775d0e83ad20a65210bcb (ext3: convert to new\naops) missed these cases and thus we were inserting non-uptodate\nbuffers to transaction\u0027s list which confuses JBD code and it reports IO\nerrors, aborts a transaction and generally makes users afraid about\ntheir data ;-P.\n\nThis patch fixes the problem by reorganizing ext3_..._write_end() code\nto first call block_write_end() to mark buffers with valid data\nuptodate and after that we file only uptodate buffers to transaction\u0027s\nlists.\n\nWe also fix a problem where we could leave blocks allocated beyond i_size\n(i_disksize in fact) because of failed write. We now add inode to orphan\nlist when write fails (to be safe in case we crash) and then truncate blocks\nbeyond i_size in a separate transaction.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nReviewed-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2c9e15a011c55ff96b2b8d2b126d1b9a96abba20",
      "tree": "6d9b27a07f88ad4509dcd86aa74a2cdecd0d5f4b",
      "parents": [
        "805de022b100bcf796860fe88d7db4164066d1c3",
        "c16831b4cc9b0805adf8ca3001752a7ec10a17bf"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 27 14:48:34 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 27 14:48:34 2009 -0700"
      },
      "message": "Merge branch \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-quota-2.6\n\n* \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-quota-2.6: (27 commits)\n  ext2: Zero our b_size in ext2_quota_read()\n  trivial: fix typos/grammar errors in fs/Kconfig\n  quota: Coding style fixes\n  quota: Remove superfluous inlines\n  quota: Remove uppercase aliases for quota functions.\n  nfsd: Use lowercase names of quota functions\n  jfs: Use lowercase names of quota functions\n  udf: Use lowercase names of quota functions\n  ufs: Use lowercase names of quota functions\n  reiserfs: Use lowercase names of quota functions\n  ext4: Use lowercase names of quota functions\n  ext3: Use lowercase names of quota functions\n  ext2: Use lowercase names of quota functions\n  ramfs: Remove quota call\n  vfs: Use lowercase names of quota functions\n  quota: Remove dqbuf_t and other cleanups\n  quota: Remove NODQUOT macro\n  quota: Make global quota locks cacheline aligned\n  quota: Move quota files into separate directory\n  ext4: quota reservation for delayed allocation\n  ...\n"
    },
    {
      "commit": "9e80d407736161d9b8b0c5a0d44f786e44c322ea",
      "tree": "1d60b5b3e766cd123189278c3576f79d26315426",
      "parents": [
        "0384e2959127a56d0640505d004d8dd92f9c29f5"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Mar 26 13:08:04 2009 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 26 15:44:59 2009 -0700"
      },
      "message": "ext3: Avoid starting a transaction in writepage when not necessary\n\nWe don\u0027t have to start a transaction in writepage() when all the blocks\nare a properly allocated. Even in ordered mode either the data has been\nwritten via write() and they are thus already added to transaction\u0027s list\nor the data was written via mmap and then it\u0027s random in which transaction\nthey get written anyway.\n\nThis should help VM to pageout dirty memory without blocking on transaction\ncommits.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "81a052273998f94b098945c4c313e05246956eb2",
      "tree": "c199d71543863ecd8bb45a9ef28b09a2340485ac",
      "parents": [
        "6f90bee5062a8af24d8aa5c47182d15aa28a0f17"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Jan 26 16:58:01 2009 +0100"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Mar 26 02:18:36 2009 +0100"
      },
      "message": "ext3: Use lowercase names of quota functions\n\nUse lowercase names of quota functions instead of old uppercase ones.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nCC: linux-ext4@vger.kernel.org\n"
    },
    {
      "commit": "54566b2c1594c2326a645a3551f9d989f7ba3c5e",
      "tree": "b373f3283fe5e197d0df29cd6b645c35adf1076c",
      "parents": [
        "e687d691cb3790d25e31c74f5941fd7c565e9df5"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Sun Jan 04 12:00:53 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 04 13:33:20 2009 -0800"
      },
      "message": "fs: symlink write_begin allocation context fix\n\nWith the write_begin/write_end aops, page_symlink was broken because it\ncould no longer pass a GFP_NOFS type mask into the point where the\nallocations happened.  They are done in write_begin, which would always\nassume that the filesystem can be entered from reclaim.  This bug could\ncause filesystem deadlocks.\n\nThe funny thing with having a gfp_t mask there is that it doesn\u0027t really\nallow the caller to arbitrarily tinker with the context in which it can be\ncalled.  It couldn\u0027t ever be GFP_ATOMIC, for example, because it needs to\ntake the page lock.  The only thing any callers care about is __GFP_FS\nanyway, so turn that into a single flag.\n\nAdd a new flag for write_begin, AOP_FLAG_NOFS.  Filesystems can now act on\nthis flag in their write_begin function.  Change __grab_cache_page to\naccept a nofs argument as well, to honour that flag (while we\u0027re there,\nchange the name to grab_cache_page_write_begin which is more instructive\nand does away with random leading underscores).\n\nThis is really a more flexible way to go in the end anyway -- if a\nfilesystem happens to want any extra allocations aside from the pagecache\nones in ints write_begin function, it may now use GFP_KERNEL (rather than\nGFP_NOFS) for common case allocations (eg.  ocfs2_alloc_write_ctxt, for a\nrandom example).\n\n[kosaki.motohiro@jp.fujitsu.com: fix ubifs]\n[kosaki.motohiro@jp.fujitsu.com: fix fuse]\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: \u003cstable@kernel.org\u003e\t\t[2.6.28.x]\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\n[ Cleaned up the calling convention: just pass in the AOP flags\n  untouched to the grab_cache_page_write_begin() function.  That\n  just simplifies everybody, and may even allow future expansion of the\n  logic.   - Linus ]\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b5ed3112b5f74c8ec1c7aa03a76c596635e85197",
      "tree": "943736d8c2502a8bebf71d86296bd98377235690",
      "parents": [
        "8d6d0c4da2dbbe0a69fea3692146af39f139f8b4"
      ],
      "author": {
        "name": "Duane Griffin",
        "email": "duaneg@dghda.com",
        "time": "Fri Dec 19 20:47:14 2008 +0000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 31 18:07:39 2008 -0500"
      },
      "message": "ext3: ensure fast symlinks are NUL-terminated\n\nEnsure fast symlink targets are NUL-terminated, even if corrupted\non-disk.\n\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Stephen Tweedie \u003csct@redhat.com\u003e\nCc: linux-ext4@vger.kernel.org\nSigned-off-by: Duane Griffin \u003cduaneg@dghda.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "5ec8b75e3a2a94860ee99b5456fe1a963c8680e5",
      "tree": "7b79032a1450c955d17ea909f001404802fc9c01",
      "parents": [
        "6a897cf447a83c9c3fd1b85a1e525c02d6eada7d"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Sat Oct 18 20:28:00 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:52:38 2008 -0700"
      },
      "message": "ext3: truncate block allocated on a failed ext3_write_begin\n\nFor blocksize \u003c pagesize we need to remove blocks that got allocated in\nblock_write_begin() if we fail with ENOSPC for later blocks.\nblock_write_begin() internally does this if it allocated page locally.\nThis makes sure we don\u0027t have blocks outside inode.i_size during ENOSPC.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "68c9d702bb72f367f3b148963ec6cf5e07ff7f65",
      "tree": "16fc61a1bd973c14a7858ab1fbcb306d3ae75184",
      "parents": [
        "00dc417fa3e763345b34ccb6034d72de76eea0a1"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "jbacik@redhat.com",
        "time": "Fri Oct 03 17:32:43 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Oct 03 17:32:43 2008 -0400"
      },
      "message": "generic block based fiemap implementation\n\nAny block based fs (this patch includes ext3) just has to declare its own\nfiemap() function and then call this generic function with its own\nget_block_t. This works well for block based filesystems that will map\nmultiple contiguous blocks at one time, but will work for filesystems that\nonly map one block at a time, you will just end up with an \"extent\" for each\nblock. One gotcha is this will not play nicely where there is hole+data\nafter the EOF. This function will assume its hit the end of the data as soon\nas it hits a hole after the EOF, so if there is any data past that it will\nnot pick that up. AFAIK no block based fs does this anyway, but its in the\ncomments of the function anyway just in case.\n\nSigned-off-by: Josef Bacik \u003cjbacik@redhat.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: linux-fsdevel@vger.kernel.org\n"
    },
    {
      "commit": "8ab22b9abb5c55413802e4adc9aa6223324547c3",
      "tree": "cff3319e1275e8a7c083d492889ec6bd0c7712d3",
      "parents": [
        "d84a52f62f6a396ed77aa0052da74ca9e760b28a"
      ],
      "author": {
        "name": "Hisashi Hifumi",
        "email": "hifumi.hisashi@oss.ntt.co.jp",
        "time": "Mon Jul 28 15:46:36 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 28 16:30:21 2008 -0700"
      },
      "message": "vfs: pagecache usage optimization for pagesize!\u003dblocksize\n\nWhen we read some part of a file through pagecache, if there is a\npagecache of corresponding index but this page is not uptodate, read IO\nis issued and this page will be uptodate.\n\nI think this is good for pagesize \u003d\u003d blocksize environment but there is\nroom for improvement on pagesize !\u003d blocksize environment.  Because in\nthis case a page can have multiple buffers and even if a page is not\nuptodate, some buffers can be uptodate.\n\nSo I suggest that when all buffers which correspond to a part of a file\nthat we want to read are uptodate, use this pagecache and copy data from\nthis pagecache to user buffer even if a page is not uptodate.  This can\nreduce read IO and improve system throughput.\n\nI wrote a benchmark program and got result number with this program.\n\nThis benchmark do:\n\n  1: mount and open a test file.\n\n  2: create a 512MB file.\n\n  3: close a file and umount.\n\n  4: mount and again open a test file.\n\n  5: pwrite randomly 300000 times on a test file.  offset is aligned\n     by IO size(1024bytes).\n\n  6: measure time of preading randomly 100000 times on a test file.\n\nThe result was:\n\t2.6.26\n        330 sec\n\n\t2.6.26-patched\n        226 sec\n\nArch:i386\nFilesystem:ext3\nBlocksize:1024 bytes\nMemory: 1GB\n\nOn ext3/4, a file is written through buffer/block.  So random read/write\nmixed workloads or random read after random write workloads are optimized\nwith this patch under pagesize !\u003d blocksize environment.  This test result\nshowed this.\n\nThe benchmark program is as follows:\n\n#include \u003cstdio.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 \u003ctime.h\u003e\n#include \u003cstdlib.h\u003e\n#include \u003cstring.h\u003e\n#include \u003csys/mount.h\u003e\n\n#define LEN 1024\n#define LOOP 1024*512 /* 512MB */\n\nmain(void)\n{\n\tunsigned long i, offset, filesize;\n\tint fd;\n\tchar buf[LEN];\n\ttime_t t1, t2;\n\n\tif (mount(\"/dev/sda1\", \"/root/test1/\", \"ext3\", 0, 0) \u003c 0) {\n\t\tperror(\"cannot mount\\n\");\n\t\texit(1);\n\t}\n\tmemset(buf, 0, LEN);\n\tfd \u003d open(\"/root/test1/testfile\", O_CREAT|O_RDWR|O_TRUNC);\n\tif (fd \u003c 0) {\n\t\tperror(\"cannot open file\\n\");\n\t\texit(1);\n\t}\n\tfor (i \u003d 0; i \u003c LOOP; i++)\n\t\twrite(fd, buf, LEN);\n\tclose(fd);\n\tif (umount(\"/root/test1/\") \u003c 0) {\n\t\tperror(\"cannot umount\\n\");\n\t\texit(1);\n\t}\n\tif (mount(\"/dev/sda1\", \"/root/test1/\", \"ext3\", 0, 0) \u003c 0) {\n\t\tperror(\"cannot mount\\n\");\n\t\texit(1);\n\t}\n\tfd \u003d open(\"/root/test1/testfile\", O_RDWR);\n\tif (fd \u003c 0) {\n\t\tperror(\"cannot open file\\n\");\n\t\texit(1);\n\t}\n\n\tfilesize \u003d LEN * LOOP;\n\tfor (i \u003d 0; i \u003c 300000; i++){\n\t\toffset \u003d (random() % filesize) \u0026 (~(LEN - 1));\n\t\tpwrite(fd, buf, LEN, offset);\n\t}\n\tprintf(\"start test\\n\");\n\ttime(\u0026t1);\n\tfor (i \u003d 0; i \u003c 100000; i++){\n\t\toffset \u003d (random() % filesize) \u0026 (~(LEN - 1));\n\t\tpread(fd, buf, LEN, offset);\n\t}\n\ttime(\u0026t2);\n\tprintf(\"%ld sec\\n\", t2-t1);\n\tclose(fd);\n\tif (umount(\"/root/test1/\") \u003c 0) {\n\t\tperror(\"cannot umount\\n\");\n\t\texit(1);\n\t}\n}\n\nSigned-off-by: Hisashi Hifumi \u003chifumi.hisashi@oss.ntt.co.jp\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Jan Kara \u003cjack@ucw.cz\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3ccc3167b0e5d46ab3bf03e22fbdb7616ce038cd",
      "tree": "2dcd2ebb5ffa7271541d23e721101fca57a0eb33",
      "parents": [
        "95450f5a7e53d5752ce1a0d0b8282e10fe745ae0"
      ],
      "author": {
        "name": "Duane Griffin",
        "email": "duaneg@dghda.com",
        "time": "Fri Jul 25 01:46:26 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:32 2008 -0700"
      },
      "message": "ext3: handle deleting corrupted indirect blocks\n\nWhile freeing indirect blocks we attach a journal head to the parent\nbuffer head, free the blocks, then journal the parent.  If the indirect\nblock list is corrupted and points to the parent the journal head will be\ndetached when the block is cleared, causing an OOPS.\n\nCheck for that explicitly and handle it gracefully.\n\nThis patch fixes the third case (image hdb.20000057.nullderef.gz)\nreported in http://bugzilla.kernel.org/show_bug.cgi?id\u003d10882.\n\nImmediately above the change, in the ext3_free_data function, we call\next3_clear_blocks to clear the indirect blocks in this parent block.  If\none of those blocks happens to actually be the parent block it will clear\nb_private / BH_JBD.\n\nI did the check at the end rather than earlier as it seemed more elegant.\nI don\u0027t think there should be much practical difference, although it is\npossible the FS may not be quite so badly corrupted if we did it the other\nway (and didn\u0027t clear the block at all).  To be honest, I\u0027m not convinced\nthere aren\u0027t other similar failure modes lurking in this code, although I\ncouldn\u0027t find any with a quick review.\n\n[akpm@linux-foundation.org: fix printk warning]\nSigned-off-by: Duane Griffin \u003cduaneg@dghda.com\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "95450f5a7e53d5752ce1a0d0b8282e10fe745ae0",
      "tree": "acd55d917280641fd3487b73e67298caeac9ee80",
      "parents": [
        "ae76dd9a6b5bbe5315fb7028e03f68f75b8538f3"
      ],
      "author": {
        "name": "Hidehiro Kawai",
        "email": "hidehiro.kawai.ez@hitachi.com",
        "time": "Fri Jul 25 01:46:24 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:32 2008 -0700"
      },
      "message": "ext3: don\u0027t read inode block if the buffer has a write error\n\nA transient I/O error can corrupt inode data.  Here is the scenario:\n\n(1) update inode_A at the block_B\n(2) pdflush writes out new inode_A to the filesystem, but it results\n    in write I/O error, at this point, BH_Uptodate flag of the buffer\n    for block_B is cleared and BH_Write_EIO is set\n(3) create new inode_C which located at block_B, and\n    __ext3_get_inode_loc() tries to read on-disk block_B because the\n    buffer is not uptodate\n(4) if it can read on-disk block_B successfully, inode_A is\n    overwritten by old data\n\nThis patch makes __ext3_get_inode_loc() not read the inode block if the\nbuffer has BH_Write_EIO flag.  In this case, the buffer should have the\nlatest information, so setting the uptodate flag to the buffer (this\navoids WARN_ON_ONCE() in mark_buffer_dirty().)\n\nAccording to this change, we would need to test BH_Write_EIO flag for the\nerror checking.  Currently nobody checks write I/O errors on metadata\nbuffers, but it will be done in other patches I\u0027m working on.\n\nSigned-off-by: Hidehiro Kawai \u003chidehiro.kawai.ez@hitachi.com\u003e\nCc: sugita \u003cyumiko.sugita.yf@hitachi.com\u003e\nCc: Satoshi OSHIMA \u003csatoshi.oshima.fk@hitachi.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Jan Kara \u003cjack@ucw.cz\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ae76dd9a6b5bbe5315fb7028e03f68f75b8538f3",
      "tree": "3b877057e84fda45782dd25a3c8be91173324922",
      "parents": [
        "ef1afd39519b74fbe1f63c9ab5a14490effec0e3"
      ],
      "author": {
        "name": "Duane Griffin",
        "email": "duaneg@dghda.com",
        "time": "Fri Jul 25 01:46:23 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:32 2008 -0700"
      },
      "message": "ext3: handle corrupted orphan list at mount\n\nIf the orphan node list includes valid, untruncatable nodes with nlink \u003e 0\nthe ext3_orphan_cleanup loop which attempts to delete them will not do so,\ncausing it to loop forever. Fix by checking for such nodes in the\next3_orphan_get function.\n\nThis patch fixes the second case (image hdb.20000009.softlockup.gz)\nreported in http://bugzilla.kernel.org/show_bug.cgi?id\u003d10882.\n\n[akpm@linux-foundation.org: coding-style fixes]\n[akpm@linux-foundation.org: printk warning fix]\nSigned-off-by: Duane Griffin \u003cduaneg@dghda.com\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7c2f3d6f89aab04c5c66a0a757888d3a77a5e899",
      "tree": "bf88a76e882892657b032bd131d9ab43592a055f",
      "parents": [
        "8f6e39a7ade8a5329c5651a2bc07010b3011da6a"
      ],
      "author": {
        "name": "Roel Kluin",
        "email": "12o3l@tiscali.nl",
        "time": "Tue Apr 29 22:01:27 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Apr 29 22:01:27 2008 -0400"
      },
      "message": "ext3: fix test ext_generic_write_end() copied return value\n\n\u0027copied\u0027 is unsigned, whereas \u0027ret2\u0027 is not. The test (copied \u003c 0) fails\n\nSigned-off-by: Roel Kluin \u003c12o3l@tiscali.nl\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "e05b6b524bd5c5c2bae1b64a7cbe08d46d57a6fe",
      "tree": "e5b5a7dbc57ccf8f6e425b7cb77249fdc534baca",
      "parents": [
        "fa1ff1e02fee908dfdc3f92902d39acc38041e4c"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Mon Apr 28 02:16:15 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:45 2008 -0700"
      },
      "message": "ext3: replace remaining __FUNCTION__ occurrences\n\n__FUNCTION__ is gcc-specific, use __func__\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e0e369a7dd39894465b6501a9492173e8104a19b",
      "tree": "e0cd041af90cf2262a6ca0f4b14dcbd7520ae025",
      "parents": [
        "22a5daf5375a900e1a4efe8ffe2daef9be01e873"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Mon Apr 28 02:16:08 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:44 2008 -0700"
      },
      "message": "ext3: use ext3_get_group_desc()\n\nUse ext3_get_group_desc()\n\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1cc8dcf569a3fcefb7ae32652225f2bd3e85257e",
      "tree": "23e065de096ab6cf044458967bea5baa6a98cff0",
      "parents": [
        "c0d1f29534f2bd6c5992831eb0f648522e9b0204"
      ],
      "author": {
        "name": "Benoit Boissinot",
        "email": "benoit.boissinot@ens-lyon.org",
        "time": "Mon Apr 21 22:45:55 2008 +0000"
      },
      "committer": {
        "name": "Jesper Juhl",
        "email": "juhl@hera.kernel.org",
        "time": "Mon Apr 21 22:45:55 2008 +0000"
      },
      "message": "ext*: spelling fix prefered -\u003e preferred\n\nSpelling fix: prefered -\u003e preferred\n\nSigned-off-by: Benoit Boissinot \u003cbenoit.boissinot@ens-lyon.org\u003e\nSigned-off-by: Jesper Juhl \u003cjesper.juhl@gmail.com\u003e\n"
    },
    {
      "commit": "473043dcee1874aab99f66b0362b344618eb3790",
      "tree": "bc329501ec6cd0d31dfe11d4587347093dca4ccf",
      "parents": [
        "52fcf7032935b33158e3998ed399cac97447ab8d"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Thu Feb 07 00:15:36 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 07 08:42:27 2008 -0800"
      },
      "message": "iget: stop EXT3 from using iget() and read_inode()\n\nStop the EXT3 filesystem from using iget() and read_inode().  Replace\next3_read_inode() with ext3_iget(), and call that instead of iget().\next3_iget() then uses iget_locked() directly and returns a proper error code\ninstead of an inode in the event of an error.\n\next3_fill_super() returns any error incurred when getting the root inode\ninstead of EINVAL.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nAcked-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bd1939de9061dbc5cac44ffb4425aaf4c9b894f1",
      "tree": "99cc44f2b92db9dba1391c81638f7755603c0199",
      "parents": [
        "d8fd66aaea7fe3e4f1ea044a563f129e3b9f05ff"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Feb 06 01:40:21 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Feb 06 10:41:21 2008 -0800"
      },
      "message": "ext3: fix lock inversion in direct IO\n\nWe cannot start transaction in ext3_direct_IO() and just let it last during\nthe whole write because dio_get_page() acquires mmap_sem which ranks above\ntransaction start (e.g.  because we have dependency chain\nmmap_sem-\u003ePageLock-\u003ejournal_start, or because we update atime while holding\nmmap_sem) and thus deadlocks could happen.  We solve the problem by\nstarting a transaction separately for each ext3_get_block() call.\n\nWe *could* have a problem that we allocate a block and before its data are\nwritten out the machine crashes and thus we expose stale data.  But that\ndoes not happen because for hole-filling generic code falls back to\nbuffered writes and for file extension, we add inode to orphan list and\nthus in case of crash, journal replay will truncate inode back to the\noriginal size.\n\n[akpm@linux-foundation.org: build fix]\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nCc: Zach Brown \u003czach.brown@oracle.com\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "fb01bfdac733f1925561eea52c60072f2fbcdc97",
      "tree": "92e95b0dd90b99f447d14f0598b398cc2eee9d42",
      "parents": [
        "197cd65accc6a274dabcd81f4811ba5d9a4856df"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Wed Feb 06 01:40:16 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Feb 06 10:41:21 2008 -0800"
      },
      "message": "ext[234]: remove unused argument for ext[234]_find_goal()\n\nThe argument chain for ext[234]_find_goal() is not used.  This patch removes\nit and fixes comment as well.\n\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@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": "eebd2aa355692afaf9906f62118620f1a1c19dbb",
      "tree": "207eead3a736963c3e50942038c463f2f611ccce",
      "parents": [
        "b98348bdd08dc4ec11828aa98a78edde15c53cfa"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Feb 04 22:28:29 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:13 2008 -0800"
      },
      "message": "Pagecache zeroing: zero_user_segment, zero_user_segments and zero_user\n\nSimplify page cache zeroing of segments of pages through 3 functions\n\nzero_user_segments(page, start1, end1, start2, end2)\n\n        Zeros two segments of the page. It takes the position where to\n        start and end the zeroing which avoids length calculations and\n\tmakes code clearer.\n\nzero_user_segment(page, start, end)\n\n        Same for a single segment.\n\nzero_user(page, start, length)\n\n        Length variant for the case where we know the length.\n\nWe remove the zero_user_page macro. Issues:\n\n1. Its a macro. Inline functions are preferable.\n\n2. The KM_USER0 macro is only defined for HIGHMEM.\n\n   Having to treat this special case everywhere makes the\n   code needlessly complex. The parameter for zeroing is always\n   KM_USER0 except in one single case that we open code.\n\nAvoiding KM_USER0 makes a lot of code not having to be dealing\nwith the special casing for HIGHMEM anymore. Dealing with\nkmap is only necessary for HIGHMEM configurations. In those\nconfigurations we use KM_USER0 like we do for a series of other\nfunctions defined in highmem.h.\n\nSince KM_USER0 is depends on HIGHMEM the existing zero_user_page\nfunction could not be a macro. zero_user_* functions introduced\nhere can be be inline because that constant is not used when these\nfunctions are called.\n\nAlso extract the flushing of the caches to be outside of the kmap.\n\n[akpm@linux-foundation.org: fix nfs and ntfs build]\n[akpm@linux-foundation.org: fix ntfs build some more]\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Steven French \u003csfrench@us.ibm.com\u003e\nCc: Michael Halcrow \u003cmhalcrow@us.ibm.com\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nCc: Anton Altaparmakov \u003caia21@cantab.net\u003e\nCc: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\nCc: David Chinner \u003cdgc@sgi.com\u003e\nCc: Michael Halcrow \u003cmhalcrow@us.ibm.com\u003e\nCc: Steven French \u003csfrench@us.ibm.com\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9ad163ae0df8a3adab6d521475142392e3efb7a6",
      "tree": "71b72c8d565e5325183cd03ddce070295fd9b01d",
      "parents": [
        "7a266e75cf5a1efd20d084408a1b7f1a185496dd"
      ],
      "author": {
        "name": "Jose R. Santos",
        "email": "jrs@us.ibm.com",
        "time": "Thu Oct 18 23:39:23 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Oct 19 11:53:35 2007 -0700"
      },
      "message": "JBD: Fix JBD warnings when compiling with CONFIG_JBD_DEBUG\n\nNote from Mingming\u0027s JBD2 fix:\n\nNoticed all warnings are occurs when the debug level is 0.  Then found the\n\"jbd2: Move jbd2-debug file to debugfs\" patch\nhttp://git.kernel.org/?p\u003dlinux/kernel/git/torvalds/linux-2.6.git;a\u003dcommit;h\u003d0f49d5d019afa4e94253bfc92f0daca3badb990b\n\nchanged the jbd2_journal_enable_debug from int type to u8, makes the\njbd_debug comparision is always true when the debugging level is 0.  Thus\nthe compile warning occurs.\n\nThought about changing the jbd2_journal_enable_debug data type back to int,\nbut can\u0027t, because the jbd2-debug is moved to debug fs, where calling\ndebugfs_create_u8() to create the debugfs entry needs the value to be u8\ntype.\n\nEven if we changed the data type back to int, the code is still buggy,\nkernel should not print jbd2 debug message if the jbd2_journal_enable_debug\nis set to 0.  But this is not the case.\n\nThe fix is change the level of debugging to 1.  The same should fixed in\next3/JBD, but currently ext3 jbd-debug via /proc fs is broken, so we\nprobably should fix it all together.\n\nSigned-off-by: Jose R. Santos \u003cjrs@us.ibm.com\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c80544dc0b87bb65038355e7aafdc30be16b26ab",
      "tree": "176349304bec88a9de16e650c9919462e0dd453c",
      "parents": [
        "0e9663ee452ffce0d429656ebbcfe69417a30e92"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@linux-foundation.org",
        "time": "Thu Oct 18 03:07:05 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Oct 18 14:37:31 2007 -0700"
      },
      "message": "sparse pointer use of zero as null\n\nGet rid of sparse related warnings from places that use integer as NULL\npointer.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Stephen Hemminger \u003cshemminger@linux-foundation.org\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nCc: Jeff Garzik \u003cjeff@garzik.org\u003e\nCc: Matt Mackall \u003cmpm@selenic.com\u003e\nCc: Ian Kent \u003craven@themaw.net\u003e\nCc: Arnd Bergmann \u003carnd@arndb.de\u003e\nCc: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Stephen Smalley \u003csds@tycho.nsa.gov\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f4fc66a894546bdc88a775d0e83ad20a65210bcb",
      "tree": "87d725ad4e579eb353f615eab26dbf705e2e4bc2",
      "parents": [
        "f34fb6eccc962e4137b77c4bbe1e9a31d27a30e6"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Oct 16 01:25:05 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:42:55 2007 -0700"
      },
      "message": "ext3: convert to new aops\n\nVarious fixes and improvements\n\nSigned-off-by: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e3a68e30d28dbc6981dfc3d6ceddbfa2f885fe4e",
      "tree": "f15372ae04f4eaea734c1c6935ae65887acf4c3c",
      "parents": [
        "6b86e854f71600c809536502a0efa9d4e384fb23"
      ],
      "author": {
        "name": "Dave Hansen",
        "email": "haveblue@us.ibm.com",
        "time": "Sun Jul 15 23:41:14 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Jul 16 09:05:48 2007 -0700"
      },
      "message": "ext3: remove extra IS_RDONLY() check\n\next3_change_inode_journal_flag() is only called from one location:\next3_ioctl(EXT3_IOC_SETFLAGS).  That ioctl case already has a IS_RDONLY()\ncall in it so this one is superfluous.\n\nSigned-off-by: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e4a10a362cd1df6c23fe46f449d36b3f712e2824",
      "tree": "2e926ca5225e8b6f52d9fc4dd3886cff7f235721",
      "parents": [
        "7b018b2888b32284e09bba9cccb5cd2e12199feb"
      ],
      "author": {
        "name": "Kirill Korotaev",
        "email": "dev@openvz.org",
        "time": "Sat Jun 23 17:16:48 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sun Jun 24 08:59:12 2007 -0700"
      },
      "message": "ext3: lost brelse in ext3_read_inode()\n\nOne of error path in ext3_read_inode() leaks bh since brelse is forgoten.\n\nSigned-off-by: Kirill Korotaev \u003cdev@openvz.org\u003e\nAcked-by: Vasily Averin \u003cvvs@sw.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0c11d7a9e9e9793219baf715048c190a84bead57",
      "tree": "ba5557118502f04a6dc12b66a6afacac1144256b",
      "parents": [
        "f36dca90e674a1a62cad810f630629c0008b2128"
      ],
      "author": {
        "name": "Nate Diller",
        "email": "nate.diller@gmail.com",
        "time": "Wed May 09 02:35:08 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:55 2007 -0700"
      },
      "message": "ext3: use zero_user_page\n\nUse zero_user_page() instead of open-coding it.\n\nSigned-off-by: Nate Diller \u003cnate.diller@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "28be5abb400e5e082f5225105fdc69337ec0c0b4",
      "tree": "e4bb3e527aac316004be68e28a25b2919e30afd4",
      "parents": [
        "9926e4c74300c4b31dee007298c6475d33369df0"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue May 08 00:30:33 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:12 2007 -0700"
      },
      "message": "ext3: copy i_flags to inode flags on write\n\nA patch that stores inode flags such as S_IMMUTABLE, S_APPEND, etc.  from\ni_flags to EXT3_I(inode)-\u003ei_flags when inode is written to disk.  The same\nthing is done on GETFLAGS ioctl.\n\nQuota code changes these flags on quota files (to make it harder for\nsysadmin to screw himself) and these changes were not correctly propagated\ninto the filesystem (especially, lsattr did not show them and users were\nwondering...).\n\nPropagate flags such as S_APPEND, S_IMMUTABLE, etc.  from i_flags into\next3-specific i_flags.  Hence, when someone sets these flags via a\ndifferent interface than ioctl, they are stored correctly.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e63340ae6b6205fef26b40a75673d1c9c0c8bb90",
      "tree": "8d3212705515edec73c3936bb9e23c71d34a7b41",
      "parents": [
        "04c9167f91e309c9c4ea982992aa08e83b2eb42e"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Tue May 08 00:28:08 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:07 2007 -0700"
      },
      "message": "header cleaning: don\u0027t include smp_lock.h when not used\n\nRemove includes of \u003clinux/smp_lock.h\u003e where it is not used/needed.\nSuggested by Al Viro.\n\nBuilds cleanly on x86_64, i386, alpha, ia64, powerpc, sparc,\nsparc64, and arm (all 59 defconfigs).\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@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": "4d7bf11d649c72621ca31b8ea12b9c94af380e63",
      "tree": "c4a3c11cf6d13210ed344de0ae091d3f7523c689",
      "parents": [
        "8948e11f450e6189a79e47d6051c3d5a0b98e3f3"
      ],
      "author": {
        "name": "Markus Rechberger",
        "email": "Markus.Rechberger@amd.com",
        "time": "Tue May 08 00:23:39 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:14:58 2007 -0700"
      },
      "message": "ext2/3/4: fix file date underflow on ext2 3 filesystems on 64 bit systems\n\nTaken from http://bugzilla.kernel.org/show_bug.cgi?id\u003d5079\n\nsigned long ranges from -2.147.483.648 to 2.147.483.647 on x86 32bit\n\n10000011110110100100111110111101 .. -2,082,844,739\n10000011110110100100111110111101 ..  2,212,122,557 \u003c- this currently gets\nstored on the disk but when converting it to a 64bit signed long value it loses\nits sign and becomes positive.\n\nCc: Andreas Dilger \u003cadilger@dilger.ca\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\n\nAndreas says:\n\nThis patch is now treating timestamps with the high bit set as negative\ntimes (before Jan 1, 1970).  This means we lose 1/2 of the possible range\nof timestamps (lopping off 68 years before unix timestamp overflow -\nnow only 30 years away :-) to handle the extremely rare case of setting\ntimestamps into the distant past.\n\nIf we are only interested in fixing the underflow case, we could just\nlimit the values to 0 instead of storing negative values.  At worst this\nwill skew the timestamp by a few hours for timezones in the far east\n(files would still show Jan 1, 1970 in \"ls -l\" output).\n\nThat said, it seems 32-bit systems (mine at least) allow files to be set\ninto the past (01/01/1907 works fine) so it seems this patch is bringing\nthe x86_64 behaviour into sync with other kernels.\n\nOn the plus side, we have a patch that is ready to add nanosecond timestamps\nto ext3 and as an added bonus adds 2 high bits to the on-disk timestamp so\nthis extends the maximum date to 2242.\n\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1aa9b4b9bc10a0cf6e6109c2997d759a76e840e5",
      "tree": "52a18d3d83f28e8a736775c2a88ad9cb60f48da6",
      "parents": [
        "03221702608c60b470fc86a23bdf4bc30e5bd59f"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Sun Apr 01 23:49:43 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Apr 02 10:06:08 2007 -0700"
      },
      "message": "[PATCH] revert \"retries in ext3_prepare_write() violate ordering requirements\"\n\nRevert e92a4d595b464c4aae64be39ca61a9ffe9c8b278.\n\nDmitry points out\n\n\"When we block_prepare_write() failed while ext3_prepare_write() we jump to\n \"failure\" label and call ext3_prepare_failure() witch search last mapped bh\n and invoke commit_write untill it.  This is wrong!!  because some bh from\n begining to the last mapped bh may be not uptodate.  As a result we commit to\n disk not uptodate page content witch contains garbage from previous usage.\"\n\nand\n\n\"Unexpected file size increasing.\"\n\n   Call trace the same as it was in first issue but result is different.\n   For example we have file with i_size is zero.  we want write two blocks ,\n   but fs has only one free block.\n\n   -\u003eext3_prepare_write(...from \u003d\u003d 0, to \u003d\u003d 2048)\n     retry:\n     -\u003eblock_prepare_write() \u003d\u003d -ENOSPC# we failed but allocated one block here.\n     -\u003eext3_prepare_failure()\n       -\u003ecommit_write( from \u003d\u003d 0, to \u003d\u003d 1024) # after this i_size becomes 1024 :)\n     if (ret \u003d\u003d -ENOSPC \u0026\u0026 ext3_should_retry_alloc(inode-\u003ei_sb, \u0026retries))\n        goto retry;\n\n   Finally when all retries will be spended ext3_prepare_failure return\n   -ENOSPC, but i_size was increased and later block trimm procedures can\u0027t\n   help here.\n\nWe don\u0027t appear to have the horsepower to fix these issues, so let\u0027s put\nthings back the way they were for now.\n\nCc: Kirill Korotaev \u003cdev@openvz.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Ken Chen \u003ckenneth.w.chen@intel.com\u003e\nCc: Andrey Savochkin \u003csaw@sw.ru\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nCc: Dmitriy Monakhov \u003cdmonakhov@openvz.org\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3e4fdaf8aebe489e8e59826fdf78cb64356d2ad0",
      "tree": "fe95bee85f97d16f192ff02fa8880f857b71d136",
      "parents": [
        "501b9ebf43f9973c3e246c8fbd17144d81a989ef"
      ],
      "author": {
        "name": "Dmitriy Monakhov",
        "email": "dmonakhov@openvz.org",
        "time": "Sat Feb 10 01:46:35 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sun Feb 11 11:18:06 2007 -0800"
      },
      "message": "[PATCH] jbd layer function called instead of fs specific one\n\njbd function called instead of fs specific one.\n\nSigned-off-by: Dmitriy Monakhov \u003cdmonakhov@openvz.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ],
  "next": "e92a4d595b464c4aae64be39ca61a9ffe9c8b278"
}
