)]}'
{
  "log": [
    {
      "commit": "0634857488ec6e28fa22920cd0bee3c2ac07ccfd",
      "tree": "6cfa348aea76f39b658d3a36ab51807a4ac7bcf7",
      "parents": [
        "e244a0aeb6a599c19a7c802cda6e2d67c847b154"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Wed Oct 14 09:24:59 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Oct 14 10:32:49 2009 -0400"
      },
      "message": "Btrfs: enable discard support\n\nThe discard support code in btrfs currently is guarded by ifdefs for\nBIO_RW_DISCARD, which is never defines as it\u0027s the name of an enum\nmemeber.  Just remove the useless ifdefs to actually enable the code.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "e244a0aeb6a599c19a7c802cda6e2d67c847b154",
      "tree": "392d8d48c4e6676a552230135ad448d522007ece",
      "parents": [
        "86df7eb921a009515285e7171363fa57dd2d7d31"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Wed Oct 14 09:24:59 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Oct 14 10:32:49 2009 -0400"
      },
      "message": "Btrfs: add -o discard option\n\nEnable discard by default is not a good idea given the the trim speed\nof SSD prototypes we\u0027ve seen, and the carecteristics for many high-end\narrays.  Turn of discards by default and require the -o discard option\nto enable them on.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "86df7eb921a009515285e7171363fa57dd2d7d31",
      "tree": "884e8cda2535dc43cf57ce9fa273381b827d2f4f",
      "parents": [
        "5d5e103a70f74ae98e3965a4add1ab951d0651d1"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Wed Oct 14 09:24:59 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Oct 14 10:32:48 2009 -0400"
      },
      "message": "Btrfs: properly wait log writers during log sync\n\nA recently fsync optimization make btrfs_sync_log skip calling\nwait_for_writer in the single log writer case. This is incorrect\nsince the writer count can also be increased by btrfs_pin_log.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\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": "0eda294dfc980c1cbe4f8a0564bf543f86a01ddb",
      "tree": "478b0abfda753196fcb8842d002e5bb600051618",
      "parents": [
        "690587d109ffe19d6743e4cc80c18b0906b7f9ff"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Oct 13 13:50:18 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Oct 13 13:51:39 2009 -0400"
      },
      "message": "Btrfs: fix btrfs acl #ifdef checks\n\nThe btrfs acl code was #ifdefing for a define\nthat didn\u0027t exist.  This correctly matches it\nto the values used by the Kconfig file.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "690587d109ffe19d6743e4cc80c18b0906b7f9ff",
      "tree": "788acd32c4ed1463d0166d0c45b233d96bb102e0",
      "parents": [
        "257c62e1bce03e5b9f3f069fd52ad73a56de71fd"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Oct 13 13:29:19 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Oct 13 13:35:12 2009 -0400"
      },
      "message": "Btrfs: streamline tree-log btree block writeout\n\nSyncing the tree log is a 3 phase operation.\n\n1) write and wait for all the tree log blocks for a given root.\n\n2) write and wait for all the tree log blocks for the\ntree of tree log roots.\n\n3) write and wait for the super blocks (barriers here)\n\nThis isn\u0027t as efficient as it could be because there is\nno requirement to wait for the blocks from step one to hit the disk\nbefore we start writing the blocks from step two.  This commit\nchanges the sequence so that we don\u0027t start waiting until\nall the tree blocks from both steps one and two have been sent\nto disk.\n\nWe do this by breaking up btrfs_write_wait_marked_extents into\ntwo functions, which is trivial because it was already broken\nup into two parts.\n\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": "4722607db6a78bd7748c51fa4c8d7371da797254",
      "tree": "83c483a3f55d3f024863e1e33c3ac123e688c868",
      "parents": [
        "ac6889cbb254be1ffea376bea4a96ce9be0e0ed0"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Oct 13 12:55:09 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Oct 13 13:35:11 2009 -0400"
      },
      "message": "Btrfs: only write one super copy during fsync\n\nDuring a tree-log commit for fsync, we\u0027ve been writing at least\ntwo copies of the super block and forcing them to disk.\n\nThe other filesystems write only one, and this change brings us on\npar with them.  A full transaction commit will write all the super\ncopies, so we still have redundant info written on a regular\nbasis.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "ac6889cbb254be1ffea376bea4a96ce9be0e0ed0",
      "tree": "8f0e073af940b1bdfb134b945a03a1b43b614352",
      "parents": [
        "e9061e214810c9534381a705a1b46533e09f2676"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 09 11:29:53 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 09 11:29:53 2009 -0400"
      },
      "message": "Btrfs: fix file clone ioctl for bookend extents\n\nThe file clone ioctl was incorrectly taking the offset into the\nextent on disk into account when calculating the length of the\ncloned extent.\n\nThe length never changes based on the offset into the physical extent.\n\nTest case:\n\nfallocate -l 1g image\nmke2fs image\nbcp image image2\ne2fsck -f image2\n\n(errors on image2)\n\nThe math bug ends up wrapping the length of the extent, and things\ngo wrong from there.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\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": "94fcca9f8999e7828d5f4dc181daa39cad2af38a",
      "tree": "68842517a4d10d080bc4f70abae19e480d2ac049",
      "parents": [
        "efefb1438be269897585934fc6c05deb4dfa01ce"
      ],
      "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: optimize back reference update during btrfs_drop_snapshot\n\nThis patch reading level 0 tree blocks that already use full backrefs.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\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": "ff782e0a131c7f669445c07fe5c7ba91e043b7ed",
      "tree": "ff7773e6ce60bf977ed29897c13605f257647684",
      "parents": [
        "e3ccfa989752c083ceb23c823a84f7ce3a081e61"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Oct 08 15:30:04 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Oct 08 15:30:04 2009 -0400"
      },
      "message": "Btrfs: optimize fsync for the single writer case\n\nThis patch optimizes the tree logging stuff so it doesn\u0027t always wait 1 jiffie\nfor new people to join the logging transaction if there is only ever 1 writer.\nThis helps a little bit with latency where we have something like RPM where it\nwill fdatasync every file it writes, and so waiting the 1 jiffie for every\nfdatasync really starts to add up.\n\nSigned-off-by: Josef Bacik \u003cjbacik@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "e3ccfa989752c083ceb23c823a84f7ce3a081e61",
      "tree": "197558cbee7b773b8270cd861f882a37beacd2ed",
      "parents": [
        "32c00aff718bb54a214b39146bdd9ac01511cd25"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 07 20:44:34 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Oct 08 15:21:23 2009 -0400"
      },
      "message": "Btrfs: async delalloc flushing under space pressure\n\nThis patch moves the delalloc flushing that occurs when we are under space\npressure off to a async thread pool.  This helps since we only free up\nmetadata space when we actually insert the extent item, which means it takes\nquite a while for space to be free\u0027ed up if we wait on all ordered extents.\nHowever, if space is freed up due to inline extents being inserted, we can\nwake people who are waiting up early, and they can finish their work.\n\nSigned-off-by: Josef Bacik \u003cjbacik@redhat.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": "1cdda9b81ac0e6ee986f034fa02f221679e1c11a",
      "tree": "ae9394e50bc2418e8c3054de12ed44962d6f261a",
      "parents": [
        "61d92c328c16419fc96dc50dd16f8b8c695409ec"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Oct 06 10:04:28 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Oct 06 10:04:28 2009 -0400"
      },
      "message": "Btrfs: fix possible softlockup in the allocator\n\nLike the cluster allocating stuff, we can lockup the box with the normal\nallocation path.  This happens when we\n\n1) Start to cache a block group that is severely fragmented, but has a decent\namount of free space.\n2) Start to commit a transaction\n3) Have the commit try and empty out some of the delalloc inodes with extents\nthat are relatively large.\n\nThe inodes will not be able to make the allocations because they will ask for\nallocations larger than a contiguous area in the free space cache.  So we will\nwait for more progress to be made on the block group, but since we\u0027re in a\ncommit the caching kthread won\u0027t make any more progress and it already has\nenough free space that wait_block_group_cache_progress will just return.  So,\nif we wait and fail to make the allocation the next time around, just loop and\ngo to the next block group.  This keeps us from getting stuck in a softlockup.\nThanks,\n\nSigned-off-by: Josef Bacik \u003cjbacik@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "61d92c328c16419fc96dc50dd16f8b8c695409ec",
      "tree": "e9cd82eb56ff5f38f64d9f35229d15496e5d53de",
      "parents": [
        "fbf190874407f23d2891b53ffdf7d3c6be8d47ff"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 02 19:11:56 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Oct 05 09:44:45 2009 -0400"
      },
      "message": "Btrfs: fix deadlock on async thread startup\n\nThe btrfs async worker threads are used for a wide variety of things,\nincluding processing bio end_io functions.  This means that when\nthe endio threads aren\u0027t running, the rest of the FS isn\u0027t\nable to do the final processing required to clear PageWriteback.\n\nThe endio threads also try to exit as they become idle and\nstart more as the work piles up.  The problem is that starting more\nthreads means kthreadd may need to allocate ram, and that allocation\nmay wait until the global number of writeback pages on the system is\nbelow a certain limit.\n\nThe result of that throttling is that end IO threads wait on\nkthreadd, who is waiting on IO to end, which will never happen.\n\nThis commit fixes the deadlock by handing off thread startup to a\ndedicated thread.  It also fixes a bug where the on-demand thread\ncreation was creating far too many threads because it didn\u0027t take into\naccount threads being started by other procs.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\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": "ab93dbecfba72bbc04b7036343d180aaff1b61a3",
      "tree": "6bb523dcf9be0885b6fa9cb6cc9ac694ee089028",
      "parents": [
        "35d62a942db5ae03104929fe7397835b572c4bc4"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Oct 01 12:29:10 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Oct 01 12:29:10 2009 -0400"
      },
      "message": "Btrfs: take i_mutex before generic_write_checks\n\nbtrfs_file_write was incorrectly calling generic_write_checks without\ntaking i_mutex.  This lead to problems with racing around i_size when\ndoing O_APPEND writes.\n\nThe fix here is to move i_mutex higher.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "35d62a942db5ae03104929fe7397835b572c4bc4",
      "tree": "91ea5b0a79e898f57cd644e1ff0437748aa0781b",
      "parents": [
        "dd7e0b7b02ccff73b87032e20fc5b4f2c1cfcc14"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Wed Sep 30 16:47:08 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Oct 01 10:27:01 2009 -0400"
      },
      "message": "Btrfs: fix arguments to btrfs_wait_on_page_writeback_range\n\nwait_on_page_writeback_range/btrfs_wait_on_page_writeback_range takes\na pagecache offset, not a byte offset into the file.  Shift the arguments\naround to wait for the correct range\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "dd7e0b7b02ccff73b87032e20fc5b4f2c1cfcc14",
      "tree": "2168da63d84f05106b2aa8eb8f5cdc8859f1e176",
      "parents": [
        "1ab86aedbc7845a946b4ba4edf37762629970708"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Sep 29 18:38:44 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Sep 29 19:50:07 2009 -0400"
      },
      "message": "Btrfs: fix deadlock with free space handling and user transactions\n\nIf an ioctl-initiated transaction is open, we can\u0027t force a commit during\nthe free space checks in order to free up pinned extents or else we\ndeadlock.  Just ENOSPC instead.\n\nA more satisfying solution that reserves space for the entire user\ntransaction up front is forthcoming...\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "1ab86aedbc7845a946b4ba4edf37762629970708",
      "tree": "1a3ad19d12a807d76d5700abc6415e1535c88312",
      "parents": [
        "3baf0bed0a5adab95c7599d2f27124c74692ef28"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Sep 29 18:38:44 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Sep 29 18:38:44 2009 -0400"
      },
      "message": "Btrfs: fix error cases for ioctl transactions\n\nFix leak of vfsmount write reference and open_ioctl_trans reference on\nENOMEM.  Clean up the error paths while we\u0027re at it.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "3baf0bed0a5adab95c7599d2f27124c74692ef28",
      "tree": "fff0aae377d71743ab4d95449bf57419280555b3",
      "parents": [
        "fd2696f399e45347c07f1f7f340e8515cace5657"
      ],
      "author": {
        "name": "Chris Ball",
        "email": "cjb@laptop.org",
        "time": "Tue Sep 29 13:51:05 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Sep 29 13:51:05 2009 -0400"
      },
      "message": "Btrfs: Use CONFIG_BTRFS_POSIX_ACL to enable ACL code\n\nWe\u0027ve already defined CONFIG_BTRFS_POSIX_ACL in Kconfig, but we\u0027re\ncurrently not using it and are testing CONFIG_FS_POSIX_ACL instead.\nCONFIG_FS_POSIX_ACL states \"Never use this symbol for ifdefs\".\n\nSigned-off-by: Chris Ball \u003ccjb@laptop.org\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "fd2696f399e45347c07f1f7f340e8515cace5657",
      "tree": "bd1a1c1907b5a344257673761bdf69629fd7cdba",
      "parents": [
        "49cf6f4529b7945ef51b8e39f0bac630726f8c96"
      ],
      "author": {
        "name": "Julia Lawall",
        "email": "julia@diku.dk",
        "time": "Tue Sep 29 13:51:04 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Sep 29 13:51:04 2009 -0400"
      },
      "message": "Btrfs: introduce missing kfree\n\nError handling code following a kzalloc should free the allocated data.\n\nThe semantic match that finds the problem is as follows:\n(http://www.emn.fr/x-info/coccinelle/)\n\n// \u003csmpl\u003e\n@r exists@\nlocal idexpression x;\nstatement S;\nexpression E;\nidentifier f,f1,l;\nposition p1,p2;\nexpression *ptr !\u003d NULL;\n@@\n\nx@p1 \u003d \\(kmalloc\\|kzalloc\\|kcalloc\\)(...);\n...\nif (x \u003d\u003d NULL) S\n\u003c... when !\u003d x\n     when !\u003d if (...) { \u003c+...x...+\u003e }\n(\nx-\u003ef1 \u003d E\n|\n (x-\u003ef1 \u003d\u003d NULL || ...)\n|\n f(...,x-\u003ef1,...)\n)\n...\u003e\n(\n return \\(0\\|\u003c+...x...+\u003e\\|ptr\\);\n|\n return@p2 ...;\n)\n\n@script:python@\np1 \u003c\u003c r.p1;\np2 \u003c\u003c r.p2;\n@@\n\nprint \"* file: %s kmalloc %s return %s\" % (p1[0].file,p1[0].line,p2[0].line)\n// \u003c/smpl\u003e\n\nSigned-off-by: Julia Lawall \u003cjulia@diku.dk\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "49cf6f4529b7945ef51b8e39f0bac630726f8c96",
      "tree": "27c91f6bb1ac0e4862286e78d1365e2890754cef",
      "parents": [
        "9ed74f2dba6ebf9f30b80554290bfc73cc3ef083"
      ],
      "author": {
        "name": "Chris Ball",
        "email": "cjb@laptop.org",
        "time": "Tue Sep 29 13:51:04 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Sep 29 13:51:04 2009 -0400"
      },
      "message": "Btrfs: Fix setting umask when POSIX ACLs are not enabled\n\nWe currently set sb-\u003es_flags |\u003d MS_POSIXACL unconditionally, which is\nincorrect -- it tells the VFS that it shouldn\u0027t set umask because we\nwill, yet we don\u0027t set it ourselves if we aren\u0027t using POSIX ACLs, so\nthe umask ends up ignored.\n\nSigned-off-by: Chris Ball \u003ccjb@laptop.org\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\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": "c65ddb52dc412c9b67681b1aa16cd1bac8434e24",
      "tree": "1febb9b954e1569d46382abd741ee7bbd3670173",
      "parents": [
        "0257bb82d21bedff26541bcf12f1461c23f9ed61"
      ],
      "author": {
        "name": "Yan Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Thu Sep 24 09:24:43 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 24 09:24:43 2009 -0400"
      },
      "message": "Btrfs: hash the btree inode during  fill_super\n\nThe snapshot deletion  patches dropped this line, but the inode\nneeds to be hashed.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "0257bb82d21bedff26541bcf12f1461c23f9ed61",
      "tree": "0b79fd9bf377094f6fa6f5f923fe192515672af3",
      "parents": [
        "f679a84034be6f7da123be786bbd8838bf3e9207"
      ],
      "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: relocate file extents in clusters\n\nThe extent relocation code copy file extents one by one when\nrelocating data block group. This is inefficient if file\nextents are small. This patch makes the relocation code copy\nfile extents in clusters. So we can can make better use of\nread-ahead.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\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": "11ef160fda9c150cd75db77194bcc66839709662",
      "tree": "2cd7577234c112177a06ad09c0c507c81cb9658a",
      "parents": [
        "46562cec98368623bcd18d7fd30f20c04afd5978"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Sep 23 20:28:46 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Sep 23 20:30:53 2009 -0400"
      },
      "message": "Btrfs: fix releasepage to avoid unlocking extents we haven\u0027t locked\n\nDuring releasepage, we try to drop any extent_state structs for the\nbye offsets of the page we\u0027re releaseing.  But the code was incorrectly\ntelling clear_extent_bit to delete the state struct unconditionallly.\n\nNormally this would be fine because we have the page locked, but other\nparts of btrfs will lock down an entire extent, the most common place\nbeing IO completion.\n\nreleasepage was deleting the extent state without first locking the extent,\nwhich may result in removing a state struct that another process had\nlocked down.  The fix here is to leave the NODATASUM and EXTENT_LOCKED\nbits alone in releasepage.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "46562cec98368623bcd18d7fd30f20c04afd5978",
      "tree": "4e5bbba7f459a1094b09413f65239b26401117f8",
      "parents": [
        "42daec299b8b6b9605976d0ee1266b343a31cbcc"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Sep 23 20:23:16 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Sep 23 20:30:52 2009 -0400"
      },
      "message": "Btrfs: Fix test_range_bit for whole file extents\n\nIf test_range_bit finds an extent that goes all the way to (u64)-1, it\ncan incorrectly wrap the u64 instead of treaing it like the end of\nthe address space.\n\nThis just adds a check for the highest possible offset so we don\u0027t wrap.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "42daec299b8b6b9605976d0ee1266b343a31cbcc",
      "tree": "6813d5d2b30c346413e329f0ad4d6f2262991311",
      "parents": [
        "7ce618db9878689f87897b673fa3329070860fc7"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Sep 23 19:51:09 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Sep 23 20:30:52 2009 -0400"
      },
      "message": "Btrfs: fix errors handling cached state in set/clear_extent_bit\n\nBoth set and clear_extent_bit allow passing a cached\nstate struct to reduce rbtree search times.  clear_extent_bit\nwas improperly bypassing some of the checks around making sure\nthe extent state fields were correct for a given operation.\n\nThe fix used here (from Yan Zheng) is to use the hit_next\ngoto target instead of jumping all the way down to start clearing\nbits without making sure the cached state was exactly correct\nfor the operation we were doing.\n\nThis also fixes up the setting of the start variable for both\nops in the case where we find an overlapping extent that\nbegins before the range we want to change.  In both cases\nwe were incorrectly going backwards from the original\nrequested change.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "7ce618db9878689f87897b673fa3329070860fc7",
      "tree": "a149e88a2f28c2fd5ad515f7351af9832540fedb",
      "parents": [
        "33b4d47f5e24b986f486d7de9a2df915ad1fdfbc"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Sep 22 14:48:44 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Sep 22 14:48:44 2009 -0400"
      },
      "message": "Btrfs: fix early enospc during balancing\n\nWe now do extra checks before a balance to make sure\nthere is room for the balance to take place.  One of\nthe checks was testing to see if we were trying to\nbalance away the last block group of a given type.\n\nIf there is no space available for new chunks, we\nshould not try and balance away the last block group\nof a give type.  But, the code wasn\u0027t checking for\navailable chunk space, and so it was exiting too soon.\n\nThe fix here is to combine some of the checks and make\nsure we try to allocate new chunks when we\u0027re balancing\nthe last block group.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "33b4d47f5e24b986f486d7de9a2df915ad1fdfbc",
      "tree": "198fb5c7d48bfd9e4010eb253e9e7573172a7680",
      "parents": [
        "1b2da372b0324b5c604fc8790e70a7efbeacb0b6"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Sep 22 14:45:50 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Sep 22 14:45:50 2009 -0400"
      },
      "message": "Btrfs: deal with NULL space info\n\nAfter a balance it is briefly possible for the space info\nfield in the inode to be NULL.  This adds some checks\nto make sure things properly deal with the NULL value.\n\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "1b2da372b0324b5c604fc8790e70a7efbeacb0b6",
      "tree": "13d7ba24660c865efd184a25b7b0ac8830a6d7f1",
      "parents": [
        "25891f796d8d30f2b86b1e84d78721b44d573d70"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Sep 11 16:11:20 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Sep 21 19:23:50 2009 -0400"
      },
      "message": "Btrfs: account for space used by the super mirrors\n\nAs we get closer to proper -ENOSPC handling in btrfs, we need more accurate\nspace accounting for the space info\u0027s.  Currently we exclude the free space for\nthe super mirrors, but the space they take up isn\u0027t accounted for in any of the\ncounters.  This patch introduces bytes_super, which keeps track of the amount\nof bytes used for a super mirror in the block group cache and space info.  This\nmakes sure that our free space caclucations will be completely accurate.\n\nSigned-off-by: Josef Bacik \u003cjbacik@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "25891f796d8d30f2b86b1e84d78721b44d573d70",
      "tree": "12d4ac7251006a73e8ae75b3a4a751d04df0e823",
      "parents": [
        "f61408b81cd040a594dc0b65171230c4d5cc917d"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Sep 11 16:11:20 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Sep 21 19:23:50 2009 -0400"
      },
      "message": "Btrfs: fix extent entry threshold calculation\n\nThere is a slight problem with the extent entry threshold calculation for the\nfree space cache.  We only adjust the threshold down as we add bitmaps, but\nnever actually adjust the threshold up as we add bitmaps.  This means we could\nfragment the free space so badly that we end up using all bitmaps to describe\nthe free space, use all the free space which would result in the bitmaps being\nfreed, but then go to add free space again as we delete things and immediately\nadd bitmaps since the extent threshold would still be 0.  Now as we free\nbitmaps the extent threshold will be ratcheted up to allow more extent entries\nto be added.\n\nSigned-off-by: Josef Bacik \u003cjbacik@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f61408b81cd040a594dc0b65171230c4d5cc917d",
      "tree": "0fe8757007b75ecbdb369b9f2d9750696d822092",
      "parents": [
        "f019f4264ae8c0169332592bcee419ee90e7c827"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Sep 11 16:11:20 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Sep 21 19:23:49 2009 -0400"
      },
      "message": "Btrfs: remove dead code\n\nThis patch removes a bunch of dead code from the snapshot removal stuff.  It\nwas confusing me when doing the metadata ENOSPC stuff so I killed it.\n\nSigned-off-by: Josef Bacik \u003cjbacik@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f019f4264ae8c0169332592bcee419ee90e7c827",
      "tree": "61a2953e59b5883f376e5b6ba3938fa2721c97be",
      "parents": [
        "0a24325e6d8cfb150eba0aa279615ef27b5f6aec"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Sep 11 16:11:20 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Sep 21 19:23:49 2009 -0400"
      },
      "message": "Btrfs: fix bitmap size tracking\n\nWhen we first go to add free space, we allocate a new info and set the offset\nand bytes to the space we are adding.  This is fine, except we actually set the\nsize of a bitmap as we set the bits in it, so if we add space to a bitmap, we\u0027d\nend up counting the same space twice.  This isn\u0027t a huge deal, it just makes\nthe allocator behave weirdly since it will think that a bitmap entry has more\nspace than it ends up actually having.  I used a BUG_ON() to catch when this\nproblem happened, and with this patch I no longer get the BUG_ON().\n\nSigned-off-by: Josef Bacik \u003cjbacik@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "0a24325e6d8cfb150eba0aa279615ef27b5f6aec",
      "tree": "f0ca16ab43d87d526a1f918c7e960711256fd47f",
      "parents": [
        "ba1bf4818baf68d914ef9e3b06fbea6acb674fe4"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Sep 11 16:11:20 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Sep 21 19:23:49 2009 -0400"
      },
      "message": "Btrfs: don\u0027t keep retrying a block group if we fail to allocate a cluster\n\nThe box can get locked up in the allocator if we happen upon a block group\nunder these conditions:\n\n1) During a commit, so caching threads cannot make progress\n2) Our block group currently is in the middle of being cached\n3) Our block group currently has plenty of free space in it\n4) Our block group is so fragmented that it ends up having no free space chunks\nlarger than min_bytes calculated by btrfs_find_space_cluster.\n\nWhat happens is we try and do btrfs_find_space_cluster, which fails because it\nis unable to find enough free space chunks that are large than min_bytes and\nare close enough together.  Since the block group is not cached we do a\nwait_block_group_cache_progress, which waits for the number of bytes we need,\nexcept the block group already has _plenty_ of free space, its just severely\nfragmented, so we loop and try again, ad infinitum.  This patch keeps us from\nwaiting on the block group to finish caching if we failed to find a free space\ncluster before.  It also makes sure that we don\u0027t even try to find a free space\ncluster if we are on our last loop in the allocator, since we will have tried\neverything at this point at it is futile.\n\nSigned-off-by: Josef Bacik \u003cjbacik@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "ba1bf4818baf68d914ef9e3b06fbea6acb674fe4",
      "tree": "1068d6ce508333a75668181bfe0e42956d4d8780",
      "parents": [
        "1fb58a6051cd904a9f8e0344b22e31921d6b5a4d"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Sep 11 16:11:19 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Sep 21 19:23:48 2009 -0400"
      },
      "message": "Btrfs: make balance code choose more wisely when relocating\n\nCurrently, we can panic the box if the first block group we go to move is of a\ntype where there is no space left to move those extents.  For example, if we\nfill the disk up with data, and then we try to balance and we have no room to\nmove the data nor room to allocate new chunks, we will panic.  Change this by\nchecking to see if we have room to move this chunk around, and if not, return\n-ENOSPC and move on to the next chunk.  This will make sure we remove block\ngroups that are moveable, like if we have alot of empty metadata block groups,\nand then that way we make room to be able to balance our data chunks as well.\nTested this with an fs that would panic on btrfs-vol -b normally, but no longer\npanics with this patch.\n\nV1-\u003eV2:\n-actually search for a free extent on the device to make sure we can allocate a\nchunk if need be.\n\n-fix btrfs_shrink_device to make sure we actually try to relocate all the\nchunks, and then if we can\u0027t return -ENOSPC so if we are doing a btrfs-vol -r\nwe don\u0027t remove the device with data still on it.\n\n-check to make sure the block group we are going to relocate isn\u0027t the last one\nin that particular space\n\n-fix a bug in btrfs_shrink_device where we would change the device\u0027s size and\nnot fix it if we fail to do our relocate\n\nSigned-off-by: Josef Bacik \u003cjbacik@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "1fb58a6051cd904a9f8e0344b22e31921d6b5a4d",
      "tree": "2f8c1a89b3e4f119590e89cebe1a5be1a02f487a",
      "parents": [
        "76dda93c6ae2c1dc3e6cde34569d6aca26b0c918"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Sep 21 16:00:27 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Sep 21 16:00:27 2009 -0400"
      },
      "message": "Btrfs: fix arithmetic error in clone ioctl\n\nFix an arithmetic error that was breaking extents cloned via the clone\nioctl starting in the second half of a file.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\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": "1c4850e21df8b441164d910bc611ef46a01d5d75",
      "tree": "aeccbf3495421d1343bbe08cb824ac1ae6764e43",
      "parents": [
        "b917b7c3be50435fa8257591b964934e917f2d45"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Mon Sep 21 15:55:59 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Sep 21 15:55:59 2009 -0400"
      },
      "message": "Btrfs: speed up snapshot dropping\n\nThis patch contains two changes to avoid unnecessary tree block reads during\nsnapshot dropping.\n\nFirst, check tree block\u0027s reference count and flags before reading the tree\nblock. if reference count \u003e 1 and there is no need to update backrefs, we can\navoid reading the tree block.\n\nSecond, save when snapshot was created in root_key.offset. we can compare block\npointer\u0027s generation with snapshot\u0027s creation generation during updating\nbackrefs. If a given block was created before snapshot was created, the\nsnapshot can\u0027t be the tree block\u0027s owner. So we can avoid reading the block.\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": "f85d7d6c8f2ad4a86a1f4f4e3791f36dede2fa76",
      "tree": "40538328090b5eb2f3f95a9bc5a290c83384ff43",
      "parents": [
        "11833d66be94b514652466802100378046c16b72"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 18 16:03:16 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 18 16:08:46 2009 -0400"
      },
      "message": "Btrfs: properly honor wbc-\u003enr_to_write changes\n\nWhen btrfs fills a delayed allocation, it tries to increase\nthe wbc nr_to_write to cover a big part of allocation.  The\ntheory is that we\u0027re doing contiguous IO and writing a few\nmore blocks will save seeks overall at a very low cost.\n\nThe problem is that extent_write_cache_pages could ignore\nthe new higher nr_to_write if nr_to_write had already gone\ndown to zero.  We fix that by rechecking the nr_to_write\nfor every page that is processed in the pagevec.\n\nThis updates the math around bumping the nr_to_write value\nto make sure we don\u0027t leave a tiny amount of IO hanging\naround for the very end of a new extent.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "11833d66be94b514652466802100378046c16b72",
      "tree": "2b00b36d0aa42e9e10cecf3bf723eb70a607afec",
      "parents": [
        "6e74057c4686dc12ea767b4bdc50a63876056e1c"
      ],
      "author": {
        "name": "Yan Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Fri Sep 11 16:11:19 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 17 15:47:36 2009 -0400"
      },
      "message": "Btrfs: improve async block group caching\n\nThis patch gets rid of two limitations of async block group caching.\nThe old code delays handling pinned extents when block group is in\ncaching. To allocate logged file extents, the old code need wait\nuntil block group is fully cached. To get rid of the limitations,\nThis patch introduces a data structure to track the progress of\ncaching. Base on the caching progress, we know which extents should\nbe added to the free space cache when handling the pinned extents.\nThe logged file extents are also handled in a similar way.\n\nThis patch also changes how pinned extents are tracked. The old\ncode uses one tree to track pinned extents, and copy the pinned\nextents tree at transaction commit time. This patch makes it use\ntwo trees to track pinned extents. One tree for extents that are\npinned in the running transaction, one tree for extents that can\nbe unpinned. At transaction commit time, we swap the two trees.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "6e74057c4686dc12ea767b4bdc50a63876056e1c",
      "tree": "e7c70b8e08ab9e5363be28bcbcc72348122ae6e4",
      "parents": [
        "627e421a3f35ad6b52dc58982fb6f8a97c30dcd7"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Sep 15 20:02:33 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Sep 15 20:20:17 2009 -0400"
      },
      "message": "Btrfs: Fix async thread shutdown race\n\nIt was possible for an async worker thread to be selected to\nreceive a new work item, but exit before the work item was\nactually placed into that thread\u0027s work list.\n\nThis commit fixes the race by incrementing the num_pending\ncounter earlier, and making sure to check the number of pending\nwork items before a thread exits.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "627e421a3f35ad6b52dc58982fb6f8a97c30dcd7",
      "tree": "9f1175835fe7b142b554fc66ea2367b7ec4ea1d3",
      "parents": [
        "3e99d8eb347c93a5d38081380b8c9e69b203212e"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Sep 15 20:00:36 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Sep 15 20:20:17 2009 -0400"
      },
      "message": "Btrfs: fix worker thread double spin_lock_irq\n\nThe exit-on-idle code for async worker threads was incorrectly\ncalling spin_lock_irq with interrupts already off.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "3e99d8eb347c93a5d38081380b8c9e69b203212e",
      "tree": "1fde8df76b399c12827c2e2bd989e29e83d9994f",
      "parents": [
        "83ebade34bc1a90d0c3f77b87b940f336d075fda"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Sep 15 19:57:42 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Sep 15 20:20:16 2009 -0400"
      },
      "message": "Btrfs: fix async worker startup race\n\nAfter a new worker thread starts, it is placed into the\nlist of idle threads.  But, this may race with a\ncheck for idle done by the worker thread itself, resulting\nin a double list_add operation.\n\nThis fix adds a check to make sure the idle thread addition\nis done properly.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.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": "d5550c6315fe0647b7ac21a6a736bf4a42620eac",
      "tree": "d1aeeee5ef7b04915dd6eb1c220b3e137ce4d9b3",
      "parents": [
        "2c64c53d8d30d43d0670482503a3914dfd3d6d46"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Sep 02 15:11:07 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 11 13:31:06 2009 -0400"
      },
      "message": "Btrfs: don\u0027t lock bits in the extent tree during writepage\n\nAt writepage time, we have the page locked and we have the\nextent_map entry for this extent pinned in the extent_map tree.\nSo, the page can\u0027t go away and its mapping can\u0027t change.\n\nThere is no need for the extra extent_state lock bits during writepage.\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": "1edbb734b4e010974c41d2859d22a43d04f5f1cf",
      "tree": "4f43aea677f7206707540dd8622fa4cac099057a",
      "parents": [
        "e48c465bb366c0169f7908bfe62ae7080874ee7d"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Sep 02 13:24:36 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 11 13:31:06 2009 -0400"
      },
      "message": "Btrfs: reduce CPU usage in the extent_state tree\n\nBtrfs is currently mirroring some of the page state bits into\nits extent state tree.  The goal behind this was to use it in supporting\nblocksizes other than the page size.\n\nBut, we don\u0027t currently support that, and we\u0027re using quite a lot of CPU\non the rb tree and its spin lock.  This commit starts a series of\ncleanups to reduce the amount of work done in the extent state tree as\npart of each IO.\n\nThis commit:\n\n* Adds the ability to lock an extent in the state tree and also set\nother bits.  The idea is to do locking and delalloc in one call\n\n* Removes the EXTENT_WRITEBACK and EXTENT_DIRTY bits.  Btrfs is using\na combination of the page bits and the ordered write code for this\ninstead.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "e48c465bb366c0169f7908bfe62ae7080874ee7d",
      "tree": "016cf009f64964e692470612ebbfa538d6b4bc83",
      "parents": [
        "890871be854b5f5e43e7ba2475f706209906cc24"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 11 11:25:02 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 11 13:31:05 2009 -0400"
      },
      "message": "Btrfs: Fix new state initialization order\n\nAs the extent state tree is manipulated, there are call backs\nthat are used to take extra actions when different state bits are set\nor cleared.  One example of this is a counter for the total number\nof delayed allocation bytes in a single inode and in the whole FS.\n\nWhen new states are inserted, this callback is being done before we\nproperly setup the new state.  This hasn\u0027t caused problems before\nbecause the lock bit was always done first, and the existing call backs\ndon\u0027t care about the lock bit.\n\nThis patch makes sure the state is properly setup before using the\ncallback, which is important for later optimizations that do more work\nwithout using the lock bit.\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": "57fd5a5ff8b48b99e90b22fc143082aba755c6c0",
      "tree": "8744002a9232d25a9ded597fa89c3f1b00ec410c",
      "parents": [
        "a97adc9fffb1707da4e97f91c801660c6be92aac"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Aug 07 09:59:15 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 11 13:31:05 2009 -0400"
      },
      "message": "Btrfs: tweak congestion backoff\n\nThe btrfs io submission thread tries to back off congested devices in\nfavor of rotating off to another disk.\n\nBut, it tries to make sure it submits at least some IO before rotating\non (the others may be congested too), and so it has a magic number of\nrequests it tries to write before it hops.\n\nThis makes the magic number smaller.  Testing shows that we\u0027re spending\ntoo much time on congested devices and leaving the other devices idle.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "a97adc9fffb1707da4e97f91c801660c6be92aac",
      "tree": "9385c1ada9d5b86b75cd00865bacc6bc39deaa9d",
      "parents": [
        "4f878e8475a465ddbd951e06a23317303f1b5b30"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Aug 07 09:28:20 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 11 13:31:04 2009 -0400"
      },
      "message": "Btrfs: use larger nr_to_write for larger extents\n\nWhen btrfs fills a large delayed allocation extent, it is a good idea\nto try and convince the write_cache_pages caller to go ahead and\nwrite a good chunk of that extent.  The extra IO is basically free\nbecause we know it is contiguous.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "4f878e8475a465ddbd951e06a23317303f1b5b30",
      "tree": "7e1811794d3f6eaf455a3e26afd49ba06a0db554",
      "parents": [
        "4e3f9c5042b43301d70781aee4a164a20878066b"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Aug 07 09:27:38 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 11 13:31:04 2009 -0400"
      },
      "message": "Btrfs: reduce worker thread spin_lock_irq hold times\n\nThis changes the btrfs worker threads to batch work items\ninto a local list.  It allows us to pull work items in\nlarge chunks and significantly reduces the number of times we\nneed to take the worker thread spinlock.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "4e3f9c5042b43301d70781aee4a164a20878066b",
      "tree": "b2ace00c27553ec2a10958e17d6b90ea264d5886",
      "parents": [
        "40431d6c1288793a682fc6f5e5b5c9d5cac34608"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Aug 05 16:36:45 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 11 13:31:04 2009 -0400"
      },
      "message": "Btrfs: keep irqs on more often in the worker threads\n\nThe btrfs worker thread spinlock was being used both for the\nqueueing of IO and for the processing of ordered events.\n\nThe ordered events never happen from end_io handlers, and so they\ndon\u0027t need to use the _irq version of spinlocks.  This adds a\ndedicated lock to the ordered lists so they don\u0027t have to run\nwith irqs off.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "40431d6c1288793a682fc6f5e5b5c9d5cac34608",
      "tree": "a840fb38459476ff0aecda8369f965c344a25562",
      "parents": [
        "9042846bc7ae69cc3288d85af6bad16208d93a95"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Aug 05 12:57:59 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 11 13:31:03 2009 -0400"
      },
      "message": "Btrfs: optimize set extent bit\n\nThe Btrfs set_extent_bit call currently searches the rbtree\nevery time it needs to find more extent_state objects to fill\nthe requested operation.\n\nThis adds a simple test with rb_next to see if the next object\nin the tree was adjacent to the one we just found.  If so,\nwe skip the search and just use the next object.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "9042846bc7ae69cc3288d85af6bad16208d93a95",
      "tree": "d46077d217d31ce5600ef870c92fcdf330922b41",
      "parents": [
        "ceab36edd3d3ad3ffd01d41d6d1e05ac1ff8357e"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Aug 04 16:56:34 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 11 13:30:56 2009 -0400"
      },
      "message": "Btrfs: Allow worker threads to exit when idle\n\nThe Btrfs worker threads don\u0027t currently die off after they have\nbeen idle for a while, leading to a lot of threads sitting around\ndoing nothing for each mount.\n\nAlso, they are unable to start atomically (from end_io hanlders).\n\nThis commit reworks the worker threads so they can be started\nfrom end_io handlers (just setting a flag that asks for a thread\nto be added at a later date) and so they can exit if they\nhave been idle for a long time.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "acd0c935178649f72c44ec49ca83bee35ce1f79e",
      "tree": "c0cb2f8fbbaa54567785b5430e5be8c8b51f5724",
      "parents": [
        "e07cccf4046978df10f2e13fe2b99b2f9b3a65db"
      ],
      "author": {
        "name": "Mimi Zohar",
        "email": "zohar@linux.vnet.ibm.com",
        "time": "Fri Sep 04 13:08:46 2009 -0400"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Mon Sep 07 11:54:58 2009 +1000"
      },
      "message": "IMA: update ima_counts_put\n\n- As ima_counts_put() may be called after the inode has been freed,\nverify that the inode is not NULL, before dereferencing it.\n\n- Maintain the IMA file counters in may_open() properly, decrementing\nany counter increments on subsequent errors.\n\nReported-by: Ciprian Docan \u003cdocan@eden.rutgers.edu\u003e\nReported-by: J.R. Okajima \u003chooanon05@yahoo.co.jp\u003e\nSigned-off-by: Mimi Zohar \u003czohar@us.ibm.com\u003e\nAcked-by: Eric Paris \u003ceparis@redhat.com\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "5136a6c0fd5b26bbf39ad761cf7a4fc563ad83a3",
      "tree": "7c905238cb2c5c9cd959cd652010b0eaf5f91db3",
      "parents": [
        "e505a8d5f96a84f3043ce0c4eaee8f045996896c",
        "bc8cec0dff072f1a45ce7f6b2c5234bb3411ac51"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 14:57:04 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 14:57:04 2009 -0700"
      },
      "message": "Merge git://git.infradead.org/~dwmw2/mtd-2.6.31\n\n* git://git.infradead.org/~dwmw2/mtd-2.6.31:\n  JFFS2: add missing verify buffer allocation/deallocation\n  mtd: nftl: fix offset alignments\n  mtd: nftl: write support is broken\n  mtd: m25p80: fix null pointer dereference bug\n"
    },
    {
      "commit": "0edfa2b1b5a5e1475e76dd3c792447687d966de4",
      "tree": "a811a6955bb0fffc883e59eb261206b132e9e6dc",
      "parents": [
        "5a09adf13067609d8ab9fcae11dc99fd0084e35c",
        "3725867dccfb83e4b0cff64e916a04258f300591"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 14:25:14 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 14:25:14 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://oss.sgi.com/xfs/xfs\n\n* \u0027for-linus\u0027 of git://oss.sgi.com/xfs/xfs:\n  xfs: actually enable the swapext compat handler\n"
    },
    {
      "commit": "5a09adf13067609d8ab9fcae11dc99fd0084e35c",
      "tree": "be2908bf2a8a20e9bebb4a064611ca5c2e2977f9",
      "parents": [
        "931f70350e9c298887c78e852d179ef7efcce304",
        "b1f1b8ce0a1d71cbc72f7540134d52b79bd8f5ac"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 14:24:33 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 14:24:33 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ryusuke/nilfs2\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ryusuke/nilfs2:\n  nilfs2: fix preempt count underflow in nilfs_btnode_prepare_change_key\n"
    },
    {
      "commit": "9de6886ec6e37f45807266a702bb7621498395ad",
      "tree": "39402a2d467a856d0f956015a7ad0772719bf1b6",
      "parents": [
        "ac7ac9f2b9bfd9b68a1571d27e4c8bebb4788914"
      ],
      "author": {
        "name": "Nicolas Pitre",
        "email": "nico@cam.org",
        "time": "Sat Sep 05 00:25:37 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 13:41:08 2009 -0700"
      },
      "message": "ext2: fix unbalanced kmap()/kunmap()\n\nIn ext2_rename(), dir_page is acquired through ext2_dotdot().  It is\nthen released through ext2_set_link() but only if old_dir !\u003d new_dir.\nFailing that, the pkmap reference count is never decremented and the\npage remains pinned forever.  Repeat that a couple times with highmem\npages and all pkmap slots get exhausted, and every further kmap() calls\nend up stalling on the pkmap_map_wait queue at which point the whole\nsystem comes to a halt.\n\nSigned-off-by: Nicolas Pitre \u003cnico@marvell.com\u003e\nAcked-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ac7ac9f2b9bfd9b68a1571d27e4c8bebb4788914",
      "tree": "02aa160e02f7f1f4a65a7f478e9a92c0b7ad0088",
      "parents": [
        "ac89a9174decf343de049a06fad75681f71890eb",
        "8379e7c46cc48f51197dd663fc6676f47f2a1e71"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 13:38:37 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 13:38:37 2009 -0700"
      },
      "message": "Merge branch \u0027upstream-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/ocfs2\n\n* \u0027upstream-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/ocfs2:\n  ocfs2: ocfs2_write_begin_nolock() should handle len\u003d0\n  ocfs2: invalidate dentry if its dentry_lock isn\u0027t initialized.\n"
    },
    {
      "commit": "a2a8474c3fff88d8dd52d05cb450563fb26fd26c",
      "tree": "455415da039a77627f47ed19318bb9c8aa17de4d",
      "parents": [
        "dd5d241ea955006122d76af88af87de73fec25b4"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Sep 05 11:17:13 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 11:30:42 2009 -0700"
      },
      "message": "exec: do not sleep in TASK_TRACED under -\u003ecred_guard_mutex\n\nTom Horsley reports that his debugger hangs when it tries to read\n/proc/pid_of_tracee/maps, this happens since\n\n\t\"mm_for_maps: take -\u003ecred_guard_mutex to fix the race with exec\"\n\t04b836cbf19e885f8366bccb2e4b0474346c02d\n\ncommit in 2.6.31.\n\nBut the root of the problem lies in the fact that do_execve() path calls\ntracehook_report_exec() which can stop if the tracer sets PT_TRACE_EXEC.\n\nThe tracee must not sleep in TASK_TRACED holding this mutex.  Even if we\nremove -\u003ecred_guard_mutex from mm_for_maps() and proc_pid_attr_write(),\nanother task doing PTRACE_ATTACH should not hang until it is killed or the\ntracee resumes.\n\nWith this patch do_execve() does not use -\u003ecred_guard_mutex directly and\nwe do not hold it throughout, instead:\n\n\t- introduce prepare_bprm_creds() helper, it locks the mutex\n\t  and calls prepare_exec_creds() to initialize bprm-\u003ecred.\n\n\t- install_exec_creds() drops the mutex after commit_creds(),\n\t  and thus before tracehook_report_exec()-\u003eptrace_stop().\n\n\t  or, if exec fails,\n\n\t  free_bprm() drops this mutex when bprm-\u003ecred !\u003d NULL which\n\t  indicates install_exec_creds() was not called.\n\nReported-by: Tom Horsley \u003ctom.horsley@att.net\u003e\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: David Howells \u003cdhowells@redhat.com\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8379e7c46cc48f51197dd663fc6676f47f2a1e71",
      "tree": "ee6ae04dd7014bfe311ea0f48a0aea734a96c2ed",
      "parents": [
        "a1b08e75dff3dc18a88444803753e667bb1d126e"
      ],
      "author": {
        "name": "Sunil Mushran",
        "email": "sunil.mushran@oracle.com",
        "time": "Fri Sep 04 11:12:01 2009 -0700"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Sep 04 14:28:31 2009 -0700"
      },
      "message": "ocfs2: ocfs2_write_begin_nolock() should handle len\u003d0\n\nBug introduced by mainline commit e7432675f8ca868a4af365759a8d4c3779a3d922\nThe bug causes ocfs2_write_begin_nolock() to oops when len\u003d0.\n\nSigned-off-by: Sunil Mushran \u003csunil.mushran@oracle.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "bc8cec0dff072f1a45ce7f6b2c5234bb3411ac51",
      "tree": "c0794baebf16ecbbedbe79daaba80281fdad1e03",
      "parents": [
        "16f05c2b68520f94e365f9d347a7076f4ff00ad5"
      ],
      "author": {
        "name": "Massimo Cirillo",
        "email": "maxcir@gmail.com",
        "time": "Thu Aug 27 10:44:09 2009 +0200"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "David.Woodhouse@intel.com",
        "time": "Thu Sep 03 15:01:34 2009 +0100"
      },
      "message": "JFFS2: add missing verify buffer allocation/deallocation\n\nThe function jffs2_nor_wbuf_flash_setup() doesn\u0027t allocate the verify buffer\nif CONFIG_JFFS2_FS_WBUF_VERIFY is defined, so causing a kernel panic when\nthat macro is enabled and the verify function is called. Similarly the\njffs2_nor_wbuf_flash_cleanup() must free the buffer if\nCONFIG_JFFS2_FS_WBUF_VERIFY is enabled.\nThe following patch fixes the problem.\nThe following patch applies to 2.6.30 kernel.\n\nSigned-off-by: Massimo Cirillo \u003cmaxcir@gmail.com\u003e\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\nSigned-off-by: David Woodhouse \u003cDavid.Woodhouse@intel.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "3725867dccfb83e4b0cff64e916a04258f300591",
      "tree": "5c7f888895bf63994a85a02658f1a3433b2dccae",
      "parents": [
        "bc990f5cb424cdca9dda866785d088e2c2110ecc"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Tue Sep 01 14:03:08 2009 -0400"
      },
      "committer": {
        "name": "Felix Blyakher",
        "email": "felixb@sgi.com",
        "time": "Tue Sep 01 17:00:46 2009 -0500"
      },
      "message": "xfs: actually enable the swapext compat handler\n\nFix a small typo in the compat ioctl handler that cause the swapext\ncompat handler to never be called.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Torsten Kaiser \u003cjust.for.lkml@googlemail.com\u003e\nTested-by: Torsten Kaiser \u003cjust.for.lkml@googlemail.com\u003e\nReviewed-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\nReviewed-by: Felix Blyakher \u003cfelixb@sgi.com\u003e\nSigned-off-by: Felix Blyakher \u003cfelixb@sgi.com\u003e\n"
    },
    {
      "commit": "37d0892c5a94e208cf863e3b7bac014edee4346d",
      "tree": "642ecefb31c58451dc70964963b05412c269e831",
      "parents": [
        "cda9856f1ca62484433b9f734cd0fd553a5e4850"
      ],
      "author": {
        "name": "Ian Kent",
        "email": "raven@themaw.net",
        "time": "Tue Sep 01 11:26:22 2009 +0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 31 17:44:05 2009 -1000"
      },
      "message": "autofs4 - fix missed case when changing to use struct path\n\nIn the recent change by Al Viro that changes verious subsystems\nto use \"struct path\" one case was missed in the autofs4 module\nwhich causes mounts to no longer expire.\n\nSigned-off-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b1f1b8ce0a1d71cbc72f7540134d52b79bd8f5ac",
      "tree": "34261c597d93a43d9adf299e657b4fd5eebd43b7",
      "parents": [
        "326ba5010a5429a5a528b268b36a5900d4ab0eba"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Aug 30 04:21:41 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Aug 31 12:03:06 2009 +0900"
      },
      "message": "nilfs2: fix preempt count underflow in nilfs_btnode_prepare_change_key\n\nThis will fix the following preempt count underflow reported from\nusers with the title \"[NILFS users] segctord problem\" (Message-ID:\n\u003c949415.6494.qm@web58808.mail.re1.yahoo.com\u003e and Message-ID:\n\u003cdebc30fc0908270825v747c1734xa59126623cfd5b05@mail.gmail.com\u003e):\n\n WARNING: at kernel/sched.c:4890 sub_preempt_count+0x95/0xa0()\n Hardware name: HP Compaq 6530b (KR980UT#ABC)\n Modules linked in: bridge stp llc bnep rfcomm l2cap xfs exportfs nilfs2 cowloop loop vboxnetadp vboxnetflt vboxdrv btusb bluetooth uvcvideo videodev v4l1_compat v4l2_compat_ioctl32 arc4 snd_hda_codec_analog ecb iwlagn iwlcore rfkill lib80211 mac80211 snd_hda_intel snd_hda_codec ehci_hcd uhci_hcd usbcore snd_hwdep snd_pcm tg3 cfg80211 psmouse snd_timer joydev libphy ohci1394 snd_page_alloc hp_accel lis3lv02d ieee1394 led_class i915 drm i2c_algo_bit video backlight output i2c_core dm_crypt dm_mod\n Pid: 4197, comm: segctord Not tainted 2.6.30-gentoo-r4-64 #7\n Call Trace:\n  [\u003cffffffff8023fa05\u003e] ? sub_preempt_count+0x95/0xa0\n  [\u003cffffffff802470f8\u003e] warn_slowpath_common+0x78/0xd0\n  [\u003cffffffff8024715f\u003e] warn_slowpath_null+0xf/0x20\n  [\u003cffffffff8023fa05\u003e] sub_preempt_count+0x95/0xa0\n  [\u003cffffffffa04ce4db\u003e] nilfs_btnode_prepare_change_key+0x11b/0x190 [nilfs2]\n  [\u003cffffffffa04d01ad\u003e] nilfs_btree_assign_p+0x19d/0x1e0 [nilfs2]\n  [\u003cffffffffa04d10ad\u003e] nilfs_btree_assign+0xbd/0x130 [nilfs2]\n  [\u003cffffffffa04cead7\u003e] nilfs_bmap_assign+0x47/0x70 [nilfs2]\n  [\u003cffffffffa04d9bc6\u003e] nilfs_segctor_do_construct+0x956/0x20f0 [nilfs2]\n  [\u003cffffffff805ac8e2\u003e] ? _spin_unlock_irqrestore+0x12/0x40\n  [\u003cffffffff803c06e0\u003e] ? __up_write+0xe0/0x150\n  [\u003cffffffff80262959\u003e] ? up_write+0x9/0x10\n  [\u003cffffffffa04ce9f3\u003e] ? nilfs_bmap_test_and_clear_dirty+0x43/0x60 [nilfs2]\n  [\u003cffffffffa04cd627\u003e] ? nilfs_mdt_fetch_dirty+0x27/0x60 [nilfs2]\n  [\u003cffffffffa04db5fc\u003e] nilfs_segctor_construct+0x8c/0xd0 [nilfs2]\n  [\u003cffffffffa04dc3dc\u003e] nilfs_segctor_thread+0x15c/0x3a0 [nilfs2]\n  [\u003cffffffffa04dbe20\u003e] ? nilfs_construction_timeout+0x0/0x10 [nilfs2]\n  [\u003cffffffff80252633\u003e] ? add_timer+0x13/0x20\n  [\u003cffffffff802370da\u003e] ? __wake_up_common+0x5a/0x90\n  [\u003cffffffff8025e960\u003e] ? autoremove_wake_function+0x0/0x40\n  [\u003cffffffffa04dc280\u003e] ? nilfs_segctor_thread+0x0/0x3a0 [nilfs2]\n  [\u003cffffffffa04dc280\u003e] ? nilfs_segctor_thread+0x0/0x3a0 [nilfs2]\n  [\u003cffffffff8025e556\u003e] kthread+0x56/0x90\n  [\u003cffffffff8020cdea\u003e] child_rip+0xa/0x20\n  [\u003cffffffff8025e500\u003e] ? kthread+0x0/0x90\n  [\u003cffffffff8020cde0\u003e] ? child_rip+0x0/0x20\n\nThis problem was caused due to a missing radix_tree_preload() call in\nthe retry path of nilfs_btnode_prepare_change_key() function.\n\nReported-by: Eric A \u003ceric225125@yahoo.com\u003e\nReported-by: Jerome Poulin \u003cjeromepoulin@gmail.com\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nTested-by: Jerome Poulin \u003cjeromepoulin@gmail.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "750a8870fe4016ef3091fc97e084d58c613c2cc7",
      "tree": "7a33b8edb176465959abe9bd67a21a4498d93b6a",
      "parents": [
        "83cb10f0ef3c96162be92339ccf8c0c9c9f2d13e"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Fri Aug 28 12:50:47 2009 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Fri Aug 28 12:51:14 2009 -0400"
      },
      "message": "inotify: update the group mask on mark addition\n\nSeperating the addition and update of marks in inotify resulted in a\nregression in that inotify never gets events.  The inotify group mask is\nalways 0.  This mask should be updated any time a new mark is added.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "83cb10f0ef3c96162be92339ccf8c0c9c9f2d13e",
      "tree": "e83f71fde279bc4ed80db945b55603f653aa08e1",
      "parents": [
        "b962e7312ae87006aed6f68ceee94bdf8db08338"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Fri Aug 28 11:57:55 2009 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Fri Aug 28 11:57:55 2009 -0400"
      },
      "message": "inotify: fix length reporting and size checking\n\n0db501bd0610ee0c0 introduced a regresion in that it now sends a nul\nterminator but the length accounting when checking for space or\nreporting to userspace did not take this into account.  This corrects\nall of the rounding logic.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "b962e7312ae87006aed6f68ceee94bdf8db08338",
      "tree": "5d74244d31f510d346afbe80fea3285ccb8504d8",
      "parents": [
        "326ba5010a5429a5a528b268b36a5900d4ab0eba"
      ],
      "author": {
        "name": "Brian Rogers",
        "email": "brian@xyzw.org",
        "time": "Fri Aug 28 10:00:05 2009 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Fri Aug 28 10:03:06 2009 -0400"
      },
      "message": "inotify: do not send a block of zeros when no pathname is available\n\nWhen an event has no pathname, there\u0027s no need to pad it with a null byte and\ntherefore generate an inotify_event sized block of zeros. This fixes a\nregression introduced by commit 0db501bd0610ee0c0aca84d927f90bcccd09e2bd where\nmy system wouldn\u0027t finish booting because some process was being confused by\nthis.\n\nSigned-off-by: Brian Rogers \u003cbrian@xyzw.org\u003e\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "a1b08e75dff3dc18a88444803753e667bb1d126e",
      "tree": "b782aaa5e2775c693bb711647e9e2b2331003fb4",
      "parents": [
        "c795b33ba171e41563ab7e25105c0cd4edd81cd7"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Thu Aug 27 14:46:56 2009 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Aug 27 18:10:54 2009 -0700"
      },
      "message": "ocfs2: invalidate dentry if its dentry_lock isn\u0027t initialized.\n\nIn commit a5a0a630922a2f6a774b6dac19f70cb5abd86bb0, when\nocfs2_attch_dentry_lock fails, we call an extra iput and reset\ndentry-\u003ed_fsdata to NULL. This resolve a bug, but it isn\u0027t\ncompleted and the dentry is still there. When we want to use\nit again, ocfs2_dentry_revalidate doesn\u0027t catch it and return\ntrue. That make future ocfs2_dentry_lock panic out.\nOne bug is http://oss.oracle.com/bugzilla/show_bug.cgi?id\u003d1162.\n\nThe resolution is to add a check for dentry-\u003ed_fsdata in\nrevalidate process and return false if dentry-\u003ed_fsdata is NULL,\nso that a new ocfs2_lookup will be called again.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "9c504cadc443a3d002fa581ec5109c0ef02d7b14",
      "tree": "0b44c60843062e5ee8d91a636dab67ada5286156",
      "parents": [
        "4f8ee2c9cc0e885d2bb50ef26db66150ab25213e",
        "0db501bd0610ee0c0aca84d927f90bcccd09e2bd"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Aug 27 12:26:02 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Aug 27 12:26:02 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.infradead.org/users/eparis/notify\n\n* \u0027for-linus\u0027 of git://git.infradead.org/users/eparis/notify:\n  inotify: Ensure we alwasy write the terminating NULL.\n  inotify: fix locking around inotify watching in the idr\n  inotify: do not BUG on idr entries at inotify destruction\n  inotify: seperate new watch creation updating existing watches\n"
    },
    {
      "commit": "cf481442f2e086316ed8a1b3046f00ad23632ac4",
      "tree": "2edd0fb64549dfb6388e39d86e8965908dfcb925",
      "parents": [
        "788d908f2879a17e5f80924f3da2e23f1034482d",
        "7815f4be4026b6c5027058102ae67a4b9feffa5f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Aug 27 12:24:08 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Aug 27 12:24:08 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs:\n  9p: update documentation pointers\n  9p: remove unnecessary v9fses-\u003eoptions which duplicates the mount string\n  net/9p: insulate the client against an invalid error code sent by a 9p server\n  9p: Add missing cast for the error return value in v9fs_get_inode\n  9p: Remove redundant inode uid/gid assignment\n  9p: Fix possible regressions when -\u003eget_sb fails.\n  9p: Fix v9fs show_options\n  9p: Fix possible memleak in v9fs_inode_from fid.\n  9p: minor comment fixes\n  9p: Fix possible inode leak in v9fs_get_inode.\n  9p: Check for error in return value of v9fs_fid_add\n"
    },
    {
      "commit": "9886e836a6a5dbd273dc55b17e713f0a188d137f",
      "tree": "87f8e3d719ae43d5d5d5911d70d6c7b3aa66be32",
      "parents": [
        "1e23502cc57cef33455ac7cb9111e3c6d991a894"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Thu Aug 27 13:09:06 2009 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Aug 27 12:22:08 2009 -0700"
      },
      "message": "AFS: Stop readlink() on AFS crashing due to NULL \u0027file\u0027 ptr\n\nkAFS crashes when asked to read a symbolic link because page_getlink()\npasses a NULL file pointer to read_mapping_page(), but afs_readpage()\nexpects a file pointer from which to extract a key.\n\nModify afs_readpage() to request the appropriate key from the calling\nprocess\u0027s keyrings if a file struct is not supplied with one attached.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Anton Blanchard \u003canton@samba.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0db501bd0610ee0c0aca84d927f90bcccd09e2bd",
      "tree": "108756b2460edff75bb7bc6c778e1a2c0ff50167",
      "parents": [
        "dead537dd8a1c9495322c1d6f7c780697f474af0"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Thu Aug 27 03:20:04 2009 -0700"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Aug 27 08:02:10 2009 -0400"
      },
      "message": "inotify: Ensure we alwasy write the terminating NULL.\n\nBefore the rewrite copy_event_to_user always wrote a terqminating \u0027\\0\u0027\nbyte to user space after the filename.  Since the rewrite that\nterminating byte was skipped if your filename is exactly a multiple of\nevent_size.  Ouch!\n\nSo add one byte to name_size before we round up and use clear_user to\nset userspace to zero like /dev/zero does instead of copying the\nstrange nul_inotify_event.  I can\u0027t quite convince myself len_to_zero\nwill never exceed 16 and even if it doesn\u0027t clear_user should be more\nefficient and a more accurate reflection of what the code is trying to\ndo.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@aristanetworks.com\u003e\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "dead537dd8a1c9495322c1d6f7c780697f474af0",
      "tree": "5263cf56e792cfc5ddf37748d2868fce9866af68",
      "parents": [
        "cf4374267fbe966e8e4e7db68f5dc7b267439780"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Mon Aug 24 16:03:35 2009 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Aug 27 08:02:04 2009 -0400"
      },
      "message": "inotify: fix locking around inotify watching in the idr\n\nThe are races around the idr storage of inotify watches.  It\u0027s possible\nthat a watch could be found from sys_inotify_rm_watch() in the idr, but it\ncould be removed from the idr before that code does it\u0027s removal.  Move the\nlocking and the refcnt\u0027ing so that these have to happen atomically.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "cf4374267fbe966e8e4e7db68f5dc7b267439780",
      "tree": "60871fa44df49a8581e2afb06f493e768a058b86",
      "parents": [
        "52cef7555adf5ca09b3b7283097466759120d901"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Mon Aug 24 16:03:35 2009 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Aug 27 08:02:04 2009 -0400"
      },
      "message": "inotify: do not BUG on idr entries at inotify destruction\n\nIf an inotify watch is left in the idr when an fsnotify group is destroyed\nthis will lead to a BUG.  This is not a dangerous situation and really\nindicates a programming bug and leak of memory.  This patch changes it to\nuse a WARN and a printk rather than killing people\u0027s boxes.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "52cef7555adf5ca09b3b7283097466759120d901",
      "tree": "641ddd087f6effe88fad2e3c0b5d744e9d71fdda",
      "parents": [
        "1e23502cc57cef33455ac7cb9111e3c6d991a894"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Mon Aug 24 16:03:35 2009 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Aug 27 08:02:04 2009 -0400"
      },
      "message": "inotify: seperate new watch creation updating existing watches\n\nThere is nothing known wrong with the inotify watch addition/modification\nbut this patch seperates the two code paths to make them each easy to\nverify as correct.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "e9cab24cf3e5610898fb26bfd664615d0fd6a8d6",
      "tree": "5e2ac2f09655514fa1d7b69e13c83d5d04b20693",
      "parents": [
        "a206e9417f19cf42156249953b72223a0076dc6b",
        "3c4cec65274481ec6332b0a91f19b4c8c5394801"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 25 09:47:36 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 25 09:47:36 2009 -0700"
      },
      "message": "Merge branch \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6\n\n* \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6:\n  ext3: Improve error message that changing journaling mode on remount is not possible\n  ext3: Update Kconfig description of EXT3_DEFAULTS_TO_ORDERED\n"
    },
    {
      "commit": "7111dc73923e9737b38a3ef5b5f236109000ff28",
      "tree": "a21d3fbdf710b8a5ecfede32b822368fea2cad40",
      "parents": [
        "2584e7986f235572d4b03bbe52fd1e85c1679b8e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Aug 24 19:21:29 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 24 16:28:42 2009 -0700"
      },
      "message": "NFSv4: Fix an infinite looping problem with the nfs4_state_manager\n\nCommit 76db6d9500caeaa774a3e32a997eba30bbdc176b (nfs41: add session setup\nto the state manager) introduces an infinite loop possibility in the NFSv4\nstate manager. By first checking nfs4_has_session() before clearing the\nNFS4CLNT_SESSION_SETUP flag, it allows for a situation where someone sets\nthat flag, but it never gets cleared, and so the state manager loops.\n\nIn fact commit c3fad1b1aaf850bf692642642ace7cd0d64af0a3 (nfs41: add session\nreset to state manager) causes this to happen every time we get a network\npartition error.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nTested-by: Daniel J Blueman \u003cdaniel.blueman@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2584e7986f235572d4b03bbe52fd1e85c1679b8e",
      "tree": "7265bf25f3e6ab4b8f0a7e2e5d0500aa1de77b55",
      "parents": [
        "7c0a57d5c47bcfc492b3139e77400f888a935c44",
        "c795b33ba171e41563ab7e25105c0cd4edd81cd7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 24 14:41:28 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 24 14:41:28 2009 -0700"
      },
      "message": "Merge branch \u0027upstream-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/ocfs2\n\n* \u0027upstream-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/ocfs2:\n  ocfs2/dlm: Wait on lockres instead of erroring cancel requests\n  ocfs2: Add missing lock name\n  ocfs2: Don\u0027t oops in ocfs2_kill_sb on a failed mount\n  ocfs2: release the buffer head in ocfs2_do_truncate.\n  ocfs2: Handle quota file corruption more gracefully\n"
    },
    {
      "commit": "353d5c30c666580347515da609dd74a2b8e9b828",
      "tree": "03cf3b5c0bc2ce08a12af303b141503ad833178f",
      "parents": [
        "0257a0c0c1997aac28420e784b3ef8f3ce17f093"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Aug 24 16:30:28 2009 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 24 12:53:01 2009 -0700"
      },
      "message": "mm: fix hugetlb bug due to user_shm_unlock call\n\n2.6.30\u0027s commit 8a0bdec194c21c8fdef840989d0d7b742bb5d4bc removed\nuser_shm_lock() calls in hugetlb_file_setup() but left the\nuser_shm_unlock call in shm_destroy().\n\nIn detail:\nAssume that can_do_hugetlb_shm() returns true and hence user_shm_lock()\nis not called in hugetlb_file_setup(). However, user_shm_unlock() is\ncalled in any case in shm_destroy() and in the following\natomic_dec_and_lock(\u0026up-\u003e__count) in free_uid() is executed and if\nup-\u003e__count gets zero, also cleanup_user_struct() is scheduled.\n\nNote that sched_destroy_user() is empty if CONFIG_USER_SCHED is not set.\nHowever, the ref counter up-\u003e__count gets unexpectedly non-positive and\nthe corresponding structs are freed even though there are live\nreferences to them, resulting in a kernel oops after a lots of\nshmget(SHM_HUGETLB)/shmctl(IPC_RMID) cycles and CONFIG_USER_SCHED set.\n\nHugh changed Stefan\u0027s suggested patch: can_do_hugetlb_shm() at the\ntime of shm_destroy() may give a different answer from at the time\nof hugetlb_file_setup().  And fixed newseg()\u0027s no_id error path,\nwhich has missed user_shm_unlock() ever since it came in 2.6.9.\n\nReported-by: Stefan Huber \u003cshuber2@gmail.com\u003e\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nTested-by: Stefan Huber \u003cshuber2@gmail.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3c4cec65274481ec6332b0a91f19b4c8c5394801",
      "tree": "c74bd4cedaecdf2b1132753ffbc337e8d3e6b161",
      "parents": [
        "6d41807614151829ae17a3a58bff8572af5e407e"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Aug 24 16:38:43 2009 +0200"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Aug 24 16:48:45 2009 +0200"
      },
      "message": "ext3: Improve error message that changing journaling mode on remount is not possible\n\nThis patch makes the error message about changing journaling mode on remount\nmore descriptive. Some people are going to hit this error now due to commit\nbbae8bcc49bc4d002221dab52c79a50a82e7cd1f if they configure a kernel to default\nto data\u003dwriteback mode. The problem happens if they have data\u003dordered set for\nthe root filesystem in /etc/fstab but not in the kernel command line (and they\ndon\u0027t use initrd). Their filesystem then gets mounted as data\u003dwriteback by\nkernel but then their boot fails because init scripts won\u0027t be able to remount\nthe filesystem rw. Better error message will hopefully make it easier for them\nto find the error in their setup and bother us less with error reports :).\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    }
  ],
  "next": "6d41807614151829ae17a3a58bff8572af5e407e"
}
