)]}'
{
  "log": [
    {
      "commit": "dcbeb0bec5f2695c3ff53f174efb8e03c209f3f3",
      "tree": "30d223a3a3c7470c657284ef030657bd1753d4d3",
      "parents": [
        "2b650df2cea96e487f2fd9ecaa68e533ea9b5ed7",
        "444528b3e614f7f2391488d9bca8e0b872db909b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 15 15:06:37 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 15 15:06:37 2009 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* \u0027master\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable:\n  Btrfs: always pin metadata in discard mode\n  Btrfs: enable discard support\n  Btrfs: add -o discard option\n  Btrfs: properly wait log writers during log sync\n  Btrfs: fix possible ENOSPC problems with truncate\n  Btrfs: fix btrfs acl #ifdef checks\n  Btrfs: streamline tree-log btree block writeout\n  Btrfs: avoid tree log commit when there are no changes\n  Btrfs: only write one super copy during fsync\n"
    },
    {
      "commit": "5d5e103a70f74ae98e3965a4add1ab951d0651d1",
      "tree": "83b1cc73830f72f592aa804207a679912beef101",
      "parents": [
        "0eda294dfc980c1cbe4f8a0564bf543f86a01ddb"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Oct 13 16:46:49 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Oct 14 10:32:47 2009 -0400"
      },
      "message": "Btrfs: fix possible ENOSPC problems with truncate\n\nThere\u0027s a problem where we don\u0027t do any space reservation for truncates, which\ncan cause you to OOPs because you will be allowed to go off in the weeds a bit\nsince we don\u0027t account for the delalloc bytes that are created as a result of\nthe truncate.\n\nSigned-off-by: Josef Bacik \u003cjbacik@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "257c62e1bce03e5b9f3f069fd52ad73a56de71fd",
      "tree": "ad047fe5796156aa88e3f3600111bf2b8d12759f",
      "parents": [
        "4722607db6a78bd7748c51fa4c8d7371da797254"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Oct 13 13:21:08 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Oct 13 13:35:12 2009 -0400"
      },
      "message": "Btrfs: avoid tree log commit when there are no changes\n\nrpm has a habit of running fdatasync when the file hasn\u0027t\nchanged.  We already detect if a file hasn\u0027t been changed\nin the current transaction but it might have been sent to\nthe tree-log in this transaction and not changed since\nthe last call to fsync.\n\nIn this case, we want to avoid a tree log sync, which includes\na number of synchronous writes and barriers.  This commit\nextends the existing tracking of the last transaction to change\na file to also track the last sub-transaction.\n\nThe end result is that rpm -ivh and -Uvh are roughly twice as fast,\nand on par with ext3.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "474a503d4bf77ae0cbe484dd0842a2648c0b1c28",
      "tree": "70e3e4023209e741546491a58622bd45fb13e308",
      "parents": [
        "d43c36dc6b357fa1806800f18aa30123c747a6d1",
        "ac6889cbb254be1ffea376bea4a96ce9be0e0ed0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Oct 11 11:23:13 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Oct 11 11:23:13 2009 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable:\n  Btrfs: fix file clone ioctl for bookend extents\n  Btrfs: fix uninit compiler warning in cow_file_range_nocow\n  Btrfs: constify dentry_operations\n  Btrfs: optimize back reference update during btrfs_drop_snapshot\n  Btrfs: remove negative dentry when deleting subvolumne\n  Btrfs: optimize fsync for the single writer case\n  Btrfs: async delalloc flushing under space pressure\n  Btrfs: release delalloc reservations on extent item insertion\n  Btrfs: delay clearing EXTENT_DELALLOC for compressed extents\n  Btrfs: cleanup extent_clear_unlock_delalloc flags\n  Btrfs: fix possible softlockup in the allocator\n  Btrfs: fix deadlock on async thread startup\n"
    },
    {
      "commit": "e9061e214810c9534381a705a1b46533e09f2676",
      "tree": "7eed17ffbfc2eeb06da70dafe8087855c4b22a60",
      "parents": [
        "82d339d9b3a6395f17d3253887653250b693b74b"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 09 09:57:45 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 09 09:57:45 2009 -0400"
      },
      "message": "Btrfs: fix uninit compiler warning in cow_file_range_nocow\n\nThe extent_type variable was exposed uninit via a goto.  It should be\nimpossible to trigger because it is protected by a check on another\nvariable, but this makes sure.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "82d339d9b3a6395f17d3253887653250b693b74b",
      "tree": "04671df82289708192bd650c67eaa2f8a999132b",
      "parents": [
        "94fcca9f8999e7828d5f4dc181daa39cad2af38a"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Fri Oct 09 09:54:36 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 09 09:54:36 2009 -0400"
      },
      "message": "Btrfs: constify dentry_operations\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "efefb1438be269897585934fc6c05deb4dfa01ce",
      "tree": "41d3bf63789bc656421dfbd651bf38caf580ec03",
      "parents": [
        "ff782e0a131c7f669445c07fe5c7ba91e043b7ed"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Fri Oct 09 09:25:16 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 09 09:25:16 2009 -0400"
      },
      "message": "Btrfs: remove negative dentry when deleting subvolumne\n\nThe use of btrfs_dentry_delete is removing dentries from the\ndcache when deleting subvolumne. btrfs_dentry_delete ignores\nnegative dentries. This is incorrect since if we don\u0027t remove\nthe negative dentry, its parent dentry can\u0027t be removed.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "32c00aff718bb54a214b39146bdd9ac01511cd25",
      "tree": "c094ee494723a9ebc9d83cb95607f06351665639",
      "parents": [
        "a3429ab70b04363c6190964e82f04f44f3e34cf0"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Oct 08 13:34:05 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Oct 08 15:21:10 2009 -0400"
      },
      "message": "Btrfs: release delalloc reservations on extent item insertion\n\nThis patch fixes an issue with the delalloc metadata space reservation\ncode.  The problem is we used to free the reservation as soon as we\nallocated the delalloc region.  The problem with this is if we are not\ninserting an inline extent, we don\u0027t actually insert the extent item until\nafter the ordered extent is written out.  This patch does 3 things,\n\n1) It moves the reservation clearing stuff into the ordered code, so when\nwe remove the ordered extent we remove the reservation.\n2) It adds a EXTENT_DO_ACCOUNTING flag that gets passed when we clear\ndelalloc bits in the cases where we want to clear the metadata reservation\nwhen we clear the delalloc extent, in the case that we do an inline extent\nor we invalidate the page.\n3) It adds another waitqueue to the space info so that when we start a fs\nwide delalloc flush, anybody else who also hits that area will simply wait\nfor the flush to finish and then try to make their allocation.\n\nThis has been tested thoroughly to make sure we did not regress on\nperformance.\n\nSigned-off-by: Josef Bacik \u003cjbacik@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "a3429ab70b04363c6190964e82f04f44f3e34cf0",
      "tree": "f9aa5104699fdb82a3dfa327948241aa3e0022d5",
      "parents": [
        "a791e35e12ff672e8a0e140abeeaf900c3b2ea77"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Oct 08 12:30:20 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Oct 08 15:11:50 2009 -0400"
      },
      "message": "Btrfs: delay clearing EXTENT_DELALLOC for compressed extents\n\nWhen compression is on, the cow_file_range code is farmed off to\nworker threads.  This allows us to do significant CPU work in parallel\non SMP machines.\n\nBut it is a delicate balance around when we clear flags and how.  In\nthe past we cleared the delalloc flag immediately, which was safe\nbecause the pages stayed locked.\n\nBut this is causing problems with the newest ENOSPC code, and with the\nrecent extent state cleanups we can now clear the delalloc bit at the\nsame time the uncompressed code does.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "a791e35e12ff672e8a0e140abeeaf900c3b2ea77",
      "tree": "f03b99451619c0425f3c93fbef3940c2b08c1bd3",
      "parents": [
        "1cdda9b81ac0e6ee986f034fa02f221679e1c11a"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Oct 08 11:27:10 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Oct 08 15:11:49 2009 -0400"
      },
      "message": "Btrfs: cleanup extent_clear_unlock_delalloc flags\n\nextent_clear_unlock_delalloc has a growing set of ugly parameters\nthat is very difficult to read and maintain.\n\nThis switches to a flag field and well named flag defines.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "0efe5e32c8729ef44b00d9a7203e4c99a6378b27",
      "tree": "8df3309198b2ab87f549c82c59125d2b106bcdbe",
      "parents": [
        "e6a0a8bfef1094084e53bfaad6d512c23da7a6dd",
        "9c2693c9243b81802c6860570557165e874779a7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 01 20:23:15 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 01 20:23:15 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable:\n  Btrfs: fix data space leak fix\n  Btrfs: remove duplicates of filemap_ helpers\n  Btrfs: take i_mutex before generic_write_checks\n  Btrfs: fix arguments to btrfs_wait_on_page_writeback_range\n  Btrfs: fix deadlock with free space handling and user transactions\n  Btrfs: fix error cases for ioctl transactions\n  Btrfs: Use CONFIG_BTRFS_POSIX_ACL to enable ACL code\n  Btrfs: introduce missing kfree\n  Btrfs: Fix setting umask when POSIX ACLs are not enabled\n  Btrfs: proper -ENOSPC handling\n"
    },
    {
      "commit": "828c09509b9695271bcbdc53e9fc9a6a737148d2",
      "tree": "072ffad6f02db7bf4095e07e2b90247cfa042998",
      "parents": [
        "1c4115e595dec42aa0e81ba47ef46e35b34ed428"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Thu Oct 01 15:43:56 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 01 16:11:11 2009 -0700"
      },
      "message": "const: constify remaining file_operations\n\n[akpm@linux-foundation.org: fix KVM]\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nAcked-by: Mike Frysinger \u003cvapier@gentoo.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9c2693c9243b81802c6860570557165e874779a7",
      "tree": "c857a96a78cdc9fcd640ea4279e7214d6c9713b3",
      "parents": [
        "8aa38c31b7659e338fee4d9af4c3805acbd9806f",
        "fbf190874407f23d2891b53ffdf7d3c6be8d47ff"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Oct 01 17:24:44 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Oct 01 17:24:44 2009 -0400"
      },
      "message": "Merge branch \u0027master\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable into for-linus\n"
    },
    {
      "commit": "fbf190874407f23d2891b53ffdf7d3c6be8d47ff",
      "tree": "c60ab388e2b19b02fd3bbcef76498a3520f9dcbd",
      "parents": [
        "ab93dbecfba72bbc04b7036343d180aaff1b61a3"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Oct 01 17:10:23 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Oct 01 17:10:23 2009 -0400"
      },
      "message": "Btrfs: fix data space leak fix\n\nThere is a problem where page_mkwrite can be called on a dirtied page that\nalready has a delalloc range associated with it.  The fix is to clear any\ndelalloc bits for the range we are dirtying so the space accounting gets\nhandled properly.  This is the same thing we do in the normal write case, so we\nare consistent across the board.  With this patch we no longer leak reserved\nspace.\n\nSigned-off-by: Josef Bacik \u003cjbacik@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "25472b880c69c0daa485c4f80a6550437ed1149f",
      "tree": "d12bc091e8991513db0d2891111ba773eb5c52e2",
      "parents": [
        "17d857be649a21ca90008c6dc425d849fa83db5c",
        "ab93dbecfba72bbc04b7036343d180aaff1b61a3"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Oct 01 12:58:13 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Oct 01 12:58:13 2009 -0400"
      },
      "message": "Merge branch \u0027master\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable into for-linus\n"
    },
    {
      "commit": "9ed74f2dba6ebf9f30b80554290bfc73cc3ef083",
      "tree": "763d58a4a11ceca26dcdaedefb1fd662c4e2fa8b",
      "parents": [
        "c65ddb52dc412c9b67681b1aa16cd1bac8434e24"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Sep 11 16:12:44 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Sep 28 16:29:42 2009 -0400"
      },
      "message": "Btrfs: proper -ENOSPC handling\n\nAt the start of a transaction we do a btrfs_reserve_metadata_space() and\nspecify how many items we plan on modifying.  Then once we\u0027ve done our\nmodifications and such, just call btrfs_unreserve_metadata_space() for\nthe same number of items we reserved.\n\nFor keeping track of metadata needed for data I\u0027ve had to add an extent_io op\nfor when we merge extents.  This lets us track space properly when we are doing\nsequential writes, so we don\u0027t end up reserving way more metadata space than\nwhat we need.\n\nThe only place where the metadata space accounting is not done is in the\nrelocation code.  This is because Yan is going to be reworking that code in the\nnear future, so running btrfs-vol -b could still possibly result in a ENOSPC\nrelated panic.  This patch also turns off the metadata_ratio stuff in order to\nallow users to more efficiently use their disk space.\n\nThis patch makes it so we track how much metadata we need for an inode\u0027s\ndelayed allocation extents by tracking how many extents are currently\nwaiting for allocation.  It introduces two new callbacks for the\nextent_io tree\u0027s, merge_extent_hook and split_extent_hook.  These help\nus keep track of when we merge delalloc extents together and split them\nup.  Reservations are handled prior to any actually dirty\u0027ing occurs,\nand then we unreserve after we dirty.\n\nbtrfs_unreserve_metadata_for_delalloc() will make the appropriate\nunreservations as needed based on the number of reservations we\ncurrently have and the number of extents we currently have.  Doing the\nreservation outside of doing any of the actual dirty\u0027ing lets us do\nthings like filemap_flush() the inode to try and force delalloc to\nhappen, or as a last resort actually start allocation on all delalloc\ninodes in the fs.  This has survived dbench, fs_mark and an fsx torture\ntest.\n\nSigned-off-by: Josef Bacik \u003cjbacik@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "dc2af6a6bcf3abdf44ac545759a6547dfe12070e",
      "tree": "068ea2c5f5df55f72167ab3b51e001a98b7300e4",
      "parents": [
        "6c5daf012c9155aafd2c7973e4278766c30dfad0",
        "54bcf382daf08c1396edb8b81e650b58930ccaef"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 08:57:29 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 08:57:29 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable: (42 commits)\n  Btrfs: hash the btree inode during  fill_super\n  Btrfs: relocate file extents in clusters\n  Btrfs: don\u0027t rename file into dummy directory\n  Btrfs: check size of inode backref before adding hardlink\n  Btrfs: fix releasepage to avoid unlocking extents we haven\u0027t locked\n  Btrfs: Fix test_range_bit for whole file extents\n  Btrfs: fix errors handling cached state in set/clear_extent_bit\n  Btrfs: fix early enospc during balancing\n  Btrfs: deal with NULL space info\n  Btrfs: account for space used by the super mirrors\n  Btrfs: fix extent entry threshold calculation\n  Btrfs: remove dead code\n  Btrfs: fix bitmap size tracking\n  Btrfs: don\u0027t keep retrying a block group if we fail to allocate a cluster\n  Btrfs: make balance code choose more wisely when relocating\n  Btrfs: fix arithmetic error in clone ioctl\n  Btrfs: add snapshot/subvolume destroy ioctl\n  Btrfs: change how subvolumes are organized\n  Btrfs: do not reuse objectid of deleted snapshot/subvol\n  Btrfs: speed up snapshot dropping\n  ...\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": "54bcf382daf08c1396edb8b81e650b58930ccaef",
      "tree": "64b941f09489b5c9ee63e4ad43d736bfce911b21",
      "parents": [
        "94a8d5caba74211ec76dac80fc6e2d5c391530df",
        "c65ddb52dc412c9b67681b1aa16cd1bac8434e24"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 24 10:00:58 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 24 10:00:58 2009 -0400"
      },
      "message": "Merge branch \u0027master\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable into for-linus\n\nConflicts:\n\tfs/btrfs/super.c\n"
    },
    {
      "commit": "f679a84034be6f7da123be786bbd8838bf3e9207",
      "tree": "4dce1760675978fd0b113e04f9608f57161bac85",
      "parents": [
        "a57195214358b75807a74bad96a8601a36262af7"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Thu Sep 24 09:17:31 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 24 09:17:31 2009 -0400"
      },
      "message": "Btrfs: don\u0027t rename file into dummy directory\n\nA recent change enforces only one access point to each subvolume. The first\ndirectory entry (the one added when the subvolume/snapshot was created) is\ntreated as valid access point, all other subvolume links are linked to dummy\nempty directories. The dummy directories are temporary inodes that only in\nmemory, so we can not rename file into them.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "a57195214358b75807a74bad96a8601a36262af7",
      "tree": "e288410ecfab5f15097bb66f06a5dd6bf99bca08",
      "parents": [
        "11ef160fda9c150cd75db77194bcc66839709662"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Thu Sep 24 09:17:31 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 24 09:17:31 2009 -0400"
      },
      "message": "Btrfs: check size of inode backref before adding hardlink\n\nFor every hardlink in btrfs, there is a corresponding inode back\nreference. All inode back references for hardlinks in a given\ndirectory are stored in single b-tree item. The size of b-tree item\nis limited by the size of b-tree leaf, so we can only create limited\nnumber of hardlinks to a given file in a directory.\n\nThe original code lacks of the check, it oops if the number of\nhardlinks goes over the limit. This patch fixes the issue by adding\ncheck to btrfs_link and btrfs_rename.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "6e1d5dcc2bbbe71dbf010c747e15739bef6b7218",
      "tree": "2edb0f6cc65acbae95e42df1bc763ec048e6c2e0",
      "parents": [
        "7f09410bbc4306f592cfb43812389ea1c7905a20"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Sep 21 17:01:11 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:24 2009 -0700"
      },
      "message": "const: mark remaining inode_operations as const\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7f09410bbc4306f592cfb43812389ea1c7905a20",
      "tree": "18f179435f70c4ec9231883501062d5ea0357af5",
      "parents": [
        "ac4cfdd6d141c319a7af8655f750ed504c187a74"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Sep 21 17:01:10 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:24 2009 -0700"
      },
      "message": "const: mark remaining address_space_operations const\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "76dda93c6ae2c1dc3e6cde34569d6aca26b0c918",
      "tree": "f5ca46ec89d4ae2c762952d5f35e2c6f95ac046a",
      "parents": [
        "4df27c4d5cc1dda54ed7d0a8389347f2df359cf9"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Mon Sep 21 16:00:26 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Sep 21 16:00:26 2009 -0400"
      },
      "message": "Btrfs: add snapshot/subvolume destroy ioctl\n\nThis patch adds snapshot/subvolume destroy ioctl.  A subvolume that isn\u0027t being\nused and doesn\u0027t contains links to other subvolumes can be destroyed.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "4df27c4d5cc1dda54ed7d0a8389347f2df359cf9",
      "tree": "2008f348d28c6c19e31924ae4fb414ca929a01f1",
      "parents": [
        "13a8a7c8c47e542b3cdb45bec3f431f96af79361"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Mon Sep 21 15:56:00 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Sep 21 15:56:00 2009 -0400"
      },
      "message": "Btrfs: change how subvolumes are organized\n\nbtrfs allows subvolumes and snapshots anywhere in the directory tree.\nIf we snapshot a subvolume that contains a link to other subvolume\ncalled subvolA, subvolA can be accessed through both the original\nsubvolume and the snapshot. This is similar to creating hard link to\ndirectory, and has the very similar problems.\n\nThe aim of this patch is enforcing there is only one access point to\neach subvolume. Only the first directory entry (the one added when\nthe subvolume/snapshot was created) is treated as valid access point.\nThe first directory entry is distinguished by checking root forward\nreference. If the corresponding root forward reference is missing,\nwe know the entry is not the first one.\n\nThis patch also adds snapshot/subvolume rename support, the code\nallows rename subvolume link across subvolumes.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "13a8a7c8c47e542b3cdb45bec3f431f96af79361",
      "tree": "473f3cc94b4a93a0a5f6f19b1832ef2e6b7ecf62",
      "parents": [
        "1c4850e21df8b441164d910bc611ef46a01d5d75"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Mon Sep 21 15:56:00 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Sep 21 15:56:00 2009 -0400"
      },
      "message": "Btrfs: do not reuse objectid of deleted snapshot/subvol\n\nThe new back reference format does not allow reusing objectid of\ndeleted snapshot/subvol. So we use ++highest_objectid to allocate\nobjectid for new snapshot/subvol.\n\nNow we use ++highest_objectid to allocate objectid for both new inode\nand new snapshot/subvolume, so this patch removes \u0027find hole\u0027 code in\nbtrfs_find_free_objectid.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "b917b7c3be50435fa8257591b964934e917f2d45",
      "tree": "efdc2f768da474a4904dc6c065cc6e4b9a2379d3",
      "parents": [
        "f85d7d6c8f2ad4a86a1f4f4e3791f36dede2fa76"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 18 16:07:03 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 18 16:08:52 2009 -0400"
      },
      "message": "Btrfs: search for an allocation hint while filling file COW\n\nThe allocator has some nice knobs for sending hints about where\nto try and allocate new blocks, but when we\u0027re doing file allocations\nwe\u0027re not sending any hint at all.\n\nThis commit adds a simple extent map search to see if we can\nquickly and easily find a hint for the allocator.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "465fdd97cbe16ef8727221857e96ef62dd352017",
      "tree": "efeeba1553264f5fc0b140af301d7afa9ce1d6fd",
      "parents": [
        "cae681fc12a824631337906d6ba1dbd498e751a5"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "andi@firstfloor.org",
        "time": "Wed Sep 16 11:50:18 2009 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Sep 16 11:50:18 2009 +0200"
      },
      "message": "HWPOISON: Enable error_remove_page on btrfs\n\nCc: chris.mason@oracle.com\n\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "83ebade34bc1a90d0c3f77b87b940f336d075fda",
      "tree": "99b6366c52e6bec88119ae995399c985fc61e900",
      "parents": [
        "74fca6a42863ffacaf7ba6f1936a9f228950f657",
        "93c82d575055f1bd0277acae6f966bebafd80dd5"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 11 19:07:25 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 11 19:07:25 2009 -0400"
      },
      "message": "Merge branch \u0027master\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n"
    },
    {
      "commit": "93c82d575055f1bd0277acae6f966bebafd80dd5",
      "tree": "4b059485eb226291dac336921b32653131b0dd43",
      "parents": [
        "50a9b214bc6c052caa05a210ebfc1bdf0d7085b2"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 11 12:36:29 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 11 13:31:08 2009 -0400"
      },
      "message": "Btrfs: zero page past end of inline file items\n\nWhen btrfs_get_extent is reading inline file items for readpage,\nit needs to copy the inline extent into the page.  If the\ninline extent doesn\u0027t cover all of the page, that means there\nis a hole in the file, or that our file is smaller than one\npage.\n\nreadpage does zeroing for the case where the file is smaller than one\npage, but nobody is currently zeroing for the case where there is\na hole after the inline item.\n\nThis commit changes btrfs_get_extent to zero fill the page past\nthe end of the inline item.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "50a9b214bc6c052caa05a210ebfc1bdf0d7085b2",
      "tree": "c5ae2e6a99778f237bdc88eb7157f7c4a82a2e54",
      "parents": [
        "a1ed835e1ab5795f91b198d08c43e2f56848dcf3"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 11 12:33:12 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 11 13:31:08 2009 -0400"
      },
      "message": "Btrfs: fix btrfs page_mkwrite to return locked page\n\nThis closes a whole where the page may be written before\nthe page_mkwrite caller has a chance to dirty it\n\n(thanks to Nick Piggin)\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "a1ed835e1ab5795f91b198d08c43e2f56848dcf3",
      "tree": "ac3b370823fa76c5be7698e3663306badbbd622d",
      "parents": [
        "8b62b72b26bcd72082c4a69d179dd906bcc22200"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 11 12:27:37 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 11 13:31:07 2009 -0400"
      },
      "message": "Btrfs: Fix extent replacment race\n\nData COW means that whenever we write to a file, we replace any old\nextent pointers with new ones.  There was a window where a readpage\nmight find the old extent pointers on disk and cache them in the\nextent_map tree in ram in the middle of a given write replacing them.\n\nEven though both the readpage and the write had their respective bytes\nin the file locked, the extent readpage inserts may cover more bytes than\nit had locked down.\n\nThis commit closes the race by keeping the new extent pinned in the extent\nmap tree until after the on-disk btree is properly setup with the new\nextent pointers.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "8b62b72b26bcd72082c4a69d179dd906bcc22200",
      "tree": "ceee20dfebe45654cb3a25d8916c195836cdbabf",
      "parents": [
        "9655d2982b53fdb38a9e0f2f11315b99b92d66e2"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Sep 02 16:53:46 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 11 13:31:07 2009 -0400"
      },
      "message": "Btrfs: Use PagePrivate2 to track pages in the data\u003dordered code.\n\nBtrfs writes go through delalloc to the data\u003dordered code.  This\nmakes sure that all of the data is on disk before the metadata\nthat references it.  The tracking means that we have to make sure\neach page in an extent is fully written before we add that extent into\nthe on-disk btree.\n\nThis was done in the past by setting the EXTENT_ORDERED bit for the\nrange of an extent when it was added to the data\u003dordered code, and then\nclearing the EXTENT_ORDERED bit in the extent state tree as each page\nfinished IO.\n\nOne of the reasons we had to do this was because sometimes pages are\nmagically dirtied without page_mkwrite being called.  The EXTENT_ORDERED\nbit is checked at writepage time, and if it isn\u0027t there, our page become\ndirty without going through the proper path.\n\nThese bit operations make for a number of rbtree searches for each page,\nand can cause considerable lock contention.\n\nThis commit switches from the EXTENT_ORDERED bit to use PagePrivate2.\nAs pages go into the ordered code, PagePrivate2 is set on each one.\nThis is a cheap operation because we already have all the pages locked\nand ready to go.\n\nAs IO finishes, the PagePrivate2 bit is cleared and the ordered\naccoutning is updated for each page.\n\nAt writepage time, if the PagePrivate2 bit is missing, we go into the\nwritepage fixup code to handle improperly dirtied pages.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "9655d2982b53fdb38a9e0f2f11315b99b92d66e2",
      "tree": "e1271f2f2a3c2c356e0692b36a2d4742b5d651d8",
      "parents": [
        "d5550c6315fe0647b7ac21a6a736bf4a42620eac"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Sep 02 15:22:30 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 11 13:31:07 2009 -0400"
      },
      "message": "Btrfs: use a cached state for extent state operations during delalloc\n\nThis changes the btrfs code to find delalloc ranges in the extent state\ntree to use the new state caching code from set/test bit.  It reduces\none of the biggest causes of rbtree searches in the writeback path.\n\ntest_range_bit is also modified to take the cached state as a starting\npoint while searching.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "2c64c53d8d30d43d0670482503a3914dfd3d6d46",
      "tree": "cfe7bfa8f5dc4078f8c995f305229622e25572b1",
      "parents": [
        "1edbb734b4e010974c41d2859d22a43d04f5f1cf"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Sep 02 15:04:12 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 11 13:31:06 2009 -0400"
      },
      "message": "Btrfs: cache values for locking extents\n\nMany of the btrfs extent state tree users follow the same pattern.\nThey lock an extent range in the tree, do some operation and then\nunlock.\n\nThis translates to at least 2 rbtree searches, and maybe more if they\nare doing operations on the extent state tree.  A locked extent\nin the tree isn\u0027t going to be merged or changed, and so we can\nsafely return the extent state structure as a cached handle.\n\nThis changes set_extent_bit to give back a cached handle, and also\nchanges both set_extent_bit and clear_extent_bit to use the cached\nhandle if it is available.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "890871be854b5f5e43e7ba2475f706209906cc24",
      "tree": "9d087adf7a28bb910992d07d93ea2a992e394110",
      "parents": [
        "57fd5a5ff8b48b99e90b22fc143082aba755c6c0"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Sep 02 16:24:52 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 11 13:31:05 2009 -0400"
      },
      "message": "Btrfs: switch extent_map to a rw lock\n\nThere are two main users of the extent_map tree.  The\nfirst is regular file inodes, where it is evenly spread\nbetween readers and writers.\n\nThe second is the chunk allocation tree, which maps blocks from\nlogical addresses to phyiscal ones, and it is 99.99% reads.\n\nThe mapping tree is a point of lock contention during heavy IO\nworkloads, so this commit switches things to a rw lock.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "03e860bd9f6a3cca747b0795bed26279a8b420a0",
      "tree": "9a6e6fe663bfc5f01edac558433f314657c2eb67",
      "parents": [
        "df4ecf1524c7793de3121b2d4e5fc6bcc0da3bfb"
      ],
      "author": {
        "name": "From: Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Fri Aug 21 10:09:44 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Aug 21 10:09:44 2009 +0200"
      },
      "message": "btrfs: fix inode rbtree corruption\n\nNode may not be inserted over existing node. This causes inode tree\ncorruption and I was seeing crashes in inode_tree_del which I can not\nreproduce after this patch.\n\nThe other way to fix this would be to tie inode lifetime in the rbtree\nwith inode while not in freeing state. I had a look at this but it is\nnot so trivial at this point. At least this patch gets things working again.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nAcked-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "d6a0967c90dced0a8baf502e6f3d5862fd5a5805",
      "tree": "e0242d5077730dabc4102b7abad9ee0c41e33bc0",
      "parents": [
        "fb385003c4ac9634cf2448f6ded81e5fd1190c1f",
        "ceab36edd3d3ad3ffd01d41d6d1e05ac1ff8357e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 07 19:03:09 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 07 19:03:09 2009 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable:\n  Btrfs: fix balancing oops when invalidate_inode_pages2 returns EBUSY\n  Btrfs: correct error-handling zlib error handling\n  Btrfs: remove superfluous NULL pointer check in btrfs_rename()\n  Btrfs: make sure the async caching thread advances the key\n  Btrfs: fix btrfs_remove_from_free_space corner case\n"
    },
    {
      "commit": "4baf8c9201e88546918cbfa61ea8062c38bc1644",
      "tree": "7ea84d6155aa7b4e246df56ea0f79d5b3da08d87",
      "parents": [
        "013f1b12f4fc479f697acae2f31bad220162cd03"
      ],
      "author": {
        "name": "Bartlomiej Zolnierkiewicz",
        "email": "bzolnier@gmail.com",
        "time": "Fri Aug 07 13:47:08 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Aug 07 13:47:08 2009 -0400"
      },
      "message": "Btrfs: remove superfluous NULL pointer check in btrfs_rename()\n\nThis takes care of the following entry from Dan\u0027s list:\n\nfs/btrfs/inode.c +4788 btrfs_rename(36) warning: variable derefenced before check \u0027old_inode\u0027\n\nReported-by: Dan Carpenter \u003cerror27@gmail.com\u003e\nCc: Jonathan Corbet \u003ccorbet@lwn.net\u003e\nCc: Eugene Teo \u003ceteo@redhat.com\u003e\nCc: Julia Lawall \u003cjulia@diku.dk\u003e\nSigned-off-by: Bartlomiej Zolnierkiewicz \u003cbzolnier@gmail.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "655c5d8fc110a9d4f90cc831bd009936f3e8df28",
      "tree": "6acb038a6dd8831830d8ae2f5485a4e411d0b579",
      "parents": [
        "ce4adcc6e5320062e0d993eb75152d165aaabbe6",
        "f25784b35f590c81d5fb8245a8cd45e1afb6f1b2"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 28 14:27:06 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 28 14:27:06 2009 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable: (22 commits)\n  Btrfs: Fix async caching interaction with unmount\n  Btrfs: change how we unpin extents\n  Btrfs: Correct redundant test in add_inode_ref\n  Btrfs: find smallest available device extent during chunk allocation\n  Btrfs: clear all space_info-\u003efull after removing a block group\n  Btrfs: make flushoncommit mount option correctly wait on ordered_extents\n  Btrfs: Avoid delayed reference update looping\n  Btrfs: Fix ordering of key field checks in btrfs_previous_item\n  Btrfs: find_free_dev_extent doesn\u0027t handle holes at the start of the device\n  Btrfs: Remove code duplication in comp_keys\n  Btrfs: async block group caching\n  Btrfs: use hybrid extents+bitmap rb tree for free space\n  Btrfs: Fix crash on read failures at mount\n  Btrfs: remove of redundant btrfs_header_level\n  Btrfs: adjust NULL test\n  Btrfs: Remove broken sanity check from btrfs_rmap_block()\n  Btrfs: convert nested spin_lock_irqsave to spin_lock\n  Btrfs: make sure all dirty blocks are written at commit time\n  Btrfs: fix locking issue in btrfs_find_next_key\n  Btrfs: fix double increment of path-\u003eslots[0] in btrfs_next_leaf\n  ...\n"
    },
    {
      "commit": "33c17ad5717c887568c1de61f15e5d58ed66d189",
      "tree": "9593d6df5dd1a634361770d2cef87ab7c55b49b7",
      "parents": [
        "3acada49c2794c5aac21849e2ea05790c6dd2faa"
      ],
      "author": {
        "name": "Julia Lawall",
        "email": "julia@diku.dk",
        "time": "Wed Jul 22 16:49:01 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jul 22 16:49:01 2009 -0400"
      },
      "message": "Btrfs: adjust NULL test\n\nMove the call to BUG_ON to before the dereference of the tested value.\n\nSigned-off-by: Julia Lawall \u003cjulia@diku.dk\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "405f55712dfe464b3240d7816cc4fe4174831be2",
      "tree": "96c425ea7fa8b31058b8f83a433c5e5265c8ebc7",
      "parents": [
        "f9fabcb58a6d26d6efde842d1703ac7cfa9427b6"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Sat Jul 11 22:08:37 2009 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jul 12 12:22:34 2009 -0700"
      },
      "message": "headers: smp_lock.h redux\n\n* Remove smp_lock.h from files which don\u0027t need it (including some headers!)\n* Add smp_lock.h to files which do need it\n* Make smp_lock.h include conditional in hardirq.h\n  It\u0027s needed only for one kernel_locked() usage which is under CONFIG_PREEMPT\n\n  This will make hardirq.h inclusion cheaper for every PREEMPT\u003dn config\n  (which includes allmodconfig/allyesconfig, BTW)\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5291a12f0503e31e0b8e90ee8e4997d59c1c3aad",
      "tree": "63606ab8991540c5cb963e079be92a05fd829791",
      "parents": [
        "c7cba0623fc17fe766063d492810632366790763",
        "68f5a38c3ea4ae9cc7a40f86ff6d6d031583d93a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 02 16:52:38 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 02 16:52:38 2009 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable:\n  Btrfs: fix error message formatting\n  Btrfs: fix use after free in btrfs_start_workers fail path\n  Btrfs: honor nodatacow/sum mount options for new files\n  Btrfs: update backrefs while dropping snapshot\n  Btrfs: account for space we may use in fallocate\n  Btrfs: fix the file clone ioctl for preallocated extents\n  Btrfs: don\u0027t log the inode in file_write while growing the file\n"
    },
    {
      "commit": "9427216476d4fa75103f39d4b228c47d56ba20da",
      "tree": "a6ed7b28aa778a4f9e0c9326f20215e75eb48d40",
      "parents": [
        "2c47e605a91dde6b0514f689645e7ab336c8592a"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Jul 02 12:26:06 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Jul 02 13:41:17 2009 -0400"
      },
      "message": "Btrfs: honor nodatacow/sum mount options for new files\n\nThe btrfs attr patches unconditionally inherited the inode flags field\nwithout honoring nodatacow and nodatasum.  This fix makes sure\nwe properly record the nodatacow/sum mount options in new inodes.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "a970b0a16cc416a509d5ae8b1d70978664e6f4fe",
      "tree": "fa371ca55fd97cd00ddb3b27ba1a784551a469a0",
      "parents": [
        "c8a894d77de4a1e0a544577fd4eabc9aacd453a8"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "jbacik@redhat.com",
        "time": "Sat Jun 27 21:07:34 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Jul 02 13:41:16 2009 -0400"
      },
      "message": "Btrfs: account for space we may use in fallocate\n\nUsing Eric Sandeen\u0027s xfstest for fallocate, you can easily trigger a ENOSPC\npanic on btrfs.  This is because we do not account for data we may use when\ndoing the fallocate.  This patch fixes the problem by properly reserving space,\nand then just freeing it when we are done.  The reservation stuff was made with\ndelalloc in mind, so its a little crude for this case, but it keeps the box\nfrom panicing.\n\nSigned-off-by: Josef Bacik \u003cjbacik@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "72c04902d1e27c8a324014cff1d4475c11b1cecd",
      "tree": "3e93abdd0a3eeedd6df5a1dc43170744f2fa7664",
      "parents": [
        "641cf4a668e9e69d2bc061e953422ff72a91f86e"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jun 24 16:58:48 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jun 24 16:58:48 2009 -0400"
      },
      "message": "Get \"no acls for this inode\" right, fix shmem breakage\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "5affd88a104af43f0063a12ad1ee4c7a587945dc",
      "tree": "95c727eac8669bd346f937b8be2d58ef716a2fe5",
      "parents": [
        "290c263bf83cd78e53b1aa3b42165f588163f2be"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 08 19:55:32 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jun 24 08:17:05 2009 -0400"
      },
      "message": "switch btrfs to inode-\u003ei_acl\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "59d697b70285c348c01cfc2695c3469ba71d7539",
      "tree": "e383e5a2c0fc6196bed269aac032d3e363e9c4f7",
      "parents": [
        "c3f8a40c1cd5591b882497d1d00d43d0e5bb4698"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Mon Apr 27 09:46:41 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jun 11 21:36:05 2009 -0400"
      },
      "message": "btrfs: remove -\u003ewrite_super and stop maintaining -\u003es_dirt\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "6cbff00f4632c8060b06bfc9585805217f11e12e",
      "tree": "1886c4c855662172b84be2bfbd2aa5ac6a5c429d",
      "parents": [
        "c289811cc096c57ff35550ee8132793a4f9b5b59"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Apr 17 10:37:41 2009 +0200"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jun 10 11:29:52 2009 -0400"
      },
      "message": "Btrfs: implement FS_IOC_GETFLAGS/SETFLAGS/GETVERSION\n\nAdd support for the standard attributes set via chattr and read via\nlsattr.  Currently we store the attributes in the flags value in\nthe btrfs inode, but I wonder whether we should split it into two so\nthat we don\u0027t have to keep converting between the two formats.\n\nRemove the btrfs_clear_flag/btrfs_set_flag/btrfs_test_flag macros\nas they were confusing the existing code and got in the way of the\nnew additions.\n\nAlso add the FS_IOC_GETVERSION ioctl for getting i_generation as it\u0027s\ntrivial.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "5d4f98a28c7d334091c1b7744f48a1acdd2a4ae0",
      "tree": "c611d7d824cbcdb777dd2d8e33e2ed1c5df8a9c6",
      "parents": [
        "5c939df56c3ea018b58e5aa76181284c2053d699"
      ],
      "author": {
        "name": "Yan Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Wed Jun 10 10:45:14 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jun 10 11:29:46 2009 -0400"
      },
      "message": "Btrfs: Mixed back reference  (FORWARD ROLLING FORMAT CHANGE)\n\nThis commit introduces a new kind of back reference for btrfs metadata.\nOnce a filesystem has been mounted with this commit, IT WILL NO LONGER\nBE MOUNTABLE BY OLDER KERNELS.\n\nWhen a tree block in subvolume tree is cow\u0027d, the reference counts of all\nextents it points to are increased by one.  At transaction commit time,\nthe old root of the subvolume is recorded in a \"dead root\" data structure,\nand the btree it points to is later walked, dropping reference counts\nand freeing any blocks where the reference count goes to 0.\n\nThe increments done during cow and decrements done after commit cancel out,\nand the walk is a very expensive way to go about freeing the blocks that\nare no longer referenced by the new btree root.  This commit reduces the\ntransaction overhead by avoiding the need for dead root records.\n\nWhen a non-shared tree block is cow\u0027d, we free the old block at once, and the\nnew block inherits old block\u0027s references. When a tree block with reference\ncount \u003e 1 is cow\u0027d, we increase the reference counts of all extents\nthe new block points to by one, and decrease the old block\u0027s reference count by\none.\n\nThis dead tree avoidance code removes the need to modify the reference\ncounts of lower level extents when a non-shared tree block is cow\u0027d.\nBut we still need to update back ref for all pointers in the block.\nThis is because the location of the block is recorded in the back ref\nitem.\n\nWe can solve this by introducing a new type of back ref. The new\nback ref provides information about pointer\u0027s key, level and in which\ntree the pointer lives. This information allow us to find the pointer\nby searching the tree. The shortcoming of the new back ref is that it\nonly works for pointers in tree blocks referenced by their owner trees.\n\nThis is mostly a problem for snapshots, where resolving one of these\nfuzzy back references would be O(number_of_snapshots) and quite slow.\nThe solution used here is to use the fuzzy back references in the common\ncase where a given tree block is only referenced by one root,\nand use the full back references when multiple roots have a reference\non a given block.\n\nThis commit adds per subvolume red-black tree to keep trace of cached\ninodes. The red-black tree helps the balancing code to find cached\ninodes whose inode numbers within a given range.\n\nThis commit improves the balancing code by introducing several data\nstructures to keep the state of balancing. The most important one\nis the back ref cache. It caches how the upper level tree blocks are\nreferenced. This greatly reduce the overhead of checking back ref.\n\nThe improved balancing code scales significantly better with a large\nnumber of snapshots.\n\nThis is a very large commit and was written in a number of\npieces.  But, they depend heavily on the disk format change and were\nsquashed together to make sure git bisect didn\u0027t end up in a\nbad state wrt space balancing or the format change.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "cc7b0c9b701a079016183f3546b4d720194b367f",
      "tree": "a68f31ebb251158dd977c84f33a35a38728fe8aa",
      "parents": [
        "76a05b35a320e8c968d0fec8f512a1acae227309"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu May 14 13:31:21 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu May 14 14:00:33 2009 -0400"
      },
      "message": "Btrfs: remove some WARN_ONs in the IO failure path\n\nThese debugging WARN_ONs make too much console noise during regular\nIO failures.  An IO failure will still generate a number of messages\nas we verify checksums etc, but these two are not needed.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "2757495c906113896b378bf084708846273c87b2",
      "tree": "883ae5bc6acd77cc9d1ce0932757827506664341",
      "parents": [
        "46a53cca826e71effe59e3cb4f383622c33ebdcb"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu May 14 13:10:02 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu May 14 14:00:31 2009 -0400"
      },
      "message": "Btrfs: init inode ordered_data_close flag properly\n\nThis flag is used to decide when we need to send a given file through\nthe ordered code to make sure it is fully written before a transaction\ncommits.  It was not being properly set to zero when the inode was\nbeing setup.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "46a53cca826e71effe59e3cb4f383622c33ebdcb",
      "tree": "8786a00a80e55862c58785ff40c0d98dc53c194a",
      "parents": [
        "7b1a14bbb0e547aaa4d30cc376e6c8c12539ab0f"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Apr 27 11:47:50 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Apr 27 13:18:35 2009 -0400"
      },
      "message": "Btrfs: look for acls during btrfs_read_locked_inode\n\nThis changes btrfs_read_locked_inode() to peek ahead in the btree for acl items.\nIf it is certain a given inode has no acls, it will set the in memory acl\nfields to null to avoid acl lookups completely.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "7b1a14bbb0e547aaa4d30cc376e6c8c12539ab0f",
      "tree": "80b75191277afe05201fab3e3d1bc50884444626",
      "parents": [
        "21380931eb4da4e29ac663d0221581282cbba208"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Apr 27 10:49:53 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Apr 27 13:18:26 2009 -0400"
      },
      "message": "Btrfs: fix acl caching\n\nLinus noticed the btrfs code to cache acls wasn\u0027t properly caching\na NULL acl when the inode didn\u0027t have any acls.  This meant the common\ncase of no acls resulted in expensive btree searches every time the\nkernel checked permissions (which is quite often).\n\nThis is a modified version of Linus\u0027 original patch:\n\nProperly set initial acl fields to BTRFS_ACL_NOT_CACHED in the inode.\nThis forces an acl lookup when permission checks are done.\n\nFix btrfs_get_acl to avoid lookups and locking when the inode acls fields\nare set to null.\n\nFix btrfs_get_acl to use the right return value from __btrfs_getxattr\nwhen deciding to cache a NULL acl.  It was storing a NULL acl when\n__btrfs_getxattr return -ENOENT, but __btrfs_getxattr was actually returning\n-ENODATA for this case.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "45c06543afe2772c02f21efee0e2138b4e1c911e",
      "tree": "16ccc5158564c0e1de7764a4284f59eeb5a1a822",
      "parents": [
        "193f284d4985db0370a8a1bbdfb20df548cf9ffb"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Apr 27 07:49:10 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Apr 27 08:37:48 2009 -0400"
      },
      "message": "Btrfs: remove unused btrfs_bit_radix slab\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "193f284d4985db0370a8a1bbdfb20df548cf9ffb",
      "tree": "dfa8aec1c8000e5e00deb4eee4dc385a405d74a6",
      "parents": [
        "b7967db75a38df4891b22efe1b0969b9357eb946"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Apr 27 07:29:05 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Apr 27 07:41:47 2009 -0400"
      },
      "message": "Btrfs: ratelimit IO error printks\n\nBtrfs has printks for various IO errors, including bad checksums and\nmismatches between what we expect the block headers to contain and what\nwe actually find on the disk.\n\nLonger term we need a real reporting mechanism for this, but for now\nprintk is going to have to do.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "e980b50cda1610f1c17978d9b7fd311a9dd93877",
      "tree": "a5ab72fa4b791758e25fd6ece6f1aedd29954e7b",
      "parents": [
        "9601e3f6336f6ca66929f451b1f66085e68e36e3"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Apr 24 14:39:24 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Apr 24 15:46:05 2009 -0400"
      },
      "message": "Btrfs: fix fallocate deadlock on inode extent lock\n\nThe btrfs fallocate call takes an extent lock on the entire range\nbeing fallocated, and then runs through insert_reserved_extent on each\nextent as they are allocated.\n\nThe problem with this is that btrfs_drop_extents may decide to try\nand take the same extent lock fallocate was already holding.  The solution\nused here is to push down knowledge of the range that is already locked\ngoing into btrfs_drop_extents.\n\nIt turns out that at least one other caller had the same bug.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "9601e3f6336f6ca66929f451b1f66085e68e36e3",
      "tree": "002308d56cb1947490d691fdf9a8ea74e48d8672",
      "parents": [
        "0d4bf11e5309eff64272a49e1ea55658372abc56"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Mon Apr 13 15:33:09 2009 +0200"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Apr 24 15:46:04 2009 -0400"
      },
      "message": "Btrfs: kill btrfs_cache_create\n\nJust use kmem_cache_create directly.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "546888da82082555a56528730a83f0afd12f33bf",
      "tree": "98ee868d1b8a4bd390a980fed707f91419b79fb5",
      "parents": [
        "8c594ea81d7abbbffdda447b127f8ba8d76f319d"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Apr 21 11:53:38 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Apr 21 12:45:12 2009 -0400"
      },
      "message": "Btrfs: fix btrfs fallocate oops and deadlock\n\nBtrfs fallocate was incorrectly starting a transaction with a lock held\non the extent_io tree for the file, which could deadlock.  Strictly\nspeaking it was using join_transaction which would be safe, but it is better\nto move the transaction outside of the lock.\n\nWhen preallocated extents are overwritten, btrfs_mark_buffer_dirty was\nbeing called on an unlocked buffer.  This was triggering an assertion and\noops because the lock is supposed to be held.\n\nThe bug was calling btrfs_mark_buffer_dirty on a leaf after btrfs_del_item had\nbeen run.  btrfs_del_item takes care of dirtying things, so the solution is a\nto skip the btrfs_mark_buffer_dirty call in this case.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "b983471794e568fd71fa767da77a62ba517c3e63",
      "tree": "92a1cc26c4846b49d90225d004ba1b7bd6fe3d81",
      "parents": [
        "5a3ae276057840f0e60664c12fc3ef80aa59d1d4",
        "c293498be69816087746161338de4b81efdf69fc"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 03 15:14:44 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 03 15:14:44 2009 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable:\n  Btrfs: BUG to BUG_ON changes\n  Btrfs: remove dead code\n  Btrfs: remove dead code\n  Btrfs: fix typos in comments\n  Btrfs: remove unused ftrace include\n  Btrfs: fix __ucmpdi2 compile bug on 32 bit builds\n  Btrfs: free inode struct when btrfs_new_inode fails\n  Btrfs: fix race in worker_loop\n  Btrfs: add flushoncommit mount option\n  Btrfs: notreelog mount option\n  Btrfs: introduce btrfs_show_options\n  Btrfs: rework allocation clustering\n  Btrfs: Optimize locking in btrfs_next_leaf()\n  Btrfs: break up btrfs_search_slot into smaller pieces\n  Btrfs: kill the pinned_mutex\n  Btrfs: kill the block group alloc mutex\n  Btrfs: clean up find_free_extent\n  Btrfs: free space cache cleanups\n  Btrfs: unplug in the async bio submission threads\n  Btrfs: keep processing bios for a given bdev if our proc is batching\n"
    },
    {
      "commit": "09771430f3b46ee27c69daa7ecad82007568e834",
      "tree": "eb51c0f62c3c0672102cf53a731ca6ed68e1be49",
      "parents": [
        "b5555f77115bfba3630fefff2d4e68140b644171"
      ],
      "author": {
        "name": "Shen Feng",
        "email": "shen@cn.fujitsu.com",
        "time": "Thu Apr 02 16:46:06 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Apr 02 16:46:06 2009 -0400"
      },
      "message": "Btrfs: free inode struct when btrfs_new_inode fails\n\nbtrfs_new_inode doesn\u0027t call iput to free the inode\nwhen it fails.\n\nSigned-off-by: Shen Feng \u003cshen@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n\n"
    },
    {
      "commit": "c226fd659fa7b6a7b038df5ae6856a68514bacde",
      "tree": "a695689d4d8cdd927400747b94250521eb863686",
      "parents": [
        "c09bca786ff941ed17c5f381c4eca5b106808c51",
        "d57e62b89796f751c9422801cbcd407a9f8dcdc4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 10:20:44 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 10:20:44 2009 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable:\n  Btrfs: try to free metadata pages when we free btree blocks\n  Btrfs: add extra flushing for renames and truncates\n  Btrfs: make sure btrfs_update_delayed_ref doesn\u0027t increase ref_mod\n  Btrfs: optimize fsyncs on old files\n  Btrfs: tree logging unlink/rename fixes\n  Btrfs: Make sure i_nlink doesn\u0027t hit zero too soon during log replay\n  Btrfs: limit balancing work while flushing delayed refs\n  Btrfs: readahead checksums during btrfs_finish_ordered_io\n  Btrfs: leave btree locks spinning more often\n  Btrfs: Only let very young transactions grow during commit\n  Btrfs: Check for a blocking lock before taking the spin\n  Btrfs: reduce stack in cow_file_range\n  Btrfs: reduce stalls during transaction commit\n  Btrfs: process the delayed reference queue in clusters\n  Btrfs: try to cleanup delayed refs while freeing extents\n  Btrfs: reduce stack usage in some crucial tree balancing functions\n  Btrfs: do extent allocation and reference count updates in the background\n  Btrfs: don\u0027t preallocate metadata blocks during btrfs_search_slot\n"
    },
    {
      "commit": "56a76f8275c379ed73c8a43cfa1dfa2f5e9cfa19",
      "tree": "cbeaa82516c4818f72535b6ebe48a607cef88af4",
      "parents": [
        "c2ec175c39f62949438354f603f4aa170846aabb"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Mar 31 15:23:23 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:14 2009 -0700"
      },
      "message": "fs: fix page_mkwrite error cases in core code and btrfs\n\npage_mkwrite is called with neither the page lock nor the ptl held.  This\nmeans a page can be concurrently truncated or invalidated out from\nunderneath it.  Callers are supposed to prevent truncate races themselves,\nhowever previously the only thing they can do in case they hit one is to\nraise a SIGBUS.  A sigbus is wrong for the case that the page has been\ninvalidated or truncated within i_size (eg.  hole punched).  Callers may\nalso have to perform memory allocations in this path, where again, SIGBUS\nwould be wrong.\n\nThe previous patch (\"mm: page_mkwrite change prototype to match fault\")\nmade it possible to properly specify errors.  Convert the generic buffer.c\ncode and btrfs to return sane error values (in the case of page removed\nfrom pagecache, VM_FAULT_NOPAGE will cause the fault handler to exit\nwithout doing anything, and the fault will be retried properly).\n\nThis fixes core code, and converts btrfs as a template/example.  All other\nfilesystems defining their own page_mkwrite should be fixed in a similar\nmanner.\n\nAcked-by: Chris Mason \u003cchris.mason@oracle.com\u003e\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "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": "5a3f23d515a2ebf0c750db80579ca57b28cbce6d",
      "tree": "e0ffb43dd35f1c3def9a74ec7a6f4470902c9761",
      "parents": [
        "1a81af4d1d9c60d4313309f937a1fc5567205a87"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Mar 31 13:27:11 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Mar 31 14:27:58 2009 -0400"
      },
      "message": "Btrfs: add extra flushing for renames and truncates\n\nRenames and truncates are both common ways to replace old data with new\ndata.  The filesystem can make an effort to make sure the new data is\non disk before actually replacing the old data.\n\nThis is especially important for rename, which many application use as\nthough it were atomic for both the data and the metadata involved.  The\ncurrent btrfs code will happily replace a file that is fully on disk\nwith one that was just created and still has pending IO.\n\nIf we crash after transaction commit but before the IO is done, we\u0027ll end\nup replacing a good file with a zero length file.  The solution used\nhere is to create a list of inodes that need special ordering and force\nthem to disk before the commit is done.  This is similar to the\next3 style data\u003dordering, except it is only done on selected files.\n\nBtrfs is able to get away with this because it does not wait on commits\nvery often, even for fsync (which use a sub-commit).\n\nFor renames, we order the file when it wasn\u0027t already\non disk and when it is replacing an existing file.  Larger files\nare sent to filemap_flush right away (before the transaction handle is\nopened).\n\nFor truncates, we order if the file goes from non-zero size down to\nzero size.  This is a little different, because at the time of the\ntruncate the file has no dirty bytes to order.  But, we flag the inode\nso that it is added to the ordered list on close (via release method).  We\nalso immediately add it to the ordered list of the current transaction\nso that we can try to flush down any writes the application sneaks in\nbefore commit.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "12fcfd22fe5bf4fe74710232098bc101af497995",
      "tree": "b01ba82147ea76c89149e54d475ed97121387261",
      "parents": [
        "a74ac3220774d33db967088906dc3351829e2d3a"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Mar 24 10:24:20 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Mar 24 16:14:52 2009 -0400"
      },
      "message": "Btrfs: tree logging unlink/rename fixes\n\nThe tree logging code allows individual files or directories to be logged\nwithout including operations on other files and directories in the FS.\nIt tries to commit the minimal set of changes to disk in order to\nfsync the single file or directory that was sent to fsync or O_SYNC.\n\nThe tree logging code was allowing files and directories to be unlinked\nif they were part of a rename operation where only one directory\nin the rename was in the fsync log.  This patch adds a few new rules\nto the tree logging.\n\n1) on rename or unlink, if the inode being unlinked isn\u0027t in the fsync\nlog, we must force a full commit before doing an fsync of the directory\nwhere the unlink was done.  The commit isn\u0027t done during the unlink,\nbut it is forced the next time we try to log the parent directory.\n\nSolution: record transid of last unlink/rename per directory when the\ndirectory wasn\u0027t already logged.  For renames this is only done when\nrenaming to a different directory.\n\nmkdir foo/some_dir\nnormal commit\nrename foo/some_dir foo2/some_dir\nmkdir foo/some_dir\nfsync foo/some_dir/some_file\n\nThe fsync above will unlink the original some_dir without recording\nit in its new location (foo2).  After a crash, some_dir will be gone\nunless the fsync of some_file forces a full commit\n\n2) we must log any new names for any file or dir that is in the fsync\nlog.  This way we make sure not to lose files that are unlinked during\nthe same transaction.\n\n2a) we must log any new names for any file or dir during rename\nwhen the directory they are being removed from was logged.\n\n2a is actually the more important variant.  Without the extra logging\na crash might unlink the old name without recreating the new one\n\n3) after a crash, we must go through any directories with a link count\nof zero and redo the rm -rf\n\nmkdir f1/foo\nnormal commit\nrm -rf f1/foo\nfsync(f1)\n\nThe directory f1 was fully removed from the FS, but fsync was never\ncalled on f1, only its parent dir.  After a crash the rm -rf must\nbe replayed.  This must be able to recurse down the entire\ndirectory tree.  The inode link count fixup code takes care of the\nugly details.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "5d13a98f3bf5afc1113f7db184c627a44659bc29",
      "tree": "1b9e7f2ed6047e9f471fd6f3b9e665c74dd5910b",
      "parents": [
        "b9473439d3e84d9fc1a0a83faca69cc1b7566341"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Mar 13 11:41:46 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Mar 24 16:14:51 2009 -0400"
      },
      "message": "Btrfs: readahead checksums during btrfs_finish_ordered_io\n\nThis reads in blocks in the checksum btree before starting the\ntransaction in btrfs_finish_ordered_io.  It makes it much more likely\nwe\u0027ll be able to do operations inside the transaction without\nneeding any btree reads, which limits transaction latencies overall.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "b9473439d3e84d9fc1a0a83faca69cc1b7566341",
      "tree": "bef8321b80589026b617d61d0fabaf545d459269",
      "parents": [
        "89573b9c516b24af8a3b9958dd5afca8fa874e3d"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Mar 13 11:00:37 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Mar 24 16:14:28 2009 -0400"
      },
      "message": "Btrfs: leave btree locks spinning more often\n\nbtrfs_mark_buffer dirty would set dirty bits in the extent_io tree\nfor the buffers it was dirtying.  This may require a kmalloc and it\nwas not atomic.  So, anyone who called btrfs_mark_buffer_dirty had to\nset any btree locks they were holding to blocking first.\n\nThis commit changes dirty tracking for extent buffers to just use a flag\nin the extent buffer.  Now that we have one and only one extent buffer\nper page, this can be safely done without losing dirty bits along the way.\n\nThis also introduces a path-\u003eleave_spinning flag that callers of\nbtrfs_search_slot can use to indicate they will properly deal with a\npath returned where all the locks are spinning instead of blocking.\n\nMany of the btree search callers now expect spinning paths,\nresulting in better btree concurrency overall.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "7f366cfecfc126731f8ac505d72026d691dac79a",
      "tree": "72541fb0c7c891989c2d279c4e26beea2abbca73",
      "parents": [
        "b7ec40d7845bffca8bb3af2ea3f192d6257bbe21"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Mar 12 20:12:45 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Mar 24 16:14:27 2009 -0400"
      },
      "message": "Btrfs: reduce stack in cow_file_range\n\nThe fs/btrfs/inode.c code to run delayed allocation during writout\nneeded some stack usage optimization.  This is the first pass, it does\nthe check for compression earlier on, which allows us to do the common\n(no compression) case higher up in the call chain.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "b7ec40d7845bffca8bb3af2ea3f192d6257bbe21",
      "tree": "65b833b979417d36f0fd26d647573de1df0646b9",
      "parents": [
        "c3e69d58e86c3917ae4e9e31b4acf490a7cafe60"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Mar 12 20:12:45 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Mar 24 16:14:26 2009 -0400"
      },
      "message": "Btrfs: reduce stalls during transaction commit\n\nTo avoid deadlocks and reduce latencies during some critical operations, some\ntransaction writers are allowed to jump into the running transaction and make\nit run a little longer, while others sit around and wait for the commit to\nfinish.\n\nThis is a bit unfair, especially when the callers that jump in do a bunch\nof IO that makes all the others procs on the box wait.  This commit\nreduces the stalls this produces by pre-reading file extent pointers\nduring btrfs_finish_ordered_io before the transaction is joined.\n\nIt also tunes the drop_snapshot code to politely wait for transactions\nthat have started writing out their delayed refs to finish.  This avoids\nnew delayed refs being flooded into the queue while we\u0027re trying to\nclose off the transaction.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "6a63209fc02d5483371f07e4913ee8abad608051",
      "tree": "7595e0df452928b677b66a64baf0cb3b7ec53dfc",
      "parents": [
        "2cfbd50b536c878e58ab3681c4e944fa3d99b415"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "jbacik@redhat.com",
        "time": "Fri Feb 20 11:00:09 2009 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Feb 20 11:00:09 2009 -0500"
      },
      "message": "Btrfs: add better -ENOSPC handling\n\nThis is a step in the direction of better -ENOSPC handling.  Instead of\nchecking the global bytes counter we check the space_info bytes counters to\nmake sure we have enough space.\n\nIf we don\u0027t we go ahead and try to allocate a new chunk, and then if that fails\nwe return -ENOSPC.  This patch adds two counters to btrfs_space_info,\nbytes_delalloc and bytes_may_use.\n\nbytes_delalloc account for extents we\u0027ve actually setup for delalloc and will\nbe allocated at some point down the line. \n\nbytes_may_use is to keep track of how many bytes we may use for delalloc at\nsome point.  When we actually set the extent_bit for the delalloc bytes we\nsubtract the reserved bytes from the bytes_may_use counter.  This keeps us from\nnot actually being able to allocate space for any delalloc bytes.\n\nSigned-off-by: Josef Bacik \u003cjbacik@redhat.com\u003e\n\n\n\n\n"
    },
    {
      "commit": "e00f7308658622fbd483cb0d9fe41165bf9050d0",
      "tree": "5baeaee96a3d6789f4cce2ca17d7f4f8afb3431e",
      "parents": [
        "7951f3cefbd711f4429a0cd014aa83a844c399a0"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Thu Feb 12 14:11:25 2009 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Feb 12 14:11:25 2009 -0500"
      },
      "message": "Btrfs: remove btrfs_init_path\n\nbtrfs_init_path was initially used when the path objects were on the\nstack.  Now all the work is done by btrfs_alloc_path and btrfs_init_path\nisn\u0027t required.\n\nThis patch removes it, and just uses kmem_cache_zalloc to zero out the object.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n\n"
    },
    {
      "commit": "b335b0034e252e79ec2e9c6697f5d663c4627bec",
      "tree": "f99286083d21fdc298b50d3d47dc96a9f1f54bb8",
      "parents": [
        "e1df36d2f18254d0690a0fbe036cece74ec311b8"
      ],
      "author": {
        "name": "Yan Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Thu Feb 12 10:06:04 2009 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Feb 12 10:06:04 2009 -0500"
      },
      "message": "Btrfs: Avoid using __GFP_HIGHMEM with slab allocator\n\nbtrfs_releasepage may call kmem_cache_alloc indirectly,\nand provide same GFP flags it gets to kmem_cache_alloc.\nSo it\u0027s possible to use __GFP_HIGHMEM with the slab\nallocator.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\n\n"
    },
    {
      "commit": "42f15d77df8a7e8a2feb15041d5d30710ee7f951",
      "tree": "5b6a3cdaab135c41848952874a6fab086b8b9f72",
      "parents": [
        "806638bce99f51deccbfedbe86ab3c5cf55a1d35"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Feb 06 11:35:57 2009 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Feb 06 11:35:57 2009 -0500"
      },
      "message": "Btrfs: Make sure dir is non-null before doing S_ISGID checks\n\nThe S_ISGID check in btrfs_new_inode caused an oops during subvol creation\nbecause sometimes the dir is null.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "06d9a8d7c24fe22836bf0b0f82db59d6f98e271e",
      "tree": "b6cc453c21c2cb38f8a4b10401bec8652c75a83f",
      "parents": [
        "f03d9301f15fb69cdf1eb59d53c9fb72f68ecccc"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Feb 04 09:30:58 2009 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Feb 04 09:30:58 2009 -0500"
      },
      "message": "Btrfs: Change btrfs_truncate_inode_items to stop when it hits the inode\n\nbtrfs_truncate_inode_items is setup to stop doing btree searches when\nit has finished removing the items for the inode.  It used to detect the\nend of the inode by looking for an objectid that didn\u0027t match the\none we were searching for.\n\nBut, this would result in an extra search through the btree, which\nadds extra balancing and cow costs to the operation.\n\nThis commit adds a check to see if we found the inode item, which means\nwe can stop searching early.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f03d9301f15fb69cdf1eb59d53c9fb72f68ecccc",
      "tree": "2299a89d213e9fa5f616a5bb0b2125a3c632da97",
      "parents": [
        "811449496b3e3caa9a8cf43feacbade0153324f2"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Feb 04 09:31:06 2009 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Feb 04 09:31:06 2009 -0500"
      },
      "message": "Btrfs: Don\u0027t try to compress pages past i_size\n\nThe compression code had some checks to make sure we were only\ncompressing bytes inside of i_size, but it wasn\u0027t catching every\ncase.  To make things worse, some incorrect math about the number\nof bytes remaining would make it try to compress more pages than the\nfile really had.\n\nThe fix used here is to fall back to the non-compression code in this\ncase, which does all the proper cleanup of delalloc and other accounting.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "8c087b5183adab186a298f2d6ed39aefdcae413c",
      "tree": "ee0ee85c27516f24d4456efed5f8561ee34b82f0",
      "parents": [
        "bd56b30205bc09da0beb80d4ba3d4c7309792da5"
      ],
      "author": {
        "name": "Chris Ball",
        "email": "cjb@laptop.org",
        "time": "Wed Feb 04 09:29:54 2009 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Feb 04 09:29:54 2009 -0500"
      },
      "message": "Btrfs: Handle SGID bit when creating inodes\nBefore this patch, new files/dirs would ignore the SGID bit on their\nparent directory and always be owned by the creating user\u0027s uid/gid.\n\nSigned-off-by: Chris Ball \u003ccjb@laptop.org\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n\n\n"
    },
    {
      "commit": "bd56b30205bc09da0beb80d4ba3d4c7309792da5",
      "tree": "a5cb3104687b27e923b73b2840f053abc1229a92",
      "parents": [
        "b4ce94de9b4d64e8ab3cf155d13653c666e22b9b"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Feb 04 09:27:02 2009 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Feb 04 09:27:02 2009 -0500"
      },
      "message": "Btrfs: Make btrfs_drop_snapshot work in larger and more efficient chunks\n\nEvery transaction in btrfs creates a new snapshot, and then schedules the\nsnapshot from the last transaction for deletion.  Snapshot deletion\nworks by walking down the btree and dropping the reference counts\non each btree block during the walk.\n\nIf if a given leaf or node has a reference count greater than one,\nthe reference count is decremented and the subtree pointed to by that\nnode is ignored.\n\nIf the reference count is one, walking continues down into that node\nor leaf, and the references of everything it points to are decremented.\n\nThe old code would try to work in small pieces, walking down the tree\nuntil it found the lowest leaf or node to free and then returning.  This\nwas very friendly to the rest of the FS because it didn\u0027t have a huge\nimpact on other operations.\n\nBut it wouldn\u0027t always keep up with the rate that new commits added new\nsnapshots for deletion, and it wasn\u0027t very optimal for the extent\nallocation tree because it wasn\u0027t finding leaves that were close together\non disk and processing them at the same time.\n\nThis changes things to walk down to a level 1 node and then process it\nin bulk.  All the leaf pointers are sorted and the leaves are dropped\nin order based on their extent number.\n\nThe extent allocation tree and commit code are now fast enough for\nthis kind of bulk processing to work without slowing the rest of the FS\ndown.  Overall it does less IO and is better able to keep up with\nsnapshot deletions under high load.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "b4ce94de9b4d64e8ab3cf155d13653c666e22b9b",
      "tree": "ebc44a9554a50b495b091cb0979d79fd29e50fe7",
      "parents": [
        "c487685d7c18a8481900755aa5c56a7a74193101"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Feb 04 09:25:08 2009 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Feb 04 09:25:08 2009 -0500"
      },
      "message": "Btrfs: Change btree locking to use explicit blocking points\n\nMost of the btrfs metadata operations can be protected by a spinlock,\nbut some operations still need to schedule.\n\nSo far, btrfs has been using a mutex along with a trylock loop,\nmost of the time it is able to avoid going for the full mutex, so\nthe trylock loop is a big performance gain.\n\nThis commit is step one for getting rid of the blocking locks entirely.\nbtrfs_tree_lock takes a spinlock, and the code explicitly switches\nto a blocking lock when it starts an operation that can schedule.\n\nWe\u0027ll be able get rid of the blocking locks in smaller pieces over time.\nTracing allows us to find the most common cause of blocking, so we\ncan start with the hot spots first.\n\nThe basic idea is:\n\nbtrfs_tree_lock() returns with the spin lock held\n\nbtrfs_set_lock_blocking() sets the EXTENT_BUFFER_BLOCKING bit in\nthe extent buffer flags, and then drops the spin lock.  The buffer is\nstill considered locked by all of the btrfs code.\n\nIf btrfs_tree_lock gets the spinlock but finds the blocking bit set, it drops\nthe spin lock and waits on a wait queue for the blocking bit to go away.\n\nMuch of the code that needs to set the blocking bit finishes without actually\nblocking a good percentage of the time.  So, an adaptive spin is still\nused against the blocking bit to avoid very high context switch rates.\n\nbtrfs_clear_lock_blocking() clears the blocking bit and returns\nwith the spinlock held again.\n\nbtrfs_tree_unlock() can be called on either blocking or spinning locks,\nit does the right thing based on the blocking bit.\n\nctree.c has a helper function to set/clear all the locked buffers in a\npath as blocking.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "0279b4cd86685b5eea467c1b74ce94f0add2c0a3",
      "tree": "54caafd4c6b31e2bc9861217627297c00af89066",
      "parents": [
        "bef62ef339c15d7721da88958b03f7b544464722"
      ],
      "author": {
        "name": "Jim Owens",
        "email": "jowens@hp.com",
        "time": "Wed Feb 04 09:29:13 2009 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Feb 04 09:29:13 2009 -0500"
      },
      "message": "Btrfs: selinux support\nAdd call to LSM security initialization and save\nresulting security xattr for new inodes.\n\nAdd xattr support to symlink inode ops.\n\nSet inode-\u003ei_op for existing special files.\n\nSigned-off-by: jim owens \u003cjowens@hp.com\u003e\n"
    },
    {
      "commit": "89f135d8b53bcccafd91a075366d2704ba257cf3",
      "tree": "8355edb91b7f0345ab7698dee0f0478f571aa090",
      "parents": [
        "e4f722fa42537bcb0ff14322a57dc3870d093cab"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jan 28 15:34:27 2009 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jan 28 15:34:27 2009 -0500"
      },
      "message": "Btrfs: fix readdir on 32 bit machines\n\nAfter btrfs_readdir has gone through all the directory items, it\nsets the directory f_pos to the largest possible int.  This way\napplications that mix readdir with creating new files don\u0027t\nend up in an endless loop finding the new directory items as they go.\n\nIt was a workaround for a bug in git, but the assumption was that if git\ncould make this looping mistake than it would be a common problem.\n\nThe largest possible int chosen was INT_LIMIT(typeof(file-\u003ef_pos),\nand it is possible for that to be a larger number than 32 bit glibc\nexpects to come out of readdir.\n\nThis patches switches that to INT_LIMIT(off_t), which should keep\napplications happy on 32 and 64 bit machines.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n\n"
    },
    {
      "commit": "1506fcc8189cdd4b95e06df7845a09f18b4526a6",
      "tree": "bf737082390c26c517d7449135045e3f6d4ba055",
      "parents": [
        "35054394c4b3cecd52577c2662c84da1f3e73525"
      ],
      "author": {
        "name": "Yehuda Sadeh",
        "email": "yehuda@hq.newdream.net",
        "time": "Wed Jan 21 14:39:14 2009 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jan 21 14:39:14 2009 -0500"
      },
      "message": "Btrfs: fiemap support\n\nNow that bmap support is gone, this is the only way to get extent\nmappings for userland.  These are still not valid for IO, but they\ncan tell us if a file has holes or how much fragmentation there is.\n\nSigned-off-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\n\n"
    },
    {
      "commit": "35054394c4b3cecd52577c2662c84da1f3e73525",
      "tree": "83e6e361357a17851a11a97b6984b4c0c0f2ced9",
      "parents": [
        "7237f1833601dcc435a64176c2c347ec4bd959f9"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jan 21 13:11:13 2009 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jan 21 13:11:13 2009 -0500"
      },
      "message": "Btrfs: stop providing a bmap operation to avoid swapfile corruptions\n\nSwapfiles use bmap to build a list of extents belonging to the file,\nand they assume these extents won\u0027t change over the life of the file.\nThey also use resulting list to do IO directly to the block device.\n\nThis causes problems for btrfs in a few ways:\n\nbtrfs returns logical block numbers through bmap, and these are not suitable\nfor IO.  They might translate to different devices, raid etc.\n\nCOW means that file block mappings are going to change frequently.\n\nUsing swapfiles on btrfs will lead to corruption, so we\u0027re avoiding the\nproblem for now by dropping bmap support entirely.  A later commit\nwill add fiemap support for people that really want to know how\na file is laid out.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n\n"
    },
    {
      "commit": "c6e308713a47527f88a277ee95b7c5d1db80f77b",
      "tree": "0a890bb3ac2ae1bb8733cf8679d1441e1b85eb81",
      "parents": [
        "57506d50ed6db7b0e7ddc9845e86e81f140983d5"
      ],
      "author": {
        "name": "Qinghuang Feng",
        "email": "qhfeng.kernel@gmail.com",
        "time": "Wed Jan 21 10:59:08 2009 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jan 21 10:59:08 2009 -0500"
      },
      "message": "Btrfs: simplify iteration codes\n\nMerge list_for_each* and list_entry to list_for_each_entry*\n\nSigned-off-by: Qinghuang Feng \u003cqhfeng.kernel@gmail.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n\n"
    },
    {
      "commit": "7eaebe7d503c3ef240ac7b3efc5433fe647c0298",
      "tree": "6e54b7766559555d3a4e205a0524a4df02f6cf5b",
      "parents": [
        "070604040b86511cc2df0f25f98e26c5529bd928"
      ],
      "author": {
        "name": "Huang Weiyi",
        "email": "weiyi.huang@gmail.com",
        "time": "Wed Jan 21 10:49:16 2009 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jan 21 10:49:16 2009 -0500"
      },
      "message": "Btrfs: removed unused #include \u003cversion.h\u003e\u0027s\n\nRemoved unused #include \u003cversion.h\u003e\u0027s in btrfs\n\nSigned-off-by: Huang Weiyi \u003cweiyi.huang@gmail.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n\n"
    },
    {
      "commit": "9ab86c8e01c3f298dba0cbf2502c635b7f6fc6f9",
      "tree": "4404dc71b5987f240fa8e59d24586304d04d8810",
      "parents": [
        "cc7172defcf253335b16cf703fe4ac1ade15e1b1"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jan 07 09:48:51 2009 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jan 07 09:48:51 2009 -0500"
      },
      "message": "Btrfs: kmap_atomic(KM_USER0) is safe for btrfs_readpage_end_io_hook\n\nNone of the checksum verification code schedules, so we can use the faster\nkmap_atomic\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "cc7172defcf253335b16cf703fe4ac1ade15e1b1",
      "tree": "995f5404304502a0cb13f5fd4b7be24e42f19244",
      "parents": [
        "07d400a6df4767a90d49a153fdb7f4cfa1e3f23e"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Jan 06 13:26:40 2009 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Jan 06 13:26:40 2009 -0500"
      },
      "message": "Btrfs: Don\u0027t use kmap_atomic(..., KM_IRQ0) during checksum verifies\n\nChecksum verification happens in a helper thread, and there is no\nneed to mess with interrupts.  This switches to kmap() instead.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "07d400a6df4767a90d49a153fdb7f4cfa1e3f23e",
      "tree": "8ca61bb87ffb72343b8d392a26fb7a6265f6fa3d",
      "parents": [
        "1ba12553f3600ffebad226c5204ab0e46df98161"
      ],
      "author": {
        "name": "Yan Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Tue Jan 06 11:42:00 2009 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Jan 06 11:42:00 2009 -0500"
      },
      "message": "Btrfs: tree logging checksum fixes\n\nThis patch contains following things.\n\n1) Limit the max size of btrfs_ordered_sum structure to PAGE_SIZE.  This\nstruct is kmalloced so we want to keep it reasonable.\n\n2) Replace copy_extent_csums by btrfs_lookup_csums_range.  This was\nduplicated code in tree-log.c\n\n3) Remove replay_one_csum. csum items are replayed at the same time as\n   replaying file extents. This guarantees we only replay useful csums.\n\n4) nbytes accounting fix.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\n\n"
    },
    {
      "commit": "180591bcfed1a2cec048abb21d3dab840625caab",
      "tree": "9bd247570ef8f3ed33afcb25bb365ccd707c8a73",
      "parents": [
        "9ca03b997f71787e345951e6267fbd8eba14d49f"
      ],
      "author": {
        "name": "Yan Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Tue Jan 06 09:58:06 2009 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Jan 06 09:58:06 2009 -0500"
      },
      "message": "Btrfs: Use btrfs_join_transaction to avoid deadlocks during snapshot creation\n\nSnapshot creation happens at a specific time during transaction commit.  We\nneed to make sure the code called by snapshot creation doesn\u0027t wait\nfor the running transaction to commit.\n\nThis changes btrfs_delete_inode and finish_pending_snaps to use\nbtrfs_join_transaction instead of btrfs_start_transaction to avoid deadlocks.\n\nIt would be better if btrfs_delete_inode didn\u0027t use the join, but the\ncall path that triggers it is:\n\nbtrfs_commit_transaction-\u003ecreate_pending_snapshots-\u003e\ncreate_pending_snapshot-\u003ebtrfs_lookup_dentry-\u003e\nfixup_tree_root_location-\u003ebtrfs_read_fs_root-\u003e\nbtrfs_read_fs_root_no_name-\u003ebtrfs_orphan_cleanup-\u003eiput\n\nThis will be fixed in a later patch by moving the orphan cleanup to the\ncleaner thread.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n\n"
    },
    {
      "commit": "d397712bcc6a759a560fd247e6053ecae091f958",
      "tree": "9da8daebb870d8b8b1843507c4621715e23dd31a",
      "parents": [
        "1f3c79a28c8837e8572b98f6d14142d9a6133c56"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 05 21:25:51 2009 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 05 21:25:51 2009 -0500"
      },
      "message": "Btrfs: Fix checkpatch.pl warnings\n\nThere were many, most are fixed now.  struct-funcs.c generates some warnings\nbut these are bogus.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "cad321ad529400c6ab24c501a67c3be720a0744c",
      "tree": "7ac2b81a914329b7ac78b4f2a4275d62484ef45e",
      "parents": [
        "87b29b208c6c38f3446d2de6ece946e2459052cf"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Dec 17 14:51:42 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Dec 17 14:51:42 2008 -0500"
      },
      "message": "Btrfs: shift all end_io work to thread pools\n\nbio_end_io for reads without checksumming on and btree writes were\nhappening without using async thread pools.  This means the extent_io.c\ncode had to use spin_lock_irq and friends on the rb tree locks for\nextent state.\n\nThere were some irq safe vs unsafe lock inversions between the delallock\nlock and the extent state locks.  This patch gets rid of them by moving\nall end_io code into the thread pools.\n\nTo avoid contention and deadlocks between the data end_io processing and the\nmetadata end_io processing yet another thread pool is added to finish\noff metadata writes.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n\n"
    },
    {
      "commit": "75eff68ea6959efd999b125fc3dcf73931a3b30b",
      "tree": "8467dd51761446dd3539e515055671e707b5f5a0",
      "parents": [
        "42dc7babdcc99feadb04d461592ce5898a362550"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Dec 15 15:54:40 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Dec 15 15:54:40 2008 -0500"
      },
      "message": "Btrfs: Don\u0027t use spin*lock_irq for the delalloc lock\n\nThe delalloc lock doesn\u0027t need to have irqs disabled, nobody that\nchanges the number of delalloc bytes in the FS is running with irqs off.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "42dc7babdcc99feadb04d461592ce5898a362550",
      "tree": "9497d6dddba1a046b4a40a51a49cc41a13922394",
      "parents": [
        "17d217fe970d34720f4f1633dca73a6aa2f3d9d1"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Dec 15 11:44:56 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Dec 15 11:44:56 2008 -0500"
      },
      "message": "Btrfs: Fix compressed writes on truncated pages\n\nThe compression code was using isize to limit the amount of data it\nsent through zlib.  But, it wasn\u0027t properly limiting the looping to\njust the pages inside i_size.  The end result was trying to compress\ntoo many pages, including those that had not been setup and properly locked\ndown.  This made the compression code oops while trying find_get_page on a\npage that didn\u0027t exist.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "17d217fe970d34720f4f1633dca73a6aa2f3d9d1",
      "tree": "4e2e716400cc45a6697475629f4c046b96ff76e7",
      "parents": [
        "e4404d6e8da678d852b7f767f665f8edf76c9e9f"
      ],
      "author": {
        "name": "Yan Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Fri Dec 12 10:03:38 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Dec 12 10:03:38 2008 -0500"
      },
      "message": "Btrfs: fix nodatasum handling in balancing code\n\nChecksums on data can be disabled by mount option, so it\u0027s\npossible some data extents don\u0027t have checksums or have\ninvalid checksums. This causes trouble for data relocation.\nThis patch contains following things to make data relocation\nwork.\n\n1) make nodatasum/nodatacow mount option only affects new\nfiles. Checksums and COW on data are only controlled by the\ninode flags.\n\n2) check the existence of checksum in the nodatacow checker.\nIf checksums exist, force COW the data extent. This ensure that\nchecksum for a given block is either valid or does not exist.\n\n3) update data relocation code to properly handle the case\nof checksum missing.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\n\n"
    },
    {
      "commit": "d2fb3437e4d8d12c73c587615ad187d5288547ec",
      "tree": "894e4c698970dd35226b2614b8a38fb8a96580e7",
      "parents": [
        "cfc8ea87201dc9bb6aeb3fc80c61abee83e7cc06"
      ],
      "author": {
        "name": "Yan Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Thu Dec 11 16:30:39 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Dec 11 16:30:39 2008 -0500"
      },
      "message": "Btrfs: fix leaking block group on balance\n\nThe block group structs are referenced in many different\nplaces, and it\u0027s not safe to free while balancing.  So, those block\ngroup structs were simply leaked instead.\n\nThis patch replaces the block group pointer in the inode with the starting byte\noffset of the block group and adds reference counting to the block group\nstruct.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\n\n"
    },
    {
      "commit": "c3027eb5523d6983f12628f3fe13d8a7576db701",
      "tree": "6a912094818ff261667228a4f6d83ecc4513ac43",
      "parents": [
        "934d375bacf9ea8a37fbfff5f3cf1c093f324095"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Dec 08 16:40:21 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Dec 08 16:40:21 2008 -0500"
      },
      "message": "Btrfs: Add inode sequence number for NFS and reserved space in a few structs\n\nThis adds a sequence number to the btrfs inode that is increased on\nevery update.  NFS will be able to use that to detect when an inode has\nchanged, without relying on inaccurate time fields.\n\nWhile we\u0027re here, this also:\n\nPuts reserved space into the super block and inode\n\nAdds a log root transid to the super so we can pick the newest super\nbased on the fsync log as well as the main transaction ID.  For now\nthe log root transid is always zero, but that\u0027ll get fixed.\n\nAdds a starting offset to the dev_item.  This will let us do better\nalignment calculations if we know the start of a partition on the disk.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "d20f7043fa65659136c1a7c3c456eeeb5c6f431f",
      "tree": "05d1031cadec6d440a97221e3a32adb504a51699",
      "parents": [
        "c99e905c945c462085c6d64646dc5af0c0a16815"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Dec 08 16:58:54 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Dec 08 16:58:54 2008 -0500"
      },
      "message": "Btrfs: move data checksumming into a dedicated tree\n\nBtrfs stores checksums for each data block.  Until now, they have\nbeen stored in the subvolume trees, indexed by the inode that is\nreferencing the data block.  This means that when we read the inode,\nwe\u0027ve probably read in at least some checksums as well.\n\nBut, this has a few problems:\n\n* The checksums are indexed by logical offset in the file.  When\ncompression is on, this means we have to do the expensive checksumming\non the uncompressed data.  It would be faster if we could checksum\nthe compressed data instead.\n\n* If we implement encryption, we\u0027ll be checksumming the plain text and\nstoring that on disk.  This is significantly less secure.\n\n* For either compression or encryption, we have to get the plain text\nback before we can verify the checksum as correct.  This makes the raid\nlayer balancing and extent moving much more expensive.\n\n* It makes the front end caching code more complex, as we have touch\nthe subvolume and inodes as we cache extents.\n\n* There is potentitally one copy of the checksum in each subvolume\nreferencing an extent.\n\nThe solution used here is to store the extent checksums in a dedicated\ntree.  This allows us to index the checksums by phyiscal extent\nstart and length.  It means:\n\n* The checksum is against the data stored on disk, after any compression\nor encryption is done.\n\n* The checksum is stored in a central location, and can be verified without\nfollowing back references, or reading inodes.\n\nThis makes compression significantly faster by reducing the amount of\ndata that needs to be checksummed.  It will also allow much faster\nraid management code in general.\n\nThe checksums are indexed by a key with a fixed objectid (a magic value\nin ctree.h) and offset set to the starting byte of the extent.  This\nallows us to copy the checksum items into the fsync log tree directly (or\nany other tree), without having to invent a second format for them.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "4022abf4498186de2e893ce614333216f2add461",
      "tree": "908e08871a551e649832d9047dd4886c4d45a88e",
      "parents": [
        "607d432da0542e84ddcd358adfddac6f68500e3d"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Dec 02 09:57:03 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Dec 02 09:57:03 2008 -0500"
      },
      "message": "Btrfs: delete unused function: btrfs_invalidate_dcache_root\n\nSnapshot and subvolume creation no longer need this helper.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n\n"
    },
    {
      "commit": "b2950863c61bc24cf0f63bc05947d9d50663c4c0",
      "tree": "3005a034713fe86db2d64ab1b21fe8762f6a4b0c",
      "parents": [
        "1ffa4f426c002161b7dbd58b297f5d0680e7dd6a"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Tue Dec 02 09:54:17 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Dec 02 09:54:17 2008 -0500"
      },
      "message": "Btrfs: make things static and include the right headers\n\nShut up various sparse warnings about symbols that should be either\nstatic or have their declarations in scope.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\n\n"
    },
    {
      "commit": "ce397c0616de9bfb678569f1dfa655838a711594",
      "tree": "7268154f484cb442f25a5876697f211bef9dd7c5",
      "parents": [
        "ea6a478ed9758cb0f5af228104b9434840aa20ff"
      ],
      "author": {
        "name": "Liu Hui",
        "email": "onlyflyer@gmail.com",
        "time": "Mon Dec 01 20:31:40 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Dec 01 20:31:40 2008 -0500"
      },
      "message": "Btrfs: Fix cow semantic in run_delalloc_nocow()\n\nThe file preallocation code reversed the logic to force nodatacow.\nThis fixes it.\n\n"
    }
  ],
  "next": "4b4e25f2a6ddb070bab7f7dd2bd2926fb8db9e04"
}
