)]}'
{
  "log": [
    {
      "commit": "5f5249507e4b5c4fc0f9c93f33d133d8c95f47e1",
      "tree": "0b0a790f568c07298c3a4122572e84392c787648",
      "parents": [
        "109f55651954def97fa41ee71c464d268c512ab0"
      ],
      "author": {
        "name": "Mingming",
        "email": "cmm@us.ibm.com",
        "time": "Tue Nov 10 10:48:04 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Nov 10 10:48:04 2009 -0500"
      },
      "message": "ext4: skip conversion of uninit extents after direct IO if there isn\u0027t any\n\nAt the end of direct I/O operation, ext4_ext_direct_IO() always called\next4_convert_unwritten_extents(), regardless of whether there were any\nunwritten extents involved in the I/O or not.\n\nThis commit adds a state flag so that ext4_ext_direct_IO() only calls\next4_convert_unwritten_extents() when necessary.\n\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "d4da6c9ccf648f3f1cb5bf9d981a62c253d30e28",
      "tree": "709f8bdc50a3a1d47632047eb3670b4a4a6ff045",
      "parents": [
        "c35102c3e15f90fe604523a2fbffd9dc158b455a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Nov 02 10:15:27 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Nov 02 10:15:27 2009 -0800"
      },
      "message": "Revert \"ext4: Remove journal_checksum mount option and enable it by default\"\n\nThis reverts commit d0646f7b636d067d715fab52a2ba9c6f0f46b0d7, as\nrequested by Eric Sandeen.\n\nIt can basically cause an ext4 filesystem to miss recovery (and thus get\nmounted with errors) if the journal checksum does not match.\n\nQuoth Eric:\n\n   \"My hand-wavy hunch about what is happening is that we\u0027re finding a\n    bad checksum on the last partially-written transaction, which is\n    not surprising, but if we have a wrapped log and we\u0027re doing the\n    initial scan for head/tail, and we abort scanning on that bad\n    checksum, then we are essentially running an unrecovered filesystem.\n\n    But that\u0027s hand-wavy and I need to go look at the code.\n\n    We lived without journal checksums on by default until now, and at\n    this point they\u0027re doing more harm than good, so we should revert\n    the default-changing commit until we can fix it and do some good\n    power-fail testing with the fixes in place.\"\n\nSee\n\n\thttp://bugzilla.kernel.org/show_bug.cgi?id\u003d14354\n\nfor all the gory details.\n\nRequested-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nCc: Theodore Tso \u003ctytso@mit.edu\u003e\nCc: Alexey Fisher \u003cbug-track@fisher-privat.net\u003e\nCc: Maxim Levitsky \u003cmaximlevitsky@gmail.com\u003e\nCc: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nCc: Mathias Burén \u003cmathias.buren@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c1fccc0696bcaff6008c11865091f5ec4b0937ab",
      "tree": "0e8269e07d40278c136b7f93aba7ab118f75f532",
      "parents": [
        "0ef122494020521309be855bfdeeb41f34bf8c94"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Sep 30 01:13:55 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Sep 30 01:13:55 2009 -0400"
      },
      "message": "ext4: Fix time encoding with extra epoch bits\n\n\"Looking at ext4.h, I think the setting of extra time fields forgets to\nmask the epoch bits so the epoch part overwrites nsec part. The second\nchange is only for coherency (2 -\u003e EXT4_EPOCH_BITS).\"\n\nThanks to Damien Guibouret for pointing out this problem.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "296c355cd6443d89fa251885a8d78778fe111dc4",
      "tree": "5cf7c8b115617dc3829a16a5969894d37b73173c",
      "parents": [
        "90576c0b9a0b5323fc4bd7f23f49be0d234f36d1"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Sep 30 00:32:42 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Sep 30 00:32:42 2009 -0400"
      },
      "message": "ext4: Use tracepoints for mb_history trace file\n\nThe /proc/fs/ext4/\u003cdev\u003e/mb_history was maintained manually, and had a\nnumber of problems: it required a largish amount of memory to be\nallocated for each ext4 filesystem, and the s_mb_history_lock\nintroduced a CPU contention problem.  \n\nBy ripping out the mb_history code and replacing it with ftrace\ntracepoints, and we get more functionality: timestamps, event\nfiltering, the ability to correlate mballoc history with other ext4\ntracepoints, etc.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "8d5d02e6b176565c77ff03604908b1453a22044d",
      "tree": "0d29e4f28233f24960c7921c1c0a7608077bf713",
      "parents": [
        "4c0425ff68b1b87b802ffeda7b6a46ff7da7241c"
      ],
      "author": {
        "name": "Mingming Cao",
        "email": "cmm@us.ibm.com",
        "time": "Mon Sep 28 15:48:29 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Sep 28 15:48:29 2009 -0400"
      },
      "message": "ext4: async direct IO for holes and fallocate support\n\nFor async direct IO that covers holes or fallocate, the end_io\ncallback function now queued the convertion work on workqueue but\ndon\u0027t flush the work rightaway as it might take too long to afford.\n\nBut when fsync is called after all the data is completed, user expects\nthe metadata also being updated before fsync returns.\n\nThus we need to flush the conversion work when fsync() is called.\nThis patch keep track of a listed of completed async direct io that\nhas a work queued on workqueue.  When fsync() is called, it will go\nthrough the list and do the conversion.\n\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\n"
    },
    {
      "commit": "4c0425ff68b1b87b802ffeda7b6a46ff7da7241c",
      "tree": "a8718f5f4574af8e15fd876b24f4aec88d62451b",
      "parents": [
        "0031462b5b392f90d17f1d75abb795883c44e969"
      ],
      "author": {
        "name": "Mingming Cao",
        "email": "cmm@us.ibm.com",
        "time": "Mon Sep 28 15:48:41 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Sep 28 15:48:41 2009 -0400"
      },
      "message": "ext4: Use end_io callback to avoid direct I/O fallback to buffered I/O\n\nCurrently the DIO VFS code passes create \u003d 0 when writing to the\nmiddle of file.  It does this to avoid block allocation for holes, so\nas not to expose stale data out when there is a parallel buffered read\n(which does not hold the i_mutex lock).  Direct I/O writes into holes\nfalls back to buffered IO for this reason.\n\nSince preallocated extents are treated as holes when doing a\nget_block() look up (buffer is not mapped), direct IO over fallocate\nalso falls back to buffered IO.  Thus ext4 actually silently falls\nback to buffered IO in above two cases, which is undesirable.\n\nTo fix this, this patch creates unitialized extents when a direct I/O\nwrite into holes in sparse files, and registering an end_io callback which\nconverts the uninitialized extent to an initialized extent after the\nI/O is completed.\n\nSinged-Off-By: Mingming Cao \u003ccmm@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "0031462b5b392f90d17f1d75abb795883c44e969",
      "tree": "e8323861b8dede0f3ddbfc8324d650bf1f4fd74b",
      "parents": [
        "9f0ccfd8e07d61b413e6536ffa02fbf60d2e20d8"
      ],
      "author": {
        "name": "Mingming Cao",
        "email": "cmm@us.ibm.com",
        "time": "Mon Sep 28 15:49:08 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Sep 28 15:49:08 2009 -0400"
      },
      "message": "ext4: Split uninitialized extents for direct I/O\n\nWhen writing into an unitialized extent via direct I/O, and the direct\nI/O doesn\u0027t exactly cover the unitialized extent, split the extent\ninto uninitialized and initialized extents before submitting the I/O.\nThis avoids needing to deal with an ENOSPC error in the end_io\ncallback that gets used for direct I/O.\n\nWhen the IO is complete, the written extent will be marked as initialized.\n\nSinged-Off-By: Mingming Cao \u003ccmm@us.ibm.com\u003e \nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "55138e0bc29c0751e2152df9ad35deea542f29b3",
      "tree": "40dbc77de3e7a426030bd740ba8e2fd0d2171523",
      "parents": [
        "71780577306fd1e76c7a92e3b308db624d03adb9"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Sep 29 13:31:31 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Sep 29 13:31:31 2009 -0400"
      },
      "message": "ext4: Adjust ext4_da_writepages() to write out larger contiguous chunks\n\nWork around problems in the writeback code to force out writebacks in\nlarger chunks than just 4mb, which is just too small.  This also works\naround limitations in the ext4 block allocator, which can\u0027t allocate\nmore than 2048 blocks at a time.  So we need to defeat the round-robin\ncharacteristics of the writeback code and try to write out as many\nblocks in one inode before allowing the writeback code to move on to\nanother inode.  We add a a new per-filesystem tunable,\nmax_writeback_mb_bump, which caps this to a default of 128mb per\ninode.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "0a80e9867db154966b2a771042e10452ac110e1e",
      "tree": "51f43830b3c0dd733b0d446399eb3ea2b6bc84ed",
      "parents": [
        "5534fb5bb35a62a94e0bd1fa2421f7fb6e894f10"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Thu Sep 17 11:55:58 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Sep 17 11:55:58 2009 -0400"
      },
      "message": "ext4: replace MAX_DEFRAG_SIZE with EXT_MAX_BLOCK\n\nThere\u0027s no reason to redefine the maximum allowable offset\nin an extent-based file just for defrag; \nEXT_MAX_BLOCK already does this.\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "1b9c12f44c1eb614fd3b8822bfe8f1f5d8e53737",
      "tree": "5de0737dd71557dadaa5e3f98d6e62bd3b9d7c51",
      "parents": [
        "fb0a387dcdcd21aab1b09ee7fd80b7c979bdbbfd"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Sep 17 08:32:22 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Sep 17 08:32:22 2009 -0400"
      },
      "message": "ext4: store EXT4_EXT_MIGRATE in i_state instead of i_flags\n\nEXT4_EXT_MIGRATE is only intended to be used for an in-memory flag,\nand the hex value assigned to it collides with FS_DIRECTIO_FL (which\nis also stored in i_flags).  There\u0027s no reason for the\nEXT4_EXT_MIGRATE bit to be stored in i_flags, so we switch it to use\ni_state instead.\n\nCc: \"Aneesh Kumar K.V\" \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "fb0a387dcdcd21aab1b09ee7fd80b7c979bdbbfd",
      "tree": "dcb12c5fce8f7ccb8b183936ea71a29aba3f3846",
      "parents": [
        "c40ce3c9ea97425a12d7e44031a98fe50add6fc1"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Wed Sep 16 14:45:10 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Sep 16 14:45:10 2009 -0400"
      },
      "message": "ext4: limit block allocations for indirect-block files to \u003c 2^32\n\nToday, the ext4 allocator will happily allocate blocks past\n2^32 for indirect-block files, which results in the block\nnumbers getting truncated, and corruption ensues.\n\nThis patch limits such allocations to \u003c 2^32, and adds\nBUG_ONs if we do get blocks larger than that.\n\nThis should address RH Bug 519471, ext4 bitmap allocator \nmust limit blocks to \u003c 2^32\n\n* ext4_find_goal() is modified to choose a goal \u003c UINT_MAX,\n  so that our starting point is in an acceptable range.\n\n* ext4_xattr_block_set() is modified such that the goal block\n  is \u003c UINT_MAX, as above.\n\n* ext4_mb_regular_allocator() is modified so that the group\n  search does not continue into groups which are too high\n\n* ext4_mb_use_preallocated() has a check that we don\u0027t use\n  preallocated space which is too far out\n\n* ext4_alloc_blocks() and ext4_xattr_block_set() add some BUG_ONs\n\nNo attempt has been made to limit inode locations to \u003c 2^32,\nso we may wind up with blocks far from their inodes.  Doing\nthis much already will lead to some odd ENOSPC issues when the\n\"lower 32\" gets full, and further restricting inodes could\nmake that even weirder.\n\nFor high inodes, choosing a goal of the original, % UINT_MAX,\nmay be a bit odd, but then we\u0027re in an odd situation anyway,\nand I don\u0027t know of a better heuristic.\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "d0646f7b636d067d715fab52a2ba9c6f0f46b0d7",
      "tree": "f7b3ae9510e8c789651d99fee0c22867e6ccba94",
      "parents": [
        "a3710fd1ee8cd542c5de63cf2c39f8912031f867"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Sep 05 12:50:43 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Sep 05 12:50:43 2009 -0400"
      },
      "message": "ext4: Remove journal_checksum mount option and enable it by default\n\nThere\u0027s no real cost for the journal checksum feature, and we should\nmake sure it is enabled all the time.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n\n"
    },
    {
      "commit": "b3a3ca8ca0c3c29abc5b2bfe94bb14f3f4590df9",
      "tree": "1006f780d43ec8ff90ed11b1eb0d5ed961c9f613",
      "parents": [
        "de89de6e0cf4b1eb13f27137cf2aa40d287aabdf"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Aug 31 23:13:11 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Aug 31 23:13:11 2009 -0400"
      },
      "message": "ext4: Add new tracepoint: trace_ext4_da_write_pages()\n\nAdd a new tracepoint which shows the pages that will be written using\nwrite_cache_pages() by ext4_da_writepages().\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "a36b44988cef1fc007535107013571fa691a2d7f",
      "tree": "b9d659b8ac2a1068f6fbc08ac093902333512c70",
      "parents": [
        "1927805e6599d8602d2c0af6a0155c85acc0b214"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Tue Aug 25 22:36:45 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Aug 25 22:36:45 2009 -0400"
      },
      "message": "ext4: use ext4_grpblk_t more extensively\n\nunsigned  short is potentially too small to track blocks within\na group; today it is safe due to restrictions in e2fsprogs but\nwe have _lo / _hi bits for group blocks with the intent to go\nup to 32 bits, so clean this up now.\n\nThere are many more places where we use unsigned/int/unsigned int\nto contain a group block but this should at least fix all the\nshort types.\n\nI added a few comments to the struct ext4_group_info definition\nas well.\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "0373130d5bc783751c1fbad948886916a21d4559",
      "tree": "a5b4d21b84345354ff965714bd6a6c473bae4b0f",
      "parents": [
        "bf43d84b185e2ff54598f8c58a5a8e63148b6e90"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Mon Aug 17 23:51:29 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Aug 17 23:51:29 2009 -0400"
      },
      "message": "ext4: open-code ext4_mb_update_group_info\n\next4_mb_update_group_info is only called in one place, and it\u0027s\nextremely simple.  There\u0027s no reason to have it in a separate function\nin a separate file as far as I can tell, it just obfuscates what\u0027s\nreally going on.\n\nPerhaps it was intended to keep the grp-\u003ebb_* manipulation local to\nmballoc.c but we\u0027re already accessing other grp-\u003e fields in balloc.c\ndirectly so this seems ok.\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "487caeef9fc08c0565e082c40a8aaf58dad92bbb",
      "tree": "69920293cfe3a50bdbbf845be785350e7c203a2b",
      "parents": [
        "9599b0e597d810be9b8f759ea6e9619c4f983c5e"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Aug 17 22:17:20 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Aug 17 22:17:20 2009 -0400"
      },
      "message": "ext4: Fix possible deadlock between ext4_truncate() and ext4_get_blocks()\n\nDuring truncate we are sometimes forced to start a new transaction as\nthe amount of blocks to be journaled is both quite large and hard to\npredict. So far we restarted a transaction while holding i_data_sem\nand that violates lock ordering because i_data_sem ranks below a\ntransaction start (and it can lead to a real deadlock with\next4_get_blocks() mapping blocks in some page while having a\ntransaction open).\n\nWe fix the problem by dropping the i_data_sem before restarting the\ntransaction and acquire it afterwards. It\u0027s slightly subtle that this\nworks:\n\n1) By the time ext4_truncate() is called, all the page cache for the\ntruncated part of the file is dropped so get_block() should not be\ncalled on it (we only have to invalidate extent cache after we\nreacquire i_data_sem because some extent from not-truncated part could\nextend also into the part we are going to truncate).\n\n2) Writes, migrate or defrag hold i_mutex so they are stopped for all\nthe time of the truncate.\n\nThis bug has been found and analyzed by Theodore Tso \u003ctytso@mit.edu\u003e.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "50797481a7bdee548589506d7d7b48b08bc14dcd",
      "tree": "19989d27e3a69c6c2c507f798f55a2d9a47a5d27",
      "parents": [
        "4ba74d00a20256e22f159cb288ff34b587608917"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 18 13:34:02 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 18 13:34:02 2009 -0400"
      },
      "message": "ext4: Avoid group preallocation for closed files\n\nCurrently the group preallocation code tries to find a large (512)\nfree block from which to do per-cpu group allocation for small files.\nThe problem with this scheme is that it leaves the filesystem horribly\nfragmented.  In the worst case, if the filesystem is unmounted and\nremounted (after a system shutdown, for example) we forget the fact\nthat wee were using a particular (now-partially filled) 512 block\nextent.  So the next time we try to allocate space for a small file,\nwe will find *another* completely free 512 block chunk to allocate\nsmall files.  Given that there are 32,768 blocks in a block group,\nafter 64 iterations of \"mount, write one 4k file in a directory,\nunmount\", the block group will have 64 files, each separated by 511\nblocks, and the block group will no longer have any free 512\ncompletely free chunks of blocks for group preallocation space.\n\nSo if we try to allocate blocks for a file that has been closed, such\nthat we know the final size of the file, and the filesystem is not\nbusy, avoid using group preallocation.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "4ba74d00a20256e22f159cb288ff34b587608917",
      "tree": "6859cf49f8043ec11846e2c8ebc836499e1048c4",
      "parents": [
        "0ef90db93a4ddfc300af288c2a1bfc1e6c79da64"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Aug 09 22:01:13 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Aug 09 22:01:13 2009 -0400"
      },
      "message": "ext4: Fix bugs in mballoc\u0027s stream allocation mode\n\nThe logic around sbi-\u003es_mb_last_group and sbi-\u003es_mb_last_start was all\nscrewed up.  These fields were getting unconditionally all the time,\nset even when stream allocation had not taken place, and if they were\nbeing used when the file was smaller than s_mb_stream_request, which\nis when the allocation should _not_ be doing stream allocation.\n\nFix this by determining whether or not we stream allocation should\ntake place once, in ext4_mb_group_or_file(), and setting a flag which\ngets used in ext4_mb_regular_allocator() and ext4_mb_use_best_found().\nThis simplifies the code and assures that we are consistently using\n(or not using) the stream allocation logic.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "0ef90db93a4ddfc300af288c2a1bfc1e6c79da64",
      "tree": "9a16d71efd6458777391c993f3b964cb5cebfb7d",
      "parents": [
        "6ba495e9259cd9a0b40ebd6c315143535c92542f"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Aug 09 16:46:13 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Aug 09 16:46:13 2009 -0400"
      },
      "message": "ext4: Display the mballoc flags in mb_history in hex instead of decimal\n\nDisplaying the flags in base 16 makes it easier to see which flags\nhave been set.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "726447d803802cd0be8f62d17c4a34421781b938",
      "tree": "ef1d7d4b9afb0f81b9eb6f09980c152d35ceb3cf",
      "parents": [
        "089ceecc1ea4a69ed8bcc5c7c7b96ce487e26b33"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Mon Jul 13 10:24:17 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jul 13 10:24:17 2009 -0400"
      },
      "message": "ext4: naturally align struct ext4_allocation_request\n\nAs Ted noted, the ext4_allocation_request isn\u0027t well aligned.  Looking\nat it with pahole we\u0027re wasting space on 64-bit arches:\n\nstruct ext4_allocation_request {\n        struct inode *             inode;              /*     0     8 */\n        ext4_lblk_t                logical;            /*     8     4 */\n\n        /* XXX 4 bytes hole, try to pack */\n\n        ext4_fsblk_t               goal;               /*    16     8 */\n        ext4_lblk_t                lleft;              /*    24     4 */\n\n        /* XXX 4 bytes hole, try to pack */\n\n        ext4_fsblk_t               pleft;              /*    32     8 */\n        ext4_lblk_t                lright;             /*    40     4 */\n\n        /* XXX 4 bytes hole, try to pack */\n\n        ext4_fsblk_t               pright;             /*    48     8 */\n        unsigned int               len;                /*    56     4 */\n        unsigned int               flags;              /*    60     4 */\n        /* --- cacheline 1 boundary (64 bytes) --- */\n\n        /* size: 64, cachelines: 1, members: 9 */\n        /* sum members: 52, holes: 3, sum holes: 12 */\n};\n\nGrouping 32-bit members together closes these holes and shrinks the\nstructure by 12 bytes. which is important since ext4 can get on the\nhairy edge of stack overruns.\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "d4bfe2f76d785cc77611a4bda8cedaff358d8c7d",
      "tree": "a8c953fe752afebadb4f0fb4aa3e80dbab934f7f",
      "parents": [
        "6582a0e6f6bc7bf64817b9e1a424782855292ab0"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 08 19:54:26 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jun 24 08:17:04 2009 -0400"
      },
      "message": "switch ext4 to inode-\u003ei_acl\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "0610b6e99939828b77eec020ead0e1f44cba38ca",
      "tree": "ede610c64a0456a43618e500c577b35e462f8953",
      "parents": [
        "11013911daea4820147ae6d7094dd7c6894e8651"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jun 15 03:45:05 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jun 15 03:45:05 2009 -0400"
      },
      "message": "ext4: Fix 64-bit block type problem on 32-bit platforms\n\nThe function ext4_mb_free_blocks() was using an \"unsigned long\" to\npass a block number; this will cause 64-bit block numbers to get\ntruncated on x86 and other 32-bit platforms.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nReviewed-by: Eric Sandeen \u003csandeen@redhat.com\u003e\n"
    },
    {
      "commit": "11013911daea4820147ae6d7094dd7c6894e8651",
      "tree": "f8e9f9d2058e0dfc826d4df3d88a7eb18a56b3f3",
      "parents": [
        "f157a4aa98a18bd3817a72bea90d48494e2586e7"
      ],
      "author": {
        "name": "Andreas Dilger",
        "email": "adilger@sun.com",
        "time": "Sat Jun 13 11:45:35 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Jun 13 11:45:35 2009 -0400"
      },
      "message": "ext4: teach the inode allocator to use a goal inode number\n\nEnhance the inode allocator to take a goal inode number as a\nparemeter; if it is specified, it takes precedence over Orlov or\nparent directory inode allocation algorithms.\n\nThe extents migration function uses the goal inode number so that the\nextent trees allocated the migration function use the correct flex_bg.\nIn the future, the goal inode functionality will also be used to\nallocate an adjacent inode for the extended attributes.\n\nAlso, for testing purposes the goal inode number can be specified via\n/sys/fs/{dev}/inode_goal.  This can be useful for testing inode\nallocation beyond 2^32 blocks on very large filesystems.\n\nSigned-off-by: Andreas Dilger \u003cadilger@sun.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "f157a4aa98a18bd3817a72bea90d48494e2586e7",
      "tree": "105547639a67296b4ea7acdc35c9e65ee2a85fd8",
      "parents": [
        "8a8a2050c844d9de224ff591e91bda3f77bd6eda"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Jun 13 11:09:42 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Jun 13 11:09:42 2009 -0400"
      },
      "message": "ext4: Use a hash of the topdir directory name for the Orlov parent group\n\nInstead of using a random number to determine the goal parent grop for\nthe Orlov top directories, use a hash of the directory name.  This\nallows for repeatable results when trying to benchmark filesystem\nlayout algorithms.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "4ab2f15b7f709c3626a7eed075a7225b4c775c7e",
      "tree": "bfefc592c4c2eb176162134c615132e75f810486",
      "parents": [
        "bc0b0d6d69ee9022f18ae264e62beb30ddeb322a"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Jun 13 10:09:36 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Jun 13 10:09:36 2009 -0400"
      },
      "message": "ext4: move the abort flag from s_mount_opts to s_mount_flags\n\nWe\u0027re running out of space in the mount options word, and\nEXT4_MOUNT_ABORT isn\u0027t really a mount option, but a run-time flag.  So\nmove it to become EXT4_MF_FS_ABORTED in s_mount_flags.\n\nAlso remove bogus ext2_fs.h / ext4.h simultaneous #include protection,\nwhich can never happen.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "bc0b0d6d69ee9022f18ae264e62beb30ddeb322a",
      "tree": "fb1d04af657b6de21fa441c1d14fc296f32c723e",
      "parents": [
        "7f4520cc6242780ce720aa440ad4b391f998b558"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Jun 13 10:09:48 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Jun 13 10:09:48 2009 -0400"
      },
      "message": "ext4: update the s_last_mounted field in the superblock\n\nThis field can be very helpful when a system administrator is trying\nto sort through large numbers of block devices or filesystem images.\nWhat is stored in this field can be ambiguous if multiple filesystem\nnamespaces are in play; what we store in practice is the mountpoint\ninterpreted by the process\u0027s namespace which first opens a file in the\nfilesystem.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "7f4520cc6242780ce720aa440ad4b391f998b558",
      "tree": "c8f1d99e019f2e29a967851031f4a60bf7ab1467",
      "parents": [
        "748de6736c1e482e111f9d1b5a5d5b1787600cad"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Jun 13 10:09:41 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Jun 13 10:09:41 2009 -0400"
      },
      "message": "ext4: change s_mount_opt to be an unsigned int\n\nWe can only fit 32 options in s_mount_opt because an unsigned long is\n32-bits on a x86 machine.  So use an unsigned int to save space on\n64-bit platforms.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "748de6736c1e482e111f9d1b5a5d5b1787600cad",
      "tree": "9e5bd6085cd0eea0453c2a8bbce1422f291f059f",
      "parents": [
        "8b0f9e8f78bd0a65fa001bf18f2c47eef2893a10"
      ],
      "author": {
        "name": "Akira Fujita",
        "email": "a-fujita@rs.jp.nec.com",
        "time": "Wed Jun 17 19:24:03 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Jun 17 19:24:03 2009 -0400"
      },
      "message": "ext4: online defrag -- Add EXT4_IOC_MOVE_EXT ioctl\n\nThe EXT4_IOC_MOVE_EXT exchanges the blocks between orig_fd and donor_fd,\nand then write the file data of orig_fd to donor_fd.\next4_mext_move_extent() is the main fucntion of ext4 online defrag,\nand this patch includes all functions related to ext4 online defrag.\n\nSigned-off-by: Akira Fujita \u003ca-fujita@rs.jp.nec.com\u003e\nSigned-off-by: Takashi Sato \u003ct-sato@yk.jp.nec.com\u003e\nSigned-off-by: Kazuya Mio \u003ck-mio@sx.jp.nec.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "b31e15527a9bb71b6a11a425d17ce139a62f5af5",
      "tree": "3b8fdb014e3b960b27369643de9ad1213ec2cbba",
      "parents": [
        "03f5d8bcf094a5e3b501bd2ae1553656efa8d1be"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Thu Jun 04 17:36:36 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Jun 04 17:36:36 2009 -0400"
      },
      "message": "ext4: Change all super.c messages to print the device\n\nThis patch changes ext4 super.c to include the device name with all \nwarning/error messages, by using a new utility function ext4_msg. \nIt\u0027s a rather large patch, but very mechanic. I left debug printks\nalone.\n\nThis is a straightforward port of a patch which Andi Kleen did for\next3.\n\nCc: Andi Kleen \u003cak@linux.intel.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "03f5d8bcf094a5e3b501bd2ae1553656efa8d1be",
      "tree": "04644e9008e7357fd87f14fee6404b7c306bc3e9",
      "parents": [
        "0b8e58a140cae2ba1c4a21ccae7c6c3c939c51f9"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue Jun 09 00:17:05 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jun 09 00:17:05 2009 -0400"
      },
      "message": "ext4: Get rid of EXTEND_DISKSIZE flag of ext4_get_blocks_handle()\n\nGet rid of EXTEND_DISKSIZE flag of ext4_get_blocks_handle(). This\nseems to be a relict from some old days and setting disksize in this\nfunction does not make much sense.  Currently it was set only by\next4_getblk().  Since the parameter has some effect only if create \u003d\u003d\n1, it is easy to check by grepping through the sources that the three\ncallers which end up calling ext4_getblk() with create \u003d\u003d 1\n(ext4_append, ext4_quota_write, ext4_mkdir) do the right thing and set\ndisksize themselves.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "6fd058f7791087648c683eb8572edf3be3c4c23c",
      "tree": "0d80791532d2d022c91f20013003716eaf0afb40",
      "parents": [
        "2ac3b6e00acb46406c993d57921f86a594aafe08"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun May 17 15:38:01 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun May 17 15:38:01 2009 -0400"
      },
      "message": "ext4: Add a comprehensive block validity check to ext4_get_blocks()\n\nTo catch filesystem bugs or corruption which could lead to the\nfilesystem getting severly damaged, this patch adds a facility for\ntracking all of the filesystem metadata blocks by contiguous regions\nin a red-black tree.  This allows quick searching of the tree to\nlocate extents which might overlap with filesystem metadata blocks.\n\nThis facility is also used by the multi-block allocator to assure that\nit is not allocating blocks out of the system zone, as well as by the\nroutines used when reading indirect blocks and extents information\nfrom disk to make sure their contents are valid.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "2ac3b6e00acb46406c993d57921f86a594aafe08",
      "tree": "51f8a245caa53776fb9617973742ffc81023e007",
      "parents": [
        "2fa3cdfb319055fd8b25abdafa413e16f00ad493"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu May 14 13:57:08 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu May 14 13:57:08 2009 -0400"
      },
      "message": "ext4: Clean up ext4_get_blocks() so it does not depend on bh_result-\u003eb_state\n\nThe ext4_get_blocks() function was depending on the value of\nbh_result-\u003eb_state as an input parameter to decide whether or not\nupdate the delalloc accounting statistics by calling\next4_da_update_reserve_space().  We now use a separate flag,\nEXT4_GET_BLOCKS_UPDATE_RESERVE_SPACE, to requests this update, so that\nall callers of ext4_get_blocks() can clear map_bh.b_state before\ncalling ext4_get_blocks() without worrying about any consistency\nissues.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "c21770573319922e3f3fcb331cfaa290c49f1c81",
      "tree": "ee21ebb2d73d4d3b19d7e391e7accf00704371d9",
      "parents": [
        "12b7ac176831df1aa58a787e67c3e5d698b30163"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu May 14 00:58:52 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu May 14 00:58:52 2009 -0400"
      },
      "message": "ext4: Define a new set of flags for ext4_get_blocks()\n\nThe functions ext4_get_blocks(), ext4_ext_get_blocks(), and\next4_ind_get_blocks() used an ad-hoc set of integer variables used as\nboolean flags passed in as arguments.  Use a single flags parameter\nand a setandard set of bitfield flags instead.  This saves space on\nthe call stack, and it also makes the code a bit more understandable.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "12b7ac176831df1aa58a787e67c3e5d698b30163",
      "tree": "d8d3ab93fd28d5b84efff0b5c247da74c84788e0",
      "parents": [
        "e4d996ca806e93dddb5d76c0d3d859b494c559f6"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu May 14 00:57:44 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu May 14 00:57:44 2009 -0400"
      },
      "message": "ext4: Rename ext4_get_blocks_wrap() to be ext4_get_blocks()\n\nAnother function rename for clarity\u0027s sake.  The _wrap prefix simply\nconfuses people, and didn\u0027t add much people trying to follow the code\npaths.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "bc8e67409ccdcff72c3f1656b1fb1aad7ff396db",
      "tree": "2a766e3c7bc938b697499aa7d5a20f2f468b5a2f",
      "parents": [
        "955ce5f5be67dfe0d1d096b543af33fe8a1ce3dd"
      ],
      "author": {
        "name": "Vincent Minet",
        "email": "vincent@vincent-minet.net",
        "time": "Fri May 15 08:33:18 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri May 15 08:33:18 2009 -0400"
      },
      "message": "ext4: Fix spinlock assertions on UP systems\n\nOn UP systems without DEBUG_SPINLOCK, ext4_is_group_locked always fails\nwhich triggers a BUG_ON() call.\nThis patch fixes it by using assert_spin_locked instead.\n\nSigned-off-by: Vincent Minet \u003cvincent@vincent-minet.net\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "955ce5f5be67dfe0d1d096b543af33fe8a1ce3dd",
      "tree": "68b0bdbef1594a3e43c1ef28ae8e096b40a06ae4",
      "parents": [
        "eefd7f03b86b8a319890e7fac5a6fcc7f8694b76"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Sat May 02 20:35:09 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat May 02 20:35:09 2009 -0400"
      },
      "message": "ext4: Convert ext4_lock_group to use sb_bgl_lock\n\nWe have sb_bgl_lock() and ext4_group_info.bb_state\nbit spinlock to protech group information. The later is only\nused within mballoc code. Consolidate them to use sb_bgl_lock().\nThis makes the mballoc.c code much simpler and also avoid\nconfusion with two locks protecting same info.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "bb23c20a851a5038b255a3c0d0aa56093c1da3f8",
      "tree": "257211bf2bf5ffd53fe24b0528928ca4d3f2ecba",
      "parents": [
        "596397b77c895d0fa3674f579c94ad5ea88ef01d"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri May 01 19:44:44 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri May 01 19:44:44 2009 -0400"
      },
      "message": "ext4: Move fs/ext4/group.h into ext4.h\n\nMove the function prototypes in group.h into ext4.h so they are all\ndefined in one place.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "596397b77c895d0fa3674f579c94ad5ea88ef01d",
      "tree": "bd4f9916556b4d5bc59ee4b5171248df44e2c5c4",
      "parents": [
        "ca0faba0e8ac844dc0279825eb8db876b5962ea5"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri May 01 13:49:15 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri May 01 13:49:15 2009 -0400"
      },
      "message": "ext4: Move fs/ext4/namei.h into ext4.h\n\nThe fs/ext4/namei.h header file had only a single function\ndeclaration, and should have never been a standalone file.  Move it\ninto ext4.h, where should have been from the beginning.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "ca0faba0e8ac844dc0279825eb8db876b5962ea5",
      "tree": "186acf88dda5958f44ec80349778f815cb172895",
      "parents": [
        "d444c3c38189b3f18337a213855ac1c07af4e2d9"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun May 03 16:33:44 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun May 03 16:33:44 2009 -0400"
      },
      "message": "ext4: Move the ext4_sb.h header file into ext4.h\n\nThere is no longer a reason for a separate ext4_sb.h header file, so\nmove it into ext4.h just to make life easier for developers to find\nthe relevant data structures and typedefs.  Should also speed up\ncompiles slightly, too.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "d444c3c38189b3f18337a213855ac1c07af4e2d9",
      "tree": "180b83e442c9ab72e1553a19140e3f1169806d28",
      "parents": [
        "75507efb1372b6acf1aa6bf00ebd49ce196fd994"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri May 01 13:44:33 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri May 01 13:44:33 2009 -0400"
      },
      "message": "ext4: Move the ext4_i.h header file into ext4.h\n\nThere is no longer a reason for a separate ext4_i.h header file, so\nmove it into ext4.h just to make life easier for developers to find\nthe relevant data structures and typedefs.  Should also speed up\ncompiles slightly, too.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "8df9675f8b498d0bfa1f0b5b06f56bf1ff366dd5",
      "tree": "38fd56a82049f50b4d774af47b9d39f116071755",
      "parents": [
        "9ca92389c5312a51e819c15c762f0abdc7f3129b"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri May 01 08:50:38 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri May 01 08:50:38 2009 -0400"
      },
      "message": "ext4: Avoid races caused by on-line resizing and SMP memory reordering\n\nExt4\u0027s on-line resizing adds a new block group and then, only at the\nlast step adjusts s_groups_count.  However, it\u0027s possible on SMP\nsystems that another CPU could see the updated the s_group_count and\nnot see the newly initialized data structures for the just-added block\ngroup.  For this reason, it\u0027s important to insert a SMP read barrier\nafter reading s_groups_count and before reading any (for example) the\nnew block group descriptors allowed by the increased value of\ns_groups_count.\n\nUnfortunately, we rather blatently violate this locking protocol\ndocumented in fs/ext4/resize.c.  Fortunately, (1) on-line resizes\nhappen relatively rarely, and (2) it seems rare that the filesystem\ncode will immediately try to use just-added block group before any\nmemory ordering issues resolve themselves.  So apparently problems\nhere are relatively hard to hit, since ext3 has been vulnerable to the\nsame issue for years with no one apparently complaining.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "395d73413c5656c6d7706ae91dcb441f9b7e3074",
      "tree": "7fadabe996f70d7918583fa2312d4fad19397fcb",
      "parents": [
        "c226fd659fa7b6a7b038df5ae6856a68514bacde",
        "06705bff9114531a997a7d0c2520bea0f2927410"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 10:57:49 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 10:57:49 2009 -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: (33 commits)\n  ext4: Regularize mount options\n  ext4: fix locking typo in mballoc which could cause soft lockup hangs\n  ext4: fix typo which causes a memory leak on error path\n  jbd2: Update locking coments\n  ext4: Rename pa_linear to pa_type\n  ext4: add checks of block references for non-extent inodes\n  ext4: Check for an valid i_mode when reading the inode from disk\n  ext4: Use WRITE_SYNC for commits which are caused by fsync()\n  ext4: Add auto_da_alloc mount option\n  ext4: Use struct flex_groups to calculate get_orlov_stats()\n  ext4: Use atomic_t\u0027s in struct flex_groups\n  ext4: remove /proc tuning knobs\n  ext4: Add sysfs support\n  ext4: Track lifetime disk writes\n  ext4: Fix discard of inode prealloc space with delayed allocation.\n  ext4: Automatically allocate delay allocated blocks on rename\n  ext4: Automatically allocate delay allocated blocks on close\n  ext4: add EXT4_IOC_ALLOC_DA_BLKS ioctl\n  ext4: Simplify delalloc code by removing mpage_da_writepages()\n  ext4: Save stack space by removing fake buffer heads\n  ...\n"
    },
    {
      "commit": "c2ec175c39f62949438354f603f4aa170846aabb",
      "tree": "f2c9bf1bec2deabe2d3a5092405b027637b6ead3",
      "parents": [
        "c2fdf3a9b2d52842808a8e551b53b55dd9b45030"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Mar 31 15:23:21 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:14 2009 -0700"
      },
      "message": "mm: page_mkwrite change prototype to match fault\n\nChange the page_mkwrite prototype to take a struct vm_fault, and return\nVM_FAULT_xxx flags.  There should be no functional change.\n\nThis makes it possible to return much more detailed error information to\nthe VM (and also can provide more information eg.  virtual_address to the\ndriver, which might be important in some special cases).\n\nThis is required for a subsequent fix.  And will also make it easier to\nmerge page_mkwrite() with fault() in future.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Mark Fasheh \u003cmfasheh@suse.com\u003e\nCc: Joel Becker \u003cjoel.becker@oracle.com\u003e\nCc: Artem Bityutskiy \u003cdedekind@infradead.org\u003e\nCc: Felix Blyakher \u003cfelixb@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "60e58e0f30e723464c2a7d34b71b8675566c572d",
      "tree": "2797ae1bccdad12d53c989a6dccea1c8ffd2bce3",
      "parents": [
        "643d00ccc311664188c8209bf8b596a30e139c3a"
      ],
      "author": {
        "name": "Mingming Cao",
        "email": "cmm@us.ibm.com",
        "time": "Thu Jan 22 18:13:05 2009 +0100"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Mar 26 02:18:34 2009 +0100"
      },
      "message": "ext4: quota reservation for delayed allocation\n\nUses quota reservation/claim/release to handle quota properly for delayed\nallocation in the three steps: 1) quotas are reserved when data being copied\nto cache when block allocation is defered 2) when new blocks are allocated.\nreserved quotas are converted to the real allocated quota, 2) over-booked\nquotas for metadata blocks are released back.\n\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nAcked-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "afd4672dc7610b7feef5190168aa917cc2e417e4",
      "tree": "53a3aa709232b00473c8da70b792b350150956ff",
      "parents": [
        "7d39db14a42cbd719c7515b9da8f85a2eb6a0633"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Mar 16 23:12:23 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Mar 16 23:12:23 2009 -0400"
      },
      "message": "ext4: Add auto_da_alloc mount option\n\nAdd a mount option which allows the user to disable automatic\nallocation of blocks whose allocation by delayed allocation when the\nfile was originally truncated or when the file is renamed over an\nexisting file.  This feature is intended to save users from the\neffects of naive application writers, but it reduces the effectiveness\nof the delayed allocation code.  This mount option disables this\nsafety feature, which may be desirable for prodcutions systems where\nthe risk of unclean shutdowns or unexpected system crashes is low.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "7d39db14a42cbd719c7515b9da8f85a2eb6a0633",
      "tree": "5c93b9f76c9895183d1e973ed296cd9b7a1d9a0e",
      "parents": [
        "9f24e4208f7ee2748f157368b63287dc903fcf60"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Mar 04 19:31:53 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Mar 04 19:31:53 2009 -0500"
      },
      "message": "ext4: Use struct flex_groups to calculate get_orlov_stats()\n\nInstead of looping over all of the block groups in a flex group\nsumming their summary statistics, start tracking used_dirs in struct\nflex_groups, and use struct flex_groups instead.  This should save a\nbit of CPU for mkdir-heavy workloads.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "9f24e4208f7ee2748f157368b63287dc903fcf60",
      "tree": "255989fe69ebfb2b031dc7cf6dbe975df67c711a",
      "parents": [
        "b713a5ec55bf73c833f9883cdd761b20ee61a1ab"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Mar 04 19:09:10 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Mar 04 19:09:10 2009 -0500"
      },
      "message": "ext4: Use atomic_t\u0027s in struct flex_groups\n\nReduce pressure on the sb_bgl_lock family of locks by using atomic_t\u0027s\nto track the number of free blocks and inodes in each flex_group.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n\n"
    },
    {
      "commit": "b713a5ec55bf73c833f9883cdd761b20ee61a1ab",
      "tree": "77bbc689f442cad3ce8ca21d7b2c7cea2738d519",
      "parents": [
        "3197ebdb130473a92760100cbfe0d7e671838f48"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Mar 31 09:11:14 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Mar 31 09:11:14 2009 -0400"
      },
      "message": "ext4: remove /proc tuning knobs\n\nRemove tuning knobs in /proc/fs/ext4/\u003cdev/* since they have been\nreplaced by knobs in sysfs at /sys/fs/ext4/\u003cdev\u003e/*.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "afc32f7ee9febc020c73da61402351d4c90437f3",
      "tree": "7b78aaaac87eb704074f6ece996b2c78a69fbe18",
      "parents": [
        "d6014301b5599fba395c42a1e96a7fe86f7d0b2d"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Feb 28 19:39:58 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Feb 28 19:39:58 2009 -0500"
      },
      "message": "ext4: Track lifetime disk writes\n\nAdd a new superblock value which tracks the lifetime amount of writes\nto the filesystem.  This is useful in estimating the amount of wear on\nsolid state drives (SSD\u0027s) caused by writes to the filesystem.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "7d8f9f7d150dded7b68e61ca6403a1f166fb4edf",
      "tree": "79572041ae1b5737bc8d75037ff86903469430eb",
      "parents": [
        "ccd2506bd43113659aa904d5bea5d1300605e2a6"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Feb 24 08:21:14 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Feb 24 08:21:14 2009 -0500"
      },
      "message": "ext4: Automatically allocate delay allocated blocks on close\n\nWhen closing a file that had been previously truncated, force any\ndelay allocated blocks that to be allocated so that if the filesystem\nis mounted with data\u003dordered, the data blocks will be pushed out to\ndisk along with the journal commit.  Many application programs expect\nthis, so we do this to avoid zero length files if the system crashes\nunexpectedly.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "ccd2506bd43113659aa904d5bea5d1300605e2a6",
      "tree": "99a95645b3c2c092427b7c537c5628d502cd9c22",
      "parents": [
        "f63e6005bc63acc0a6bc3bdb8f971dcfbd827185"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Feb 26 01:04:07 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Feb 26 01:04:07 2009 -0500"
      },
      "message": "ext4: add EXT4_IOC_ALLOC_DA_BLKS ioctl\n\nAdd an ioctl which forces all of the delay allocated blocks to be\nallocated.  This also provides a function ext4_alloc_da_blocks() which\nwill be used by the following commits to force files to be fully\nallocated to preserve application-expected ext3 behaviour.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "a4912123b688e057084e6557cef8924f7ae5bbde",
      "tree": "34e88705d6617b52caa0f87692b480119a9c9e2e",
      "parents": [
        "2dc6b0d48ca0599837df21b14bb8393d0804af57"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Mar 12 12:18:34 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Mar 12 12:18:34 2009 -0400"
      },
      "message": "ext4: New inode/block allocation algorithms for flex_bg filesystems\n\nThe find_group_flex() inode allocator is now only used if the\nfilesystem is mounted using the \"oldalloc\" mount option.  It is\nreplaced with the original Orlov allocator that has been updated for\nflex_bg filesystems (it should behave the same way if flex_bg is\ndisabled).  The inode allocator now functions by taking into account\neach flex_bg group, instead of each block group, when deciding whether\nor not it\u0027s time to allocate a new directory into a fresh flex_bg.\n\nThe block allocator has also been changed so that the first block\ngroup in each flex_bg is preferred for use for storing directory\nblocks.  This keeps directory blocks close together, which is good for\nspeeding up e2fsck since large directories are more likely to look\nlike this:\n\ndebugfs:  stat /home/tytso/Maildir/cur\nInode: 1844562   Type: directory    Mode:  0700   Flags: 0x81000\nGeneration: 1132745781    Version: 0x00000000:0000ad71\nUser: 15806   Group: 15806   Size: 1060864\nFile ACL: 0    Directory ACL: 0\nLinks: 2   Blockcount: 2072\nFragment:  Address: 0    Number: 0    Size: 0\n ctime: 0x499c0ff4:164961f4 -- Wed Feb 18 08:41:08 2009\n atime: 0x499c0ff4:00000000 -- Wed Feb 18 08:41:08 2009\n mtime: 0x49957f51:00000000 -- Fri Feb 13 09:10:25 2009\ncrtime: 0x499c0f57:00d51440 -- Wed Feb 18 08:38:31 2009\nSize of extra inode fields: 28\nBLOCKS:\n(0):7348651, (1-258):7348654-7348911\nTOTAL: 259\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "2dc6b0d48ca0599837df21b14bb8393d0804af57",
      "tree": "b70dd83908f9bcb3cb953e5b7df1837268968c2e",
      "parents": [
        "8fa43a81b97853fc69417bb6054182e78f95cbeb"
      ],
      "author": {
        "name": "Duane Griffin",
        "email": "duaneg@dghda.com",
        "time": "Sun Feb 15 18:09:20 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Feb 15 18:09:20 2009 -0500"
      },
      "message": "ext4: tighten restrictions on inode flags\n\nAt the moment there are few restrictions on which flags may be set on\nwhich inodes.  Specifically DIRSYNC may only be set on directories and\nIMMUTABLE and APPEND may not be set on links.  Tighten that to disallow\nTOPDIR being set on non-directories and only NODUMP and NOATIME to be set\non non-regular file, non-directories.\n\nIntroduces a flags masking function which masks flags based on mode and\nuse it during inode creation and when flags are set via the ioctl to\nfacilitate future consistency.\n\nSigned-off-by: Duane Griffin \u003cduaneg@dghda.com\u003e\nAcked-by: Andreas Dilger \u003cadilger@sun.com\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "8fa43a81b97853fc69417bb6054182e78f95cbeb",
      "tree": "0bcd9550d9f08d825203f8544e6efb75e37bc4eb",
      "parents": [
        "705895b61133ef43d106fe6a6bbdb2eec923867e"
      ],
      "author": {
        "name": "Duane Griffin",
        "email": "duaneg@dghda.com",
        "time": "Sun Feb 15 18:57:26 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Feb 15 18:57:26 2009 -0500"
      },
      "message": "ext4: don\u0027t inherit inappropriate inode flags from parent\n\nAt present INDEX and EXTENTS are the only flags that new ext4 inodes do\nNOT inherit from their parent.  In addition prevent the flags DIRTY,\nECOMPR, IMAGIC, TOPDIR, HUGE_FILE and EXT_MIGRATE from being inherited. \nList inheritable flags explicitly to prevent future flags from\naccidentally being inherited.\n\nThis fixes the TOPDIR flag inheritance bug reported at\nhttp://bugzilla.kernel.org/show_bug.cgi?id\u003d9866.\n\nSigned-off-by: Duane Griffin \u003cduaneg@dghda.com\u003e\nAcked-by: Andreas Dilger \u003cadilger@sun.com\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "3d0518f4758eca4339e75e5b9dbb7e06a5ce08b4",
      "tree": "30a45a1c82d830646a69591c470680573e14de07",
      "parents": [
        "8bad4597c2d71365adfa846ea1ca6cf99161a455"
      ],
      "author": {
        "name": "Wei Yongjun",
        "email": "yjwei@cn.fujitsu.com",
        "time": "Sat Feb 14 23:01:36 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Feb 14 23:01:36 2009 -0500"
      },
      "message": "ext4: New rec_len encoding for very large blocksizes\n\nThe rec_len field in the directory entry is 16 bits, so to encode\nblocksizes larger than 64k becomes problematic.  This patch allows us\nto supprot block sizes up to 256k, by using the low 2 bits to extend\nthe range of rec_len to 2**18-1 (since valid rec_len sizes must be a\nmultiple of 4).  We use the convention that a rec_len of 0 or 65535\nmeans the filesystem block size, for compatibility with older kernels.\n\nIt\u0027s unlikely we\u0027ll see VM pages of up to 256k, but at some point we\nmight find that the Linux VM has been enhanced to support filesystem\nblock sizes \u003e than the VM page size, at which point it might be useful\nfor some applications to allow very large filesystem block sizes.\n\nSigned-off-by: Wei Yongjun \u003cyjwei@cn.fujitsu.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "7be2baaa0322c59ba888aa5260a8c130666acd41",
      "tree": "a1543a38923d60092e06741ab3dee9ce9af32abc",
      "parents": [
        "7f5aa215088b817add9c71914b83650bdd49f8a9"
      ],
      "author": {
        "name": "Wei Yongjun",
        "email": "yjwei@cn.fujitsu.com",
        "time": "Tue Feb 10 09:53:42 2009 -0500"
      },
      "committer": {
        "name": "Theodore Tso",
        "email": "tytso@mit.edu",
        "time": "Tue Feb 10 09:53:42 2009 -0500"
      },
      "message": "ext4: Fix to read empty directory blocks correctly in 64k\n\nThe rec_len field in the directory entry is 16 bits, so there was a\nproblem representing rec_len for filesystems with a 64k block size in\nthe case where the directory entry takes the entire 64k block.\nUnfortunately, there were two schemes that were proposed; one where\nall zeros meant 65536 and one where all ones (65535) meant 65536.\nE2fsprogs used 0, whereas the kernel used 65535.  Oops.  Fortunately\nthis case happens extremely rarely, with the most common case being\nthe lost+found directory, created by mke2fs.\n\nSo we will be liberal in what we accept, and accept both encodings,\nbut we will continue to encode 65536 as 65535.  This will require a\nchange in e2fsprogs, but with fortunately ext4 filesystems normally\nhave the dir_index feature enabled, which precludes having a\ncompletely empty directory block.\n\nSigned-off-by: Wei Yongjun \u003cyjwei@cn.fujitsu.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "074ca44283bf031678e67af7d82668bb03c55a55",
      "tree": "d547808ec88f16e2a20de024f26f02be86e8119f",
      "parents": [
        "0d34fb8e93ceba7b6dad0062dbb4a0813bacd75b"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@gmail.com",
        "time": "Fri Feb 06 16:23:37 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Feb 06 16:23:37 2009 -0500"
      },
      "message": "ext4: Remove stale block allocator references from ext4.h\n\nRemove some leftovers from when the old block allocator was removed\n(c2ea3fde).  ext4_sb_info is now a bit lighter.  Also remove a dangling\nread_block_bitmap() prototype.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "06a279d636734da32bb62dd2f7b0ade666f65d7c",
      "tree": "e3fb1a899ea7a9d527ff0d8edf3ca23778321728",
      "parents": [
        "c225aa57ff4ffe715df4692676b77c815a337236"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Jan 17 18:41:37 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Jan 17 18:41:37 2009 -0500"
      },
      "message": "ext4: only use i_size_high for regular files\n\nDirectories are not allowed to be bigger than 2GB, so don\u0027t use\ni_size_high for anything other than regular files.  E2fsck should\ncomplain about these inodes, but the simplest thing to do for the\nkernel is to only use i_size_high for regular files.\n\nThis prevents an intentially corrupted filesystem from causing the\nkernel to burn a huge amount of CPU and issuing error messages such\nas:\n\nEXT4-fs warning (device loop0): ext4_block_to_path: block 135090028 \u003e max\n\nThanks to David Maciejak from Fortinet\u0027s FortiGuard Global Security\nResearch Team for reporting this issue.\n\nhttp://bugzilla.kernel.org/show_bug.cgi?id\u003d12375\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "2150edc6c5cf00f7adb54538b9ea2a3e9cedca3f",
      "tree": "f72a0d85e66f500b4cead348a231e3d3b9f357bc",
      "parents": [
        "cd764695b67386a81964f68e9c66efd9f13f4d29",
        "4b905671d2ea09fd48fed72c581df17e40823f39"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 17:14:59 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 17:14:59 2009 -0800"
      },
      "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: (57 commits)\n  jbd2: Fix oops in jbd2_journal_init_inode() on corrupted fs\n  ext4: Remove \"extents\" mount option\n  block: Add Kconfig help which notes that ext4 needs CONFIG_LBD\n  ext4: Make printk\u0027s consistently prefixed with \"EXT4-fs: \"\n  ext4: Add sanity checks for the superblock before mounting the filesystem\n  ext4: Add mount option to set kjournald\u0027s I/O priority\n  jbd2: Submit writes to the journal using WRITE_SYNC\n  jbd2: Add pid and journal device name to the \"kjournald2 starting\" message\n  ext4: Add markers for better debuggability\n  ext4: Remove code to create the journal inode\n  ext4: provide function to release metadata pages under memory pressure\n  ext3: provide function to release metadata pages under memory pressure\n  add releasepage hooks to block devices which can be used by file systems\n  ext4: Fix s_dirty_blocks_counter if block allocation failed with nodelalloc\n  ext4: Init the complete page while building buddy cache\n  ext4: Don\u0027t allow new groups to be added during block allocation\n  ext4: mark the blocks/inode bitmap beyond end of group as used\n  ext4: Use new buffer_head flag to check uninit group bitmaps initialization\n  ext4: Fix the race between read_inode_bitmap() and ext4_new_inode()\n  ext4: code cleanup\n  ...\n"
    },
    {
      "commit": "179f7ebff6be45738c6e2fa68c8d2cc5c2c6308e",
      "tree": "3d48b5f825cfa29f5b39656503c5157872454e9f",
      "parents": [
        "e3d5a27d5862b6425d0879272e24abecf7245105"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Tue Jan 06 14:41:04 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:13 2009 -0800"
      },
      "message": "percpu_counter: FBC_BATCH should be a variable\n\nFor NR_CPUS \u003e\u003d 16 values, FBC_BATCH is 2*NR_CPUS\n\nConsidering more and more distros are using high NR_CPUS values, it makes\nsense to use a more sensible value for FBC_BATCH, and get rid of NR_CPUS.\n\nA sensible value is 2*num_online_cpus(), with a minimum value of 32 (This\nminimum value helps branch prediction in __percpu_counter_add())\n\nWe already have a hotcpu notifier, so we can adjust FBC_BATCH dynamically.\n\nWe rename FBC_BATCH to percpu_counter_batch since its not a constant\nanymore.\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "83982b6f47201c4c7767210d24d7d8c99567a0b3",
      "tree": "f1c19b1c6b5a34dd0c5de7519b78414b7a9267ee",
      "parents": [
        "4d783b093cd4f3e2738527365979cbd1c5101065"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jan 06 14:53:16 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jan 06 14:53:16 2009 -0500"
      },
      "message": "ext4: Remove \"extents\" mount option\n\nThis mount option is largely superfluous, and in fact the way it was\nimplemented was buggy; if a filesystem which did not have the extents\nfeature flag was mounted -o extents, the filesystem would attempt to\ncreate and use extents-based file even though the extents feature flag\nwas not eabled.  The simplest thing to do is to nuke the mount option\nentirely.  It\u0027s not all that useful to force the non-creation of new\nextent-based files if the filesystem can support it.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "2ccb5fb9f113dae969d1ae9b6c10e80fa34f8cd3",
      "tree": "d9dc5bca94748d4173a7783e963d20b5a75f8db8",
      "parents": [
        "393418676a7602e1d7d3f6e560159c65c8cbd50e"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Mon Jan 05 21:49:55 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 05 21:49:55 2009 -0500"
      },
      "message": "ext4: Use new buffer_head flag to check uninit group bitmaps initialization\n\nFor uninit block group, the on-disk bitmap is not initialized. That\nimplies we cannot depend on the uptodate flag on the bitmap\nbuffer_head to find bitmap validity.  Use a new buffer_head flag which\nwould be set after we properly initialize the bitmap.  This also\nprevents (re-)initializing the uninit group bitmap every time we call \next4_read_block_bitmap().\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "560671a0d3c9ad2d647fa6d09375a262e1f19c4f",
      "tree": "a52673326726062d53b35643d51a16739cd804fc",
      "parents": [
        "e8134b27e351e813414da3b95aa8eac6d3908088"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Mon Jan 05 22:20:24 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 05 22:20:24 2009 -0500"
      },
      "message": "ext4: Use high 16 bits of the block group descriptor\u0027s free counts fields\n\nRename the lower bits with suffix _lo and add helper\nto access the values. Also rename bg_itable_unused_hi\nto bg_pad as in e2fsprogs.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "5d1b1b3f492f8696ea18950a454a141381b0f926",
      "tree": "e6277cd3e01c074403b9da7390de1daa6b9f248f",
      "parents": [
        "b7be019e80da4db96d283734d55366014509911c"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Mon Jan 05 22:19:52 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 05 22:19:52 2009 -0500"
      },
      "message": "ext4: fix BUG when calling ext4_error with locked block group\n\nThe mballoc code likes to call ext4_error while it is holding locked\nblock groups.  This can causes a scheduling in atomic context BUG.  We\ncan\u0027t just unlock the block group and relock it after/if ext4_error\nreturns since that might result in race conditions in the case where\nthe filesystem is set to continue after finding errors.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "920313a726e04fef0f2c0bcb04ad8229c0e700d8",
      "tree": "7e7644a2fd48586ec2f455e56525565174798e4a",
      "parents": [
        "e21675d4b63975d09eb75c443c48ebe663d23e18"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Mon Jan 05 21:36:19 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 05 21:36:19 2009 -0500"
      },
      "message": "ext4: Use EXT4_GROUP_INFO_NEED_INIT_BIT during resize\n\nThe new groups added during resize are flagged as\nneed_init group. Make sure we properly initialize these\ngroups. When we have block size \u003c page size and we are adding\nnew groups the page may still be marked uptodate even though\nwe haven\u0027t initialized the group. While forcing the init\nof buddy cache we need to make sure other groups part of the\nsame page of buddy cache is not using the cache.\ngroup_info-\u003ealloc_sem is added to ensure the same.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\ncc: stable@kernel.org\n"
    },
    {
      "commit": "e21675d4b63975d09eb75c443c48ebe663d23e18",
      "tree": "73ace586265c977c2f0b41bbe2ec0b462809aa58",
      "parents": [
        "3a06d778dfeda7eaeeb79bfa49cf97f2aae132b4"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Mon Jan 05 21:36:02 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 05 21:36:02 2009 -0500"
      },
      "message": "ext4: Add blocks added during resize to bitmap\n\nWith this change new blocks added during resize\nare marked as free in the block bitmap and the\ngroup is flagged with EXT4_GROUP_INFO_NEED_INIT_BIT\nflag.  This makes sure when mballoc tries to allocate\nblocks from the new group we would reload the\nbuddy information using the bitmap present in the disk.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "3a06d778dfeda7eaeeb79bfa49cf97f2aae132b4",
      "tree": "08c813063950404356c9c64678eed72f21f217b9",
      "parents": [
        "1a0d3786dd57dbd74f340322054c3d618b999dcf"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Sat Nov 22 15:04:59 2008 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Nov 22 15:04:59 2008 -0500"
      },
      "message": "ext4: sparse fixes\n\n* Change EXT4_HAS_*_FEATURE to return a boolean\n* Add a function prototype for ext4_fiemap() in ext4.h\n* Make ext4_ext_fiemap_cb() and ext4_xattr_fiemap() be static functions\n* Add lock annotations to mb_free_blocks()\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "498e5f24158da7bf8fa48074a70e370e22844492",
      "tree": "1434b349c8eca3b0667af0b385533cbcd599c1c3",
      "parents": [
        "a9df9a49102f3578909cba7bd33784eb3b9caaa4"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Nov 05 00:14:04 2008 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Nov 05 00:14:04 2008 -0500"
      },
      "message": "ext4: Change unsigned long to unsigned int\n\nConvert the unsigned longs that are most responsible for bloating the\nstack usage on 64-bit systems.\n\nNearly all places in the ext3/4 code which uses \"unsigned long\" is\nprobably a bug, since on 32-bit systems a ulong a 32-bits, which means\nwe are wasting stack space on 64-bit systems.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "a9df9a49102f3578909cba7bd33784eb3b9caaa4",
      "tree": "1d383d422bf7185e8e87c1bcfc80f9beb3074cf8",
      "parents": [
        "cde6436004ad9cd8cab5a874b6fa8b01f1da91bf"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 05 22:18:16 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 05 22:18:16 2009 -0500"
      },
      "message": "ext4: Make ext4_group_t be an unsigned int\n\nNearly all places in the ext3/4 code which uses \"unsigned long\" is\nprobably a bug, since on 32-bit systems a ulong a 32-bits, which means\nwe are wasting stack space on 64-bit systems.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "30773840c19cea60dcef39545960d541b1ac1cf8",
      "tree": "f220a2dce451a40dc7264e8fd70c77c5a3908873",
      "parents": [
        "d7cfa4684d82f58e5d7cb73b8a3c88c169937f25"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Jan 03 20:27:38 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Jan 03 20:27:38 2009 -0500"
      },
      "message": "ext4: add fsync batch tuning knobs\n\nAdd new mount options, min_batch_time and max_batch_time, which\ncontrols how long the jbd2 layer should wait for additional filesystem\noperations to get batched with a synchronous write transaction.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "cfe82c856747b7841a3a00d591ce9ed46f579d27",
      "tree": "b5a306bdb06ead17bf19adc671df149aa9f0895e",
      "parents": [
        "815a1130687ffac2c3e91513ce64aab629d6a54d"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Dec 07 14:10:54 2008 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Dec 07 14:10:54 2008 -0500"
      },
      "message": "ext4: remove ext4_new_meta_block()\n\nThere were only two one callers of the function ext4_new_meta_block(),\nwhich just a very simpler wrapper function around\next4_new_meta_blocks().  Change those two functions to call\next4_new_meta_blocks() directly, to save code and stack space usage.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "815a1130687ffac2c3e91513ce64aab629d6a54d",
      "tree": "9abc15c6e1e44a5e5fcf1feb0f9328b09657ad59",
      "parents": [
        "8e1a4857cd92e32e642b3e7184c7f6bf85c96e2e"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Jan 01 23:59:43 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Jan 01 23:59:43 2009 -0500"
      },
      "message": "ext4: remove ext4_new_blocks() and call ext4_mb_new_blocks() directly\n\nThere was only one caller of the compatibility function\next4_new_blocks(), in balloc.c\u0027s ext4_alloc_blocks().  Change it to\ncall ext4_mb_new_blocks() directly, and remove ext4_new_blocks()\naltogether.  This cleans up the code, by removing two extra functions\nfrom the call chain, and hopefully saving some stack usage.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "f99b25897a86fcfff9140396a97261ae65fed872",
      "tree": "2191505f190d09ff31896487c73b8187cb475596",
      "parents": [
        "5e1f8c9e20a92743eefc9a82c2db835213905e26"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Oct 28 13:21:44 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Oct 28 13:21:44 2008 -0400"
      },
      "message": "ext4: Add support for non-native signed/unsigned htree hash algorithms\n\nThe original ext3 hash algorithms assumed that variables of type char\nwere signed, as God and K\u0026R intended.  Unfortunately, this assumption\nis not true on some architectures.  Userspace support for marking\nfilesystems with non-native signed/unsigned chars was added two years\nago, but the kernel-side support was never added (until now).\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "8c3bf8a01c005385e9be0bc992e10abfb355278c",
      "tree": "b65516a799256f593b29ad5048aa9a24d2d1b70b",
      "parents": [
        "6c20ec850360bc6e5c66a787f0523a80450d65ab"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Tue Oct 28 00:08:12 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Oct 28 00:08:12 2008 -0400"
      },
      "message": "merge ext4_claim_free_blocks \u0026 ext4_has_free_blocks\n\nMingming pointed out that ext4_claim_free_blocks \u0026 ext4_has_free_blocks\nare largely cut \u0026 pasted; they can be collapsed/merged as follows.\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nReviewed-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "01436ef2e4710317f826c4893b31c07b2d8df88c",
      "tree": "e8c6a561e3f4803f6ee9ad7851623cd3e369bee9",
      "parents": [
        "0b09923eabd92f11a8b272dd3fd0347332d0e1e2"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Oct 17 07:22:35 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Oct 17 07:22:35 2008 -0400"
      },
      "message": "ext4: Remove unused mount options: nomballoc, mballoc, nocheck\n\nThese mount options don\u0027t actually do anything any more, so remove\nthem.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "5bf5683a33f3584da6eced480967c4f7e11515a8",
      "tree": "4986ba3932d9f259fa1bc674deff3e35f689b243",
      "parents": [
        "7ad7445f60fe4d46c4c9d2a9463db180d2a3b270"
      ],
      "author": {
        "name": "Hidehiro Kawai",
        "email": "hidehiro.kawai.ez@hitachi.com",
        "time": "Fri Oct 10 22:12:43 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Oct 10 22:12:43 2008 -0400"
      },
      "message": "ext4: add an option to control error handling on file data\n\nIf the journal doesn\u0027t abort when it gets an IO error in file data\nblocks, the file data corruption will spread silently.  Because\nmost of applications and commands do buffered writes without fsync(),\nthey don\u0027t notice the IO error.  It\u0027s scary for mission critical\nsystems.  On the other hand, if the journal aborts whenever it gets\nan IO error in file data blocks, the system will easily become\ninoperable.  So this patch introduces a filesystem option to\ndetermine whether it aborts the journal or just call printk() when\nit gets an IO error in file data.\n\nIf you mount an ext4 fs with data_err\u003dabort option, it aborts on file\ndata write error.  If you mount it with data_err\u003dignore, it doesn\u0027t\nabort, just call printk().  data_err\u003dignore is the default.\n\nHere is the corresponding patch of the ext3 version:\nhttp://kerneltrap.org/mailarchive/linux-kernel/2008/9/9/3239374\n\nSigned-off-by: Hidehiro Kawai \u003chidehiro.kawai.ez@hitachi.com\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "6873fa0de14e49c433f1f181c54e511f4f3d459d",
      "tree": "4759862db403c037c11f570f0b2ca5e25198073e",
      "parents": [
        "68c9d702bb72f367f3b148963ec6cf5e07ff7f65"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Tue Oct 07 00:46:36 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Oct 07 00:46:36 2008 -0400"
      },
      "message": "Hook ext4 to the vfs fiemap interface.\n\next4_ext_walk_space() was reinstated to be used for iterating over file\nextents with a callback; it is used by the ext4 fiemap implementation.\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: linux-ext4@vger.kernel.org\nCc: linux-fsdevel@vger.kernel.org\n"
    },
    {
      "commit": "c2ea3fde61f1df1dbf062345f23277dcd6f01dfe",
      "tree": "53ecbf57416326810540494e814c05753bf30874",
      "parents": [
        "240799cdf22bd789ea6852653c3b879d35ad0a6c"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Oct 10 09:40:52 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Oct 10 09:40:52 2008 -0400"
      },
      "message": "ext4: Remove old legacy block allocator\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "240799cdf22bd789ea6852653c3b879d35ad0a6c",
      "tree": "e696b60cc103f23838b5c14d8d397f692abffbc3",
      "parents": [
        "37515facd001942221d68171c81c1f46d54ffdd0"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Oct 09 23:53:47 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Oct 09 23:53:47 2008 -0400"
      },
      "message": "ext4: Use readahead when reading an inode from the inode table\n\nWith modern hard drives, reading 64k takes roughly the same time as\nreading a 4k block.  So request readahead for adjacent inode table\nblocks to reduce the time it takes when iterating over directories\n(especially when doing this in htree sort order) in a cold cache case.\nWith this patch, the time it takes to run \"git status\" on a kernel\ntree after flushing the caches via \"echo 3 \u003e /proc/sys/vm/drop_caches\"\nis reduced by 21%.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "5e8814f2f74f53d58aa5679bf32b38a7940033fe",
      "tree": "05f70d1d57d20111a57cd35fb971e36f836d24e8",
      "parents": [
        "9f6200bbfc962d8f926278cf5d5ddb90a228c322"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Sep 23 18:07:35 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Sep 23 18:07:35 2008 -0400"
      },
      "message": "ext4: Combine proc file handling into a single set of functions\n\nPreviously mballoc created a separate set of functions for each proc\nfile.  This combines the tunables into a single set of functions which\ngets used for all of the per-superblock proc files, saving\napproximately 2k of compiled object code.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "9f6200bbfc962d8f926278cf5d5ddb90a228c322",
      "tree": "86cf42e4f1fff753a38c64d49971efd04bfdd5f9",
      "parents": [
        "f702ba0fd7d50b5f5f5aea5317875a10d40b869f"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Sep 23 09:18:24 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Sep 23 09:18:24 2008 -0400"
      },
      "message": "ext4: move /proc setup and teardown out of mballoc.c\n\n...and into the core setup/teardown code in fs/ext4/super.c so that\nother parts of ext4 can define tuning parameters.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "8eea80d52b9d87cfd771055534bd2c24f73704d7",
      "tree": "7c25e13bbd59cbee49e30005b1f6470cadd092b5",
      "parents": [
        "4db46fc266b84a04b73b7a4c6ebe8a543a62a2ff"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Sep 13 19:54:35 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Sep 13 19:54:35 2008 -0400"
      },
      "message": "ext4: Renumber EXT4_IOC_MIGRATE\n\nPick an ioctl number for EXT4_IOC_MIGRATE that won\u0027t conflict with\nother ext4 ioctl\u0027s.  Since there haven\u0027t been any major userspace\nusers of this ioctl, we can afford to change this now, to avoid\npotential problems later.\n\nAlso, reorder the ioctl numbers in ext4.h to avoid this sort of\nmistake in the future.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "4db46fc266b84a04b73b7a4c6ebe8a543a62a2ff",
      "tree": "603429d04ff87a2ffbcd311420aa1a2b2ba54d41",
      "parents": [
        "2a43a878001cc5cb7c3c7be2e8dad0a1aeb939b0"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Wed Oct 08 23:34:06 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 08 23:34:06 2008 -0400"
      },
      "message": "ext4: hook the ext3 migration interface to the EXT4_IOC_SETFLAGS ioctl\n\nThis patch hooks the ext3 to ext4 migrate interface to\nEXT4_IOC_SETFLAGS ioctl. The userspace interface is via chattr +e.  We\nonly allow setting extent flags.  Clearing extent flag (migrating from\next4 to ext3) is not supported.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "2a43a878001cc5cb7c3c7be2e8dad0a1aeb939b0",
      "tree": "a0653e45baefbbe3d4de74087525d1b86292a101",
      "parents": [
        "7ee1ec4ca30c6df8e989615cdaacb75f2af4fa6b"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Sat Sep 13 12:52:26 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Sep 13 12:52:26 2008 -0400"
      },
      "message": "ext4: elevate write count for migrate ioctl\n\nThe migrate ioctl writes to the filsystem, so we need to elevate the\nwrite count.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "cf17fea6575cb1739552e1d0cb2b446305ee3d0c",
      "tree": "319e1044e271aeb31ad14847f369776ac5db74db",
      "parents": [
        "ae4d537211ff250a8c23c4f1227c4276cd2508ab"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Sat Sep 13 13:06:18 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Sep 13 13:06:18 2008 -0400"
      },
      "message": "ext4: Properly update i_disksize.\n\nWith delayed allocation we use i_data_sem to update i_disksize.  We need\nto update i_disksize only if the new size specified is greater than the\ncurrent value and we need to make sure we don\u0027t race with other\ni_disksize update.  With delayed allocation we will switch to the\nwrite_begin function for non-delayed allocation if we are low on free\nblocks.  This means the write_begin function for non-delayed allocation\nalso needs to use the same locking.\n\nWe also need to check and update i_disksize even if the new size is less\nthat inode.i_size because of delayed allocation.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "5c79161689aede2d487d707d5931a22eadf66120",
      "tree": "994177ca7118a515d23f0375ab080c216159d9c8",
      "parents": [
        "79f0be8d2e6ebde27dfb3beff18eb689d5c4e36c"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Wed Oct 08 23:12:24 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 08 23:12:24 2008 -0400"
      },
      "message": "ext4: Signed arithmetic fix\n\nThis patch converts some usage of ext4_fsblk_t to s64.  This is needed\nso that some of the sign conversion works as expected in if loops.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "a30d542a0035b886ffaafd0057ced0a2b28c3a4f",
      "tree": "9e677eaf4eb1611701828554b27a1b0b0ae523fd",
      "parents": [
        "c4a0c46ec92c194c873232b88debce4e1a448483"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Thu Oct 09 10:56:23 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Oct 09 10:56:23 2008 -0400"
      },
      "message": "ext4: Make sure all the block allocation paths reserve blocks\n\nWith delayed allocation we need to make sure block are reserved before\nwe attempt to allocate them. Otherwise we get block allocation failure\n(ENOSPC) during writepages which cannot be handled. This would mean\nsilent data loss (We do a printk stating data will be lost). This patch\nupdates the DIO and fallocate code path to do block reservation before\nblock allocation. This is needed to make sure parallel DIO and fallocate\nrequest doesn\u0027t take block out of delayed reserve space.\n\nWhen free blocks count go below a threshold we switch to a slow patch\nwhich looks at other CPU\u0027s accumulated percpu counter values.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "af5bc92dded4d98dfeabc8b5b9812571345b263d",
      "tree": "5cfaf27e673a09d3ad1341c175559be0a3ea990d",
      "parents": [
        "e5f8eab8851dff162e7ade46f084cb8575dc45f7"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Sep 08 22:25:24 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Sep 08 22:25:24 2008 -0400"
      },
      "message": "ext4: Fix whitespace checkpatch warnings/errors\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "f3bd1f3fa8ca7ec70cfd87aa94dc5e1a260901f2",
      "tree": "a0f0ce2e044f8a75009e94d5f788b45a3948bbe3",
      "parents": [
        "ee12b630687d510f6f4b6d4acdc4e267fd4adeda"
      ],
      "author": {
        "name": "Mingming Cao",
        "email": "cmm@us.ibm.com",
        "time": "Tue Aug 19 22:16:03 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Aug 19 22:16:03 2008 -0400"
      },
      "message": "ext4: journal credits reservation fixes for DIO, fallocate\n\nDIO and fallocate credit calculation is different than writepage, as\nthey do start a new journal right for each call to ext4_get_blocks_wrap().\nThis patch uses the helper function in DIO and fallocate case, passing\na flag indicating that the modified data are contigous thus could account\nless indirect/index blocks.\n\nThis patch also fixed the journal credit reservation for direct I/O\n(DIO).  Previously the estimated credits for DIO only was calculated for\nnon-extent files, which was not enough if the file is extent-based.\n\nAlso fixed was fallocate double-counting credits for modifying the the\nsuperblock.\n\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nReviewed-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "a02908f19c819aeec5e3dcf238adaa6deddd70b0",
      "tree": "78764672019b22a5a8925abc702d7c54244138e8",
      "parents": [
        "c001077f4003fa75793bb62979baa6241dd8eb19"
      ],
      "author": {
        "name": "Mingming Cao",
        "email": "cmm@us.ibm.com",
        "time": "Tue Aug 19 22:16:07 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Aug 19 22:16:07 2008 -0400"
      },
      "message": "ext4: journal credits calulation cleanup and fix for non-extent writepage\n\nWhen considering how many journal credits are needed for modifying a\nchunk of data, we need to account for the super block, inode block,\nquota blocks and xattr block, indirect/index blocks, also, group bitmap\nand group descriptor blocks for new allocation (including data and\nindirect/index blocks). There are many places in ext4 do the calculation\non their own and often missed one or two meta blocks, and often they\nassume single block allocation, and did not considering the multile\nchunk of allocation case.\n\nThis patch is trying to cleanup current journal credit code, provides\nsome common helper funtion to calculate the journal credits, to be used\nfor writepage, writepages, DIO, fallocate, migration, defrag, and for\nboth nonextent and extent files.\n\nThis patch modified the writepage/write_begin credit caculation for\nnonextent files, to use the new helper function. It also fixed the\nproblem that writepage on nonextent files did not consider the case\nblocksize \u003cpagesize, thus could possibelly need multiple block\nallocation in a single transaction.\n\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nReviewed-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "12219aea6b944e36795267be31d43f9c484841be",
      "tree": "0a9970929358fc8f0105334f2969888ecdf894e6",
      "parents": [
        "34071da71a665d8c81e3b3467c9a2e7c56386fec"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Thu Jul 17 16:12:08 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Jul 17 16:12:08 2008 -0400"
      },
      "message": "ext4: Cleanup the block reservation code path\n\nThe truncate patch should not use the i_allocated_meta_blocks\nvalue. So add seperate functions to be used in the truncate\nand alloc path. We also need to release the meta-data block\nthat we reserved for the blocks that we are truncating.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "3e3398a08d6e516675d5af853d625dc7dd90eab1",
      "tree": "d8a37dbaea105cd36e02827b057a0f9fcad62adc",
      "parents": [
        "632eaeab1feb5d78c1e2bfb1d2dfc0ebb8ac187f"
      ],
      "author": {
        "name": "Mingming Cao",
        "email": "cmm@us.ibm.com",
        "time": "Fri Jul 11 19:27:31 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Jul 11 19:27:31 2008 -0400"
      },
      "message": "ext4: delayed allocation i_blocks fix for stat\n\nRight now i_blocks is not getting updated until the blocks are actually\nallocaed on disk.  This means with delayed allocation, right after files\nare copied, \"ls -sF\" shoes the file as taking 0 blocks on disk.  \"du\"\nalso shows the files taking zero space, which is highly confusing to the\nuser.\n\nSince delayed allocation already keeps track of per-inode total\nnumber of blocks that are subject to delayed allocation, this patch fix\nthis by using that to adjust the value returned by stat(2). When real\nblock allocation is done, the i_blocks will get updated. Since the\nreserved blocks for delayed allocation will be decreased, this will be\nkeep value returned by stat(2) consistent.\n\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "d2a1763791a634e315ec926b62829c1e88842c86",
      "tree": "75a701a89829ba7d728fdc19c30aa2794b9706b9",
      "parents": [
        "e8ced39d5e8911c662d4d69a342b9d053eaaac4e"
      ],
      "author": {
        "name": "Mingming Cao",
        "email": "cmm@us.ibm.com",
        "time": "Mon Jul 14 17:52:37 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jul 14 17:52:37 2008 -0400"
      },
      "message": "ext4: delayed allocation ENOSPC handling\n\nThis patch does block reservation for delayed\nallocation, to avoid ENOSPC later at page flush time.\n\nBlocks(data and metadata) are reserved at da_write_begin()\ntime, the freeblocks counter is updated by then, and the number of\nreserved blocks is store in per inode counter.\n        \nAt the writepage time, the unused reserved meta blocks are returned\nback. At unlink/truncate time, reserved blocks are properly released.\n\nUpdated fix from  Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nto fix the oldallocator block reservation accounting with delalloc, added\nlock to guard the counters and also fix the reservation for meta blocks.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "64769240bd07f446f83660bb143bb609d8ab4910",
      "tree": "db8bd8dda988adab6b4f6087a9b59ce504612009",
      "parents": [
        "29a814d2ee0e43c2980f33f91c1311ec06c0aa35"
      ],
      "author": {
        "name": "Alex Tomas",
        "email": "alex@clusterfs.com",
        "time": "Fri Jul 11 19:27:31 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Jul 11 19:27:31 2008 -0400"
      },
      "message": "ext4: Add delayed allocation support in data\u003dwriteback mode\n\nUpdated with fixes from Mingming Cao \u003ccmm@us.ibm.com\u003e to unlock and\nrelease the page from page cache if the delalloc write_begin failed, and\nproperly handle preallocated blocks.  Also added a fix to clear\nbuffer_delay in block_write_full_page() after allocating a delayed\nbuffer.\n\nUpdated with fixes from Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nto update i_disksize properly and to add bmap support for delayed\nallocation.\n\nUpdated with a fix from Valerie Clement \u003cvalerie.clement@bull.net\u003e to\navoid filesystem corruption when the filesystem is mounted with the\ndelalloc option and blocksize \u003c pagesize.\n\nSigned-off-by: Alex Tomas \u003calex@clusterfs.com\u003e\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nSigned-off-by: Dave Kleikamp \u003cshaggy@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nSigned-off-by:  Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "cf108bca465dde0c015f32dd453b99457d31c7c7",
      "tree": "b1c9dfc1936579e4fd2a48f77f702effc39029e2",
      "parents": [
        "c7d206b3379f7d6462e778b74f475c470ee3dcaf"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri Jul 11 19:27:31 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Jul 11 19:27:31 2008 -0400"
      },
      "message": "ext4: Invert the locking order of page_lock and transaction start\n\nThis changes are needed to support data\u003dordered mode handling via\ninodes.  This enables us to get rid of the journal heads and buffer\nheads for data buffers in the ordered mode.  With the changes, during\ntranasaction commit we writeout the inode pages using the\nwritepages()/writepage(). That implies we take page lock during\ntransaction commit. This can cause a deadlock with the locking order\npage_lock -\u003e jbd2_journal_start, since the jbd2_journal_start can wait\nfor the journal_commit to happen and the journal_commit now needs to\ntake the page lock. To avoid this dead lock reverse the locking order.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "2e9ee850355593e311d9a26542290fe51e152f74",
      "tree": "e860a33119edf36e367ad354428dfc0d6201273c",
      "parents": [
        "93e3270c87549dc531a0b0e5d06362d998d810cb"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Fri Jul 11 19:27:31 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Jul 11 19:27:31 2008 -0400"
      },
      "message": "ext4: Use page_mkwrite vma_operations to get mmap write notification.\n\nWe would like to get notified when we are doing a write on mmap section.\nThis is needed with respect to preallocated area. We split the preallocated\narea into initialzed extent and uninitialzed extent in the call back. This\nlet us handle ENOSPC better. Otherwise we get ENOSPC in the writepage and\nthat would result in data loss. The changes are also needed to handle ENOSPC\nwhen writing to an mmap section of files with holes.\n\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "5f21b0e642d7bf6fe4434c9ba12bc9cb96b17cf7",
      "tree": "0f391fac5cc7fa93129bf8dd853598c6d2d65bb5",
      "parents": [
        "953e622b601f58b7cc0f29fe644457fa40a18456"
      ],
      "author": {
        "name": "Frederic Bohe",
        "email": "frederic.bohe@bull.net",
        "time": "Fri Jul 11 19:27:31 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Jul 11 19:27:31 2008 -0400"
      },
      "message": "ext4: fix online resize with mballoc\n\nUpdate group infos when updating a group\u0027s descriptor.\nAdd group infos when adding a group\u0027s descriptor.\nRefresh cache pages used by mb_alloc when changes occur.\nThis will probably need modifications when META_BG resizing will be allowed.\n\nSigned-off-by: Frederic Bohe \u003cfrederic.bohe@bull.net\u003e\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\n"
    },
    {
      "commit": "07031431072ece801d53d2c03d5e5bb21f4f64a4",
      "tree": "b3075b21242bda4e16c35814fceeaef64a027647",
      "parents": [
        "d755fb384250d6bd7fd18a0930e71965acc8e72e"
      ],
      "author": {
        "name": "Mingming Cao",
        "email": "cmm@us.ibm.com",
        "time": "Fri Jul 11 19:27:31 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Jul 11 19:27:31 2008 -0400"
      },
      "message": "ext4: mballoc avoid use root reserved blocks for non root allocation\n\nmballoc allocation missed check for blocks reserved for root users. Add\next4_has_free_blocks() check before allocation. Also modified\next4_has_free_blocks() to support multiple block allocation request.\n\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "654b4908bc17a6318d18f3036fecc5155de92f55",
      "tree": "a77264435aa5ed0386334653fae7624ee423f8cf",
      "parents": [
        "7061eba75ceb0835ba61e7cbd757a6f9c1e4af92"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Fri Jul 11 19:27:31 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Jul 11 19:27:31 2008 -0400"
      },
      "message": "ext4: cleanup block allocator\n\nMove the code related to block allocation to a single function and add helper\nfuntions to differient allocation for data and meta data blocks\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "7061eba75ceb0835ba61e7cbd757a6f9c1e4af92",
      "tree": "9c70df3078c0543573a9f38bb60c6b0f54608c7a",
      "parents": [
        "6afd670713c9e7d5c5550e379dfedca8ffab4c90"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Fri Jul 11 19:27:31 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Jul 11 19:27:31 2008 -0400"
      },
      "message": "ext4: Use inode preallocation with -o noextents\n\nWhen mballoc is enabled, block allocation for old block-based\nfiles are allocated using mballoc allocator instead of old\nblock-based allocator. The old ext3 block reservation is turned\noff when mballoc is turned on.\n\nHowever, the in-core preallocation is not enabled for block-based/\nnon-extent based file block allocation. This result in performance\nregression, as now we don\u0027t have \"reservation\" ore in-core preallocation\nto prevent interleaved fragmentation in multiple writes workload.\n\nThis patch fix this by enable per inode in-core preallocation\nfor non extent files when mballoc is used.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    }
  ],
  "next": "772cb7c83ba256a11c7bf99a11bef3858d23767c"
}
