)]}'
{
  "log": [
    {
      "commit": "b9075fa968a0a4347aef35e235e2995c0e57dddd",
      "tree": "cf9f9716784e790d8a43339653256d9cf9178ff3",
      "parents": [
        "ae29bc92da01a2e9d278a9a58c3b307d41cc0254"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Mon Oct 31 17:11:33 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:54 2011 -0700"
      },
      "message": "treewide: use __printf not __attribute__((format(printf,...)))\n\nStandardize the style for compiler based printf format verification.\nStandardized the location of __printf too.\n\nDone via script and a little typing.\n\n$ grep -rPl --include\u003d*.[ch] -w \"__attribute__\" * | \\\n  grep -vP \"^(tools|scripts|include/linux/compiler-gcc.h)\" | \\\n  xargs perl -n -i -e \u0027local $/; while (\u003c\u003e) { s/\\b__attribute__\\s*\\(\\s*\\(\\s*format\\s*\\(\\s*printf\\s*,\\s*(.+)\\s*,\\s*(.+)\\s*\\)\\s*\\)\\s*\\)/__printf($1, $2)/g ; print; }\u0027\n\n[akpm@linux-foundation.org: revert arch bits]\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nCc: \"Kirill A. Shutemov\" \u003ckirill@shutemov.name\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "966dbde2c208e07bab7a45a7855e1e693eabe661",
      "tree": "4d1687ad52be80141d90a5bc3c5c6de64d9bad24",
      "parents": [
        "94054fa3fca1fd78db02cb3d68d5627120f0a1d4"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Mon Oct 31 17:07:48 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:46 2011 -0700"
      },
      "message": "ext4: warn if direct reclaim tries to writeback pages\n\nDirect reclaim should never writeback pages.  Warn if an attempt is made.\n\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Johannes Weiner \u003cjweiner@redhat.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Alex Elder \u003caelder@sgi.com\u003e\nCc: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Dave Hansen \u003cdave@linux.vnet.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f362f98e7c445643d27c610bb7a86b79727b592e",
      "tree": "399d9ebccdfbdfe9690ab1403a001d6f08e54b41",
      "parents": [
        "f793f2961170c0b49c1650e69e7825484159ce62",
        "f3c7691e8d30d88899b514675c7c86d19057b5fd"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 28 10:49:34 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 28 10:49:34 2011 -0700"
      },
      "message": "Merge branch \u0027for-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/hch/vfs-queue\n\n* \u0027for-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/hch/vfs-queue: (21 commits)\n  leases: fix write-open/read-lease race\n  nfs: drop unnecessary locking in llseek\n  ext4: replace cut\u0027n\u0027pasted llseek code with generic_file_llseek_size\n  vfs: add generic_file_llseek_size\n  vfs: do (nearly) lockless generic_file_llseek\n  direct-io: merge direct_io_walker into __blockdev_direct_IO\n  direct-io: inline the complete submission path\n  direct-io: separate map_bh from dio\n  direct-io: use a slab cache for struct dio\n  direct-io: rearrange fields in dio/dio_submit to avoid holes\n  direct-io: fix a wrong comment\n  direct-io: separate fields only used in the submission path from struct dio\n  vfs: fix spinning prevention in prune_icache_sb\n  vfs: add a comment to inode_permission()\n  vfs: pass all mask flags check_acl and posix_acl_permission\n  vfs: add hex format for MAY_* flag values\n  vfs: indicate that the permission functions take all the MAY_* flags\n  compat: sync compat_stats with statfs.\n  vfs: add \"device\" tag to /proc/self/mountstats\n  cleanup: vfs: small comment fix for block_invalidatepage\n  ...\n\nFix up trivial conflict in fs/gfs2/file.c (llseek changes)\n"
    },
    {
      "commit": "4cce0e28b932c11454f75d1c1fae674600c23fbf",
      "tree": "3c1a0772eb6e681ebde32c7a9bab2cefb87eaf69",
      "parents": [
        "5760495a872d63a182962680a13c2af29235237c"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Thu Sep 15 16:06:51 2011 -0700"
      },
      "committer": {
        "name": "root",
        "email": "root@serles.lst.de",
        "time": "Fri Oct 28 14:58:59 2011 +0200"
      },
      "message": "ext4: replace cut\u0027n\u0027pasted llseek code with generic_file_llseek_size\n\nThis gives ext4 the benefits of unlocked llseek.\n\nCc: tytso@mit.edu\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "36b8d186e6cc8e32cb5227f5645a58e1bc0af190",
      "tree": "1000ad26e189e6ff2c53fb7eeff605f59c7ad94e",
      "parents": [
        "cd85b557414fe4cd44ea6608825e96612a5fe2b2",
        "c45ed235abf1b0b6666417e3c394f18717976acd"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 25 09:45:31 2011 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 25 09:45:31 2011 +0200"
      },
      "message": "Merge branch \u0027next\u0027 of git://selinuxproject.org/~jmorris/linux-security\n\n* \u0027next\u0027 of git://selinuxproject.org/~jmorris/linux-security: (95 commits)\n  TOMOYO: Fix incomplete read after seek.\n  Smack: allow to access /smack/access as normal user\n  TOMOYO: Fix unused kernel config option.\n  Smack: fix: invalid length set for the result of /smack/access\n  Smack: compilation fix\n  Smack: fix for /smack/access output, use string instead of byte\n  Smack: domain transition protections (v3)\n  Smack: Provide information for UDS getsockopt(SO_PEERCRED)\n  Smack: Clean up comments\n  Smack: Repair processing of fcntl\n  Smack: Rule list lookup performance\n  Smack: check permissions from user space (v2)\n  TOMOYO: Fix quota and garbage collector.\n  TOMOYO: Remove redundant tasklist_lock.\n  TOMOYO: Fix domain transition failure warning.\n  TOMOYO: Remove tomoyo_policy_memory_lock spinlock.\n  TOMOYO: Simplify garbage collector.\n  TOMOYO: Fix make namespacecheck warnings.\n  target: check hex2bin result\n  encrypted-keys: check hex2bin result\n  ...\n"
    },
    {
      "commit": "fed678dc8a8b839c8189b5d889a94e865cd327dd",
      "tree": "d2bf10d2a4e4ca0a27ccd6f7ae40e8e259acfcfc",
      "parents": [
        "808bf29b9195c52239b9aaeda7c6082a0ddf07c6",
        "6c4867f6469964e34c5f4ee229a2a7f71a34c7ff"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 21 13:20:21 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 21 13:20:21 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.dk/linux-block\n\n* \u0027for-linus\u0027 of git://git.kernel.dk/linux-block:\n  floppy: use del_timer_sync() in init cleanup\n  blk-cgroup: be able to remove the record of unplugged device\n  block: Don\u0027t check QUEUE_FLAG_SAME_COMP in __blk_complete_request\n  mm: Add comment explaining task state setting in bdi_forker_thread()\n  mm: Cleanup clearing of BDI_pending bit in bdi_forker_thread()\n  block: simplify force plug flush code a little bit\n  block: change force plug flush call order\n  block: Fix queue_flag update when rq_affinity goes from 2 to 1\n  block: separate priority boosting from REQ_META\n  block: remove READ_META and WRITE_META\n  xen-blkback: fixed indentation and comments\n  xen-blkback: Don\u0027t disconnect backend until state switched to XenbusStateClosed.\n"
    },
    {
      "commit": "8c0bec2151a47906bf779c6715a10ce04453ab77",
      "tree": "0165e80ba408b5db1e9e2adf9264bf4186b06768",
      "parents": [
        "fcb8ce5cfe30ca9ca5c9a79cdfe26d1993e65e0c"
      ],
      "author": {
        "name": "Jiaying Zhang",
        "email": "jiayingz@google.com",
        "time": "Wed Aug 31 11:50:51 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Aug 31 11:50:51 2011 -0400"
      },
      "message": "ext4: remove i_mutex lock in ext4_evict_inode to fix lockdep complaining\n\nThe i_mutex lock and flush_completed_IO() added by commit 2581fdc810\nin ext4_evict_inode() causes lockdep complaining about potential\ndeadlock in several places.  In most/all of these LOCKDEP complaints\nit looks like it\u0027s a false positive, since many of the potential\ncircular locking cases can\u0027t take place by the time the\next4_evict_inode() is called; but since at the very least it may mask\nreal problems, we need to address this.\n\nThis change removes the flush_completed_IO() and i_mutex lock in\next4_evict_inode().  Instead, we take a different approach to resolve\nthe software lockup that commit 2581fdc810 intends to fix.  Rather\nthan having ext4-dio-unwritten thread wait for grabing the i_mutex\nlock of an inode, we use mutex_trylock() instead, and simply requeue\nthe work item if we fail to grab the inode\u0027s i_mutex lock.\n\nThis should speed up work queue processing in general and also\nprevents the following deadlock scenario: During page fault,\nshrink_icache_memory is called that in turn evicts another inode B.\nInode B has some pending io_end work so it calls ext4_ioend_wait()\nthat waits for inode B\u0027s i_ioend_count to become zero.  However, inode\nB\u0027s ioend work was queued behind some of inode A\u0027s ioend work on the\nsame cpu\u0027s ext4-dio-unwritten workqueue.  As the ext4-dio-unwritten\nthread on that cpu is processing inode A\u0027s ioend work, it tries to\ngrab inode A\u0027s i_mutex lock.  Since the i_mutex lock of inode A is\nstill hold before the page fault happened, we enter a deadlock.\n\nSigned-off-by: Jiaying Zhang \u003cjiayingz@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\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": "c063d8a60fc912ae198f054608ad461a69dc9a19",
      "tree": "fb7804322f0fa7880b073a5b2a4f2bd1a01ee5c0",
      "parents": [
        "79058c4b9ed82415d0690ce6d520252741653486",
        "dccaf33fa37a1bc5d651baeb3bfeb6becb86597b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Aug 21 06:59:41 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Aug 21 06:59:41 2011 -0700"
      },
      "message": "Merge branch \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4\n\n* \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4:\n  ext4: flush any pending end_io requests before DIO reads w/dioread_nolock\n  ext4: fix nomblk_io_submit option so it correctly converts uninit blocks\n  ext4: Resolve the hang of direct i/o read in handling EXT4_IO_END_UNWRITTEN.\n  ext4: call ext4_ioend_wait and ext4_flush_completed_IO in ext4_evict_inode\n  ext4: Fix ext4_should_writeback_data() for no-journal mode\n"
    },
    {
      "commit": "dccaf33fa37a1bc5d651baeb3bfeb6becb86597b",
      "tree": "ff41c9c0208589fded8176089380e316dd5c7965",
      "parents": [
        "9dd75f1f1a02d656a11a7b9b9e6c2759b9c1e946"
      ],
      "author": {
        "name": "Jiaying Zhang",
        "email": "jiayingz@google.com",
        "time": "Fri Aug 19 19:13:32 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Aug 19 19:13:32 2011 -0400"
      },
      "message": "ext4: flush any pending end_io requests before DIO reads w/dioread_nolock\n\nThere is a race between ext4 buffer write and direct_IO read with\ndioread_nolock mount option enabled. The problem is that we clear\nPageWriteback flag during end_io time but will do\nuninitialized-to-initialized extent conversion later with dioread_nolock.\nIf an O_direct read request comes in during this period, ext4 will return\nzero instead of the recently written data.\n\nThis patch checks whether there are any pending uninitialized-to-initialized\nextent conversion requests before doing O_direct read to close the race.\nNote that this is just a bandaid fix. The fundamental issue is that we\nclear PageWriteback flag before we really complete an IO, which is\nproblem-prone. To fix the fundamental issue, we may need to implement an\nextent tree cache that we can use to look up pending to-be-converted extents.\n\nSigned-off-by: Jiaying Zhang \u003cjiayingz@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "9dd75f1f1a02d656a11a7b9b9e6c2759b9c1e946",
      "tree": "0e3dc45c410c31fb9ee24e9722a17d0de259b537",
      "parents": [
        "32c80b32c053dc52712dedac5e4d0aa7c93fc353"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Aug 13 12:58:21 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Aug 13 12:58:21 2011 -0400"
      },
      "message": "ext4: fix nomblk_io_submit option so it correctly converts uninit blocks\n\nBug discovered by Jan Kara:\n\nFinally, commit 1449032be17abb69116dbc393f67ceb8bd034f92 returned back\nthe old IO submission code but apparently it forgot to return the old\nhandling of uninitialized buffers so we unconditionnaly call\nblock_write_full_page() without specifying end_io function. So AFAICS\nwe never convert unwritten extents to written in some cases. For\nexample when I mount the fs as: mount -t ext4 -o\nnomblk_io_submit,dioread_nolock /dev/ubdb /mnt and do\n        int fd \u003d open(argv[1], O_RDWR | O_CREAT | O_TRUNC, 0600);\n        char buf[1024];\n        memset(buf, \u0027a\u0027, sizeof(buf));\n        fallocate(fd, 0, 0, 16384);\n        write(fd, buf, sizeof(buf));\n\nI get a file full of zeros (after remounting the filesystem so that\npagecache is dropped) instead of seeing the first KB contain \u0027a\u0027s.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "32c80b32c053dc52712dedac5e4d0aa7c93fc353",
      "tree": "857375faae2d6c562741d14ed13a1411b197baf5",
      "parents": [
        "2581fdc810889fdea97689cb62481201d579c796"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "boyu.mt@taobao.com",
        "time": "Sat Aug 13 12:30:59 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Aug 13 12:30:59 2011 -0400"
      },
      "message": "ext4: Resolve the hang of direct i/o read in handling EXT4_IO_END_UNWRITTEN.\n\nEXT4_IO_END_UNWRITTEN flag set and the increase of i_aiodio_unwritten\nshould be done simultaneously since ext4_end_io_nolock always clear\nthe flag and decrease the counter in the same time.\n\nWe don\u0027t increase i_aiodio_unwritten when setting\nEXT4_IO_END_UNWRITTEN so it will go nagative and causes some process\nto wait forever.\n\nPart of the patch came from Eric in his e-mail, but it doesn\u0027t fix the\nproblem met by Michael actually.\n\nhttp://marc.info/?l\u003dlinux-ext4\u0026m\u003d131316851417460\u0026w\u003d2\n\nReported-and-Tested-by: Michael Tokarev\u003cmjt@tls.msk.ru\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: Tao Ma \u003cboyu.mt@taobao.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "2581fdc810889fdea97689cb62481201d579c796",
      "tree": "55d7a2244a5efa184e290446c0ee3f61b71bf264",
      "parents": [
        "441c850857148935babe000fc2ba1455fe54a6a9"
      ],
      "author": {
        "name": "Jiaying Zhang",
        "email": "jiayingz@google.com",
        "time": "Sat Aug 13 12:17:13 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Aug 13 12:17:13 2011 -0400"
      },
      "message": "ext4: call ext4_ioend_wait and ext4_flush_completed_IO in ext4_evict_inode\n\nFlush inode\u0027s i_completed_io_list before calling ext4_io_wait to\nprevent the following deadlock scenario: A page fault happens while\nsome process is writing inode A. During page fault,\nshrink_icache_memory is called that in turn evicts another inode\nB. Inode B has some pending io_end work so it calls ext4_ioend_wait()\nthat waits for inode B\u0027s i_ioend_count to become zero. However, inode\nB\u0027s ioend work was queued behind some of inode A\u0027s ioend work on the\nsame cpu\u0027s ext4-dio-unwritten workqueue. As the ext4-dio-unwritten\nthread on that cpu is processing inode A\u0027s ioend work, it tries to\ngrab inode A\u0027s i_mutex lock. Since the i_mutex lock of inode A is\nstill hold before the page fault happened, we enter a deadlock.\n\nAlso moves ext4_flush_completed_IO and ext4_ioend_wait from\next4_destroy_inode() to ext4_evict_inode(). During inode deleteion,\next4_evict_inode() is called before ext4_destroy_inode() and in\next4_evict_inode(), we may call ext4_truncate() without holding\ni_mutex lock. As a result, there is a race between flush_completed_IO\nthat is called from ext4_ext_truncate() and ext4_end_io_work, which\nmay cause corruption on an io_end structure. This change moves\next4_flush_completed_IO and ext4_ioend_wait from ext4_destroy_inode()\nto ext4_evict_inode() to resolve the race between ext4_truncate() and\next4_end_io_work during inode deletion.\n\nSigned-off-by: Jiaying Zhang \u003cjiayingz@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "441c850857148935babe000fc2ba1455fe54a6a9",
      "tree": "aa0ef8ca32a49b2daf072f851938af3f2db35a90",
      "parents": [
        "322a8b034003c0d46d39af85bf24fee27b902f48"
      ],
      "author": {
        "name": "Curt Wohlgemuth",
        "email": "curtw@google.com",
        "time": "Sat Aug 13 11:25:18 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Aug 13 11:25:18 2011 -0400"
      },
      "message": "ext4: Fix ext4_should_writeback_data() for no-journal mode\n\next4_should_writeback_data() had an incorrect sequence of\ntests to determine if it should return 0 or 1: in\nparticular, even in no-journal mode, 0 was being returned\nfor a non-regular-file inode.\n\nThis meant that, in non-journal mode, we would use\next4_journalled_aops for directories, symlinks, and other\nnon-regular files.  However, calling journalled aop\ncallbacks when there is no valid handle, can cause problems.\n\nThis would cause a kernel crash with Jan Kara\u0027s commit\n2d859db3e4 (\"ext4: fix data corruption in inodes with\njournalled data\"), because we now dereference \u0027handle\u0027 in\next4_journalled_write_end().\n\nI also added BUG_ONs to check for a valid handle in the\nobviously journal-only aops callbacks.\n\nI tested this running xfstests with a scratch device in\nthese modes:\n\n   - no-journal\n   - data\u003dordered\n   - data\u003dwriteback\n   - data\u003djournal\n\nAll work fine; the data\u003djournal run has many failures and a\ncrash in xfstests 074, but this is no different from a\nvanilla kernel.\n\nSigned-off-by: Curt Wohlgemuth \u003ccurtw@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "8c20871998c082f6fbc963f1449a5ba5140ee39a",
      "tree": "bbc61fb11c8e9f5e02843dbf20bded2c01430ac6",
      "parents": [
        "d2db60df1e7eb39cf0f378dfc4dd8813666d46ef"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Thu Aug 11 09:54:31 2011 -0500"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Aug 11 17:23:40 2011 -0700"
      },
      "message": "ext4: Properly count journal credits for long symlinks\n\nCommit df5e6223407e (\"ext4: fix deadlock in ext4_symlink() in ENOSPC\nconditions\") recalculated the number of credits needed for a long\nsymlink, in the process of splitting it into two transactions.  However,\nthe first credit calculation under-counted because if selinux is\nenabled, credits are needed to create the selinux xattr as well.\n\nOverrunning the reservation will result in an OOPS in\njbd2_journal_dirty_metadata() due to this assert:\n\n  J_ASSERT_JH(jh, handle-\u003eh_buffer_credits \u003e 0);\n\nFix this by increasing the reservation size.\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nReviewed-by: Jan Kara \u003cjack@suse.cz\u003e\nAcked-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5a2f3a02aea164f4f59c0c3497772090a411b462",
      "tree": "d3ebe03d4f97575290087843960baa01de3acd0a",
      "parents": [
        "1d568ab068c021672d6cd7f50f92a3695a921ffb",
        "817b54aa45db03437c6d09a7693fc6926eb8e822"
      ],
      "author": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Tue Aug 09 10:31:03 2011 +1000"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Tue Aug 09 10:31:03 2011 +1000"
      },
      "message": "Merge branch \u0027next-evm\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/zohar/ima-2.6 into next\n\nConflicts:\n\tfs/attr.c\n\nResolve conflict manually.\n\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "db9481c0476c6475d058ac7ecebb5a822b43cc99",
      "tree": "d3115cab19ab99912618428d9f9e76bbf3572857",
      "parents": [
        "ed8f37370d83e695c0a4fa5d5fc7a83ecb947526"
      ],
      "author": {
        "name": "Mathias Krause",
        "email": "minipli@googlemail.com",
        "time": "Wed Aug 03 14:57:11 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Aug 03 14:57:11 2011 -0400"
      },
      "message": "ext4: use kzalloc in ext4_kzalloc()\n\nCommit 9933fc0i (ext4: introduce ext4_kvmalloc(), ext4_kzalloc(), and\next4_kvfree()) intruduced wrappers around k*alloc/vmalloc but introduced\na typo for ext4_kzalloc() by not using kzalloc() but kmalloc().\n\nSigned-off-by: Mathias Krause \u003cminipli@googlemail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "60ad4466821a96913a9b567115e194ed1087c2d7",
      "tree": "cd488ba72a60f856b85a467763fb633cbe7ef2d9",
      "parents": [
        "1b8e94993c4752d98c33903aa836acc15f7e6d5c",
        "79a77c5ac34cc27ccbfbdf7113b41cdd93534eab"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 01 13:56:03 2011 -1000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 01 13:56:03 2011 -1000"
      },
      "message": "Merge branch \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4\n\n* \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4: (60 commits)\n  ext4: prevent memory leaks from ext4_mb_init_backend() on error path\n  ext4: use EXT4_BAD_INO for buddy cache to avoid colliding with valid inode #\n  ext4: use ext4_msg() instead of printk in mballoc\n  ext4: use ext4_kvzalloc()/ext4_kvmalloc() for s_group_desc and s_group_info\n  ext4: introduce ext4_kvmalloc(), ext4_kzalloc(), and ext4_kvfree()\n  ext4: use the correct error exit path in ext4_init_inode_table()\n  ext4: add missing kfree() on error return path in add_new_gdb()\n  ext4: change umode_t in tracepoint headers to be an explicit __u16\n  ext4: fix races in ext4_sync_parent()\n  ext4: Fix overflow caused by missing cast in ext4_fallocate()\n  ext4: add action of moving index in ext4_ext_rm_idx for Punch Hole\n  ext4: simplify parameters of reserve_backup_gdb()\n  ext4: simplify parameters of add_new_gdb()\n  ext4: remove lock_buffer in bclean() and setup_new_group_blocks()\n  ext4: simplify journal handling in setup_new_group_blocks()\n  ext4: let setup_new_group_blocks() set multiple bits at a time\n  ext4: fix a typo in ext4_group_extend()\n  ext4: let ext4_group_add_blocks() handle 0 blocks quickly\n  ext4: let ext4_group_add_blocks() return an error code\n  ext4: rename ext4_add_groupblocks() to ext4_group_add_blocks()\n  ...\n\nFix up conflict in fs/ext4/inode.c: commit aacfc19c626e (\"fs: simplify\nthe blockdev_direct_IO prototype\") had changed the ext4_ind_direct_IO()\nfunction for the new simplified calling convention, while commit\ndae1e52cb126 (\"ext4: move ext4_ind_* functions from inode.c to\nindirect.c\") moved the function to another file.\n"
    },
    {
      "commit": "79a77c5ac34cc27ccbfbdf7113b41cdd93534eab",
      "tree": "0217516fde94d1dea524ee4f40279cc03fc5cefa",
      "parents": [
        "48e6061bf4bb25eec151b91f22fd90a5b9a4920a"
      ],
      "author": {
        "name": "Yu Jian",
        "email": "yujian@whamcloud.com",
        "time": "Mon Aug 01 17:41:46 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Aug 01 17:41:46 2011 -0400"
      },
      "message": "ext4: prevent memory leaks from ext4_mb_init_backend() on error path\n\nIn ext4_mb_init(), if the s_locality_group allocation fails it will\ncurrently cause the allocations made in ext4_mb_init_backend() to\nbe leaked.  Moving the ext4_mb_init_backend() allocation after the\ns_locality_group allocation avoids that problem.\n\nSigned-off-by: Yu Jian \u003cyujian@whamcloud.com\u003e\nSigned-off-by: Andreas Dilger \u003cadilger@whamcloud.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "48e6061bf4bb25eec151b91f22fd90a5b9a4920a",
      "tree": "b0515505a3eee15adcc38325d309553e57e40975",
      "parents": [
        "9d8b9ec44234b2f6e0225300632d250210c04f11"
      ],
      "author": {
        "name": "Yu Jian",
        "email": "yujian@whamcloud.com",
        "time": "Mon Aug 01 17:41:39 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Aug 01 17:41:39 2011 -0400"
      },
      "message": "ext4: use EXT4_BAD_INO for buddy cache to avoid colliding with valid inode #\n\nSigned-off-by: Yu Jian \u003cyujian@whamcloud.com\u003e\nSigned-off-by: Andreas Dilger \u003cadilger@whamcloud.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "9d8b9ec44234b2f6e0225300632d250210c04f11",
      "tree": "8b07c2cd2f664ebd2772e3d2299ef69e8c5a1e74",
      "parents": [
        "f18a5f21c25707b4fe64b326e2b4d150565e7300"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Aug 01 17:41:35 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Aug 01 17:41:35 2011 -0400"
      },
      "message": "ext4: use ext4_msg() instead of printk in mballoc\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "f18a5f21c25707b4fe64b326e2b4d150565e7300",
      "tree": "b17baa6c8476eb2a3fbc6b1d65c7fd59950a2dcd",
      "parents": [
        "9933fc0ac1ac14b795819cd63d05ea92112f690a"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Aug 01 08:45:38 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Aug 01 08:45:38 2011 -0400"
      },
      "message": "ext4: use ext4_kvzalloc()/ext4_kvmalloc() for s_group_desc and s_group_info\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "9933fc0ac1ac14b795819cd63d05ea92112f690a",
      "tree": "bff42e3494fd5401e6b171ddae8f52ecd1defd91",
      "parents": [
        "33853a0dde359ded0534204eb6857ad5166d515b"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Aug 01 08:45:02 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Aug 01 08:45:02 2011 -0400"
      },
      "message": "ext4: introduce ext4_kvmalloc(), ext4_kzalloc(), and ext4_kvfree()\n\nIntroduce new helper functions which try kmalloc, and then fall back\nto vmalloc if necessary, and use them for allocating and deallocating\ns_flex_groups.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "33853a0dde359ded0534204eb6857ad5166d515b",
      "tree": "2c7ab2e9bddc5418af1356bd579dd0d22605c1d9",
      "parents": [
        "c49bafa3842751b8955a962859f42d307673d75d"
      ],
      "author": {
        "name": "Yongqiang Yang",
        "email": "xiaoqiangnk@gmail.com",
        "time": "Mon Aug 01 06:32:19 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Aug 01 06:32:19 2011 -0400"
      },
      "message": "ext4: use the correct error exit path in ext4_init_inode_table()\n\nThis patch lets ext4_init_inode_table() handle errors right.\next4_init_inode_table() should down_write() alloc_sem which\nhas been up_write()ed and stop the started journal handle.\n\nSigned-off-by: Yongqiang Yang \u003cxiaoqiangnk@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "d6952123b53cc8b334df69bba2cd0063b0d88f68",
      "tree": "b1ccaa7e3d65dbf4af093202044da65bc4deb34e",
      "parents": [
        "d3fb612076eebec6f67257db0c7a9666ac7e5892"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 23 18:56:36 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 01 02:10:06 2011 -0400"
      },
      "message": "switch posix_acl_equiv_mode() to umode_t *\n\n... so that \u0026inode-\u003ei_mode could be passed to it\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "d3fb612076eebec6f67257db0c7a9666ac7e5892",
      "tree": "5265fca258a74ffa75b845998492abb9446db72c",
      "parents": [
        "782b94cdf577b4df1feb376f372dccc28e66a771"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 23 18:37:50 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 01 02:09:42 2011 -0400"
      },
      "message": "switch posix_acl_create() to umode_t *\n\nso we can pass \u0026inode-\u003ei_mode to it\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "c49bafa3842751b8955a962859f42d307673d75d",
      "tree": "6c738a314fd1e15043c0b1c3a1cc527758a38d56",
      "parents": [
        "59be8e7280c10fd8f078ba6dc2bcdc2b1453b6ab"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "error27@gmail.com",
        "time": "Sat Jul 30 12:58:41 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Jul 30 12:58:41 2011 -0400"
      },
      "message": "ext4: add missing kfree() on error return path in add_new_gdb()\n\nWe added some more error handling in b40971426a \"ext4: add error\nchecking to calls to ext4_handle_dirty_metadata()\".  But we need to\ncall kfree() as well to avoid a memory leak.\n\nSigned-off-by: Dan Carpenter \u003cerror27@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "d59729f4e794f814b25ccd2aebfbe606242c4544",
      "tree": "96b7cfef8124c23b6a17ded73fddffc567d6f2a1",
      "parents": [
        "29ae07b702cb77dbc24b0843f15ee8cf8a642311"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Jul 30 12:34:19 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Jul 30 12:34:19 2011 -0400"
      },
      "message": "ext4: fix races in ext4_sync_parent()\n\nFix problems if fsync() races against a rename of a parent directory\nas pointed out by Al Viro in his own inimitable way:\n\n\u003eWhile we are at it, could somebody please explain what the hell is ext4\n\u003edoing in\n\u003estatic int ext4_sync_parent(struct inode *inode)\n\u003e{\n\u003e        struct writeback_control wbc;\n\u003e        struct dentry *dentry \u003d NULL;\n\u003e        int ret \u003d 0;\n\u003e\n\u003e        while (inode \u0026\u0026 ext4_test_inode_state(inode, EXT4_STATE_NEWENTRY)) {\n\u003e                ext4_clear_inode_state(inode, EXT4_STATE_NEWENTRY);\n\u003e                dentry \u003d list_entry(inode-\u003ei_dentry.next,\n\u003e                                    struct dentry, d_alias);\n\u003e                if (!dentry || !dentry-\u003ed_parent || !dentry-\u003ed_parent-\u003ed_inode)\n\u003e                        break;\n\u003e                inode \u003d dentry-\u003ed_parent-\u003ed_inode;\n\u003e                ret \u003d sync_mapping_buffers(inode-\u003ei_mapping);\n\u003e                ...\n\u003eNote that dentry obviously can\u0027t be NULL there.  dentry-\u003ed_parent is never\n\u003eNULL.  And dentry-\u003ed_parent would better not be negative, for crying out\n\u003eloud!  What\u0027s worse, there\u0027s no guarantees that dentry-\u003ed_parent will\n\u003eremain our parent over that sync_mapping_buffers() *and* that inode won\u0027t\n\u003ejust be freed under us (after rename() and memory pressure leading to\n\u003eeviction of what used to be our dentry-\u003ed_parent)......\n\nReported-by: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "29ae07b702cb77dbc24b0843f15ee8cf8a642311",
      "tree": "4d9d3717e2be5cb335fd4f32c9207bf0b55caac9",
      "parents": [
        "0e1147b001793593624e80b3c0a1790822b6baca"
      ],
      "author": {
        "name": "Utako Kusaka",
        "email": "u-kusaka@wm.jp.nec.com",
        "time": "Wed Jul 27 22:11:20 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Jul 27 22:11:20 2011 -0400"
      },
      "message": "ext4: Fix overflow caused by missing cast in ext4_fallocate()\n\nThe logical block number in map.l_blk is a __u32, and so before we\nshift it left, by the block size, we neeed cast it to a 64-bit size.\n\nOtherwise i_size can be corrupted on an ENOSPC.\n\n# df -T /mnt/mp1\nFilesystem    Type   1K-blocks      Used Available Use% Mounted on\n/dev/sda6     ext4     9843276    153056   9190200   2% /mnt/mp1\n# fallocate -o 0 -l 2199023251456 /mnt/mp1/testfile\nfallocate: /mnt/mp1/testfile: fallocate failed: No space left on device\n# stat /mnt/mp1/testfile\n  File: `/mnt/mp1/testfile\u0027\n  Size: 4293656576\tBlocks: 19380440   IO Block: 4096   regular file\nDevice: 806h/2054d\tInode: 12          Links: 1\nAccess: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)\nAccess: 2011-07-25 13:01:31.414490496 +0900\nModify: 2011-07-25 13:01:31.414490496 +0900\nChange: 2011-07-25 13:01:31.454490495 +0900\n\nSigned-off-by: Utako Kusaka \u003cu-kusaka@wm.jp.nec.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n--\n fs/ext4/extents.c |    2 +-\n 1 files changed, 1 insertions(+), 1 deletions(-)\n\n"
    },
    {
      "commit": "0e1147b001793593624e80b3c0a1790822b6baca",
      "tree": "b43cf0a3f8cb4733386867c4b06d92eb0025f04a",
      "parents": [
        "668f4dc5593327fadc95b33189c375f7178ef88e"
      ],
      "author": {
        "name": "Robin Dong",
        "email": "sanbai@taobao.com",
        "time": "Wed Jul 27 21:29:33 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Jul 27 21:29:33 2011 -0400"
      },
      "message": "ext4: add action of moving index in ext4_ext_rm_idx for Punch Hole\n\nThe old function ext4_ext_rm_idx is used only for truncate case\nbecause it just remove last index in extent-index-block. When punching\nhole, it usually needed to remove \"middle\" index, therefore we must\nmove indexes which after it forward.\n\n(I create a file with 1 depth extent tree and punch hole in the middle\nof it, the last index in index-block strangly gone, so I find out this\nbug)\n\nSigned-off-by: Robin Dong \u003csanbai@taobao.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "668f4dc5593327fadc95b33189c375f7178ef88e",
      "tree": "b368734ce8ef044762887dcd740e2609c6eac893",
      "parents": [
        "2f919710143cb2025157c3c193ee22de86f3ed73"
      ],
      "author": {
        "name": "Yongqiang Yang",
        "email": "xiaoqiangnk@gmail.com",
        "time": "Wed Jul 27 21:23:13 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Jul 27 21:23:13 2011 -0400"
      },
      "message": "ext4: simplify parameters of reserve_backup_gdb()\n\nThe reserve_backup_gdb() function only needs the block group number;\nthere\u0027s no need to pass a pointer to struct ext4_new_group_data to it.\n\nSigned-off-by: Yongqiang Yang \u003cxiaoqiangnk@gmail.com\u003e\n"
    },
    {
      "commit": "2f919710143cb2025157c3c193ee22de86f3ed73",
      "tree": "935314cca6ee1a5e29359fafcd1d4d934eeabbe0",
      "parents": [
        "e6075e984d100c12bb79267639c3f661d9788a67"
      ],
      "author": {
        "name": "Yongqiang Yang",
        "email": "xiaoqiangnk@gmail.com",
        "time": "Wed Jul 27 21:16:33 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Jul 27 21:16:33 2011 -0400"
      },
      "message": "ext4: simplify parameters of add_new_gdb()\n\nadd_new_gdb() only needs the block group number; there is no need to\npass a pointer to struct ext4_new_group_data to add_new_gdb().\nInstead of filling in a pointer the struct buffer_head in\nadd_new_gdb(), it\u0027s simpler to have the caller fetch it from the\ns_group_desc[] array.\n\n[Fixed error path to handle the case where struct buffer_head *primary\n hasn\u0027t been set yet. -- Ted]\n\nSigned-off-by: Yongqiang Yang \u003cxiaoqiangnk@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "e6075e984d100c12bb79267639c3f661d9788a67",
      "tree": "6c50d26e084fc8b36817f33198f46469dcaa2857",
      "parents": [
        "6d40bc5a7e8fc71795d131e835f38f161ed7e1b1"
      ],
      "author": {
        "name": "Yongqiang Yang",
        "email": "xiaoqiangnk@gmail.com",
        "time": "Wed Jul 27 20:40:18 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Jul 27 20:40:18 2011 -0400"
      },
      "message": "ext4: remove lock_buffer in bclean() and setup_new_group_blocks()\n\nThere is no need to lock the buffers since no one else should be\ntouching these buffers besides the file system.\n\nSigned-off-by: Yongqiang Yang \u003cxiaoqiangnk@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "6d40bc5a7e8fc71795d131e835f38f161ed7e1b1",
      "tree": "d66d509a10509bc09d8dc0ecdc4641b585c1bfa0",
      "parents": [
        "c3e94d1df9bdd9e2c4ba7e8f534f7925f1756f97"
      ],
      "author": {
        "name": "Yongqiang Yang",
        "email": "xiaoqiangnk@gmail.com",
        "time": "Tue Jul 26 22:24:41 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jul 26 22:24:41 2011 -0400"
      },
      "message": "ext4: simplify journal handling in setup_new_group_blocks()\n\nThis patch simplifies journal handling in setup_new_group_blocks().\n\nIn previous code, block bitmap is modified everywhere in\nsetup_new_group_blocks(), ext4_get_write_access() in\nextend_or_restart_transaction() is used to guarantee that the block\nbitmap stays in the new handle, this makes things complicated.\n\nThe previous commit changed things so that the modifications on the\nblock bitmap are batched and done by ext4_set_bits() at the end of the\nfor loop.  This allows us to simplify things.\n\nSigned-off-by: Yongqiang Yang \u003cxiaoqiangnk@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "c3e94d1df9bdd9e2c4ba7e8f534f7925f1756f97",
      "tree": "b0f23df82b491e04b64d7d67e4eecc80d1f4c6a0",
      "parents": [
        "2b79b09d13e35577151bd13ba08809911baccd1c"
      ],
      "author": {
        "name": "Yongqiang Yang",
        "email": "xiaoqiangnk@gmail.com",
        "time": "Tue Jul 26 22:05:53 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jul 26 22:05:53 2011 -0400"
      },
      "message": "ext4: let setup_new_group_blocks() set multiple bits at a time\n\nRename mb_set_bits() to ext4_set_bits() and make it a global function\nso that setup_new_group_blocks() can use it.\n\nSigned-off-by: Yongqiang Yang \u003cxiaoqiangnk@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "2b79b09d13e35577151bd13ba08809911baccd1c",
      "tree": "52ccf2c03372dcb962d20a297deb3e06498cd75f",
      "parents": [
        "4740b830ed5720ade6c780dbf3fdfe9089b3552d"
      ],
      "author": {
        "name": "Yongqiang Yang",
        "email": "xiaoqiangnk@gmail.com",
        "time": "Tue Jul 26 21:53:35 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jul 26 21:53:35 2011 -0400"
      },
      "message": "ext4: fix a typo in ext4_group_extend()\n\nSigned-off-by: Yongqiang Yang \u003cxiaoqiangnk@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "4740b830ed5720ade6c780dbf3fdfe9089b3552d",
      "tree": "7236a6b16db7d3cf8ef8cf5a6d86dac85df01b01",
      "parents": [
        "cc7365dfe48cb2191f1572bf69e30d3e58716313"
      ],
      "author": {
        "name": "Yongqiang Yang",
        "email": "xiaoqiangnk@gmail.com",
        "time": "Tue Jul 26 21:51:08 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jul 26 21:51:08 2011 -0400"
      },
      "message": "ext4: let ext4_group_add_blocks() handle 0 blocks quickly\n\nIf ext4_group_add_blocks() is called with 0 block, make it return 0\nwithout doing any extra work.\n\nSigned-off-by: Yongqiang Yang \u003cxiaoqiangnk@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "cc7365dfe48cb2191f1572bf69e30d3e58716313",
      "tree": "1d0a533d6ffcee71900894741995a1d0cf91ab0f",
      "parents": [
        "0529155e8a4bcb77dfc9ceaea19c6501487e452b"
      ],
      "author": {
        "name": "Yongqiang Yang",
        "email": "xiaoqiangnk@gmail.com",
        "time": "Tue Jul 26 21:46:07 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jul 26 21:46:07 2011 -0400"
      },
      "message": "ext4: let ext4_group_add_blocks() return an error code\n\nThis patch lets ext4_group_add_blocks() return an error code if it\nfails, so that upper functions can handle error correctly.\n\nSigned-off-by: Yongqiang Yang \u003cxiaoqiangnk@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "0529155e8a4bcb77dfc9ceaea19c6501487e452b",
      "tree": "a67262d87fcfa101ea8ea3af9d90725a9de22f2c",
      "parents": [
        "ce723c31b58f54fb865036805475ee7a8c5dc173"
      ],
      "author": {
        "name": "Yongqiang Yang",
        "email": "xiaoqiangnk@gmail.com",
        "time": "Tue Jul 26 21:43:56 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jul 26 21:43:56 2011 -0400"
      },
      "message": "ext4: rename ext4_add_groupblocks() to ext4_group_add_blocks()\n\nSigned-off-by: Yongqiang Yang \u003cxiaoqiangnk@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "ce723c31b58f54fb865036805475ee7a8c5dc173",
      "tree": "d84f2de76ce1acc4072ce512636d686046066ee6",
      "parents": [
        "8f82f840ec6ab873f520364d443ff6fa1b3f8e22"
      ],
      "author": {
        "name": "Yongqiang Yang",
        "email": "xiaoqiangnk@gmail.com",
        "time": "Tue Jul 26 21:39:09 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jul 26 21:39:09 2011 -0400"
      },
      "message": "ext4: prevent a fs with errors from being resized\n\nA filesystem with errors is not allowed to being resized, otherwise,\nit is easy to destroy the filesystem.\n\nSigned-off-by: Yongqiang Yang \u003cxiaoqiangnk@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "8f82f840ec6ab873f520364d443ff6fa1b3f8e22",
      "tree": "72d90cdc8f7311ef913b7471e53f718bebbf7414",
      "parents": [
        "2d859db3e4a82a365572592d57624a5f996ed0ec"
      ],
      "author": {
        "name": "Yongqiang Yang",
        "email": "xiaoqiangnk@gmail.com",
        "time": "Tue Jul 26 21:35:44 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jul 26 21:35:44 2011 -0400"
      },
      "message": "ext4: prevent parallel resizers by atomic bit ops\n\nBefore this patch, parallel resizers are allowed and protected by a\nmutex lock, actually, there is no need to support parallel resizer, so\nthis patch prevents parallel resizers by atmoic bit ops, like\nlock_page() and unlock_page() do.\n\nTo do this, the patch removed the mutex lock s_resize_lock from struct\next4_sb_info and added a unsigned long field named s_resize_flags\nwhich inidicates if there is a resizer.\n\nSigned-off-by: Yongqiang Yang \u003cxiaoqiangnk@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "f01ef569cddb1a8627b1c6b3a134998ad1cf4b22",
      "tree": "29ea1a0942c8549c24411e976cd6891c7e995e89",
      "parents": [
        "a93a1329271038f0e8337061d3b41b3b212a851e",
        "bcff25fc8aa47a13faff8b4b992589813f7b450a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 26 10:39:54 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 26 10:39:54 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/writeback\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/writeback: (27 commits)\n  mm: properly reflect task dirty limits in dirty_exceeded logic\n  writeback: don\u0027t busy retry writeback on new/freeing inodes\n  writeback: scale IO chunk size up to half device bandwidth\n  writeback: trace global_dirty_state\n  writeback: introduce max-pause and pass-good dirty limits\n  writeback: introduce smoothed global dirty limit\n  writeback: consolidate variable names in balance_dirty_pages()\n  writeback: show bdi write bandwidth in debugfs\n  writeback: bdi write bandwidth estimation\n  writeback: account per-bdi accumulated written pages\n  writeback: make writeback_control.nr_to_write straight\n  writeback: skip tmpfs early in balance_dirty_pages_ratelimited_nr()\n  writeback: trace event writeback_queue_io\n  writeback: trace event writeback_single_inode\n  writeback: remove .nonblocking and .encountered_congestion\n  writeback: remove writeback_control.more_io\n  writeback: skip balance_dirty_pages() for in-memory fs\n  writeback: add bdi_dirty_limit() kernel-doc\n  writeback: avoid extra sync work at enqueue time\n  writeback: elevate queue_io() into wb_writeback()\n  ...\n\nFix up trivial conflicts in fs/fs-writeback.c and mm/filemap.c\n"
    },
    {
      "commit": "2d859db3e4a82a365572592d57624a5f996ed0ec",
      "tree": "d725aca3ab9555b8ee92f753a797034ff79f580c",
      "parents": [
        "b7ca1e8ec53259359db5313f923a0a20fa04bdb6"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue Jul 26 09:07:11 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jul 26 09:07:11 2011 -0400"
      },
      "message": "ext4: 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), ext4_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\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "4e34e719e457f2e031297175410fc0bd4016a085",
      "tree": "ab969a371e0d2efc6bfbf503ca6cdfce3af3bf6c",
      "parents": [
        "edde854e8bb34a7f32fa993d721f1da0faf64165"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Sat Jul 23 17:37:31 2011 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jul 25 14:30:23 2011 -0400"
      },
      "message": "fs: take the ACL checks to common code\n\nReplace the -\u003echeck_acl method with a -\u003eget_acl method that simply reads an\nACL from disk after having a cache miss.  This means we can replace the ACL\nchecking boilerplate code with a single implementation in namei.c.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "826cae2f2b4d726b925f43bc208a571639da4761",
      "tree": "b7f83eecf3bde8c4e455d89c7c535988b3e8bd59",
      "parents": [
        "95203befa8887997f14077d8557e67d78457ee02"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 23 03:10:32 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jul 25 14:27:32 2011 -0400"
      },
      "message": "kill boilerplates around posix_acl_create_masq()\n\nnew helper: posix_acl_create(\u0026acl, gfp, mode_p).  Replaces acl with\nmodified clone, on failure releases acl and replaces with NULL.\nReturns 0 or -ve on error.  All callers of posix_acl_create_masq()\nswitched.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "bc26ab5f65ae41b71df86ea46df3c3833d1d8d83",
      "tree": "85bbc4e0da4fac99ccf31b3609c61e2b148a8498",
      "parents": [
        "4482a087d4c5a6ffbc385c56b4a4e2f694d9fd5d"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 23 00:18:02 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jul 25 14:27:30 2011 -0400"
      },
      "message": "kill boilerplate around posix_acl_chmod_masq()\n\nnew helper: posix_acl_chmod(\u0026acl, gfp, mode).  Replaces acl with modified\nclone or with NULL if that has failed; returns 0 or -ve on error.  All\ncallers of posix_acl_chmod_masq() switched to that - they\u0027d been doing\nexactly the same thing.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e77819e57f0817c6dc7cadd061acd70c604cbce2",
      "tree": "f5d7aba2dfbb747a97d783b7cc6a486922c42559",
      "parents": [
        "3ca30d40a91fb9b9871e61d5dea2c1a895906a15"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 22 19:30:19 2011 -0700"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jul 25 14:23:39 2011 -0400"
      },
      "message": "vfs: move ACL cache lookup into generic code\n\nThis moves logic for checking the cached ACL values from low-level\nfilesystems into generic code.  The end result is a streamlined ACL\ncheck that doesn\u0027t need to load the inode-\u003ei_op-\u003echeck_acl pointer at\nall for the common cached case.\n\nThe filesystems also don\u0027t need to check for a non-blocking RCU walk\ncase in their acl_check() functions, because that is all handled at a\nVFS layer.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b7ca1e8ec53259359db5313f923a0a20fa04bdb6",
      "tree": "7e120d5a7c86c0f44460751dd9c2dba54874c122",
      "parents": [
        "0737964bc98202776f4d10bc8e108f45b3115037"
      ],
      "author": {
        "name": "Robin Dong",
        "email": "sanbai@taobao.com",
        "time": "Sat Jul 23 21:53:25 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Jul 23 21:53:25 2011 -0400"
      },
      "message": "ext4: correct comment for ext4_ext_check_cache\n\nThe comment for ext4_ext_check_cache has a litte mistake.\n\nSigned-off-by: Robin Dong \u003csanbai@taobao.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "0737964bc98202776f4d10bc8e108f45b3115037",
      "tree": "b5cda05cd5ccc4bcfacb9e1b65f74c1bacfc7dee",
      "parents": [
        "5718789da5b94bd4148cb7ea0f457089c26bc1c3"
      ],
      "author": {
        "name": "Robin Dong",
        "email": "sanbai@taobao.com",
        "time": "Sat Jul 23 21:51:07 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Jul 23 21:51:07 2011 -0400"
      },
      "message": "ext4: correct the debug message in ext4_ext_insert_extent\n\nThe debug message in ext4_ext_insert_extent before moving extent\nis incorrect (the \"from xx to xx\").\n\nSigned-off-by: Robin Dong \u003csanbai@taobao.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "5718789da5b94bd4148cb7ea0f457089c26bc1c3",
      "tree": "8daf6d7e0150915220deaa3847752606dc416192",
      "parents": [
        "6a0fe49308dcac10ab510b3c45e00eb8d5ef440e"
      ],
      "author": {
        "name": "Robin Dong",
        "email": "sanbai@taobao.com",
        "time": "Sat Jul 23 21:49:07 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Jul 23 21:49:07 2011 -0400"
      },
      "message": "ext4: remove unused argument in ext4_ext_next_leaf_block\n\nThe argument \"inode\" in function ext4_ext_next_allocated_block looks useless,\nso clean it.\n\nSigned-off-by: Robin Dong \u003csanbai@taobao.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "6a0fe49308dcac10ab510b3c45e00eb8d5ef440e",
      "tree": "8cf58436e9ef7080c05c1907461b1a055c672aff",
      "parents": [
        "ced156e464e49b6b4153ede9aaa04d9a4ad24e0c"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "boyu.mt@taobao.com",
        "time": "Sat Jul 23 16:18:55 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Jul 23 16:18:55 2011 -0400"
      },
      "message": "ext4: remove ac_repeats from ext4_allocation_context\n\nac_repeats isn\u0027t referenced in the mballoc code. So remove it.\n\nSigned-off-by: Tao Ma \u003cboyu.mt@taobao.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "ced156e464e49b6b4153ede9aaa04d9a4ad24e0c",
      "tree": "fd75128cb77e6634a5f22c16b601af5857182c35",
      "parents": [
        "529da704ad1ead755d9e40721f29446cb278e099"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "boyu.mt@taobao.com",
        "time": "Sat Jul 23 16:18:05 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Jul 23 16:18:05 2011 -0400"
      },
      "message": "ext4: don\u0027t increment s_mb_buddies_generated in ext4_mb_release\n\nIn ext4_mb_release, we use s_mb_buddies_generated++.  Although\nthe output is OK, but I don\u0027t think we need this extra ++.\n\nSigned-off-by: Tao Ma \u003cboyu.mt@taobao.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "529da704ad1ead755d9e40721f29446cb278e099",
      "tree": "624e4cdafcbbe61441c1cf73395394caf736618f",
      "parents": [
        "d46203159ed376fdbe2b05aa57e58207bf27a8f9"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "boyu.mt@taobao.com",
        "time": "Sat Jul 23 16:07:26 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Jul 23 16:07:26 2011 -0400"
      },
      "message": "ext4: remove unnecessary ext4_get_group_info in ext4_mb_load_buddy\n\next4_mb_load_buddy() calls ext4_get_group_info() for setting both\n\"grp\" and \"e4b-\u003ebd_info\", but it could do \"e4b-\u003ebd_info \u003d grp\".\n\nReported-by:  Andreas Dilger \u003cadilger@whamcloud.com\u003e\nSigned-off-by: Tao Ma \u003cboyu.mt@taobao.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "02c24a82187d5a628c68edfe71ae60dc135cd178",
      "tree": "c8dbaba4d82e2b20ed4335910a564a1f7d90fcf6",
      "parents": [
        "22735068d53c7115e384bc88dea95b17e76a6839"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Sat Jul 16 20:44:56 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:59 2011 -0400"
      },
      "message": "fs: push i_mutex and filemap_write_and_wait down into -\u003efsync() handlers\n\nBtrfs needs to be able to control how filemap_write_and_wait_range() is called\nin fsync to make it less of a painful operation, so push down taking i_mutex and\nthe calling of filemap_write_and_wait() down into the -\u003efsync() handlers.  Some\nfile systems can drop taking the i_mutex altogether it seems, like ext3 and\nocfs2.  For correctness sake I just pushed everything down in all cases to make\nsure that we keep the current behavior the same for everybody, and then each\nindividual fs maintainer can make up their mind about what to do from there.\nThanks,\n\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "c334b1138bd44bea578eab7971c59bd9212a1093",
      "tree": "a91a04ce72a4f12bdb6c8ca26400a466dcce5120",
      "parents": [
        "b26751575a9aa55fd6dbf3febde3ff06dfadc44f"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Jul 18 13:21:37 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:57 2011 -0400"
      },
      "message": "Ext4: handle SEEK_HOLE/SEEK_DATA generically\n\nSince Ext4 has its own lseek we need to make sure it handles\nSEEK_HOLE/SEEK_DATA.  For now just do the same thing that is done in the generic\ncase, somebody else can come along and make it do fancy things later.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "72c5052ddc3956d847f21c2b8d55c93664a51b2c",
      "tree": "47b381f3f746cdc1612f432bd902278f8901f84a",
      "parents": [
        "aacfc19c626ebd3daa675652457d71019a1f583f"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Fri Jun 24 14:29:48 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:50 2011 -0400"
      },
      "message": "fs: move inode_dio_done to the end_io handler\n\nFor filesystems that delay their end_io processing we should keep our\ni_dio_count until the the processing is done.  Enable this by moving\nthe inode_dio_done call to the end_io handler if one exist.  Note that\nthe actual move to the workqueue for ext4 and XFS is not done in\nthis patch yet, but left to the filesystem maintainers.  At least\nfor XFS it\u0027s not needed yet either as XFS has an internal equivalent\nto i_dio_count.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\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": "9ea7df534ed2a18157434a496a12cf073ca00c52",
      "tree": "f8fa09102093cbc60249f96ec4fb91985ae8659b",
      "parents": [
        "582686915803e34adc8fdcd90bff7ca7f6a42221"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri Jun 24 14:29:41 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:45 2011 -0400"
      },
      "message": "ext4: Rewrite ext4_page_mkwrite() to use generic helpers\n\nRewrite ext4_page_mkwrite() to use __block_page_mkwrite() helper. This\nremoves the need of using i_alloc_sem to avoid races with truncate which\nseems to be the wrong locking order according to lock ordering documented in\nmm/rmap.c. Also calling ext4_da_write_begin() as used by the old code seems to\nbe problematic because we can decide to flush delay-allocated blocks which\nwill acquire s_umount semaphore - again creating unpleasant lock dependency\nif not directly a deadlock.\n\nAlso add a check for frozen filesystem so that we don\u0027t busyloop in page fault\nwhen the filesystem is frozen.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a9049376ee05bf966bfe2b081b5071326856890a",
      "tree": "efb3cbfc7760537f201bb28dacbb0d39ec39f04c",
      "parents": [
        "0c1aa9a952c3608eb17bf990466f1491d1ee8b6c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jul 08 21:20:11 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:26 2011 -0400"
      },
      "message": "make d_splice_alias(ERR_PTR(err), dentry) \u003d ERR_PTR(err)\n\n... and simplify the living hell out of callers\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "7e40145eb111a5192e6d819f764db9d6828d1abb",
      "tree": "3249952a751de12465e8d66c63328445e9242f3a",
      "parents": [
        "9c2c703929e4c41210cfa6e3f599514421bab8dc"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 19:12:17 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:21 2011 -0400"
      },
      "message": "-\u003epermission() sanitizing: don\u0027t pass flags to -\u003echeck_acl()\n\nnot used in the instances anymore.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "9c2c703929e4c41210cfa6e3f599514421bab8dc",
      "tree": "2086738f22755ad18ba18ab2ee0f2b23d651da60",
      "parents": [
        "1fc0f78ca9f311c6277e2f1b7655bb4d43ceb311"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 19:06:22 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:19 2011 -0400"
      },
      "message": "-\u003epermission() sanitizing: pass MAY_NOT_BLOCK to -\u003echeck_acl()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "9d8f13ba3f4833219e50767b022b82cd0da930eb",
      "tree": "3ba2367380d009111ea17696162a62320c88d144",
      "parents": [
        "0f2a55d5bb2372058275b0b343d90dd5d640d045"
      ],
      "author": {
        "name": "Mimi Zohar",
        "email": "zohar@linux.vnet.ibm.com",
        "time": "Mon Jun 06 15:29:25 2011 -0400"
      },
      "committer": {
        "name": "Mimi Zohar",
        "email": "zohar@linux.vnet.ibm.com",
        "time": "Mon Jul 18 12:29:38 2011 -0400"
      },
      "message": "security: new security_inode_init_security API adds function callback\n\nThis patch changes the security_inode_init_security API by adding a\nfilesystem specific callback to write security extended attributes.\nThis change is in preparation for supporting the initialization of\nmultiple LSM xattrs and the EVM xattr.  Initially the callback function\nwalks an array of xattrs, writing each xattr separately, but could be\noptimized to write multiple xattrs at once.\n\nFor existing security_inode_init_security() calls, which have not yet\nbeen converted to use the new callback function, such as those in\nreiserfs and ocfs2, this patch defines security_old_inode_init_security().\n\nSigned-off-by: Mimi Zohar \u003czohar@us.ibm.com\u003e\n"
    },
    {
      "commit": "d46203159ed376fdbe2b05aa57e58207bf27a8f9",
      "tree": "8bcbe5545066606b12d6cd250747471802520c0b",
      "parents": [
        "015861badd0db43d025bbb538f8fc62dfaf3f18d"
      ],
      "author": {
        "name": "Robin Dong",
        "email": "hao.bigrat@gmail.com",
        "time": "Sun Jul 17 23:43:42 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Jul 17 23:43:42 2011 -0400"
      },
      "message": "ext4: avoid eh_entries overflow before insert extent_idx\n\nIf eh_entries is equal to (or greater than) eh_max, the operation of\ninserting new extent_idx will make number of entries overflow.\nSo check eh_entries before inserting the new extent_idx.\n\nAlthough there is no bug case according the code (function\next4_ext_insert_index is called by ext4_ext_split and ext4_ext_split\nis called only if the index block has free space), the right logic\nshould be \"lookup the capacity before insertion\".\n\nSigned-off-by: Robin Dong \u003csanbai@taobao.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "015861badd0db43d025bbb538f8fc62dfaf3f18d",
      "tree": "e1e7f6ea3f4cd41ecc030f07a4a454141dd2e158",
      "parents": [
        "c6a0371cbefade85376bbc326d18451860632dce"
      ],
      "author": {
        "name": "Robin Dong",
        "email": "hao.bigrat@gmail.com",
        "time": "Sun Jul 17 23:27:43 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Jul 17 23:27:43 2011 -0400"
      },
      "message": "ext4: avoid wasted extent cache lookup if !PUNCH_OUT_EXT\n\nThis patch avoids an extraneous lookup of the extent cache\nin ext4_ext_map_blocks() when the flag\nEXT4_GET_BLOCKS_PUNCH_OUT_EXT is absent.\n\nThe existing logic was performing the lookup but not making\nuse of the result. The patch simply reverses the order of evaluation\nin the condition.\n\nSince ext4_ext_in_cache() does not initialize newex on misses, bypassing\nits invocation does not introduce any new issue in this regard.\n\nSigned-off-by: Robin Dong \u003csanbai@taobao.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nReviewed-by: Lukas Czerner \u003clczerner@redhat.com\u003e\nReviewed-by: Eric Gouriou \u003cegouriou@google.com\u003e\n"
    },
    {
      "commit": "c6a0371cbefade85376bbc326d18451860632dce",
      "tree": "7580e70da75b508953c1c10c0636ae56188ba76e",
      "parents": [
        "f7d0d3797fac6cad24ad9f86dd9baf65c586b434"
      ],
      "author": {
        "name": "Allison Henderson",
        "email": "achender@linux.vnet.ibm.com",
        "time": "Sun Jul 17 23:21:03 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Jul 17 23:21:03 2011 -0400"
      },
      "message": "ext4: remove unneeded parameter to ext4_ext_remove_space()\n\nThis patch removes the extra parameter in ext4_ext_remove_space()\nwhich is no longer needed.\n\nSigned-off-by: Allison Henderson \u003cachender@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "f7d0d3797fac6cad24ad9f86dd9baf65c586b434",
      "tree": "73ae5f70c194399f9c8273d6681e7534400ffdc0",
      "parents": [
        "3eb08658431abd65c0fe6855d1860859c2d416f7"
      ],
      "author": {
        "name": "Allison Henderson",
        "email": "achender@linux.vnet.ibm.com",
        "time": "Sun Jul 17 23:17:02 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Jul 17 23:17:02 2011 -0400"
      },
      "message": "ext4: punch hole optimizations: skip un-needed extent lookup\n\nThis patch optimizes the punch hole operation by skipping the\ntree walking code that is used by truncate.  Since punch hole\nis done through map blocks, the path to the extent is already\nknown in this function, so we do not need to look it up again.\n\nSigned-off-by: Allison Henderson \u003cachender@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "3eb08658431abd65c0fe6855d1860859c2d416f7",
      "tree": "5f7d21be65bcec29ac50918cadedd08a62cdf318",
      "parents": [
        "d7a1fee135771e6e5185642bdc17df19bbdbcc48"
      ],
      "author": {
        "name": "Dan Ehrenberg",
        "email": "dehrenberg@google.com",
        "time": "Sun Jul 17 21:18:51 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Jul 17 21:18:51 2011 -0400"
      },
      "message": "ext4: ignore a stripe width of 1\n\nIf the stripe width was set to 1, then this patch will ignore\nthat stripe width and ext4 will act as if the stripe width\nwere 0 with respect to optimizing allocations.\n\nSigned-off-by: Dan Ehrenberg \u003cdehrenberg@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "d7a1fee135771e6e5185642bdc17df19bbdbcc48",
      "tree": "c037586b0db8324bac4ef11bcd8b3b1a631bbdf2",
      "parents": [
        "265c6a0f9290c8f470b839257dc6af3c46b24da1"
      ],
      "author": {
        "name": "Dan Ehrenberg",
        "email": "dehrenberg@google.com",
        "time": "Sun Jul 17 21:11:30 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Jul 17 21:11:30 2011 -0400"
      },
      "message": "ext4: make the preallocation size be a multiple of stripe size\n\nPreviously, if a stripe width was provided, then it would be used\nas the preallocation granularity, with no santiy checking and no\nway to override this. Now, mb_prealloc_size defaults to the smallest\nmultiple of stripe size that is greater than or equal to the old\ndefault mb_prealloc_size, and this can be overridden with the sysfs\ninterface.\n\nSigned-off-by: Dan Ehrenberg \u003cdehrenberg@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "265c6a0f9290c8f470b839257dc6af3c46b24da1",
      "tree": "af9308e1ac7f6b4c195eed5950ecee6d4194c40c",
      "parents": [
        "afb86178cb9b6a7329cf8709aa210fb0a245b606"
      ],
      "author": {
        "name": "Bernd Schubert",
        "email": "bernd.schubert@itwm.fraunhofer.de",
        "time": "Sat Jul 16 19:41:23 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Jul 16 19:41:23 2011 -0400"
      },
      "message": "ext4: fix compilation with -DDX_DEBUG\n\nCompilation of ext4/namei.c brought up an error and warning messages\nwhen compiled with -DDX_DEBUG\n\nSigned-off-by: Bernd Schubert \u003cbernd.schubert@itwm.fraunhofer.de\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "afb86178cb9b6a7329cf8709aa210fb0a245b606",
      "tree": "04fd42200679f1e74e0b310e716babb2f267b61b",
      "parents": [
        "caaf7a29d31da21bb8d8200d5e42d1c93d3c6e00"
      ],
      "author": {
        "name": "Lukas Czerner",
        "email": "lczerner@redhat.com",
        "time": "Mon Jul 11 18:47:04 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jul 11 18:47:04 2011 -0400"
      },
      "message": "ext4: remove unnecessary comments in ext4_orphan_add()\n\nThe comment from Al Viro about possible race in the ext4_orphan_add() is\nnot justified. There is no race possible as we always have either i_mutex\nlocked, or the inode can not be referenced from outside hence the\nJ_ASSERS should not be hit from the reason described in comment.\n\nThis commit replaces it with notion that we are holding i_mutex so it\nshould not be possible for i_nlink to be changed while waiting for\ns_orphan_lock.\n\nSigned-off-by: Lukas Czerner \u003clczerner@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "caaf7a29d31da21bb8d8200d5e42d1c93d3c6e00",
      "tree": "880f1cd67f0a8c1fb1dfbb1359358d930b0f611a",
      "parents": [
        "823ba01fc07751200c43e45733925a98b73eac3a"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "boyu.mt@taobao.com",
        "time": "Mon Jul 11 18:42:42 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jul 11 18:42:42 2011 -0400"
      },
      "message": "ext4: Fix a double free of sbi-\u003es_group_info in ext4_mb_init_backend\n\nIf we meet with an error in ext4_mb_add_groupinfo, we kfree\nsbi-\u003es_group_info[group \u003e\u003e EXT4_DESC_PER_BLOCK_BITS(sb)], but fail to\nreset it to NULL. So the caller ext4_mb_init_backend will try to kfree\nit again and causes a double free. So fix it by resetting it to NULL.\n\nSome typo in comments of mballoc.c are also changed.\n\nSigned-off-by: Tao Ma \u003cboyu.mt@taobao.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "823ba01fc07751200c43e45733925a98b73eac3a",
      "tree": "c84853512445f6f56aeb0fcf8f9207222e9c80c0",
      "parents": [
        "598dbdf2433cad55bd44d923f67a053871e3eabf"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "boyu.mt@taobao.com",
        "time": "Mon Jul 11 18:26:01 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jul 11 18:26:01 2011 -0400"
      },
      "message": "ext4: fix a race which could leak memory in ext4_groupinfo_create_slab()\n\nIn ext4_groupinfo_create_slab, we create ext4_groupinfo_caches within\next4_grpinfo_slab_create_mutex, but set it outside the lock, and there\ndoes exist some case that we may create it twice and causes a memory\nleak.  So set it before we call mutex_unlock.\n\nSigned-off-by: Tao Ma \u003cboyu.mt@taobao.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "598dbdf2433cad55bd44d923f67a053871e3eabf",
      "tree": "848036d87de48e271f6e23c1603100f4a75a2387",
      "parents": [
        "ffb505ff0f7b52318dea46dd139107a8371b4ad7"
      ],
      "author": {
        "name": "Robin Dong",
        "email": "sanbai@taobao.com",
        "time": "Mon Jul 11 18:24:01 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jul 11 18:24:01 2011 -0400"
      },
      "message": "ext4: avoid unneeded ext4_ext_next_leaf_block() while inserting extents\n\nOptimize ext4_ext_insert_extent() by avoiding\next4_ext_next_leaf_block() when the result is not used/needed.\n\nSigned-off-by: Robin Dong \u003csanbai@taobao.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "ffb505ff0f7b52318dea46dd139107a8371b4ad7",
      "tree": "e94a4af0c694d5ce79d512be8e8e390da43b9e66",
      "parents": [
        "22612283f7da1ce9849d9b3716010b07a0446fd9"
      ],
      "author": {
        "name": "Robin Dong",
        "email": "sanbai@taobao.com",
        "time": "Mon Jul 11 11:43:59 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jul 11 11:43:59 2011 -0400"
      },
      "message": "ext4: remove redundant goto in ext4_ext_insert_extent()\n\nIf eh-\u003eeh_entries is smaller than eh-\u003eeh_max, the routine will\ngo to the \"repeat\" and then go to \"has_space\" directlly ,\nsince argument \"depth\" and \"eh\" are not even changed.\n\nTherefore, goto \"has_space\" directly and remove redundant \"repeat\" tag.\n\nSigned-off-by: Robin Dong \u003csanbai@taobao.com\u003e\n"
    },
    {
      "commit": "22612283f7da1ce9849d9b3716010b07a0446fd9",
      "tree": "39205e0963c7a09af0914c885806772be068e2ac",
      "parents": [
        "3d56b8d2c74cc3f375ce332b3ac3519e009d79ee"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "boyu.mt@taobao.com",
        "time": "Mon Jul 11 00:04:34 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jul 11 00:04:34 2011 -0400"
      },
      "message": "ext4: Change the wrong param comment for ext4_trim_all_free\n\nat ext4_trim_all_free() comment, there is no longer an @e4b parameter,\ninstead it is @group.\n\nReported-by: Andreas Dilger \u003cadilger@dilger.ca\u003e\nSigned-off-by: Tao Ma \u003cboyu.mt@taobao.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "3d56b8d2c74cc3f375ce332b3ac3519e009d79ee",
      "tree": "47c13dc80779a3d8d93902897a500b056375689c",
      "parents": [
        "b3d4c2b10b68d205d3eb1b5c17dcb4649a502798"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "boyu.mt@taobao.com",
        "time": "Mon Jul 11 00:03:38 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jul 11 00:03:38 2011 -0400"
      },
      "message": "ext4: Speed up FITRIM by recording flags in ext4_group_info\n\nIn ext4, when FITRIM is called every time, we iterate all the\ngroups and do trim one by one. It is a bit time wasting if the\ngroup has been trimmed and there is no change since the last\ntrim.\n\nSo this patch adds a new flag in ext4_group_info-\u003ebb_state to\nindicate that the group has been trimmed, and it will be cleared\nif some blocks is freed(in release_blocks_on_commit). Another\ntrim_minlen is added in ext4_sb_info to record the last minlen\nwe use to trim the volume, so that if the caller provide a small\none, we will go on the trim regardless of the bb_state.\n\nA simple test with my intel x25m ssd:\ndf -h shows:\n/dev/sdb1              40G   21G   17G  56% /mnt/ext4\nBlock size:               4096\n\nrun the FITRIM with the following parameter:\nrange.start \u003d 0;\nrange.len \u003d UINT64_MAX;\nrange.minlen \u003d 1048576;\n\nwithout the patch:\n[root@boyu-tm linux-2.6]# time ./ftrim /mnt/ext4/a\nreal\t0m5.505s\nuser\t0m0.000s\nsys\t0m1.224s\n[root@boyu-tm linux-2.6]# time ./ftrim /mnt/ext4/a\nreal\t0m5.359s\nuser\t0m0.000s\nsys\t0m1.178s\n[root@boyu-tm linux-2.6]# time ./ftrim /mnt/ext4/a\nreal\t0m5.228s\nuser\t0m0.000s\nsys\t0m1.151s\n\nwith the patch:\n[root@boyu-tm linux-2.6]# time ./ftrim /mnt/ext4/a\nreal\t0m5.625s\nuser\t0m0.000s\nsys\t0m1.269s\n[root@boyu-tm linux-2.6]# time ./ftrim /mnt/ext4/a\nreal\t0m0.002s\nuser\t0m0.000s\nsys\t0m0.001s\n[root@boyu-tm linux-2.6]# time ./ftrim /mnt/ext4/a\nreal\t0m0.002s\nuser\t0m0.000s\nsys\t0m0.001s\n\nA big improvement for the 2nd and 3rd run.\n\nEven after I delete some big image files, it is still much\nfaster than iterating the whole disk.\n\n[root@boyu-tm test]# time ./ftrim /mnt/ext4/a\nreal\t0m1.217s\nuser\t0m0.000s\nsys\t0m0.196s\n\nCc: Lukas Czerner \u003clczerner@redhat.com\u003e\nReviewed-by: Andreas Dilger \u003cadilger.kernel@dilger.ca\u003e\nSigned-off-by: Tao Ma \u003cboyu.mt@taobao.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "b3d4c2b10b68d205d3eb1b5c17dcb4649a502798",
      "tree": "bd03e3dc922f62b019d5b1b5a0eb089f36e0502e",
      "parents": [
        "169ddc3ec83b5f732e51d975befb191d50795844"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "boyu.mt@taobao.com",
        "time": "Mon Jul 11 00:01:52 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jul 11 00:01:52 2011 -0400"
      },
      "message": "ext4: Add new ext4 trim tracepoints\n\nAdd ext4_trim_extent and ext4_trim_all_free.\n\nReviewed-by: Lukas Czerner \u003clczerner@redhat.com\u003e\nSigned-off-by: Tao Ma \u003cboyu.mt@taobao.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "169ddc3ec83b5f732e51d975befb191d50795844",
      "tree": "a7142c8996bb5428f883429c990ece5879eab8b4",
      "parents": [
        "22f10457432387615fa1ae6e0375d9cacc50819b"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "boyu.mt@taobao.com",
        "time": "Mon Jul 11 00:00:07 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jul 11 00:00:07 2011 -0400"
      },
      "message": "ext4: speed up group trim with the right free block count\n\nWhen we trim some free blocks in a group of ext4, we need to \ncalculate the free blocks properly and check whether there are\nenough freed blocks left for us to trim. Current solution will\nonly calculate free spaces if they are large for a trim which\nisn\u0027t appropriate.\n\nLet us see a small example:\na group has 1.5M free which are 300k, 300k, 300k, 300k, 300k.\nAnd minblocks is 1M.  With current solution, we have to iterate\nthe whole group since these 300k will never be subtracted from\n1.5M.  But actually we should exit after we find the first 2\nfree spaces since the left 3 chunks only sum up to 900K if we\nsubtract the first 600K although they can\u0027t be trimed.\n\nReviewed-by: Andreas Dilger \u003cadilger@dilger.ca\u003e\nSigned-off-by: Tao Ma \u003cboyu.mt@taobao.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "22f10457432387615fa1ae6e0375d9cacc50819b",
      "tree": "9977fe8b44a0467bd9f1d942951f0382773af744",
      "parents": [
        "12706394bcaa48e3d5e19c97d7b4e5683ebb12fb"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "boyu.mt@taobao.com",
        "time": "Sun Jul 10 23:52:37 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Jul 10 23:52:37 2011 -0400"
      },
      "message": "ext4: fix trim length underflow with small trim length\n\nIn 0f0a25b, we adjust \u0027len\u0027 with s_first_data_block - start, but\nit could underflow in case blocksize\u003d1K, fstrim_range.len\u003d512 and\nfstrim_range.start \u003d 0. In this case, when we run the code:\nlen -\u003d first_data_blk - start; len will be underflow to -1ULL.\nIn the end, although we are safe that last_group check later will limit\nthe trim to the whole volume, but that isn\u0027t what the user really want.\n\nSo this patch fix it. It also adds the check for \u0027start\u0027 like ext3 so that\nwe can break immediately if the start is invalid.\n\nCc: Lukas Czerner \u003clczerner@redhat.com\u003e\nSigned-off-by: Tao Ma \u003cboyu.mt@taobao.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "12706394bcaa48e3d5e19c97d7b4e5683ebb12fb",
      "tree": "d2a9effccf0162de6b783cf40fadd0f27c1bd22e",
      "parents": [
        "4862fd6047ed02e2726667c54d35f538eecc56aa"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Jul 10 22:37:50 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Jul 10 22:37:50 2011 -0400"
      },
      "message": "ext4: add tracepoint for ext4_journal_start\n\nThis will help debug who is responsible for starting a jbd2 transaction.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "575a1d4bdfa2ea9fc10733013136145b497e1be0",
      "tree": "2491bacefb28e5990bc97f3f9598ee8e9b21e434",
      "parents": [
        "7132de744ba76930d13033061018ddd7e3e8cd91"
      ],
      "author": {
        "name": "Jiaying Zhang",
        "email": "jiayingz@google.com",
        "time": "Sun Jul 10 20:07:25 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Jul 10 20:07:25 2011 -0400"
      },
      "message": "ext4: free allocated and pre-allocated blocks when check_eofblocks_fl fails\n\nUpon corrupted inode or disk failures, we may fail after we already\nallocate some blocks from the inode or take some blocks from the\ninode\u0027s preallocation list, but before we successfully insert the\ncorresponding extent to the extent tree. In this case, we should free\nany allocated blocks and discard the inode\u0027s preallocated blocks\nbecause the entries in the inode\u0027s preallocation list may be in an\ninconsistent state.\n\nSigned-off-by: Jiaying Zhang \u003cjiayingz@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "7132de744ba76930d13033061018ddd7e3e8cd91",
      "tree": "1da773f7293e056e4849dc590dac35854662f666",
      "parents": [
        "275d3ba6b40d0f098693b9089c6fee9bd4e55d74"
      ],
      "author": {
        "name": "Maxim Patlasov",
        "email": "maxim.patlasov@gmail.com",
        "time": "Sun Jul 10 19:37:48 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Jul 10 19:37:48 2011 -0400"
      },
      "message": "ext4: fix i_blocks/quota accounting when extent insertion fails\n\nThe current implementation of ext4_free_blocks() always calls\ndquot_free_block This looks quite sensible in the most cases: blocks\nto be freed are associated with inode and were accounted in quota and\ni_blocks some time ago.\n\nHowever, there is a case when blocks to free were not accounted by the\ntime calling ext4_free_blocks() yet:\n\n1. delalloc is on, write_begin pre-allocated some space in quota\n2. write-back happens, ext4 allocates some blocks in ext4_ext_map_blocks()\n3. then ext4_ext_map_blocks() gets an error (e.g.  ENOSPC) from\n   ext4_ext_insert_extent() and calls ext4_free_blocks().\n\nIn this scenario, ext4_free_blocks() calls dquot_free_block() who, in\nturn, decrements i_blocks for blocks which were not accounted yet (due\nto delalloc) After clean umount, e2fsck reports something like:\n\n\u003e Inode 21, i_blocks is 5080, should be 5128.  Fix\u003cy\u003e?\nbecause i_blocks was erroneously decremented as explained above.\n\nThe patch fixes the problem by passing the new flag\nEXT4_FREE_BLOCKS_NO_QUOT_UPDATE to ext4_free_blocks(), to request\nthat the dquot_free_block() call be skipped.\n\nSigned-off-by: Maxim Patlasov \u003cmaxim.patlasov@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "275d3ba6b40d0f098693b9089c6fee9bd4e55d74",
      "tree": "0f78d9bc4fe10424a692370655d27ee6f509a470",
      "parents": [
        "9331b6261058eb85ae7c57ab8ac279e7fdaa9f04"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Jun 29 21:44:45 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Jun 29 21:44:45 2011 -0400"
      },
      "message": "ext4: remove loop around bio_alloc()\n\nThese days, bio_alloc() is guaranteed to never fail (as long as nvecs\nis less than BIO_MAX_PAGES), so we don\u0027t need the loop around the\nstruct bio allocation.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "9331b6261058eb85ae7c57ab8ac279e7fdaa9f04",
      "tree": "3be0d02e7e917ec84cca7260dacff754da579156",
      "parents": [
        "f86186b44b4164600cce03d0d93ad48ec21fa429"
      ],
      "author": {
        "name": "Yongqiang Yang",
        "email": "xiaoqiangnk@gmail.com",
        "time": "Tue Jun 28 10:19:05 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jun 28 10:19:05 2011 -0400"
      },
      "message": "ext4: quiet \u0027unused variables\u0027 compile warnings\n\nUnused variables was deleted.\n\nSigned-off-by: Yongqiang Yang \u003cxiaoqiangnk@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "f86186b44b4164600cce03d0d93ad48ec21fa429",
      "tree": "48aafabbbe46d22de84e4e9b3ebf7c5b35fd6d1e",
      "parents": [
        "dae1e52cb1267bf8f52e5e47a80fab566d7e8aa4"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Tue Jun 28 10:01:31 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jun 28 10:01:31 2011 -0400"
      },
      "message": "ext4: refactor duplicated block placement code\n\nI found that ext4_ext_find_goal() and ext4_find_near()\nshare the same code for returning a coloured start block\nbased on i_block_group.\n\nWe can refactor this into a common function so that they\ndon\u0027t diverge in the future.\n\nThanks to adilger for suggesting the new function name.\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "dae1e52cb1267bf8f52e5e47a80fab566d7e8aa4",
      "tree": "2537e9f8f138e4935f88e605244174c9b2400bf4",
      "parents": [
        "9f125d641beb898f5bf2fe69583192c18043517a"
      ],
      "author": {
        "name": "Amir Goldstein",
        "email": "amir73il@users.sf.net",
        "time": "Mon Jun 27 19:40:50 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jun 27 19:40:50 2011 -0400"
      },
      "message": "ext4: move ext4_ind_* functions from inode.c to indirect.c\n\nThis patch moves functions from inode.c to indirect.c.\nThe moved functions are ext4_ind_* functions and their helpers.\nFunctions called from inode.c are declared extern.\n\nSigned-off-by: Amir Goldstein \u003camir73il@users.sf.net\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "9f125d641beb898f5bf2fe69583192c18043517a",
      "tree": "02259a4f538fbca0cbd6a9f0c4a9f96c82d738d6",
      "parents": [
        "1f7d1e77419050831a905353683807fa69a26625"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jun 27 19:16:04 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jun 27 19:16:04 2011 -0400"
      },
      "message": "ext4: move common truncate functions to header file\n\nMove two functions that will be needed by the indirect functions to be\nmoved to indirect.c as well as inode.c to truncate.h as inline\nfunctions, so that we can avoid having duplicate copies of the\nfunction (which can be a maintenance problem) without having to expose\nthem as globally functions.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "1f7d1e77419050831a905353683807fa69a26625",
      "tree": "0f32626160b1ecab1e6067ff0e94746c3da068c4",
      "parents": [
        "8bb2b247124ba6093455d4aef26743b1bef27bc5"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jun 27 19:16:02 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jun 27 19:16:02 2011 -0400"
      },
      "message": "ext4: move __ext4_check_blockref to block_validity.c\n\nIn preparation for moving the indirect functions to a separate file,\nmove __ext4_check_blockref() to block_validity.c and rename it to\next4_check_blockref() which is exported as globally visible function.\n\nAlso, rename the cpp macro ext4_check_inode_blockref() to\next4_ind_check_inode(), to make it clear that it is only valid for use\nwith non-extent mapped inodes.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "8bb2b247124ba6093455d4aef26743b1bef27bc5",
      "tree": "cb9dd91f6616b61bd71286e2f674eda8cad0f476",
      "parents": [
        "ff9893dc8aa622a4f122293a6861566a284edea5"
      ],
      "author": {
        "name": "Amir Goldstein",
        "email": "amir73il@users.sf.net",
        "time": "Mon Jun 27 17:10:28 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jun 27 17:10:28 2011 -0400"
      },
      "message": "ext4: rename ext4_indirect_* funcs to ext4_ind_*\n\nWe are going to move all ext4_ind_* functions to indirect.c.\nBefore we do that, let\u0027s rename 2 functions called ext4_indirect_*\nto ext4_ind_*, to keep to the naming convention.\n\nSigned-off-by: Amir Goldstein \u003camir73il@users.sf.net\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "ff9893dc8aa622a4f122293a6861566a284edea5",
      "tree": "ca7d798360c32379fb4d3d0913d349ac79f55c6d",
      "parents": [
        "ed7a7e16724a4123fce1fc0ff1f5131a0596f189"
      ],
      "author": {
        "name": "Amir Goldstein",
        "email": "amir73il@users.sf.net",
        "time": "Mon Jun 27 16:36:31 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jun 27 16:36:31 2011 -0400"
      },
      "message": "ext4: split ext4_ind_truncate from ext4_truncate\n\nWe are about to move all indirect inode functions to a new file.\nBefore we do that, let\u0027s split ext4_ind_truncate() out of ext4_truncate()\nleaving only generic code in the latter, so we will be able to move\next4_ind_truncate() to the new file.\n\nSigned-off-by: Amir Goldstein \u003camir73il@users.sf.net\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "ed7a7e16724a4123fce1fc0ff1f5131a0596f189",
      "tree": "3691bbb0d11e56ee94c659361a5c5b1e4edc5c9f",
      "parents": [
        "d3ad8434aa83ef7c88bc91edcfe012cdcbab9f3e"
      ],
      "author": {
        "name": "Robin Dong",
        "email": "hao.bigrat@gmail.com",
        "time": "Mon Jun 27 15:35:53 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jun 27 15:35:53 2011 -0400"
      },
      "message": "ext4: fix incorrect error msg in ext4_ext_insert_index\n\nIn function ext4_ext_insert_index when eh_entries of curp is\nbigger than eh_max, error messages will be printed out, but the content\nis about logical and ei_block, that\u0027s incorret.\n\nSigned-off-by: Robin Dong \u003csanbai@taobao.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "6e6938b6d3130305a5960c86b1a9b21e58cf6144",
      "tree": "de5546e8390ce31cd31412d2ef78ce732a42191c",
      "parents": [
        "59c5f46fbe01a00eedf54a23789634438bb80603"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Sun Jun 06 10:38:15 2010 -0600"
      },
      "committer": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Wed Jun 08 08:25:20 2011 +0800"
      },
      "message": "writeback: introduce .tagged_writepages for the WB_SYNC_NONE sync stage\n\nsync(2) is performed in two stages: the WB_SYNC_NONE sync and the\nWB_SYNC_ALL sync. Identify the first stage with .tagged_writepages and\ndo livelock prevention for it, too.\n\nJan\u0027s commit f446daaea9 (\"mm: implement writeback livelock avoidance\nusing page tagging\") is a partial fix in that it only fixed the\nWB_SYNC_ALL phase livelock.\n\nAlthough ext4 is tested to no longer livelock with commit f446daaea9,\nit may due to some \"redirty_tail() after pages_skipped\" effect which\nis by no means a guarantee for _all_ the file systems.\n\nNote that writeback_inodes_sb() is called by not only sync(), they are\ntreated the same because the other callers also need livelock prevention.\n\nImpact:  It changes the order in which pages/inodes are synced to disk.\nNow in the WB_SYNC_NONE stage, it won\u0027t proceed to write the next inode\nuntil finished with the current inode.\n\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nCC: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\n"
    },
    {
      "commit": "a9c667f8f0656631ee5438baaf21bf30d5f67375",
      "tree": "eb92465fcb50126802b66fb509ed51a1fe966ad5",
      "parents": [
        "c03f8aa9abdd517477c2021ea1251939b4da49e6"
      ],
      "author": {
        "name": "Lukas Czerner",
        "email": "lczerner@redhat.com",
        "time": "Mon Jun 06 09:51:52 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jun 06 09:51:52 2011 -0400"
      },
      "message": "ext4: fixed tracepoints cleanup\n\nWhile creating fixed tracepoints for ext3, basically by porting them\nfrom ext4, I found a lot of useless retyping, wrong type usage, useless\nvariable passing and other inconsistencies in the ext4 fixed tracepoint\ncode.\n\nThis patch cleans the fixed tracepoint code for ext4 and also simplify\nsome of them.\n\nSigned-off-by: Lukas Czerner \u003clczerner@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "c03f8aa9abdd517477c2021ea1251939b4da49e6",
      "tree": "e68aabc965801c85fb2b2aa1cfd42ad32bcd0b1f",
      "parents": [
        "f17722f917b2f21497deb6edc62fb1683daa08e6"
      ],
      "author": {
        "name": "Lukas Czerner",
        "email": "lczerner@redhat.com",
        "time": "Mon Jun 06 00:06:52 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jun 06 00:06:52 2011 -0400"
      },
      "message": "ext4: use FIEMAP_EXTENT_LAST flag for last extent in fiemap \n\nCurrently we are not marking the extent as the last one\n(FIEMAP_EXTENT_LAST) if there is a hole at the end of the file. This is\nbecause we just do not check for it right now and continue searching for\nnext extent. But at the point we hit the hole at the end of the file, it\nis too late.\n\nThis commit adds check for the allocated block in subsequent extent and\nif there is no more extents (block \u003d EXT_MAX_BLOCKS) just flag the\ncurrent one as the last one.\n\nThis behaviour has been spotted unintentionally by 252 xfstest, when the\ntest hangs out, because of wrong loop condition. However on other\nfilesystems (like xfs) it will exit anyway, because we notice the last\nextent flag and exit.\n\nWith this patch xfstest 252 does not hang anymore, ext4 fiemap\nimplementation still reports bad extent type in some cases, however\nthis seems to be different issue.\n\nSigned-off-by: Lukas Czerner \u003clczerner@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "f17722f917b2f21497deb6edc62fb1683daa08e6",
      "tree": "10509e066829e685b25d74239f490345d28603d2",
      "parents": [
        "5def1360252b974faeb438775c19c14338bc1903"
      ],
      "author": {
        "name": "Lukas Czerner",
        "email": "lczerner@redhat.com",
        "time": "Mon Jun 06 00:05:17 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jun 06 00:05:17 2011 -0400"
      },
      "message": "ext4: Fix max file size and logical block counting of extent format file\n\nKazuya Mio reported that he was able to hit BUG_ON(next \u003d\u003d lblock)\nin ext4_ext_put_gap_in_cache() while creating a sparse file in extent\nformat and fill the tail of file up to its end. We will hit the BUG_ON\nwhen we write the last block (2^32-1) into the sparse file.\n\nThe root cause of the problem lies in the fact that we specifically set\ns_maxbytes so that block at s_maxbytes fit into on-disk extent format,\nwhich is 32 bit long. However, we are not storing start and end block\nnumber, but rather start block number and length in blocks. It means\nthat in order to cover extent from 0 to EXT_MAX_BLOCK we need\nEXT_MAX_BLOCK+1 to fit into len (because we counting block 0 as well) -\nand it does not.\n\nThe only way to fix it without changing the meaning of the struct\next4_extent members is, as Kazuya Mio suggested, to lower s_maxbytes\nby one fs block so we can cover the whole extent we can get by the\non-disk extent format.\n\nAlso in many places EXT_MAX_BLOCK is used as length instead of maximum\nlogical block number as the name suggests, it is all a bit messy. So\nthis commit renames it to EXT_MAX_BLOCKS and change its usage in some\nplaces to actually be maximum number of blocks in the extent.\n\nThe bug which this commit fixes can be reproduced as follows:\n\n dd if\u003d/dev/zero of\u003d/mnt/mp1/file bs\u003d\u003cblocksize\u003e count\u003d1 seek\u003d$((2**32-2))\n sync\n dd if\u003d/dev/zero of\u003d/mnt/mp1/file bs\u003d\u003cblocksize\u003e count\u003d1 seek\u003d$((2**32-1))\n\nReported-by: Kazuya Mio \u003ck-mio@sx.jp.nec.com\u003e\nSigned-off-by: Lukas Czerner \u003clczerner@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "5def1360252b974faeb438775c19c14338bc1903",
      "tree": "d2b95eefc7920a01565654761c4b587503992f15",
      "parents": [
        "55922c9d1b84b89cb946c777fddccb3247e7df2c"
      ],
      "author": {
        "name": "Yongqiang Yang",
        "email": "xiaoqiangnk@gmail.com",
        "time": "Sun Jun 05 23:26:40 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Jun 05 23:26:40 2011 -0400"
      },
      "message": "ext4: correct comments for ext4_free_blocks()\n\nmetadata is not parameter of ext4_free_blocks() any more.\n\nSigned-off-by: Yongqiang Yang \u003cxiaoqiangnk@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\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": "f8d613e2a665bf1be9628a3c3f9bafe7599b32c0",
      "tree": "98d4da8d0e1a5fb1d9064626b4b96d95ccf26375",
      "parents": [
        "8a0599dd2471f2a2e409498c08a0ab339057ad06",
        "5bc20fc59706214d9591c11e1938a629d3538c12"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 26 10:50:56 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 26 10:50:56 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/djm/tmem\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/djm/tmem:\n  xen: cleancache shim to Xen Transcendent Memory\n  ocfs2: add cleancache support\n  ext4: add cleancache support\n  btrfs: add cleancache support\n  ext3: add cleancache support\n  mm/fs: add hooks to support cleancache\n  mm: cleancache core ops functions and config\n  fs: add field to superblock to support cleancache\n  mm/fs: cleancache documentation\n\nFix up trivial conflict in fs/btrfs/extent_io.c due to includes\n"
    }
  ],
  "next": "7abc52c2ed169c65044d3a199879c8438ad82322"
}
