)]}'
{
  "log": [
    {
      "commit": "4b70df181611012a3556f017b57dfcef7e1d279f",
      "tree": "95da7ccaea96227b597078c1c5f2a7571d959e99",
      "parents": [
        "5f5249507e4b5c4fc0f9c93f33d133d8c95f47e1"
      ],
      "author": {
        "name": "Mingming",
        "email": "cmm@us.ibm.com",
        "time": "Tue Nov 03 14:44:54 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Nov 03 14:44:54 2009 -0500"
      },
      "message": "ext4: code clean up for dio fallocate handling\n\nThe ext4_debug() call in ext4_end_io_dio() should be moved after the\ncheck to make sure that io_end is non-NULL.\n\nThe comment above ext4_get_block_dio_write() (\"Maximum number of\nblocks...\") is a duplicate; the original and correct comment is above\nthe #define DIO_MAX_BLOCKS up above.\n\nBased on review comments from Curt Wohlgemuth.\n\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "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": "109f55651954def97fa41ee71c464d268c512ab0",
      "tree": "7c4aa2d8cb10c100bbd252e657ac410d30844bac",
      "parents": [
        "fa5d11133b07053270e18fa9c18560e66e79217e"
      ],
      "author": {
        "name": "Mingming",
        "email": "cmm@us.ibm.com",
        "time": "Tue Nov 10 10:48:08 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Nov 10 10:48:08 2009 -0500"
      },
      "message": "ext4: fix ext4_ext_direct_IO()\u0027s return value after converting uninit extents\n\nAfter a direct I/O request covering an uninitalized extent (i.e.,\ncreated using the fallocate system call) or a hole in a file, ext4\nwill convert the uninitialized extent so it is marked as initialized\nby calling ext4_convert_unwritten_extents().  This function returns\nzero on success.\n\nThis return value was getting returned by ext4_direct_IO(); however\nthe file system\u0027s direct_IO function is supposed to return the number\nof bytes read or written on a success.  By returning zero, it confused\nthe direct I/O code into falling back to buffered I/O unnecessarily.\n\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "fa5d11133b07053270e18fa9c18560e66e79217e",
      "tree": "1018ea7d0a2f511ae58934175dbc3815b7e63b5f",
      "parents": [
        "b419148e567728f6af0c3b01965c1cc141e3e13a"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Mon Nov 02 18:50:49 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Nov 02 18:50:49 2009 -0500"
      },
      "message": "ext4: discard preallocation when restarting a transaction during truncate\n\nWhen restart a transaction during a truncate operation, we drop and\nreacquire i_data_sem.  After reacquiring i_data_sem, we need to\ndiscard any inode-based preallocation that might have been grabbed\nwhile we released i_data_sem (for example, if pdflush is allocating\nblocks and racing against the truncate).\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": "fbbf69456619de5d251cb9f1df609069178c62d5",
      "tree": "e0a5bc75a02dda7f46ba4d0e838c54f39b1fe4f6",
      "parents": [
        "74072d0a63553720dd3c70a8b8e9407eb2027dbe"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Fri Oct 02 21:20:55 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Oct 02 21:20:55 2009 -0400"
      },
      "message": "[PATCH] ext4: retry failed direct IO allocations\n\nOn a 256M filesystem, doing this in a loop:\n\n        xfs_io -F -f -d -c \u0027pwrite 0 64m\u0027 test\n        rm -f test\n\neventually leads to ENOSPC.  (the xfs_io command does a\n64m direct IO write to the file \"test\")\n\nAs with other block allocation callers, it looks like we need to\npotentially retry the allocations on the initial ENOSPC.\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "74072d0a63553720dd3c70a8b8e9407eb2027dbe",
      "tree": "9895fcb17d44980a82b4daa7688c17da082b4d88",
      "parents": [
        "f0e2dfa7f3e1361ca8fc91c25e67fc4e92613cc9"
      ],
      "author": {
        "name": "Curt Wohlgemuth",
        "email": "curtw@google.com",
        "time": "Fri Oct 02 21:08:32 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Oct 02 21:08:32 2009 -0400"
      },
      "message": "ext4: Fix build warning in ext4_dirty_inode()\n\nThis fixes the following warning:\n\nfs/ext4/inode.c: In function \u0027ext4_dirty_inode\u0027:\nfs/ext4/inode.c:5615: warning: unused variable \u0027current_handle\u0027\n\nWe remove the jbd_debug() statement which does use current_handle, as\nit\u0027s not terribly important in the grand scheme of things.\n\nThanks to Stephen Rothwell for pointing this out.\n\nSigned-off-by: Curt Wohlgemuth \u003ccurtw@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "1f94533d9cd75f6d2826018d54a971b9cc085992",
      "tree": "16c85061eabfcdece2487909bc08c45d2c01d84f",
      "parents": [
        "c1fccc0696bcaff6008c11865091f5ec4b0937ab"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Sep 30 22:57:41 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Sep 30 22:57:41 2009 -0400"
      },
      "message": "ext4: fix a BUG_ON crash by checking that page has buffers attached to it\n\nIn ext4_num_dirty_pages() we were calling page_buffers() before\nchecking to see if the page actually had pages attached to it; this\nwould cause a BUG check crash in the inline function page_buffers().\n\nThanks to Markus Trippelsdorf for reporting this bug.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "f3dc272fd5e2ae08244796bb39e7e1ce4b25d3b3",
      "tree": "795edae4030352dfea7cb79ed5a5b0b5ef3d3afb",
      "parents": [
        "830156c79b0a99ddf0f62496bcf4de640f9f52cd"
      ],
      "author": {
        "name": "Curt Wohlgemuth",
        "email": "curtw@google.com",
        "time": "Tue Sep 29 16:06:01 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Sep 29 16:06:01 2009 -0400"
      },
      "message": "ext4: Make sure ext4_dirty_inode() updates the inode in no journal mode\n\nThis patch a problem that ext4_dirty_inode() was not calling\next4_mark_inode_dirty() if the current_handle is not valid, which it\nis the case in no journal mode.\n\nIt also removes a test for non-matching transaction which can never\nhappen.\n\nSigned-off-by: Curt Wohlgemuth \u003ccurtw@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "830156c79b0a99ddf0f62496bcf4de640f9f52cd",
      "tree": "7af8e969f359afd8a4738e22b0374b567041a1fd",
      "parents": [
        "f3ce8064b388ccf420012c5a4907aae4f13fe9d0"
      ],
      "author": {
        "name": "Frank Mayhar",
        "email": "fmayhar@google.com",
        "time": "Tue Sep 29 10:07:47 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Sep 29 10:07:47 2009 -0400"
      },
      "message": "ext4: Avoid updating the inode table bh twice in no journal mode\n\nThis is a cleanup of commit 91ac6f4.  Since ext4_mark_inode_dirty()\nhas already called ext4_mark_iloc_dirty(), which in turn calls\next4_do_update_inode(), it\u0027s not necessary to have ext4_write_inode()\ncall ext4_do_update_inode() in no journal mode.  Indeed, it would be\nduplicated work.\n\nReviewed-by: \"Aneesh Kumar K.V\" \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: Frank Mayhar \u003cfmayhar@google.com\u003e\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": "9f0ccfd8e07d61b413e6536ffa02fbf60d2e20d8",
      "tree": "b90ea9f8dc2542d029b15d94a0588b36937dbbab",
      "parents": [
        "55138e0bc29c0751e2152df9ad35deea542f29b3"
      ],
      "author": {
        "name": "Mingming Cao",
        "email": "cmm@us.ibm.com",
        "time": "Mon Sep 28 15:49:52 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Sep 28 15:49:52 2009 -0400"
      },
      "message": "ext4: release reserved quota when block reservation for delalloc retry\n\next4_da_reserve_space() can reserve quota blocks multiple times if\next4_claim_free_blocks() fail and we retry the allocation. We should\nrelease the quota reservation before restarting.\n\nBug found by Jan Kara.\n\nSigned-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": "1693918e0b6988cf5eb93b7da34f30e94360a379",
      "tree": "de185e86dd6456c251d4a512acd5bab7c19a3a3c",
      "parents": [
        "8365388827663bd6fb773e3623ed9023c0f82b1d"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Sep 26 17:43:59 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Sep 26 17:43:59 2009 -0400"
      },
      "message": "ext4: Use ext4_msg() for ext4_da_writepage() errors\n\nThis allows the user to see what filesystem was involved with a\nparticular ext4_da_writepage() error.  Also, use KERN_CRIT which is\nmore appropriate than KERN_EMERG.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "db16826367fefcb0ddb93d76b66adc52eb4e6339",
      "tree": "626224c1eb1eb79c522714591f208b4fdbdcd9d4",
      "parents": [
        "cd6045138ed1bb5d8773e940d51c34318eef3ef2",
        "465fdd97cbe16ef8727221857e96ef62dd352017"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:53:22 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:53:22 2009 -0700"
      },
      "message": "Merge branch \u0027hwpoison\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-mce-2.6\n\n* \u0027hwpoison\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-mce-2.6: (21 commits)\n  HWPOISON: Enable error_remove_page on btrfs\n  HWPOISON: Add simple debugfs interface to inject hwpoison on arbitary PFNs\n  HWPOISON: Add madvise() based injector for hardware poisoned pages v4\n  HWPOISON: Enable error_remove_page for NFS\n  HWPOISON: Enable .remove_error_page for migration aware file systems\n  HWPOISON: The high level memory error handler in the VM v7\n  HWPOISON: Add PR_MCE_KILL prctl to control early kill behaviour per process\n  HWPOISON: shmem: call set_page_dirty() with locked page\n  HWPOISON: Define a new error_remove_page address space op for async truncation\n  HWPOISON: Add invalidate_inode_page\n  HWPOISON: Refactor truncate to allow direct truncating of page v2\n  HWPOISON: check and isolate corrupted free pages v2\n  HWPOISON: Handle hardware poisoned pages in try_to_unmap\n  HWPOISON: Use bitmask/action code for try_to_unmap behaviour\n  HWPOISON: x86: Add VM_FAULT_HWPOISON handling to x86 page fault handler v2\n  HWPOISON: Add poison check to page fault handling\n  HWPOISON: Add basic support for poisoned pages in fault handler v3\n  HWPOISON: Add new SIGBUS error codes for hardware poison signals\n  HWPOISON: Add support for poison swap entries v2\n  HWPOISON: Export some rmap vma locking to outside world\n  ...\n"
    },
    {
      "commit": "fd589a8f0a13f53a2dd580b1fe170633cf6b095f",
      "tree": "942c50188ca58041b0453189e710eafcfebaea57",
      "parents": [
        "4f37940d64a155c025968118849b596f6aaa8128"
      ],
      "author": {
        "name": "Anand Gadiyar",
        "email": "gadiyar@ti.com",
        "time": "Thu Jul 16 17:13:03 2009 +0200"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Mon Sep 21 15:14:55 2009 +0200"
      },
      "message": "trivial: fix typo \"to to\" in multiple files\n\nSigned-off-by: Anand Gadiyar \u003cgadiyar@ti.com\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "5534fb5bb35a62a94e0bd1fa2421f7fb6e894f10",
      "tree": "1a9da05279129a9331494c1faab6cfa22cd10ce8",
      "parents": [
        "fb40ba0d98968bc3454731360363d725b4f1064c"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Sep 17 09:34:16 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Sep 17 09:34:16 2009 -0400"
      },
      "message": "ext4: Fix the alloc on close after a truncate hueristic\n\nIn an attempt to avoid doing an unneeded flush after opening a\n(previously non-existent) file with O_CREAT|O_TRUNC, the code only\ntriggered the hueristic if ei-\u003edisksize was non-zero.  Turns out that\nthe VFS doesn\u0027t call -\u003etruncate() if the file doesn\u0027t exist, and\nei-\u003edisksize is always zero even if the file previously existed.  So\nremove the test, since it isn\u0027t necessary and in fact disabled the\nhueristic.\n\nThanks to Clemens Eisserer that he was seeing problems with files\nwritten using kwrite and eclipse after sudden crashes caused by a\nbuggy Intel video driver.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "fb40ba0d98968bc3454731360363d725b4f1064c",
      "tree": "08e8bb15b49bc6310e4c41653889e055d9594d9a",
      "parents": [
        "1b9c12f44c1eb614fd3b8822bfe8f1f5d8e53737"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Sep 16 19:30:40 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Sep 16 19:30:40 2009 -0400"
      },
      "message": "ext4: Add a tracepoint for ext4_alloc_da_blocks()\n\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": "aa261f549d7652258331ebb12795f3bc4395d213",
      "tree": "0ca807db32a6e3f213fa52b5a053d2b27e5e6bac",
      "parents": [
        "6a46079cf57a7f7758e8b926980a4f852f89b34d"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "andi@firstfloor.org",
        "time": "Wed Sep 16 11:50:16 2009 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Sep 16 11:50:16 2009 +0200"
      },
      "message": "HWPOISON: Enable .remove_error_page for migration aware file systems\n\nEnable removing of corrupted pages through truncation\nfor a bunch of file systems: ext*, xfs, gfs2, ocfs2, ntfs\nThese should cover most server needs.\n\nI chose the set of migration aware file systems for this\nfor now, assuming they have been especially audited.\nBut in general it should be safe for all file systems\non the data area that support read/write and truncate.\n\nCaveat: the hardware error handler does not take i_mutex\nfor now before calling the truncate function. Is that ok?\n\nCc: tytso@mit.edu\nCc: hch@infradead.org\nCc: mfasheh@suse.com\nCc: aia21@cantab.net\nCc: hugh.dickins@tiscali.co.uk\nCc: swhiteho@redhat.com\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "91ac6f43317c0bf99969665f98016548011dfa38",
      "tree": "07a49f2182dd16fdb372e4a14c263cdd2d166578",
      "parents": [
        "fe188c0e084bdf3038dc0ac963c21d764f53f7da"
      ],
      "author": {
        "name": "Frank Mayhar",
        "email": "fmayhar@google.com",
        "time": "Wed Sep 09 22:33:47 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Sep 09 22:33:47 2009 -0400"
      },
      "message": "ext4: Make non-journal fsync work properly\n\nTeach ext4_write_inode() and ext4_do_update_inode() about non-journal\nmode:  If we\u0027re not using a journal, ext4_write_inode() now calls\next4_do_update_inode() (after getting the iloc via ext4_get_inode_loc())\nwith a new \"do_sync\" parameter.  If that parameter is nonzero _and_ we\u0027re\nnot using a journal, ext4_do_update_inode() calls sync_dirty_buffer()\ninstead of ext4_handle_dirty_metadata().\n\nThis problem was found in power-fail testing, checking the amount of\nloss of files and blocks after a power failure when using fsync() and\nwhen not using fsync().  It turned out that using fsync() was actually\nworse than not doing so, possibly because it increased the likelihood\nthat the inodes would remain unflushed and would therefore be lost at\nthe power failure.\n\nSigned-off-by: Frank Mayhar \u003cfmayhar@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "80e42468d65475e92651e62175bb7807773321d0",
      "tree": "7ab6bd05495a50a4c5fc507ab583daad5178006c",
      "parents": [
        "a827eaffff07c7d58a4cb32158cbeb4849f4e33a"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Sep 08 08:21:26 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Sep 08 08:21:26 2009 -0400"
      },
      "message": "ext4: print more sysadmin-friendly message in check_block_validity()\n\nDrop the WARN_ON(1), as he stack trace is not appropriate, since it is\ntriggered by file system corruption, and it misleads users into\nthinking there is a kernel bug.  In addition, change the message\ndisplayed by ext4_error() to make it clear that this is a file system\ncorruption problem.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "a827eaffff07c7d58a4cb32158cbeb4849f4e33a",
      "tree": "6167caf1619f0d9555fd67a2facbf2351a0a7905",
      "parents": [
        "44fc48f7048ab9657b524938a832fec4e0acea98"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Wed Sep 09 22:36:03 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Sep 09 22:36:03 2009 -0400"
      },
      "message": "ext4: Take page lock before looking at attached buffer_heads flags\n\nIn order to check whether the buffer_heads are mapped we need to hold\npage lock. Otherwise a reclaim can cleanup the attached buffer_heads.\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": "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": "de89de6e0cf4b1eb13f27137cf2aa40d287aabdf",
      "tree": "b6429d327cb0a6985d3fd9bf11755353408ee44c",
      "parents": [
        "98a56ab382079f777e261e14512cbd4fb2107af4"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Aug 31 17:00:59 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Aug 31 17:00:59 2009 -0400"
      },
      "message": "ext4: Restore wbc-\u003erange_start in ext4_da_writepages()\n\nTo solve a lock inversion problem, we implement part of the\nrange_cyclic algorithm in ext4_da_writepages().  (See commit 2acf2c26\nfor more details.)\n\nAs part of that change wbc-\u003erange_start was modified by ext4\u0027s\nwritepages function, which causes its callers to get confused since\nthey aren\u0027t expecting the filesystem to modify it.  The simplest fix\nis to save and restore wbc-\u003erange_start in ext4_da_writepages.\n\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": "c333e073b7bf76dc819a6b4ce6bef88ee5fa5e50",
      "tree": "500355f9b183c83afc47d2110175a175d775cb90",
      "parents": [
        "785b4b3a5a992eeb8b495a89b6f690b383010aba"
      ],
      "author": {
        "name": "Roel Kluin",
        "email": "roel.kluin@gmail.com",
        "time": "Mon Aug 10 22:47:22 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Aug 10 22:47:22 2009 -0400"
      },
      "message": "ext4: remove redundant test on unsigned\n\nunsigned i_block cannot be less than 0.\n\nSigned-off-by: Roel Kluin \u003croel.kluin@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "e6b5d30104db5f34110678ecab14988f1f1eff63",
      "tree": "922408d70d388925f0113998649d56da475deff4",
      "parents": [
        "62e086be5d2abef8cad854bc5707329ad345f2ec"
      ],
      "author": {
        "name": "Curt Wohlgemuth",
        "email": "curtw@google.com",
        "time": "Mon Jul 13 09:07:20 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jul 13 09:07:20 2009 -0400"
      },
      "message": "ext4: Fix buffer head reference leak in no-journal mode\n\nWe found a problem with buffer head reference leaks when using an ext4\npartition without a journal.  In particular, calls to ext4_forget() would\nnot to a brelse() on the input buffer head, which will cause pages they\nbelong to to not be reclaimable.\n\nFurther investigation showed that all places where ext4_journal_forget() and\next4_journal_revoke() are called are subject to the same problem.  The patch\nbelow changes __ext4_journal_forget/__ext4_journal_revoke to do an explicit\nrelease of the buffer head when the journal handle isn\u0027t valid.\n\nSigned-off-by: Curt Wohlgemuth \u003ccurtw@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "6487a9d3b5476ffd1bbbe97e58cf26dbeb7a5d4a",
      "tree": "6f03532934774f847e281a9eb52fbf539b36f42b",
      "parents": [
        "f6f50e28f0cb8d7bcdfaacc83129f005dede11b1"
      ],
      "author": {
        "name": "Curt Wohlgemuth",
        "email": "curtw@google.com",
        "time": "Fri Jul 17 10:54:08 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Jul 17 10:54:08 2009 -0400"
      },
      "message": "ext4: More buffer head reference leaks\n\nAfter the patch I posted last week regarding buffer head ref leaks in\nno-journal mode, I looked at all the code that uses buffer heads and\nsearched for more potential leaks.\n\nThe patch below fixes the issues I found; these can occur even when a\njournal is present.\n\nThe change to inode.c fixes a double release if\next4_journal_get_create_access() fails.\n\nThe changes to namei.c are more complicated.  add_dirent_to_buf() will\nrelease the input buffer head EXCEPT when it returns -ENOSPC.  There are\nsome callers of this routine that don\u0027t always do the brelse() in the event\nthat -ENOSPC is returned.  Unfortunately, to put this fix into ext4_add_entry()\nrequired capturing the return value of make_indexed_dir() and\nadd_dirent_to_buf().\n\nSigned-off-by: Curt Wohlgemuth \u003ccurtw@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "62e086be5d2abef8cad854bc5707329ad345f2ec",
      "tree": "1f3ea5daf9325a338585e1368edf78a1d04747df",
      "parents": [
        "43ce1d23b43330634507a049b55c36e91d27282e"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Sun Jun 14 17:59:34 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Jun 14 17:59:34 2009 -0400"
      },
      "message": "ext4: Move __ext4_journalled_writepage() to avoid forward declaration\n\nIn addition, fix two unused variable warnings.\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": "43ce1d23b43330634507a049b55c36e91d27282e",
      "tree": "d7532d7c0bea60b7bfe29dad51b4b92122acdd5a",
      "parents": [
        "c364b22c9580a885e0f8c0d0f9710d67dc448958"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Sun Jun 14 17:58:45 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Jun 14 17:58:45 2009 -0400"
      },
      "message": "ext4: Fix mmap/truncate race when blocksize \u003c pagesize \u0026\u0026 !nodellaoc\n\nThis patch fixes the mmap/truncate race that was fixed for delayed\nallocation by merging ext4_{journalled,normal,da}_writepage() into\next4_writepage().\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "c364b22c9580a885e0f8c0d0f9710d67dc448958",
      "tree": "6a714e767afb7d08a648f8e23e4acca414896699",
      "parents": [
        "b767e78a179e5ab30fdbff1686d074ac270471eb"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Sun Jun 14 17:57:10 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Jun 14 17:57:10 2009 -0400"
      },
      "message": "ext4: Fix mmap/truncate race when blocksize \u003c pagesize \u0026\u0026 delayed allocation\n\nIt is possible to see buffer_heads which are not mapped in the\nwritepage callback in the following scneario (where the fs blocksize\nis 1k and the page size is 4k):\n\n1) truncate(f, 1024)\n2) mmap(f, 0, 4096)\n3) a[0] \u003d \u0027a\u0027\n4) truncate(f, 4096)\n5) writepage(...)\n\nNow if we get a writepage callback immediately after (4) and before an\nattempt to write at any other offset via mmap address (which implies we\nare yet to get a pagefault and do a get_block) what we would have is the\npage which is dirty have first block allocated and the other three\nbuffer_heads unmapped.\n\nIn the above case the writepage should go ahead and try to write the\nfirst blocks and clear the page_dirty flag. Further attempts to write\nto the page will again create a fault and result in allocating blocks\nand marking page dirty.  If we don\u0027t write any other offset via mmap\naddress we would still have written the first block to the disk and\nrest of the space will be considered as a hole.\n\nSo to address this, we change all of the places where we look for\ndelayed, unmapped, or unwritten buffer heads, and only check for\ndelayed or unwritten buffer heads instead.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "b767e78a179e5ab30fdbff1686d074ac270471eb",
      "tree": "1ff6c357cf52e23acbed789adf20bca432e2b465",
      "parents": [
        "e6462869e4fd88be5141a356ee0c28d8067340cc"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Thu Jun 04 08:06:06 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Jun 04 08:06:06 2009 -0400"
      },
      "message": "ext4: Don\u0027t look at buffer_heads outside i_size.\n\nBuffer heads outside i_size will be unmapped. So when we\nare doing \"walk_page_buffers\" limit ourself to i_size.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nReviewed-by: Josef Bacik \u003cjbacik@redhat.com\u003e\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n----\n"
    },
    {
      "commit": "ffacfa7a79d6c00624196b2d13b0a7f72f2b8227",
      "tree": "201920b755aff4c8a196006c0ec5538235b7ee32",
      "parents": [
        "f91d1d04171026e56c7e343ee3cdcc801dd85cfb"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Jul 13 16:22:22 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jul 13 16:22:22 2009 -0400"
      },
      "message": "ext4: Fix truncation of symlinks after failed write\n\nContents of long symlinks is written via standard write methods. So\nwhen the write fails, we add inode to orphan list. But symlinks don\u0027t\nhave .truncate method defined so nobody properly removes them from the\non disk orphan list.\n\nFix this by calling ext4_truncate() directly instead of calling\nvmtruncate() (which is saner anyway since we don\u0027t need anything\nvmtruncate() does except from calling .truncate in these paths).  We\nalso add inode to orphan list only if ext4_can_truncate() is true\n(currently, it can be false for symlinks when there are no blocks\nallocated) - otherwise orphan list processing will complain and\next4_truncate() will not remove inode from on-disk orphan list.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "f4a01017d678fe4baecf480e79d7c4f4b7ebc772",
      "tree": "0f4002c7ca16f4b0bd6ab1b6f1d8015c1f10e150",
      "parents": [
        "b574480507460b8e31b8d38dd4642219fc3b9a10"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Jul 05 22:08:16 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Jul 05 22:08:16 2009 -0400"
      },
      "message": "ext4: Fix potential reclaim deadlock when truncating partial block\n\nThe ext4_block_truncate_page() function previously called\ngrab_cache_page(), which called find_or_create_page() with the\n__GFP_FS flag potentially set.  This could cause a deadlock if the\nsystem is low on memory and it attempts a memory reclaim, which could\npotentially call back into ext4.  So we need to call\nfind_or_create_page() directly, and remove the __GFP_FP flag to avoid\nthis potential deadlock.\n\nThanks to Roland Dreier for reporting a lockdep warning which showed\nthis problem.\n\n[20786.363249] \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n[20786.363257] [ INFO: inconsistent lock state ]\n[20786.363265] 2.6.31-2-generic #14~rbd4gitd960eea9\n[20786.363270] ---------------------------------\n[20786.363276] inconsistent {IN-RECLAIM_FS-W} -\u003e {RECLAIM_FS-ON-W} usage.\n[20786.363285] http/8397 [HC0[0]:SC0[0]:HE1:SE1] takes:\n[20786.363291]  (jbd2_handle){+.+.?.}, at: [\u003cffffffff812008bb\u003e] jbd2_journal_start+0xdb/0x150\n[20786.363314] {IN-RECLAIM_FS-W} state was registered at:\n[20786.363320]   [\u003cffffffff8108bef6\u003e] mark_irqflags+0xc6/0x1a0\n[20786.363334]   [\u003cffffffff8108d347\u003e] __lock_acquire+0x287/0x430\n[20786.363345]   [\u003cffffffff8108d595\u003e] lock_acquire+0xa5/0x150\n[20786.363355]   [\u003cffffffff812008da\u003e] jbd2_journal_start+0xfa/0x150\n[20786.363365]   [\u003cffffffff811d98a8\u003e] ext4_journal_start_sb+0x58/0x90\n[20786.363377]   [\u003cffffffff811cce85\u003e] ext4_delete_inode+0xc5/0x2c0\n[20786.363389]   [\u003cffffffff81146fa3\u003e] generic_delete_inode+0xd3/0x1a0\n[20786.363401]   [\u003cffffffff81147095\u003e] generic_drop_inode+0x25/0x30\n[20786.363411]   [\u003cffffffff81145ce2\u003e] iput+0x62/0x70\n[20786.363420]   [\u003cffffffff81142878\u003e] dentry_iput+0x98/0x110\n[20786.363429]   [\u003cffffffff81142a00\u003e] d_kill+0x50/0x80\n[20786.363438]   [\u003cffffffff811444c5\u003e] dput+0x95/0x180\n[20786.363447]   [\u003cffffffff8120de4b\u003e] ecryptfs_d_release+0x2b/0x70\n[20786.363459]   [\u003cffffffff81142978\u003e] d_free+0x28/0x60\n[20786.363468]   [\u003cffffffff81142a18\u003e] d_kill+0x68/0x80\n[20786.363477]   [\u003cffffffff81142ad3\u003e] prune_one_dentry+0xa3/0xc0\n[20786.363487]   [\u003cffffffff81142d61\u003e] __shrink_dcache_sb+0x271/0x290\n[20786.363497]   [\u003cffffffff81142e89\u003e] prune_dcache+0x109/0x1b0\n[20786.363506]   [\u003cffffffff81142f6f\u003e] shrink_dcache_memory+0x3f/0x50\n[20786.363516]   [\u003cffffffff810f6d3d\u003e] shrink_slab+0x12d/0x190\n[20786.363527]   [\u003cffffffff810f97d7\u003e] balance_pgdat+0x4d7/0x640\n[20786.363537]   [\u003cffffffff810f9a57\u003e] kswapd+0x117/0x170\n[20786.363546]   [\u003cffffffff810773ce\u003e] kthread+0x9e/0xb0\n[20786.363558]   [\u003cffffffff8101430a\u003e] child_rip+0xa/0x20\n[20786.363569]   [\u003cffffffffffffffff\u003e] 0xffffffffffffffff\n[20786.363598] irq event stamp: 15997\n[20786.363603] hardirqs last  enabled at (15997): [\u003cffffffff81125f9d\u003e] kmem_cache_alloc+0xfd/0x1a0\n[20786.363617] hardirqs last disabled at (15996): [\u003cffffffff81125f01\u003e] kmem_cache_alloc+0x61/0x1a0\n[20786.363628] softirqs last  enabled at (15966): [\u003cffffffff810631ea\u003e] __do_softirq+0x14a/0x220\n[20786.363641] softirqs last disabled at (15861): [\u003cffffffff8101440c\u003e] call_softirq+0x1c/0x30\n[20786.363651] \n[20786.363653] other info that might help us debug this:\n[20786.363660] 3 locks held by http/8397:\n[20786.363665]  #0:  (\u0026sb-\u003es_type-\u003ei_mutex_key#8){+.+.+.}, at: [\u003cffffffff8112ed24\u003e] do_truncate+0x64/0x90\n[20786.363685]  #1:  (\u0026sb-\u003es_type-\u003ei_alloc_sem_key#5){+++++.}, at: [\u003cffffffff81147f90\u003e] notify_change+0x250/0x350\n[20786.363707]  #2:  (jbd2_handle){+.+.?.}, at: [\u003cffffffff812008bb\u003e] jbd2_journal_start+0xdb/0x150\n[20786.363724] \n[20786.363726] stack backtrace:\n[20786.363734] Pid: 8397, comm: http Tainted: G         C 2.6.31-2-generic #14~rbd4gitd960eea9\n[20786.363741] Call Trace:\n[20786.363752]  [\u003cffffffff8108ad7c\u003e] print_usage_bug+0x18c/0x1a0\n[20786.363763]  [\u003cffffffff8108b0c0\u003e] ? check_usage_backwards+0x0/0xb0\n[20786.363773]  [\u003cffffffff8108bad2\u003e] mark_lock_irq+0xf2/0x280\n[20786.363783]  [\u003cffffffff8108bd97\u003e] mark_lock+0x137/0x1d0\n[20786.363793]  [\u003cffffffff8108c03c\u003e] mark_held_locks+0x6c/0xa0\n[20786.363803]  [\u003cffffffff8108c11f\u003e] lockdep_trace_alloc+0xaf/0xe0\n[20786.363813]  [\u003cffffffff810efbac\u003e] __alloc_pages_nodemask+0x7c/0x180\n[20786.363824]  [\u003cffffffff810e9411\u003e] ? find_get_page+0x91/0xf0\n[20786.363835]  [\u003cffffffff8111d3b7\u003e] alloc_pages_current+0x87/0xd0\n[20786.363845]  [\u003cffffffff810e9827\u003e] __page_cache_alloc+0x67/0x70\n[20786.363856]  [\u003cffffffff810eb7df\u003e] find_or_create_page+0x4f/0xb0\n[20786.363867]  [\u003cffffffff811cb3be\u003e] ext4_block_truncate_page+0x3e/0x460\n[20786.363876]  [\u003cffffffff812008da\u003e] ? jbd2_journal_start+0xfa/0x150\n[20786.363885]  [\u003cffffffff812008bb\u003e] ? jbd2_journal_start+0xdb/0x150\n[20786.363895]  [\u003cffffffff811c6415\u003e] ? ext4_meta_trans_blocks+0x75/0xf0\n[20786.363905]  [\u003cffffffff811e8d8b\u003e] ext4_ext_truncate+0x1bb/0x1e0\n[20786.363916]  [\u003cffffffff811072c5\u003e] ? unmap_mapping_range+0x75/0x290\n[20786.363926]  [\u003cffffffff811ccc28\u003e] ext4_truncate+0x498/0x630\n[20786.363938]  [\u003cffffffff8129b4ce\u003e] ? _raw_spin_unlock+0x5e/0xb0\n[20786.363947]  [\u003cffffffff81107306\u003e] ? unmap_mapping_range+0xb6/0x290\n[20786.363957]  [\u003cffffffff8108c3ad\u003e] ? trace_hardirqs_on+0xd/0x10\n[20786.363966]  [\u003cffffffff811ffe58\u003e] ? jbd2_journal_stop+0x1f8/0x2e0\n[20786.363976]  [\u003cffffffff81107690\u003e] vmtruncate+0xb0/0x110\n[20786.363986]  [\u003cffffffff81147c05\u003e] inode_setattr+0x35/0x170\n[20786.363995]  [\u003cffffffff811c9906\u003e] ext4_setattr+0x186/0x370\n[20786.364005]  [\u003cffffffff81147eab\u003e] notify_change+0x16b/0x350\n[20786.364014]  [\u003cffffffff8112ed30\u003e] do_truncate+0x70/0x90\n[20786.364021]  [\u003cffffffff8112f48b\u003e] T.657+0xeb/0x110\n[20786.364021]  [\u003cffffffff8112f4be\u003e] sys_ftruncate+0xe/0x10\n[20786.364021]  [\u003cffffffff81013132\u003e] system_call_fastpath+0x16/0x1b\n\nReported-by: Roland Dreier \u003croland@digitalvampire.org\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": "4159175058987cb68aefd0e9eec2598b795363b4",
      "tree": "452a3ef5f8f2ae4c79095519078383fe766d69ab",
      "parents": [
        "de9a55b841132f7ae097f6e31ccebad2d5030cf5"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jun 15 03:41:23 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jun 15 03:41:23 2009 -0400"
      },
      "message": "ext4: Don\u0027t update ctime for non-extent-mapped inodes\n\nThe VFS handles updating ctime, so we don\u0027t need to update the inode\u0027s\nctime in ext4_splace_branch() to update the direct or indirect blocks.\nThis was harmless when we did this in ext3, but in ext4, thanks to\ndelayed allocation, updating the ctime in ext4_splice_branch() can\ncause the ctime to mysteriously jump when the blocks are finally\nallocated.\n\nThanks to Björn Steinbrink for pointing out this problem on the git\nmailing list.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "de9a55b841132f7ae097f6e31ccebad2d5030cf5",
      "tree": "9b66c7c68bff923a62d4c2b04114e22a8fa524e1",
      "parents": [
        "0610b6e99939828b77eec020ead0e1f44cba38ca"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Jun 14 17:45:34 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Jun 14 17:45:34 2009 -0400"
      },
      "message": "ext4: Fix up whitespace issues in fs/ext4/inode.c\n\nThis is a pure cleanup patch.\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": "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": "9bffad1ed2a003a355ed1b42424a0ae3575275ed",
      "tree": "9016e7b0e04a0e5319680f9e1f89fc1abb13c765",
      "parents": [
        "879c5e6b7cb4c689d08ca9b2e353d8ab3dc425d5"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Jun 17 11:48:11 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Jun 17 11:48:11 2009 -0400"
      },
      "message": "ext4: convert instrumentation from markers to tracepoints\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "0eab928221bac8895a0b494a16a8810002bd8645",
      "tree": "733ca0ee831fffb3fd2c96b6715250e79e7a24fa",
      "parents": [
        "9aee2286071c23c535fe9928eec1a26e0bcf256d"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jun 09 09:54:40 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jun 09 09:54:40 2009 -0400"
      },
      "message": "ext4: Don\u0027t treat a truncation of a zero-length file as replace-via-truncate\n\nIf a non-existent file is opened via O_WRONLY|O_CREAT|O_TRUNC, there\u0027s\nno need to treat this as a true file truncation, so we shouldn\u0027t\nactivate the replace-via-truncate hueristic.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "f8514083cd61daef12fba5ef883ad9352c450428",
      "tree": "46cbf0c28ea112229c3ee9209750c8017f1b9385",
      "parents": [
        "1938a150c25bf7c2c47182e753a1038945b70b0e"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Fri Jun 05 00:56:49 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Jun 05 00:56:49 2009 -0400"
      },
      "message": "ext4: truncate the file properly if we fail to copy data from userspace\n\nIn generic_perform_write if we fail to copy the user data we don\u0027t\nupdate the inode-\u003ei_size.  We should truncate the file in the above\ncase so that we don\u0027t have blocks allocated outside inode-\u003ei_size.  Add\nthe inode to orphan list in the same transaction as block allocation\nThis ensures that if we crash in between the recovery would do the\ntruncate.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nCC:  Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "1938a150c25bf7c2c47182e753a1038945b70b0e",
      "tree": "cab711b2868d719c6f460a75387acf84f6b37576",
      "parents": [
        "b31e15527a9bb71b6a11a425d17ce139a62f5af5"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Fri Jun 05 01:00:26 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Jun 05 01:00:26 2009 -0400"
      },
      "message": "ext4: Avoid leaking blocks after a block allocation failure\n\nWe should add inode to the orphan list in the same transaction\nas block allocation.  This ensures that if we crash after a failed\nblock allocation and before we do a vmtruncate we don\u0027t leak block\n(ie block marked as used in bitmap but not claimed by the inode).\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nCC:  Jan Kara \u003cjack@suse.cz\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": "759d427aa5a9d88a81afd11817cdeb40aea85234",
      "tree": "8e8316ed77c9ee21cce9058d5b477c0e7cf4462b",
      "parents": [
        "0f7ee7c17241915fdaff49d1a36f5aafd80a7dce"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon May 25 11:51:00 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon May 25 11:51:00 2009 -0400"
      },
      "message": "ext4: remove unused function __ext4_write_dirty_metadata\n\nThe __ext4_write_dirty_metadata() function was introduced by commit\n0390131b, \"ext4: Allow ext4 to run without a journal\", but nothing\never used the function, either then or since.  So let\u0027s remove it and\nsave a bit of space.\n\nCc: Frank Mayhar \u003cfmayhar@google.com\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": "2fa3cdfb319055fd8b25abdafa413e16f00ad493",
      "tree": "c85e56fa92eecc163a85084d11aef356a686c9b9",
      "parents": [
        "a2dc52b5d1d8cc280b3e795abf1c80ac8c49f30c"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu May 14 09:29:45 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu May 14 09:29:45 2009 -0400"
      },
      "message": "ext4: Merge ext4_da_get_block_write() into mpage_da_map_blocks()\n\nThe static function ext4_da_get_block_write() was only used by\nmpage_da_map_blocks().  So to simplify the code, merge that function\ninto mpage_da_map_blocks().\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "a2dc52b5d1d8cc280b3e795abf1c80ac8c49f30c",
      "tree": "2f425d897dfdab9f2a5997f9801c6ccbea7c1323",
      "parents": [
        "b920c75502cb2c48654ef196d647c8eb81ab608a"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue May 12 13:51:29 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue May 12 13:51:29 2009 -0400"
      },
      "message": "ext4: Add BUG_ON debugging checks to noalloc_get_block_write()\n\nEnforce that noalloc_get_block_write() is only called to map one block\nat a time, and that it always is successful in finding a mapping for\ngiven an inode\u0027s logical block block number if it is called with\ncreate \u003d\u003d 1.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "b920c75502cb2c48654ef196d647c8eb81ab608a",
      "tree": "73105b8a1212001a3636d83b3f8e9e554e048170",
      "parents": [
        "c21770573319922e3f3fcb331cfaa290c49f1c81"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu May 14 00:54:29 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu May 14 00:54:29 2009 -0400"
      },
      "message": "ext4: Add documentation to the ext4_*get_block* functions\n\nThis adds more documentation to various internal functions in\nfs/ext4/inode.c, most notably ext4_ind_get_blocks(),\next4_da_get_block_write(), ext4_da_get_block_prep(),\next4_normal_get_block_write().\n\nIn addition, the static function ext4_normal_get_block_write() has\nbeen renamed noalloc_get_block_write(), since it is used in many\nplaces far beyond ext4_normal_writepage().\n\nPlenty of warnings have been added to the noalloc_get_block_write()\nfunction, since the way it is used is amazingly fragile.\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": "e4d996ca806e93dddb5d76c0d3d859b494c559f6",
      "tree": "dee33d8bb77bcd5ef5bebeab04d7fe95e3cb4dc5",
      "parents": [
        "f888e652d758bfe0c04c209b72a05972daeba386"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue May 12 00:25:28 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue May 12 00:25:28 2009 -0400"
      },
      "message": "ext4: Rename ext4_get_blocks_handle() to be ext4_ind_get_blocks()\n\nThe static function ext4_get_blocks_handle() is badly named.  Of\n*course* it takes a handle.  Since its counterpart for extent-based\nfile is ext4_ext_get_blocks(), rename it to be ext4_ind_get_blocks().\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "f888e652d758bfe0c04c209b72a05972daeba386",
      "tree": "5d593d7ce0f4e58cf2c049b8635e55f3b5a0d415",
      "parents": [
        "bc8e67409ccdcff72c3f1656b1fb1aad7ff396db"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue May 12 00:21:29 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue May 12 00:21:29 2009 -0400"
      },
      "message": "ext4: Simplify function signature for ext4_da_get_block_write() \n\nThe function ext4_da_get_block_write() is called in exactly one write,\nand the last argument, create, is always 1.  Remove it to simplify the\ncode slightly.\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": "29fa89d088941d79765d60f22d5ccdd6b8696e11",
      "tree": "3fbe031eec140c03dafa11f2416c4f6e3826f21d",
      "parents": [
        "8fb0e342481c4d80040670fec915f0b9c7c6499a"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Tue May 12 16:30:27 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue May 12 16:30:27 2009 -0400"
      },
      "message": "ext4: Mark the unwritten buffer_head as mapped during write_begin\n\nSetting BH_Unwritten buffer_heads as BH_Mapped avoids multiple\n(unnecessary) calls to get_block() during the call to the write(2)\nsystem call.  Setting BH_Unwritten buffer heads as BH_Mapped requires\nthat the writepages() functions can handle BH_Unwritten buffer_heads.\n\nAfter this commit, things work as follows:\n\next4_ext_get_block() returns unmapped, unwritten, buffer head when\ncalled with create \u003d 0 for prealloc space. This makes sure we handle\nthe read path and non-delayed allocation case correctly.  Even though\nthe buffer head is marked unmapped we have valid b_blocknr and b_bdev\nvalues in the buffer_head.\n\next4_da_get_block_prep() called for block resrevation will now return\nmapped, unwritten, new buffer_head for prealloc space. This avoids\nmultiple calls to get_block() for write to same offset. By making such\nbuffers as BH_New, we also assure that sub-block zeroing of buffered\nwrites happens correctly.\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": "79ffab34391933ee3b95dac7f25c0478fa2f8f1e",
      "tree": "8bc139928e172ef2ebd38e01f97dc01f886d8526",
      "parents": [
        "9fa7eb283c5cdc2b0f4a8cfe6387ed82e5e9a3d3"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Wed May 13 15:13:42 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed May 13 15:13:42 2009 -0400"
      },
      "message": "ext4: Properly initialize the buffer_head state\n\nThese struct buffer_heads are allocated on the stack (and hence are\ninitialized with stack garbage).  They are only used to call a\nget_blocks() function, so that\u0027s mostly OK, but b_state must be\ninitialized to be 0 so we don\u0027t have any unexpected BH_* flags set by\naccident, such as BH_Unwritten or BH_Delay.\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": "2a8964d63d50dd2d65d71d342bc7fb6ef4117614",
      "tree": "7dd80d63afd9adab61ba0695ac3e0c95485dc2ed",
      "parents": [
        "33b9817e2ae097c7b8d256e3510ac6c54fc6d9d0"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Thu May 14 17:05:39 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu May 14 17:05:39 2009 -0400"
      },
      "message": "ext4: Clear the unwritten buffer_head flag after the extent is initialized\n\nThe BH_Unwritten flag indicates that the buffer is allocated on disk\nbut has not been written; that is, the disk was part of a persistent\npreallocation area.  That flag should only be set when a get_blocks()\nfunction is looking up a inode\u0027s logical to physical block mapping.\n\nWhen ext4_get_blocks_wrap() is called with create\u003d1, the uninitialized\nextent is converted into an initialized one, so the BH_Unwritten flag\nis no longer appropriate.  Hence, we need to make sure the\nBH_Unwritten is not left set, since the combination of BH_Mapped and\nBH_Unwritten is not allowed; among other things, it will result ext4\u0027s\nget_block() to be called over and over again during the write_begin\nphase of write(2).\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": "33b9817e2ae097c7b8d256e3510ac6c54fc6d9d0",
      "tree": "3de27ab9a089fb53503fdcc2746e396ee9fb78d0",
      "parents": [
        "9c1ee184a30394e54165fa4c15923cabd952c106"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Tue May 12 14:40:37 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue May 12 14:40:37 2009 -0400"
      },
      "message": "ext4: Use a fake block number for delayed new buffer_head\n\nUse a very large unsigned number (~0xffff) as as the fake block number\nfor the delayed new buffer. The VFS should never try to write out this\nnumber, but if it does, this will make it obvious.\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": "9c1ee184a30394e54165fa4c15923cabd952c106",
      "tree": "77fee66ccc5e4aec3aeff7c7d641691b116be091",
      "parents": [
        "091bf7624d1c90cec9e578a18529f615213ff847"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Wed May 13 18:36:58 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed May 13 18:36:58 2009 -0400"
      },
      "message": "ext4: Fix sub-block zeroing for writes into preallocated extents\n\nWe need to mark the buffer_head mapping preallocated space as new\nduring write_begin. Otherwise we don\u0027t zero out the page cache content\nproperly for a partial write. This will cause file corruption with\npreallocation.\n\nNow that we mark the buffer_head new we also need to have a valid\nbuffer_head blocknr so that unmap_underlying_metadata() unmaps the\ncorrect block.\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": "c4b5a614316c505922a522b2e35ba05ea3e08a7c",
      "tree": "8b76988940551726ef05d311e02a06bb61464274",
      "parents": [
        "a9e817425dc0baede8ebe5fbc9984a640257432b"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Apr 24 18:45:35 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Apr 24 18:45:35 2009 -0400"
      },
      "message": "ext4: Do not try to validate extents on special files\n\nThe EXTENTS_FL flag should never be set on special files, but if it\nis, don\u0027t bother trying to validate that the extents tree is valid,\nsince only files, directories, and non-fast symlinks will ever have an\nextent data structure.  We perhaps should flag the filesystem as being\ncorrupted if we see a special file (named pipes, device nodes, Unix\ndomain sockets, etc.) with the EXTENTS_FL flag, but e2fsck doesn\u0027t\ncurrently check this case, so we\u0027ll just ignore this for now, since\nit\u0027s harmless.\n\nWithout this fix, a special device with the extents flag is flagged as\nan error by the kernel, so it is impossible to access or delete the\ninode, but e2fsck doesn\u0027t see it as a problem, leading to\nconfused/frustrated users.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "a9e817425dc0baede8ebe5fbc9984a640257432b",
      "tree": "ff59f9cc8dcee908f58a136554323d8c8fbfcca8",
      "parents": [
        "485c26ec70f823f2a9cf45982b724893e53a859e"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Apr 24 16:11:18 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Apr 24 16:11:18 2009 -0400"
      },
      "message": "ext4: Ignore i_file_acl_high unless EXT4_FEATURE_INCOMPAT_64BIT is present\n\nDon\u0027t try to look at i_file_acl_high unless the INCOMPAT_64BIT feature\nbit is set.  The field is normally zero, but older versions of e2fsck\ndidn\u0027t automatically check to make sure of this, so in the spirit of\n\"be liberal in what you accept\", don\u0027t look at i_file_acl_high unless\nwe are using a 64-bit filesystem.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "485c26ec70f823f2a9cf45982b724893e53a859e",
      "tree": "545ee089625b9b4131773eb26c57a51889deda78",
      "parents": [
        "0c8454f56623505a99463405fd7d5664adfbb094"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Apr 24 13:43:20 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Apr 24 13:43:20 2009 -0400"
      },
      "message": "ext4: Fix softlockup caused by illegal i_file_acl value in on-disk inode\n\nIf the block containing external extended attributes (which is stored\nin i_file_acl and i_file_acl_high) is larger than the on-disk\nfilesystem, the process which tried to access the extended attributes\nwill endlessly issue kernel printks complaining that\n\"__find_get_block_slow() failed\", locking up that CPU until the system\nis forcibly rebooted.\n\nSo when we read in the inode, make sure the i_file_acl value is legal,\nand if not, flag the filesystem as being corrupted.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "f73953c0656f2db9073c585c4df2884a8ecd101e",
      "tree": "3771470edbc40318c553468265151f4f2e27004e",
      "parents": [
        "e0724bf6e4a1f2e678d2b2aab01cae22e17862f0"
      ],
      "author": {
        "name": "Thiemo Nagel",
        "email": "thiemo.nagel@ph.tum.de",
        "time": "Tue Apr 07 18:46:47 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Apr 07 18:46:47 2009 -0400"
      },
      "message": "ext4: Fix big-endian problem in __ext4_check_blockref()\n\nCommit fe2c8191 introduced a regression on big-endian system, because\nthe checks to make sure block references in non-extent inodes are\nvalid failed to use le32_to_cpu().\n\nReported-by: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Thiemo Nagel \u003cthiemo.nagel@ph.tum.de\u003e\nTested-by: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\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": "fe2c8191faa29d7a09f4962198f6dfab973ceec4",
      "tree": "ed1b9cf3997fb6e90bf889f028d27e1d3e5f2b63",
      "parents": [
        "563bdd61fe4dbd6b58cf7eb06f8d8f14479ae1dc"
      ],
      "author": {
        "name": "Thiemo Nagel",
        "email": "thiemo.nagel@ph.tum.de",
        "time": "Tue Mar 31 08:36:10 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Mar 31 08:36:10 2009 -0400"
      },
      "message": "ext4: add checks of block references for non-extent inodes\n\nCheck block references in the inode and indorect blocks for non-extent\ninodes to make sure they are valid, and flag an error if they are\ninvalid.\n\nSigned-off-by: Thiemo Nagel \u003cthiemo.nagel@ph.tum.de\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "563bdd61fe4dbd6b58cf7eb06f8d8f14479ae1dc",
      "tree": "a0b768373b06f5c86757076d7de3502c589c4d5c",
      "parents": [
        "7058548cd50e5bda8db086bb2e5c1d82f746d047"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Mar 26 00:06:19 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Mar 26 00:06:19 2009 -0400"
      },
      "message": "ext4: Check for an valid i_mode when reading the inode from disk\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "a269eb18294d35874c53311acc2cd0b5ef477ce5",
      "tree": "4da256ba45385688bd7f1e8b638ce76f884c8313",
      "parents": [
        "81a052273998f94b098945c4c313e05246956eb2"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Jan 26 17:04:39 2009 +0100"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Mar 26 02:18:36 2009 +0100"
      },
      "message": "ext4: Use lowercase names of quota functions\n\nUse lowercase names of quota functions instead of old uppercase ones.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nAcked-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nCC: linux-ext4@vger.kernel.org\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": "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": "d6014301b5599fba395c42a1e96a7fe86f7d0b2d",
      "tree": "5b3f8c034c69dfbcc0f4e155dc991179a95e170b",
      "parents": [
        "8750c6d5fcbd3342b3d908d157f81d345c5325a7"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Fri Mar 27 22:36:43 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Mar 27 22:36:43 2009 -0400"
      },
      "message": "ext4: Fix discard of inode prealloc space with delayed allocation.\n\nWith delayed allocation we should not/cannot discard inode prealloc\nspace during file close. We would still have dirty pages for which we\nhaven\u0027t allocated blocks yet. With this fix after each get_blocks\nrequest we check whether we have zero reserved blocks and if yes and\nwe don\u0027t have any writers on the file we discard inode prealloc space.\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": "8f64b32eb73fbfe9f38c4123121b63ee409278a7",
      "tree": "1c856ed32d7a282dbde0cea2e8839e2c2de51ba9",
      "parents": [
        "d8ae4601a4b7ea1fa17fa395c3468c0e144d1275"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Thu Feb 26 00:57:35 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Feb 26 00:57:35 2009 -0500"
      },
      "message": "ext4: don\u0027t call jbd2_journal_force_commit_nested without journal\n\nRunning without a journal, I oopsed when I ran out of space,\nbecause we called jbd2_journal_force_commit_nested() from\next4_should_retry_alloc() without a journal.\n\nThis should take care of it, I think.\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\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": "f63e6005bc63acc0a6bc3bdb8f971dcfbd827185",
      "tree": "22f40e4c70fd9d6fecd36926ae1087d59522098d",
      "parents": [
        "8dc207c0e7a259e7122ddfaf56b8bbbc3c92d685"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Feb 23 16:42:39 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Feb 23 16:42:39 2009 -0500"
      },
      "message": "ext4: Simplify delalloc code by removing mpage_da_writepages()\n\nThe mpage_da_writepages() function is only used in one place, so\ninline it to simplify the call stack and make the code easier to\nunderstand.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "8dc207c0e7a259e7122ddfaf56b8bbbc3c92d685",
      "tree": "68f3cfcf4d2f55c3e7fd8128b30c80b6d54679b1",
      "parents": [
        "ed5bde0bf8995d7d8c0b5a9c33e624a945f333ef"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Feb 23 06:46:01 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Feb 23 06:46:01 2009 -0500"
      },
      "message": "ext4: Save stack space by removing fake buffer heads\n\nStruct mpage_da_data and mpage_add_bh_to_extent() use a fake struct\nbuffer_head which is 104 bytes on an x86_64 system, but only use 24\nbytes of the structure.  On systems that use a spinlock for atomic_t,\nthe stack savings will be even greater.\n\nIt turns out that using a fake struct buffer_head doesn\u0027t even save\nthat much code, and it makes the code more confusing since it\u0027s not\nused as a \"real\" buffer head.  So just store pass b_size and b_state\nin mpage_add_bh_to_extent(), and store b_size, b_state, and b_block_nr\nin the mpage_da_data structure.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "ed5bde0bf8995d7d8c0b5a9c33e624a945f333ef",
      "tree": "1e4ba09b0e10860c051ab4eb558b0e58f8037866",
      "parents": [
        "722bde6875bfb49a0c84e5601eb82dd7ac02d27c"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Feb 23 10:48:07 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Feb 23 10:48:07 2009 -0500"
      },
      "message": "ext4: Simplify delalloc implementation by removing mpd.get_block\n\nThis parameter was always set to ext4_da_get_block_write().\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "7a262f7c69163cd4811f2f838faef5c5b18439c9",
      "tree": "1d048ed0fa78d8d768c149cf414bd4325315f184",
      "parents": [
        "56b19868aca856a7d7bf20c3a7a1030e4fd75b2b"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Fri Mar 27 16:39:58 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Mar 27 16:39:58 2009 -0400"
      },
      "message": "ext4: Validate extent details only when read from the disk\n\nMake sure we validate extent details only when read from the disk.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: Thiemo Nagel \u003cthiemo.nagel@ph.tum.de\u003e\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": "ebd3610b110bbb18ea6f9f2aeed1e1068c537227",
      "tree": "a7ecd4c6ef1d05619abeefea831e8f73ffadda11",
      "parents": [
        "05bf9e839d9de4e8a094274a0a2fd07beb47eaf1"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Sun Feb 22 21:09:59 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Feb 22 21:09:59 2009 -0500"
      },
      "message": "ext4: Fix deadlock in ext4_write_begin() and ext4_da_write_begin()\n\nFunctions ext4_write_begin() and ext4_da_write_begin() call\ngrab_cache_page_write_begin() without AOP_FLAG_NOFS. Thus it\ncan happen that page reclaim is triggered in that function\nand it recurses back into the filesystem (or some other filesystem).\nBut this can lead to various problems as a transaction is already\nstarted at that point. Add the necessary flag.\n\nhttp://bugzilla.kernel.org/show_bug.cgi?id\u003d11688\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "2acf2c261b823d9d9ed954f348b97620297a36b5",
      "tree": "01bcc80ee26a9cc25df9b9a215081943f3fcbd6c",
      "parents": [
        "d794bf8e0936dce45104565cd48c571061f4c1e3"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Sat Feb 14 10:42:58 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Feb 14 10:42:58 2009 -0500"
      },
      "message": "ext4: Implement range_cyclic in ext4_da_writepages instead of write_cache_pages\n\nWith delayed allocation we lock the page in write_cache_pages() and\ntry to build an in memory extent of contiguous blocks.  This is needed\nso that we can get large contiguous blocks request.  If range_cyclic\nmode is enabled, write_cache_pages() will loop back to the 0 index if\nno I/O has been done yet, and try to start writing from the beginning\nof the range.  That causes an attempt to take the page lock of lower\nindex page while holding the page lock of higher index page, which can\ncause a dead lock with another writeback thread.\n\nThe solution is to implement the range_cyclic behavior in\next4_da_writepages() instead.\n\nhttp://bugzilla.kernel.org/show_bug.cgi?id\u003d12579\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": "7f5aa215088b817add9c71914b83650bdd49f8a9",
      "tree": "9b811d1f0b41a2738fc68654ae605bf5d8cf2a72",
      "parents": [
        "9eddacf9e9c03578ef2c07c9534423e823d677f8"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue Feb 10 11:15:34 2009 -0500"
      },
      "committer": {
        "name": "Theodore Tso",
        "email": "tytso@mit.edu",
        "time": "Tue Feb 10 11:15:34 2009 -0500"
      },
      "message": "jbd2: Avoid possible NULL dereference in jbd2_journal_begin_ordered_truncate()\n\nIf we race with commit code setting i_transaction to NULL, we could\npossibly dereference it.  Proper locking requires the journal pointer\n(to access journal-\u003ej_list_lock), which we don\u0027t have.  So we have to\nchange the prototype of the function so that filesystem passes us the\njournal pointer.  Also add a more detailed comment about why the\nfunction jbd2_journal_begin_ordered_truncate() does what it does and\nhow it should be used.\n\nThanks to Dan Carpenter \u003cerror27@gmail.com\u003e for pointing to the\nsuspitious code.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nAcked-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nCC: linux-ext4@vger.kernel.org\nCC: ocfs2-devel@oss.oracle.com\nCC: mfasheh@suse.de\nCC: Dan Carpenter \u003cerror27@gmail.com\u003e\n"
    },
    {
      "commit": "b9ec63f78b425c0e16cc95605b5d4ff2dc228b97",
      "tree": "702f3b10c7462a94fb130133257a063a289d495f",
      "parents": [
        "9fd9784c91db79e953ea3fe3741f885bdc390a72"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Jan 30 00:00:24 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Jan 30 00:00:24 2009 -0500"
      },
      "message": "ext4: Remove bogus BUG() check in ext4_bmap()\n\nThe code to support journal-less ext4 operation added a BUG to\next4_bmap() which fired if there was no journal and the\nEXT4_STATE_JDATA bit was set in the i_state field.  This caused\nrunning the filefrag program (which uses the FIMBAP ioctl) to trigger\na BUG().\n\nThe EXT4_STATE_JDATA bit is only used for ext4_bmap(), and it\u0027s\nharmless for the bit to be set.  We could add a check in\n__ext4_journalled_writepage() and ext4_journalled_write_end() to only\nset the EXT4_STATE_JDATA bit if the journal is present, but that adds\nan extra test and jump instruction.  It\u0027s easier to simply remove the\nBUG check.\n\nhttp://bugzilla.kernel.org/show_bug.cgi?id\u003d12568\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\n\n"
    },
    {
      "commit": "e7f07968c16bdd9480001c0a9de013ba56889cf9",
      "tree": "89aaa3c147d8f6abd10711a030aa0a57b630176d",
      "parents": [
        "08ec8c3878cea0bf91f2ba3c0badf44b383752d0"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jan 20 09:50:19 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jan 20 09:50:19 2009 -0500"
      },
      "message": "ext4: Fix ext4_free_blocks() w/o a journal when files have indirect blocks\n\nWhen trying to unlink a file with indirect blocks on a filesystem\nwithout a journal, the \"circular indirect block\" sanity test was\ngetting falsely triggered.\n\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": "54566b2c1594c2326a645a3551f9d989f7ba3c5e",
      "tree": "b373f3283fe5e197d0df29cd6b645c35adf1076c",
      "parents": [
        "e687d691cb3790d25e31c74f5941fd7c565e9df5"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Sun Jan 04 12:00:53 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 04 13:33:20 2009 -0800"
      },
      "message": "fs: symlink write_begin allocation context fix\n\nWith the write_begin/write_end aops, page_symlink was broken because it\ncould no longer pass a GFP_NOFS type mask into the point where the\nallocations happened.  They are done in write_begin, which would always\nassume that the filesystem can be entered from reclaim.  This bug could\ncause filesystem deadlocks.\n\nThe funny thing with having a gfp_t mask there is that it doesn\u0027t really\nallow the caller to arbitrarily tinker with the context in which it can be\ncalled.  It couldn\u0027t ever be GFP_ATOMIC, for example, because it needs to\ntake the page lock.  The only thing any callers care about is __GFP_FS\nanyway, so turn that into a single flag.\n\nAdd a new flag for write_begin, AOP_FLAG_NOFS.  Filesystems can now act on\nthis flag in their write_begin function.  Change __grab_cache_page to\naccept a nofs argument as well, to honour that flag (while we\u0027re there,\nchange the name to grab_cache_page_write_begin which is more instructive\nand does away with random leading underscores).\n\nThis is really a more flexible way to go in the end anyway -- if a\nfilesystem happens to want any extra allocations aside from the pagecache\nones in ints write_begin function, it may now use GFP_KERNEL (rather than\nGFP_NOFS) for common case allocations (eg.  ocfs2_alloc_write_ctxt, for a\nrandom example).\n\n[kosaki.motohiro@jp.fujitsu.com: fix ubifs]\n[kosaki.motohiro@jp.fujitsu.com: fix fuse]\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: \u003cstable@kernel.org\u003e\t\t[2.6.28.x]\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\n[ Cleaned up the calling convention: just pass in the AOP flags\n  untouched to the grab_cache_page_write_begin() function.  That\n  just simplifies everybody, and may even allow future expansion of the\n  logic.   - Linus ]\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ba80b1019aa722b24506db1ee755e0bb2f513022",
      "tree": "0c9a7dfd3af0f5991f3eaaeb65d735b11e9cf777",
      "parents": [
        "c31910672376dfb8d020e32afa7249763bcd924a"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Jan 03 20:03:21 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Jan 03 20:03:21 2009 -0500"
      },
      "message": "ext4: Add markers for better debuggability\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\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": "e83c1397cafc4e44f868289db5e417463c0d09a4",
      "tree": "1e5673897d0c7bcaad4a7e6927a7277e78525924",
      "parents": [
        "b5ed3112b5f74c8ec1c7aa03a76c596635e85197"
      ],
      "author": {
        "name": "Duane Griffin",
        "email": "duaneg@dghda.com",
        "time": "Fri Dec 19 20:47:15 2008 +0000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 31 18:07:39 2008 -0500"
      },
      "message": "ext4: ensure fast symlinks are NUL-terminated\n\nEnsure fast symlink targets are NUL-terminated, even if corrupted\non-disk.\n\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nCc: adilger@sun.com\nCc: linux-ext4@vger.kernel.org\nSigned-off-by: Duane Griffin \u003cduaneg@dghda.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ed9b3e3379731e9f9d2f73f3d7fd9e7d2ce3df4a",
      "tree": "d17381e45fe8843646ca70424095a9aa36711ee7",
      "parents": [
        "ac51d83705c2a38c71f39cde99708b14e6212a60"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Fri Nov 07 09:06:45 2008 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Nov 07 09:06:45 2008 -0500"
      },
      "message": "ext4: Mark the buffer_heads as dirty and uptodate after prepare_write\n\nWe need to make sure we mark the buffer_heads as dirty and uptodate\nso that block_write_full_page write them correctly.\n\nThis fixes mmap corruptions that can occur in low memory situations.\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": "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": "ac51d83705c2a38c71f39cde99708b14e6212a60",
      "tree": "e540265888154d1f1b4613a118252b19a31db5db",
      "parents": [
        "14ce0cb411c88681ab8f3a4c9caa7f42e97a3184"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Nov 06 16:49:36 2008 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Nov 06 16:49:36 2008 -0500"
      },
      "message": "ext4: calculate journal credits correctly\n\nThis fixes a 2.6.27 regression which was introduced in commit a02908f1.\n\nWe weren\u0027t passing the chunk parameter down to the two subections,\next4_indirect_trans_blocks() and ext4_ext_index_trans_blocks(), with\nthe result that massively overestimate the amount of credits needed by\next4_da_writepages, especially in the non-extents case.  This causes\nfailures especially on /boot partitions, which tend to be small and\nnon-extent using since GRUB doesn\u0027t handle extents.\n\nThis patch fixes the bug reported by Joseph Fannin at:\nhttp://bugzilla.kernel.org/show_bug.cgi?id\u003d11964\n\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"
    }
  ],
  "next": "0390131ba84fd3f726f9e24fc4553828125700bb"
}
