)]}'
{
  "log": [
    {
      "commit": "442a4f6308e694e0fa6025708bd5e4e424bbf51c",
      "tree": "e782db1bcbec25283048d77871e0bed7ad04567c",
      "parents": [
        "d07eb9117050c9ed3f78296ebcc06128b52693be"
      ],
      "author": {
        "name": "Stefan Behrens",
        "email": "sbehrens@giantdisaster.de",
        "time": "Fri May 25 16:06:08 2012 +0200"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 30 10:23:39 2012 -0400"
      },
      "message": "Btrfs: add device counters for detected IO and checksum errors\n\nThe goal is to detect when drives start to get an increased error rate,\nwhen drives should be replaced soon. Therefore statistic counters are\nadded that count IO errors (read, write and flush). Additionally, the\nsoftware detected errors like checksum errors and corrupted blocks are\ncounted.\n\nSigned-off-by: Stefan Behrens \u003csbehrens@giantdisaster.de\u003e\n"
    },
    {
      "commit": "271fd5d7286eb931142402c170943d14640bb922",
      "tree": "dc60c1623f63a7db588de4c3c7362a9ac7abf56a",
      "parents": [
        "ce7e5d2d19bc371e1b67826bfbc79bbcbaa9772f",
        "b9fab919b748c7b39c19ff236ed6c5682c266dde"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 06 10:20:07 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 06 10:20:07 2012 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs\n\nPull btrfs fixes from Chris Mason:\n \"The big ones here are a memory leak we introduced in rc1, and a\n  scheduling while atomic if the transid on disk doesn\u0027t match the\n  transid we expected.  This happens for corrupt blocks, or out of date\n  disks.\n\n  It also fixes up the ioctl definition for our ioctl to resolve logical\n  inode numbers.  The __u32 was a merging error and doesn\u0027t match what\n  we ship in the progs.\"\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:\n  Btrfs: avoid sleeping in verify_parent_transid while atomic\n  Btrfs: fix crash in scrub repair code when device is missing\n  btrfs: Fix mismatching struct members in ioctl.h\n  Btrfs: fix page leak when allocing extent buffers\n  Btrfs: Add properly locking around add_root_to_dirty_list\n"
    },
    {
      "commit": "ea9947b4395fa34666086b2fa6f686e94903e047",
      "tree": "086ab5150fc7f37b2070ab1200bf8b5275c85f06",
      "parents": [
        "d04b1debc92535453df2494d0b019edf0bb91003"
      ],
      "author": {
        "name": "Stefan Behrens",
        "email": "sbehrens@giantdisaster.de",
        "time": "Fri May 04 15:16:07 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri May 04 15:16:07 2012 -0400"
      },
      "message": "Btrfs: fix crash in scrub repair code when device is missing\n\nFix that when scrub tries to repair an I/O or checksum error and one of\nthe devices containing the mirror is missing, it crashes in bio_add_page\nbecause the bdev is a NULL pointer for missing devices.\n\nReported-by: Marco L. Crociani \u003cmarco.crociani@gmail.com\u003e\nSigned-off-by: Stefan Behrens \u003csbehrens@giantdisaster.de\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f7b006931751f029620ad2f8310ac7a1484fbdb4",
      "tree": "71120f4c4c51752902317fbf853e3b0316c2adb0",
      "parents": [
        "b990f9b3cb068578b8aefd3a34f8c8555661ef95",
        "dc7fdde39e4962b1a88741f7eba2a6b3be1285d8"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Apr 28 09:30:07 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Apr 28 09:30:07 2012 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs\n\nPull btrfs fixes from Chris Mason:\n \"This has our collection of bug fixes.  I missed the last rc because I\n  thought our patches were making NFS crash during my xfs test runs.\n  Turns out it was an NFS client bug fixed by someone else while I tried\n  to bisect it.\n\n  All of these fixes are small, but some are fairly high impact.  The\n  biggest are fixes for our mount -o remount handling, a deadlock due to\n  GFP_KERNEL allocations in readdir, and a RAID10 error handling bug.\n\n  This was tested against both 3.3 and Linus\u0027 master as of this morning.\"\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs: (26 commits)\n  Btrfs: reduce lock contention during extent insertion\n  Btrfs: avoid deadlocks from GFP_KERNEL allocations during btrfs_real_readdir\n  Btrfs: Fix space checking during fs resize\n  Btrfs: fix block_rsv and space_info lock ordering\n  Btrfs: Prevent root_list corruption\n  Btrfs: fix repair code for RAID10\n  Btrfs: do not start delalloc inodes during sync\n  Btrfs: fix that check_int_data mount option was ignored\n  Btrfs: don\u0027t count CRC or header errors twice while scrubbing\n  Btrfs: fix btrfs_ioctl_dev_info() crash on missing device\n  btrfs: don\u0027t return EINTR\n  Btrfs: double unlock bug in error handling\n  Btrfs: always store the mirror we read the eb from\n  fs/btrfs/volumes.c: add missing free_fs_devices\n  btrfs: fix early abort in \u0027remount\u0027\n  Btrfs: fix max chunk size check in chunk allocator\n  Btrfs: add missing read locks in backref.c\n  Btrfs: don\u0027t call free_extent_buffer twice in iterate_irefs\n  Btrfs: Make free_ipath() deal gracefully with NULL pointers\n  Btrfs: avoid possible use-after-free in clear_extent_bit()\n  ...\n"
    },
    {
      "commit": "5c84fc3c3914e9adfa6155a167c6c0c2709e6a62",
      "tree": "b2ef30b7872dc9f31f621681169abaf4eb9e8205",
      "parents": [
        "99ba55ad696944b37d5557bc5b4816890854fdb9"
      ],
      "author": {
        "name": "Stefan Behrens",
        "email": "sbehrens@giantdisaster.de",
        "time": "Fri Mar 30 13:58:31 2012 +0200"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Apr 18 19:22:36 2012 +0200"
      },
      "message": "Btrfs: don\u0027t count CRC or header errors twice while scrubbing\n\nEach CRC or header error was counted twice, this is now fixed.\n\nSigned-off-by: Stefan Behrens \u003csbehrens@giantdisaster.de\u003e\n"
    },
    {
      "commit": "659e45d8a0aca8619f0d308448c480279fa002b6",
      "tree": "4475e6a64568e81d9418265eb4932f017e7a61a9",
      "parents": [
        "c104f1fa1ecf4ee0fc06e31b1f77630b2551be81",
        "d53ba47484ed6245e640ee4bfe9d21e9bfc15765"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 13 19:41:27 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 13 19:41:27 2012 -0700"
      },
      "message": "Merge branch \u0027for-linus-min\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs\n\nPull the minimal btrfs branch from Chris Mason:\n \"We have a use-after-free in there, along with errors when mount -o\n  discard is enabled, and a BUG_ON(we should compile with UP more\n  often).\"\n\n* \u0027for-linus-min\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:\n  Btrfs: use commit root when loading free space cache\n  Btrfs: fix use-after-free in __btrfs_end_transaction\n  Btrfs: check return value of bio_alloc() properly\n  Btrfs: remove lock assert from get_restripe_target()\n  Btrfs: fix eof while discarding extents\n  Btrfs: fix uninit variable in repair_eb_io_failure\n  Revert \"Btrfs: increase the global block reserve estimates\"\n"
    },
    {
      "commit": "e627ee7bcd42b4e3a03ca01a8e46dcb4033c5ae0",
      "tree": "a6f8060dd57184e79b5c46404c941f999137030d",
      "parents": [
        "c6664b42c4e567792abdb17c958fb01c5bcfcb3a"
      ],
      "author": {
        "name": "Tsutomu Itoh",
        "email": "t-itoh@jp.fujitsu.com",
        "time": "Thu Apr 12 16:03:56 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Apr 12 16:03:56 2012 -0400"
      },
      "message": "Btrfs: check return value of bio_alloc() properly\n\nbio_alloc() has the possibility of returning NULL.\nSo, it is necessary to check the return value.\n\nSigned-off-by: Tsutomu Itoh \u003ct-itoh@jp.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "9613bebb223dea3179c265dc31e1bb41ae39f321",
      "tree": "39bf883573d23775a53be3172323c0237fef5630",
      "parents": [
        "40380f1c7841a5dcbf0b20f0b6da11969211ef77",
        "bc3f116fec194f1d7329b160c266fe16b9266a1e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 30 12:44:29 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 30 12:44:29 2012 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs\n\nPull btrfs fixes and features from Chris Mason:\n \"We\u0027ve merged in the error handling patches from SuSE.  These are\n  already shipping in the sles kernel, and they give btrfs the ability\n  to abort transactions and go readonly on errors.  It involves a lot of\n  churn as they clarify BUG_ONs, and remove the ones we now properly\n  deal with.\n\n  Josef reworked the way our metadata interacts with the page cache.\n  page-\u003eprivate now points to the btrfs extent_buffer object, which\n  makes everything faster.  He changed it so we write an whole extent\n  buffer at a time instead of allowing individual pages to go down,,\n  which will be important for the raid5/6 code (for the 3.5 merge\n  window ;)\n\n  Josef also made us more aggressive about dropping pages for metadata\n  blocks that were freed due to COW.  Overall, our metadata caching is\n  much faster now.\n\n  We\u0027ve integrated my patch for metadata bigger than the page size.\n  This allows metadata blocks up to 64KB in size.  In practice 16K and\n  32K seem to work best.  For workloads with lots of metadata, this cuts\n  down the size of the extent allocation tree dramatically and fragments\n  much less.\n\n  Scrub was updated to support the larger block sizes, which ended up\n  being a fairly large change (thanks Stefan Behrens).\n\n  We also have an assortment of fixes and updates, especially to the\n  balancing code (Ilya Dryomov), the back ref walker (Jan Schmidt) and\n  the defragging code (Liu Bo).\"\n\nFixed up trivial conflicts in fs/btrfs/scrub.c that were just due to\nremoval of the second argument to k[un]map_atomic() in commit\n7ac687d9e047.\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs: (75 commits)\n  Btrfs: update the checks for mixed block groups with big metadata blocks\n  Btrfs: update to the right index of defragment\n  Btrfs: do not bother to defrag an extent if it is a big real extent\n  Btrfs: add a check to decide if we should defrag the range\n  Btrfs: fix recursive defragment with autodefrag option\n  Btrfs: fix the mismatch of page-\u003emapping\n  Btrfs: fix race between direct io and autodefrag\n  Btrfs: fix deadlock during allocating chunks\n  Btrfs: show useful info in space reservation tracepoint\n  Btrfs: don\u0027t use crc items bigger than 4KB\n  Btrfs: flush out and clean up any block device pages during mount\n  btrfs: disallow unequal data/metadata blocksize for mixed block groups\n  Btrfs: enhance superblock sanity checks\n  Btrfs: change scrub to support big blocks\n  Btrfs: minor cleanup in scrub\n  Btrfs: introduce common define for max number of mirrors\n  Btrfs: fix infinite loop in btrfs_shrink_device()\n  Btrfs: fix memory leak in resolver code\n  Btrfs: allow dup for data chunks in mixed mode\n  Btrfs: validate target profiles only if we are going to use them\n  ...\n"
    },
    {
      "commit": "98961a7e431735c791dbaaf0337029e219a5db5a",
      "tree": "e045f062c01075e1f88ab758717cbfd7a7ddd4ca",
      "parents": [
        "1c691b330a19a1344df89bcb0f4cacd99e8b289a",
        "7a3ae2f8c8c8432e65467b7fc84d5deab04061a0"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Mar 28 20:33:40 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Mar 28 20:33:40 2012 -0400"
      },
      "message": "Merge git://git.jan-o-sch.net/btrfs-unstable into for-linus\n\nConflicts:\n\tfs/btrfs/transaction.c\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "1d4284bd6e8d7dd1d5521a6747bdb6dc1caf0225",
      "tree": "a7dde6312ec24eb6368cad7a3efedbf368a5a70c",
      "parents": [
        "b5d67f64f9bc656970dacba245410f0faedad18e",
        "65139ed99234d8505948cdb7a835452eb5c191f9"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Mar 28 20:31:37 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Mar 28 20:31:37 2012 -0400"
      },
      "message": "Merge branch \u0027error-handling\u0027 into for-linus\n\nConflicts:\n\tfs/btrfs/ctree.c\n\tfs/btrfs/disk-io.c\n\tfs/btrfs/extent-tree.c\n\tfs/btrfs/extent_io.c\n\tfs/btrfs/extent_io.h\n\tfs/btrfs/inode.c\n\tfs/btrfs/scrub.c\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "b5d67f64f9bc656970dacba245410f0faedad18e",
      "tree": "3c267dbc01ae04dc827a563dc91baafdae14582a",
      "parents": [
        "1623edebee317855c6a854366c01d1630cc537c9"
      ],
      "author": {
        "name": "Stefan Behrens",
        "email": "sbehrens@giantdisaster.de",
        "time": "Tue Mar 27 14:21:27 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Mar 27 14:21:27 2012 -0400"
      },
      "message": "Btrfs: change scrub to support big blocks\n\nScrub used to be coded for nodesize \u003d\u003d leafsize \u003d\u003d sectorsize \u003d\u003d PAGE_SIZE.\nThis is now changed to support sizes for nodesize and leafsize which are\nN * PAGE_SIZE.\n\nSigned-off-by: Stefan Behrens \u003csbehrens@giantdisaster.de\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "1623edebee317855c6a854366c01d1630cc537c9",
      "tree": "d2b79580ce85e26c89a257be0400c58c966ee4c6",
      "parents": [
        "94598ba8d8ff066115508fb99e593d2de1ca67e1"
      ],
      "author": {
        "name": "Stefan Behrens",
        "email": "sbehrens@giantdisaster.de",
        "time": "Tue Mar 27 14:21:26 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Mar 27 14:21:26 2012 -0400"
      },
      "message": "Btrfs: minor cleanup in scrub\n\nJust a minor cleanup commit in preparation for the big block changes.\n\nSigned-off-by: Stefan Behrens \u003csbehrens@giantdisaster.de\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "7a3ae2f8c8c8432e65467b7fc84d5deab04061a0",
      "tree": "e93c46eb8def633533fe80032872f71b36fc03b8",
      "parents": [
        "103e976616fe9c2a3e40764c979fa1a592274da2"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Fri Mar 23 17:32:28 2012 +0100"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Tue Mar 27 14:51:21 2012 +0200"
      },
      "message": "Btrfs: fix regression in scrub path resolving\n\nIn commit 4692cf58 we introduced new backref walking code for btrfs. This\nassumes we\u0027re searching live roots, which requires a transaction context.\nWhile scrubbing, however, we must not join a transaction because this could\ndeadlock with the commit path. Additionally, what scrub really wants to do\nis resolving a logical address in the commit root it\u0027s currently checking.\n\nThis patch adds support for logical to path resolving on commit roots and\nmakes scrub use that.\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "79787eaab46121d4713ed03c8fc63b9ec3eaec76",
      "tree": "ee6b17d0811ee54ab74a03aa4e0bb92769d2f12a",
      "parents": [
        "49b25e0540904be0bf558b84475c69d72e4de66e"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 12 16:03:00 2012 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 11:52:54 2012 +0100"
      },
      "message": "btrfs: replace many BUG_ONs with proper error handling\n\n btrfs currently handles most errors with BUG_ON. This patch is a work-in-\n progress but aims to handle most errors other than internal logic\n errors and ENOMEM more gracefully.\n\n This iteration prevents most crashes but can run into lockups with\n the page lock on occasion when the timing \"works out.\"\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\n"
    },
    {
      "commit": "49b25e0540904be0bf558b84475c69d72e4de66e",
      "tree": "5a89b2f5d6e5bd8b1ff39bdb387071ec1cb2a615",
      "parents": [
        "4da35113426d16673aa1fb0613c14ca2e419e7fd"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Thu Mar 01 17:24:58 2012 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 01:45:40 2012 +0100"
      },
      "message": "btrfs: enhance transaction abort infrastructure\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\n"
    },
    {
      "commit": "143bede527b054a271053f41bfaca2b57baa9408",
      "tree": "95c71d3705c73bf98e7a1547da35e70a44703c1e",
      "parents": [
        "ffd7b33944f4573a063af7a55f8a5199c8185665"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Thu Mar 01 14:56:26 2012 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 01:45:34 2012 +0100"
      },
      "message": "btrfs: return void in functions without error conditions\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\n"
    },
    {
      "commit": "7ac687d9e047b3fa335f04e18c7188db6a170334",
      "tree": "5f17ea504a2185070b75076ea0108d88b96309c3",
      "parents": [
        "e8e3c3d66fd9d1ee2250f68d778cc48c1346d228"
      ],
      "author": {
        "name": "Cong Wang",
        "email": "amwang@redhat.com",
        "time": "Fri Nov 25 23:14:28 2011 +0800"
      },
      "committer": {
        "name": "Cong Wang",
        "email": "xiyou.wangcong@gmail.com",
        "time": "Tue Mar 20 21:48:21 2012 +0800"
      },
      "message": "btrfs: remove the second argument of k[un]map_atomic()\n\nSigned-off-by: Cong Wang \u003camwang@redhat.com\u003e\n"
    },
    {
      "commit": "859acaf1a29bbacf6256f1159210c8d6df992b33",
      "tree": "0e08eca0d031161762623049076a5bf3bf1186c0",
      "parents": [
        "2cac13e41bf5b99ffc426bd28dfd2248df1dfa67"
      ],
      "author": {
        "name": "Arne Jansen",
        "email": "sensille@gmx.net",
        "time": "Thu Feb 09 15:09:02 2012 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Feb 15 16:40:24 2012 +0100"
      },
      "message": "btrfs: don\u0027t check DUP chunks twice\n\nBecause scrub enumerates the dev extent tree to find the chunks to scrub,\nit currently finds each DUP chunk twice and also scrubs it twice. This\npatch makes sure that scrub_chunk only checks that part of the chunk the\ndev extent has been found for. This only changes the behaviour for DUP\nchunks.\n\nReported-and-tested-by: Stefan Behrens \u003csbehrens@giantdisaster.de\u003e\nSigned-off-by: Arne Jansen \u003csensille@gmx.net\u003e\n"
    },
    {
      "commit": "c126dea771be1b3c370c0ffc4a09e6a82d492a49",
      "tree": "99fc723ba2e89d767e260244cf8d19467bc68c8b",
      "parents": [
        "9785dbdf265ddc47d5c88267d89a97648c0dc14b",
        "21adbd5cbb5344a3fca6bb7ddb2ab6cb03c44546"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:27:58 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:27:58 2012 -0500"
      },
      "message": "Merge branch \u0027integrity-check-patch-v2\u0027 of git://btrfs.giantdisaster.de/git/btrfs into integration\n\nConflicts:\n\tfs/btrfs/ctree.h\n\tfs/btrfs/super.c\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "9785dbdf265ddc47d5c88267d89a97648c0dc14b",
      "tree": "3a97a48d6f282f9e06c5446beeb886fcd86c4798",
      "parents": [
        "d756bd2d9339447c29bde950910586df8f8941ec",
        "6bf7e080d5bcb0d399ee38ce3dabbfad64448192"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:26:31 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:26:31 2012 -0500"
      },
      "message": "Merge branch \u0027for-chris\u0027 of git://git.jan-o-sch.net/btrfs-unstable into integration\n"
    },
    {
      "commit": "4692cf58aa7b81f721c1653d48db99ea41421d58",
      "tree": "0a5bf889142252d91bcc8df33a9c63c18024fe70",
      "parents": [
        "8da6d5815c592b713ecaf4f4f8b631f8359c96c4"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Fri Dec 02 14:56:41 2011 +0100"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Thu Jan 05 10:49:43 2012 +0100"
      },
      "message": "Btrfs: new backref walking code\n\nThe old backref iteration code could only safely be used on commit roots.\nBesides this limitation, it had bugs in finding the roots for these\nreferences. This commit replaces large parts of it by btrfs_find_all_roots()\nwhich a) really finds all roots and the correct roots, b) works correctly\nunder heavy file system load, c) considers delayed refs.\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "21adbd5cbb5344a3fca6bb7ddb2ab6cb03c44546",
      "tree": "208c3ab6ad8bb35937b21c4d54e45e46d99557ff",
      "parents": [
        "f11e4d7f533249ddfa110116200c5c3a509f9218"
      ],
      "author": {
        "name": "Stefan Behrens",
        "email": "sbehrens@giantdisaster.de",
        "time": "Wed Nov 09 13:44:05 2011 +0100"
      },
      "committer": {
        "name": "Stefan Behrens",
        "email": "sbehrens@giantdisaster.de",
        "time": "Wed Dec 21 19:14:17 2011 +0100"
      },
      "message": "Btrfs: integrate integrity check module into btrfs\n\nThis is the last part of the patch series. It modifies the btrfs\ncode to use the integrity check module if configured to do so\nwith the define BTRFS_FS_CHECK_INTEGRITY. If this define is not set,\nthe only effective change is that code is added that handles the\nmount option to activate the integrity check. If the mount option is\nset and the define BTRFS_FS_CHECK_INTEGRITY is not set, that code\ncomplains in the log and the mount fails with EINVAL.\n\nAdd the mount option to activate the usage of the integrity check\ncode.\nAdd invocation of btrfs integrity check code init and cleanup\nfunction on mount and umount, respectively.\nAdd hook to call btrfs integrity check code version of\nsubmit_bh/submit_bio.\n\nSigned-off-by: Stefan Behrens \u003csbehrens@giantdisaster.de\u003e\n"
    },
    {
      "commit": "0dc3b84a73267f47a75468f924f5d58a840e3152",
      "tree": "0c2f64c2884a0de54e3fe15971e960f71a722afb",
      "parents": [
        "5dbc8fca8ef5d719014f22345d990e957dcfc692"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Nov 18 14:37:27 2011 -0500"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Dec 15 11:04:21 2011 -0500"
      },
      "message": "Btrfs: fix num_workers_starting bug and other bugs in async thread\n\nAl pointed out we have some random problems with the way we account for\nnum_workers_starting in the async thread stuff.  First of all we need to make\nsure to decrement num_workers_starting if we fail to start the worker, so make\n__btrfs_start_workers do this.  Also fix __btrfs_start_workers so that it\ndoesn\u0027t call btrfs_stop_workers(), there is no point in stopping everybody if we\nfailed to create a worker.  Also check_pending_worker_creates needs to call\n__btrfs_start_work in it\u0027s work function since it already increments\nnum_workers_starting.\n\nPeople only start one worker at a time, so get rid of the num_workers argument\neverywhere, and make btrfs_queue_worker a void since it will always succeed.\nThanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "26bdef541d26fd6a5ddffdf8949ace22f94f809f",
      "tree": "85e4db1a93d211a719cb2c1ecec384ff442e0cd9",
      "parents": [
        "24a70313969fc3fc440216b40babdb42564acff3"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "dan.carpenter@oracle.com",
        "time": "Wed Nov 16 11:28:01 2011 +0300"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Nov 30 18:46:01 2011 +0100"
      },
      "message": "btrfs scrub: handle -ENOMEM from init_ipath()\n\ninit_ipath() can return an ERR_PTR(-ENOMEM).\n\nSigned-off-by: Dan Carpenter \u003cdan.carpenter@oracle.com\u003e\n"
    },
    {
      "commit": "745c4d8e160afaf6c75e887c27ea4b75c8142b26",
      "tree": "b1e5b3725654f4119f06346cef3a1c94d34accf8",
      "parents": [
        "387125fc722a8ed432066b85a552917343bdafca"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Sun Nov 20 07:31:57 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 20 07:42:13 2011 -0500"
      },
      "message": "btrfs: Fix up 32/64-bit compatibility for new ioctls\n\n This patch casts to unsigned long before casting to a pointer and fixes\n the following warnings:\nfs/btrfs/extent_io.c:2289:20: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]\nfs/btrfs/ioctl.c:2933:37: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]\nfs/btrfs/ioctl.c:2937:21: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]\nfs/btrfs/ioctl.c:3020:21: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]\nfs/btrfs/scrub.c:275:4: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]\nfs/btrfs/backref.c:686:27: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "69f4cb526bd02ae5af35846f9a710c099eec3347",
      "tree": "0fc400c20ab6293603b8b615467893a13426c82c",
      "parents": [
        "62f30c5462374b991e7e3f42d49ce2265c1b82f1"
      ],
      "author": {
        "name": "Arne Jansen",
        "email": "sensille@gmx.net",
        "time": "Fri Nov 11 08:17:10 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Nov 11 08:17:10 2011 -0500"
      },
      "message": "Btrfs: handle bio_add_page failure gracefully in scrub\n\nCurrently scrub fails with ENOMEM when bio_add_page fails. Unfortunately\ndm based targets accept only one page per bio, thus making scrub always\nfails. This patch just submits the current bio when an error is encountered\nand starts a new one.\n\nSigned-off-by: Arne Jansen \u003csensille@gmx.net\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "56d2a48f81a1bde827c625b90221fade72fe9c61",
      "tree": "162de09347589bc3bf9bd40f2c2ad6e32283798b",
      "parents": [
        "21ca543efc12674fddb22ddf4ea4906427f4e982"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Fri Nov 04 09:41:02 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 06 03:11:29 2011 -0500"
      },
      "message": "Btrfs: fix a potential btrfs_bio leak on scrub fixups\n\nIn case we were able to map less than we wanted (length \u003c PAGE_SIZE\nclause is true) btrfs_bio is still allocated and we have to free it.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "740c3d226cbba6cd6a32adfb66809c94938f3e57",
      "tree": "375a5d2ee3bdc66f29e69e99c3691c3200407820",
      "parents": [
        "806468f8bf76a3cb2b626dd282946a6c9c0a50f0"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Nov 02 15:48:34 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 06 03:08:49 2011 -0500"
      },
      "message": "Btrfs: fix the new inspection ioctls for 32 bit compat\n\nThe new ioctls to follow backrefs are not clean for 32/64 bit\ncompat.  This reworks them for u64s everywhere.  They are brand new, so\nthere are no problems with changing the interface now.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "806468f8bf76a3cb2b626dd282946a6c9c0a50f0",
      "tree": "2de54229a5623756417a9bad7f426a2e8b06cad7",
      "parents": [
        "531f4b1ae5e0fc8c9b3f03838218e5ea178f80d3",
        "5da6fcbc4eb50c0f55d520750332f5a6ab13508c"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 06 03:07:10 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 06 03:07:10 2011 -0500"
      },
      "message": "Merge git://git.jan-o-sch.net/btrfs-unstable into integration\n\nConflicts:\n\tfs/btrfs/Makefile\n\tfs/btrfs/extent_io.c\n\tfs/btrfs/extent_io.h\n\tfs/btrfs/scrub.c\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "531f4b1ae5e0fc8c9b3f03838218e5ea178f80d3",
      "tree": "63efdfe9b192243fefb76be3921b9a2aaa26291e",
      "parents": [
        "c06a0e120a4e381a1c291c1fce3c6155c5791cae",
        "7a26285eea8eb92e0088db011571d887d4551b0f"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 06 03:05:08 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 06 03:05:08 2011 -0500"
      },
      "message": "Merge branch \u0027for-chris\u0027 of git://github.com/sensille/linux into integration\n\nConflicts:\n\tfs/btrfs/ctree.h\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "6c41761fc6efe1503103a1afe03a6635c0b5d4ec",
      "tree": "08ad34d43aac48e8f8143a0b1fa07141df8f202a",
      "parents": [
        "c8174313a8102e874aaa321e2fc4c7c460a87151"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Apr 13 15:41:04 2011 +0200"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 06 03:04:01 2011 -0500"
      },
      "message": "btrfs: separate superblock items out of fs_info\n\nfs_info has now ~9kb, more than fits into one page. This will cause\nmount failure when memory is too fragmented. Top space consumers are\nsuper block structures super_copy and super_for_commit, ~2.8kb each.\nAllocate them dynamically. fs_info will be ~3.5kb. (measured on x86_64)\n\nAdd a wrapper for freeing fs_info and all of it\u0027s dynamically allocated\nmembers.\n\nSigned-off-by: David Sterba \u003cdsterba@suse.cz\u003e\n"
    },
    {
      "commit": "7a26285eea8eb92e0088db011571d887d4551b0f",
      "tree": "2165dcb75f2ebbae358fc54aebaa49e7337c317f",
      "parents": [
        "4bb31e928d1a47f5bd046ecb176b8eff7c589fc0"
      ],
      "author": {
        "name": "Arne Jansen",
        "email": "sensille@gmx.net",
        "time": "Fri Jun 10 12:39:23 2011 +0200"
      },
      "committer": {
        "name": "Arne Jansen",
        "email": "sensille@gmx.net",
        "time": "Sun Oct 02 08:48:45 2011 +0200"
      },
      "message": "btrfs: use readahead API for scrub\n\nScrub uses a simple tree-enumeration to bring the relevant portions\nof the extent- and csum-tree into the page cache before starting the\nscrub-I/O. This is now replaced by using the new readahead-API.\nDuring readahead the scrub is being accounted as paused, so it won\u0027t\nhold off transaction commits.\n\nThis change raises the average disk bandwith utilisation on my test\nvolume from 70% to 90%. On another volume, the time for a test run\nwent down from 89s to 43s.\n\nChanges v5:\n - reada1/2 are now of type struct reada_control *\n\nSigned-off-by: Arne Jansen \u003csensille@gmx.net\u003e\n"
    },
    {
      "commit": "5da6fcbc4eb50c0f55d520750332f5a6ab13508c",
      "tree": "f9f681b494b8120ab7298a04d45f6081a41869e2",
      "parents": [
        "4a54c8c165b66300830a67349fc7595e3fc442f7"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Thu Aug 04 18:11:04 2011 +0200"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Thu Sep 29 13:38:43 2011 +0200"
      },
      "message": "btrfs: integrating raid-repair and scrub-fixup-nodatasum\n\nThis ties nodatasum fixup in scrub together with raid repair patches. While\nboth series are working fine alone, scrub will report uncorrectable errors\nif they occur in a nodatasum extent *and* the page is in the page cache.\n\nPreviously, we would have triggered readpage to find good data and do the\nrepair. However, readpage wouldn\u0027t read anything in the case where the page\nis up to date in the cache. So, we simply take that good data we have and\ncall repair_io_failure directly (unless the page in the cache is dirty).\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "a1d3c4786a4b9c71c0767aa656a759968f7554b6",
      "tree": "1dc5596ca57f261d2816111e51a2f33928bbe4a6",
      "parents": [
        "d7728c960dccf775b92f2c4139f1216275a45c44"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Thu Aug 04 17:15:33 2011 +0200"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Thu Sep 29 13:38:42 2011 +0200"
      },
      "message": "btrfs: btrfs_multi_bio replaced with btrfs_bio\n\nbtrfs_bio is a bio abstraction able to split and not complete after the last\nbio has returned (like the old btrfs_multi_bio). Additionally, btrfs_bio\ntracks the mirror_num used to read data which can be used for error\ncorrection purposes.\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "0ef8e45158f97dde4801b535e25f70f7caf01a27",
      "tree": "d1c29055e475402613d529738225df79d8789d20",
      "parents": [
        "e12fa9cd390f8e93a9144bd99bd6f6ed316fbc1e"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Mon Jun 13 20:04:15 2011 +0200"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Thu Sep 29 12:54:28 2011 +0200"
      },
      "message": "btrfs scrub: add fixup code for errors on nodatasum files\n\nThis removes a FIXME comment and introduces the first part of nodatasum\nfixup: It gets the corresponding inode for a logical address and triggers a\nregular readpage for the corrupted sector.\n\nOnce we have on-the-fly error correction our error will be automatically\ncorrected. The correction code is expected to clear the newly introduced\nEXTENT_DAMAGED flag, making scrub report that error as \"corrected\" instead\nof \"uncorrectable\" eventually.\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "e12fa9cd390f8e93a9144bd99bd6f6ed316fbc1e",
      "tree": "b4033a6adfc7e2072ead760e85248e9d567aa0d1",
      "parents": [
        "8ddc7d9cd0a00062247c732b96386ec2462bdbc7"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Fri Jun 17 15:55:21 2011 +0200"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Thu Sep 29 12:54:28 2011 +0200"
      },
      "message": "btrfs scrub: use int for mirror_num, not u64\n\nthe rest of the code uses int mirror_num, and so should scrub\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "193ea74b2729e6ddc08fb6bde6e15a3bd4d94071",
      "tree": "39891ccdd556360ce016171ae18a7474dd293aeb",
      "parents": [
        "558540c17771eaf89b1a3be39aa2c8bc837da1a6"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Mon Jun 13 19:56:54 2011 +0200"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Thu Sep 29 12:54:28 2011 +0200"
      },
      "message": "btrfs scrub: bugfix: mirror_num off by one\n\nFix the mirror_num determination in scrub_stripe. The rest of the scrub code\ndid not use mirror_num for anything important and that error went unnoticed.\nThe nodatasum fixup patch of this set depends on a correct mirror_num.\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "558540c17771eaf89b1a3be39aa2c8bc837da1a6",
      "tree": "cd456e32dea87a93f324b63e02ecd3add96e0e77",
      "parents": [
        "13db62b7a1e8c64763a93c155091620f85ff8920"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Mon Jun 13 19:59:12 2011 +0200"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Thu Sep 29 12:54:28 2011 +0200"
      },
      "message": "btrfs scrub: print paths of corrupted files\n\nWhile scrubbing, we may encounter various errors. Previously, a logical\naddress was printed to the log only. Now, all paths belonging to that\naddress are resolved and printed separately. That should work for hardlinks\nas well as reflinks.\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "13db62b7a1e8c64763a93c155091620f85ff8920",
      "tree": "fdc56259e5675f6fe70c555138d6d3b0ebbbefb5",
      "parents": [
        "a542ad1bafc7df9fc16de8a6894b350a4df75572"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Mon Jun 13 19:56:13 2011 +0200"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Thu Sep 29 12:54:27 2011 +0200"
      },
      "message": "btrfs scrub: added unverified_errors\n\nIn normal operation, scrub is reading data sequentially in large portions.\nIn case of an i/o error, we try to find the corrupted area(s) by issuing\npage sized read requests. With this commit we increment the\nunverified_errors counter if all of the small size requests succeed.\n\nUserland patches carrying such conspicous events to the administrator should\nalready be around.\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "6eef3125886df260ca0e8758d141308152226f6a",
      "tree": "e88c3f3918718e74938d697857eeb239d391355b",
      "parents": [
        "632dd772fcbde2ba37c0e8983bd38ef4a1eac906"
      ],
      "author": {
        "name": "Arne Jansen",
        "email": "sensille@gmx.net",
        "time": "Fri Jun 10 13:04:58 2011 +0200"
      },
      "committer": {
        "name": "Arne Jansen",
        "email": "sensille@gmx.net",
        "time": "Fri Jun 10 14:59:52 2011 +0200"
      },
      "message": "btrfs: remove unneeded includes from scrub.c\n\nSigned-off-by: Arne Jansen \u003csensille@gmx.net\u003e\n"
    },
    {
      "commit": "632dd772fcbde2ba37c0e8983bd38ef4a1eac906",
      "tree": "6181590ab930fb20c3efb3f44f88901089b9618b",
      "parents": [
        "8c51032f978bac5bec5dae0c5de4f85db97c1cc9"
      ],
      "author": {
        "name": "Arne Jansen",
        "email": "sensille@gmx.net",
        "time": "Fri Jun 10 12:07:07 2011 +0200"
      },
      "committer": {
        "name": "Arne Jansen",
        "email": "sensille@gmx.net",
        "time": "Fri Jun 10 12:14:13 2011 +0200"
      },
      "message": "btrfs: reinitialize scrub workers\n\nScrub starts the workers each time a scrub starts and stops them after it\nfinished. This patch adds an initialization for the workers before each\nstart, otherwise the workers behave strangely.\n\nSigned-off-by: Arne Jansen \u003csensille@gmx.net\u003e\n"
    },
    {
      "commit": "8c51032f978bac5bec5dae0c5de4f85db97c1cc9",
      "tree": "cb67a12fd149fa57a5024482f272b4ae22c48164",
      "parents": [
        "ad3e34bba4b64ab8e1f5ea1a17768e1a0d9648ea"
      ],
      "author": {
        "name": "Arne Jansen",
        "email": "sensille@gmx.net",
        "time": "Fri Jun 03 10:09:26 2011 +0200"
      },
      "committer": {
        "name": "Arne Jansen",
        "email": "sensille@gmx.net",
        "time": "Fri Jun 10 12:14:13 2011 +0200"
      },
      "message": "btrfs: scrub: errors in tree enumeration\n\ndue to the semantics of btrfs_search_slot the path can point to an\ninvalid slot when ret \u003e 0. This condition went unnoticed, which in\nturn could have led to an incomplete scrubbing.\n\nSigned-off-by: Arne Jansen \u003csensille@gmx.net\u003e\n"
    },
    {
      "commit": "7841cb2898f66a73062c64d0ef5733dde7279e46",
      "tree": "b7a94d96d44971845951a59e9fb7b5c2e30c46b3",
      "parents": [
        "4b9465cb9e3859186eefa1ca3b990a5849386320"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Tue May 31 18:07:27 2011 +0200"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat Jun 04 08:11:22 2011 -0400"
      },
      "message": "btrfs: add helper for fs_info-\u003eclosing\n\nwrap checking of filesystem \u0027closing\u0027 flag and fix a few missing memory\nbarriers.\n\nSigned-off-by: David Sterba \u003cdsterba@suse.cz\u003e\n"
    },
    {
      "commit": "e7786c3ae517b2c433edc91714e86be770e9f1ce",
      "tree": "90caab3728a36a579162b4868f41fc3426c5cbb4",
      "parents": [
        "a4689d2bd3b00dcf5c4320f06e0ab88810fbff9c"
      ],
      "author": {
        "name": "Arne Jansen",
        "email": "sensille@gmx.net",
        "time": "Sat May 28 20:58:38 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat Jun 04 08:03:46 2011 -0400"
      },
      "message": "btrfs: scrub: add explicit plugging\n\nWith the removal of the implicit plugging scrub ends up doing more and\nsmaller I/O than necessary. This patch adds explicit plugging per chunk.\n\nSigned-off-by: Arne Jansen \u003csensille@gmx.net\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "1bc8779349d6278e2713a1ff94418c2a6746a791",
      "tree": "2caf24db7d669825538c15efe17473159da57593",
      "parents": [
        "ff5714cca971848963b87d6b477c16ca8abbaa54"
      ],
      "author": {
        "name": "Arne Jansen",
        "email": "sensille@gmx.net",
        "time": "Sat May 28 21:57:55 2011 +0200"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat Jun 04 08:03:17 2011 -0400"
      },
      "message": "btrfs: scrub: don\u0027t reuse bios and pages\n\nThe current scrub implementation reuses bios and pages as often as possible,\nallocating them only on start and releasing them when finished. This leads\nto more problems with the block layer than it\u0027s worth. The elevator gets\nconfused when there are more pages added to the bio than bi_size suggests.\nThis patch completely rips out the reuse of bios and pages and allocates\nthem freshly for each submit.\n\nSigned-off-by: Arne Jansen \u003csensille@gmx.net\u003e\nSigned-off-by: Chris Maosn \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "00d01bc17cc2807292303961519d9c005794eb1d",
      "tree": "47816d90951550c55d9ec1fff51c365056986aa1",
      "parents": [
        "c309df07868baa8b05d2a70637096465746fdbb5"
      ],
      "author": {
        "name": "Arne Jansen",
        "email": "sensille@gmx.net",
        "time": "Wed May 25 12:22:50 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu May 26 17:52:52 2011 -0400"
      },
      "message": "btrfs scrub: don\u0027t coalesce pages that are logically discontiguous\n\nscrub_page collects several pages into one bio as long as they are physically\ncontiguous. As we only save one logical address for the whole bio, don\u0027t\ncollect pages that are physically contiguous but logically discontiguous.\n\nSigned-off-by: Arne Jansen \u003csensille@gmx.net\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "712673339a0d085358fd1cd3a6477cc7979bb69f",
      "tree": "b2e268685e3cbba19a4adb2a47d853e4e461fcfc",
      "parents": [
        "aa2dfb372a2a647beedac163ce6f8b0fcbefac29",
        "8628764e1a5e1998a42b9713e9edea7753653d01"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon May 23 06:30:52 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon May 23 06:30:52 2011 -0400"
      },
      "message": "Merge branch \u0027for-chris\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/arne/btrfs-unstable-arne into inode_numbers\n\nConflicts:\n\tfs/btrfs/Makefile\n\tfs/btrfs/ctree.h\n\tfs/btrfs/volumes.h\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "8628764e1a5e1998a42b9713e9edea7753653d01",
      "tree": "19c88f4d4eb806f7d5de83a1fc36996658ace17d",
      "parents": [
        "96e369208e65a7d017a52361fd572df41fde8472"
      ],
      "author": {
        "name": "Arne Jansen",
        "email": "sensille@gmx.net",
        "time": "Wed Mar 23 16:34:19 2011 +0100"
      },
      "committer": {
        "name": "Arne Jansen",
        "email": "sensille@gmx.net",
        "time": "Thu May 12 14:48:31 2011 +0200"
      },
      "message": "btrfs: add readonly flag\n\nsetting the readonly flag prevents writes in case an error is detected\n\nSigned-off-by: Arne Jansen \u003csensille@gmx.net\u003e\n"
    },
    {
      "commit": "96e369208e65a7d017a52361fd572df41fde8472",
      "tree": "b72e4aafce997d87934a15f3b5594d8d162b1eef",
      "parents": [
        "475f63874d739d7842a56da94687f18d583ae654"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Sat Apr 09 14:27:01 2011 +0300"
      },
      "committer": {
        "name": "Arne Jansen",
        "email": "sensille@gmx.net",
        "time": "Thu May 12 14:48:28 2011 +0200"
      },
      "message": "btrfs scrub: make fixups sync\n\nbtrfs scrub - make fixups sync, don\u0027t reuse fixup bios\n\nFixups are already sync for csum failures, this patch makes them sync\nfor EIO case as well.\n\nFixups are now sharing pages with the parent sbio - instead of\nallocating a separate page to do a fixup we grab the page from the sbio\nbuffer.\n\nFixup bios are no longer reused.\n\nstruct fixup is no longer needed, instead pass [sbio pointer, index].\n\nOriginally this was added to look at the possibility of sharing the code\nbetween drive swap and scrub, but it actually fixes a serious bug in\nscrub code where errors that could be corrected were ignored and\nreported as uncorrectable.\n\nbtrfs scrub - restore bios properly after media errors\n\nThe current code reallocates a bio after a media error.  This is a\ntemporary measure introduced in v3 after a serious problem related to\nbio reuse was found in v2 of scrub patchset.\n\nBasically we did not reset bv_offset and bv_len fields of the bio_vec\nstructure.  They are changed in case I/O error happens, for example, at\noffset 512 or 1024 into the page.  Also bi_flags field wasn\u0027t properly\nsetup before reusing the bio.\n\nSigned-off-by: Arne Jansen \u003csensille@gmx.net\u003e\n"
    },
    {
      "commit": "a2de733c78fa7af51ba9670482fa7d392aa67c57",
      "tree": "d88817bc7aba94e7efea530efac5ef190c1b799c",
      "parents": [
        "7cf96da3ec7ca225acf4f284b0e904a1f5f98821"
      ],
      "author": {
        "name": "Arne Jansen",
        "email": "sensille@gmx.net",
        "time": "Tue Mar 08 14:14:00 2011 +0100"
      },
      "committer": {
        "name": "Arne Jansen",
        "email": "sensille@gmx.net",
        "time": "Thu May 12 14:45:20 2011 +0200"
      },
      "message": "btrfs: scrub\n\nThis adds an initial implementation for scrub. It works quite\nstraightforward. The usermode issues an ioctl for each device in the\nfs. For each device, it enumerates the allocated device chunks. For\neach chunk, the contained extents are enumerated and the data checksums\nfetched. The extents are read sequentially and the checksums verified.\nIf an error occurs (checksum or EIO), a good copy is searched for. If\none is found, the bad copy will be rewritten.\nAll enumerations happen from the commit roots. During a transaction\ncommit, the scrubs get paused and afterwards continue from the new\nroots.\n\nThis commit is based on the series originally posted to linux-btrfs\nwith some improvements that resulted from comments from David Sterba,\nIlya Dryomov and Jan Schmidt.\n\nSigned-off-by: Arne Jansen \u003csensille@gmx.net\u003e\n"
    }
  ]
}
