)]}'
{
  "log": [
    {
      "commit": "828c09509b9695271bcbdc53e9fc9a6a737148d2",
      "tree": "072ffad6f02db7bf4095e07e2b90247cfa042998",
      "parents": [
        "1c4115e595dec42aa0e81ba47ef46e35b34ed428"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Thu Oct 01 15:43:56 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 01 16:11:11 2009 -0700"
      },
      "message": "const: constify remaining file_operations\n\n[akpm@linux-foundation.org: fix KVM]\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nAcked-by: Mike Frysinger \u003cvapier@gentoo.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f0f37e2f77731b3473fa6bd5ee53255d9a9cdb40",
      "tree": "3c26d3ed1a453156e9c208ccb5567a8954dba064",
      "parents": [
        "6f5071020d5ec89b5d095aa488db604adb921aec"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Sun Sep 27 22:29:37 2009 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Sep 27 11:39:25 2009 -0700"
      },
      "message": "const: mark struct vm_struct_operations\n\n* mark struct vm_area_struct::vm_ops as const\n* mark vm_ops in AGP code\n\nBut leave TTM code alone, something is fishy there with global vm_ops\nbeing used.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "db16826367fefcb0ddb93d76b66adc52eb4e6339",
      "tree": "626224c1eb1eb79c522714591f208b4fdbdcd9d4",
      "parents": [
        "cd6045138ed1bb5d8773e940d51c34318eef3ef2",
        "465fdd97cbe16ef8727221857e96ef62dd352017"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:53:22 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:53:22 2009 -0700"
      },
      "message": "Merge branch \u0027hwpoison\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-mce-2.6\n\n* \u0027hwpoison\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-mce-2.6: (21 commits)\n  HWPOISON: Enable error_remove_page on btrfs\n  HWPOISON: Add simple debugfs interface to inject hwpoison on arbitary PFNs\n  HWPOISON: Add madvise() based injector for hardware poisoned pages v4\n  HWPOISON: Enable error_remove_page for NFS\n  HWPOISON: Enable .remove_error_page for migration aware file systems\n  HWPOISON: The high level memory error handler in the VM v7\n  HWPOISON: Add PR_MCE_KILL prctl to control early kill behaviour per process\n  HWPOISON: shmem: call set_page_dirty() with locked page\n  HWPOISON: Define a new error_remove_page address space op for async truncation\n  HWPOISON: Add invalidate_inode_page\n  HWPOISON: Refactor truncate to allow direct truncating of page v2\n  HWPOISON: check and isolate corrupted free pages v2\n  HWPOISON: Handle hardware poisoned pages in try_to_unmap\n  HWPOISON: Use bitmask/action code for try_to_unmap behaviour\n  HWPOISON: x86: Add VM_FAULT_HWPOISON handling to x86 page fault handler v2\n  HWPOISON: Add poison check to page fault handling\n  HWPOISON: Add basic support for poisoned pages in fault handler v3\n  HWPOISON: Add new SIGBUS error codes for hardware poison signals\n  HWPOISON: Add support for poison swap entries v2\n  HWPOISON: Export some rmap vma locking to outside world\n  ...\n"
    },
    {
      "commit": "2bcd57ab61e7cabed626226a3771617981c11ce1",
      "tree": "687c0c35fb2a632cb8c56b2729f9c3873c9461bd",
      "parents": [
        "95e0d86badc410d525ea7218fd32df7bfbf9c837"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Thu Sep 24 04:22:25 2009 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 23 18:13:10 2009 -0700"
      },
      "message": "headers: utsname.h redux\n\n* remove asm/atomic.h inclusion from linux/utsname.h --\n   not needed after kref conversion\n * remove linux/utsname.h inclusion from files which do not need it\n\nNOTE: it looks like fs/binfmt_elf.c do not need utsname.h, however\ndue to some personality stuff it _is_ needed -- cowardly leave ELF-related\nheaders and files alone.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b64ada6b23d4a305fb3ca59b79dd38707fc53b69",
      "tree": "61bc87dc3a2549f54231261aaa544acffcd12281",
      "parents": [
        "be90a49ca22a95f184d9f32d35b5247b44032849",
        "b80474b432913f73cce8db001e9fa3104f9b79ee"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 23 09:29:20 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 23 09:29:20 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: (85 commits)\n  ocfs2: Use buffer IO if we are appending a file.\n  ocfs2: add spinlock protection when dealing with lockres-\u003epurge.\n  dlmglue.c: add missed mlog lines\n  ocfs2: __ocfs2_abort() should not enable panic for local mounts\n  ocfs2: Add ioctl for reflink.\n  ocfs2: Enable refcount tree support.\n  ocfs2: Implement ocfs2_reflink.\n  ocfs2: Add preserve to reflink.\n  ocfs2: Create reflinked file in orphan dir.\n  ocfs2: Use proper parameter for some inode operation.\n  ocfs2: Make transaction extend more efficient.\n  ocfs2: Don\u0027t merge in 1st refcount ops of reflink.\n  ocfs2: Modify removing xattr process for refcount.\n  ocfs2: Add reflink support for xattr.\n  ocfs2: Create an xattr indexed block if needed.\n  ocfs2: Call refcount tree remove process properly.\n  ocfs2: Attach xattr clusters to refcount tree.\n  ocfs2: Abstract ocfs2 xattr tree extend rec iteration process.\n  ocfs2: Abstract the creation of xattr block.\n  ocfs2: Remove inode from ocfs2_xattr_bucket_get_name_value.\n  ...\n"
    },
    {
      "commit": "88e9d34c727883d7d6f02cf1475b3ec98b8480c7",
      "tree": "475f544536d52739e0929e7727cab5124e855a06",
      "parents": [
        "b7ed698cc9d556306a4088c238e2ea9311ea2cb3"
      ],
      "author": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Tue Sep 22 16:43:43 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 23 07:39:29 2009 -0700"
      },
      "message": "seq_file: constify seq_operations\n\nMake all seq_operations structs const, to help mitigate against\nrevectoring user-triggerable function pointers.\n\nThis is derived from the grsecurity patch, although generated from scratch\nbecause it\u0027s simpler than extracting the changes from there.\n\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nAcked-by: Casey Schaufler \u003ccasey@schaufler-ca.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b80474b432913f73cce8db001e9fa3104f9b79ee",
      "tree": "ad39c36ce3006167d02ca176eb140012c6530a06",
      "parents": [
        "83e32d9044a4510fffdf65c2691a25c0ba84e259"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Thu Sep 10 15:28:47 2009 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed Sep 23 01:54:49 2009 -0700"
      },
      "message": "ocfs2: Use buffer IO if we are appending a file.\n\nIn ocfs2_file_aio_write, we will prevent direct io if\nwe find that we are appending(changing i_size) and call\ngeneric_file_aio_write_nolock. But actually O_DIRECT flag\nis there and this function will call generic_file_direct_write\neventually which will update i_size and leave di-\u003ei_size\nalone. The bug is\nhttp://oss.oracle.com/bugzilla/show_bug.cgi?id\u003d1173.\n\nSo this patch let ocfs2_direct_IO returns 0 directly if we\nare appending so that buffered write will be called and\ndi-\u003ei_size get updated successfully. And this is also\nwhat we want in ocfs2_file_aio_write.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "83e32d9044a4510fffdf65c2691a25c0ba84e259",
      "tree": "69bf3d8c663e51e7527d67341b3bb8d95b33e008",
      "parents": [
        "d92bc5127b27f315ef0ef2c1e1829fd6a5cba54a"
      ],
      "author": {
        "name": "Wengang Wang",
        "email": "wen.gang.wang@oracle.com",
        "time": "Thu Sep 03 15:56:33 2009 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed Sep 23 01:54:48 2009 -0700"
      },
      "message": "ocfs2: add spinlock protection when dealing with lockres-\u003epurge.\n\nwhen we check/modify lockres-\u003epurge, we should with the protection of lockres-\u003espinlock.\nin dlm_purge_lockres(), the checking/modifying is not with the protectin.\nthis patch fixes it.\n\nSigned-off-by: Wengang Wang \u003cwen.gang.wang@oracle.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "d92bc5127b27f315ef0ef2c1e1829fd6a5cba54a",
      "tree": "cf6206f96ba57f53e0b187b88537042662183749",
      "parents": [
        "a2f2ddbf2bafdbc7e4f3bbf09439b42c8fee2747"
      ],
      "author": {
        "name": "Coly Li",
        "email": "coly.li@suse.de",
        "time": "Fri Aug 28 19:03:18 2009 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed Sep 23 01:54:47 2009 -0700"
      },
      "message": "dlmglue.c: add missed mlog lines\n\nThis patch adds the missed mlog_exit() and mlog_exit_void() lines when routines\nreturn.\n\nSigned-off-by: Coly Li \u003ccoly.li@suse.de\u003e\nAcked-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "a2f2ddbf2bafdbc7e4f3bbf09439b42c8fee2747",
      "tree": "0b027ad2957530c457b2589d96c361232eabe740",
      "parents": [
        "bd50873dc725a9fa72592ecc986c58805e823051"
      ],
      "author": {
        "name": "Sunil Mushran",
        "email": "sunil.mushran@oracle.com",
        "time": "Wed Aug 19 15:16:01 2009 -0700"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed Sep 23 01:54:46 2009 -0700"
      },
      "message": "ocfs2: __ocfs2_abort() should not enable panic for local mounts\n\nIn a clustered setup, we have to panic the box on journal abort. This is\nbecause we don\u0027t have the facility to go hard readonly. With hard ro, another\nnode would detect node failure and initiate recovery.\n\nHaving said that, we shouldn\u0027t force panic if the volume is mounted locally.\nThis patch defers the handling to the mount option, errors.\n\nSigned-off-by: Sunil Mushran \u003csunil.mushran@oracle.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "bd50873dc725a9fa72592ecc986c58805e823051",
      "tree": "8d2d4d514f73b6425bf0bf5bd1806949b84a2489",
      "parents": [
        "64871b8d62570fabec3b0959d494f8e0b87f5c4b"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Mon Sep 21 11:25:14 2009 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Sep 22 20:09:51 2009 -0700"
      },
      "message": "ocfs2: Add ioctl for reflink.\n\nThe ioctl will take 3 parameters: old_path, new_path and\npreserve and call vfs_reflink. It is useful when we backport\nreflink features to old kernels.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "64871b8d62570fabec3b0959d494f8e0b87f5c4b",
      "tree": "7b54c2cd44e81e33a799055cd0bac0ae51e9a4ef",
      "parents": [
        "09bf27a000209e9e8c9c048b4c50f6bb0dd857bb"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Tue Aug 18 11:48:02 2009 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Sep 22 20:09:50 2009 -0700"
      },
      "message": "ocfs2: Enable refcount tree support.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "09bf27a000209e9e8c9c048b4c50f6bb0dd857bb",
      "tree": "605522b8c41d70d26705dfe4cc9149b6a10724a6",
      "parents": [
        "0fe9b66c65f3ff227da45381afe7612f91e32740"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Mon Sep 21 10:38:17 2009 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Sep 22 20:09:49 2009 -0700"
      },
      "message": "ocfs2: Implement ocfs2_reflink.\n\nImplement ocfs2_reflink.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "0fe9b66c65f3ff227da45381afe7612f91e32740",
      "tree": "14d95c15065419825adb4f0f0a26a5416a64259e",
      "parents": [
        "bc13d347574fc0a8a666bc0f4cc2b635d202e372"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Tue Aug 18 11:47:56 2009 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Sep 22 20:09:49 2009 -0700"
      },
      "message": "ocfs2: Add preserve to reflink.\n\nreflink has 2 options for the destination file:\n1. snapshot: reflink will attempt to preserve ownership, permissions,\n   and all other security state in order to create a full snapshot.\n2. new file: it will acquire the data extent sharing but will see the\n   file\u0027s security state and attributes initialized as a new file.\n\nSo add the option to ocfs2.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "bc13d347574fc0a8a666bc0f4cc2b635d202e372",
      "tree": "47eb9a764d3689ddd860d96f6cd80cf26a84bcc2",
      "parents": [
        "19bd341f6a6c6b314bcac55bbd906bfd3603fe9e"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Tue Aug 18 11:44:14 2009 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Sep 22 20:09:48 2009 -0700"
      },
      "message": "ocfs2: Create reflinked file in orphan dir.\n\nreflink is a very complicated process, so it can\u0027t be integrated\ninto one transaction. So if the system panic in the operation, we\nmay leave a unfinished inode in the destication directory.\n\nSo we will try to create an inode in orphan_dir first, reflink it\nto the src file and then move it to the destication file in the end.\nIn that way we won\u0027t be afraid of any corruption during the reflink.\n\nThis patch adds 2 functions for orphan_dir operation:\n1. Create a new inode in orphand dir.\n2. Move an inode to a target dir.\n\nNote:\nfsck.ocfs2 should work for us to remove the unfinished file in the\norphan_dir.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n\n"
    },
    {
      "commit": "19bd341f6a6c6b314bcac55bbd906bfd3603fe9e",
      "tree": "2eefd82e6ae2495b4d3288dc452763eea8d2fb37",
      "parents": [
        "c18b812d127a971901180188b918a7cd98ccd4d6"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Tue Aug 18 11:44:10 2009 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Sep 22 20:09:47 2009 -0700"
      },
      "message": "ocfs2: Use proper parameter for some inode operation.\n\nIn order to make the original function more suitable for reflink,\nwe modify the following inode operations. Both are tiny.\n\n1. ocfs2_mknod_locked only use dentry for mlog, so move it to\n   the caller so that reflink can use it without dentry.\n2. ocfs2_prepare_orphan_dir only want inode to get its ip_blkno.\n   So use ip_blkno instead.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "c18b812d127a971901180188b918a7cd98ccd4d6",
      "tree": "3f2d0a7b1fada7aaade612d14dcaa7229a4e06c9",
      "parents": [
        "7540c1a77b26bc2f9d86a0bfbe6597b05ec5f93d"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Tue Aug 18 11:44:07 2009 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Sep 22 20:09:46 2009 -0700"
      },
      "message": "ocfs2: Make transaction extend more efficient.\n\nIn ocfs2_extend_rotate_transaction, op_credits is the orignal\ncredits in the handle and we only want to extend the credits\nfor the rotation, but the old solution always double it. It\nis harmless for some minor operations, but for actions like\nreflink we may rotate tree many times and cause the credits\nincrease dramatically. So this patch try to only increase\nthe desired credits.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "7540c1a77b26bc2f9d86a0bfbe6597b05ec5f93d",
      "tree": "4b0414f74d265cfe496d5e5f39c6c6d240f6e713",
      "parents": [
        "ce9c5a54c0f06b0efb4db8720a0616cc6aa0e5b2"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Tue Aug 18 11:44:03 2009 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Sep 22 20:09:46 2009 -0700"
      },
      "message": "ocfs2: Don\u0027t merge in 1st refcount ops of reflink.\n\nActually the whole reflink will touch refcount tree 2 times:\n1. It will add the clusters in the extent record to the tree if it\n   isn\u0027t refcounted before.\n2. It will add 1 refcount to these clusters when it add these\n   extent records to the tree.\n\nSo actually we shouldn\u0027t do merge in the 1st operation since the 2nd\none will soon be called and we may have to split it again. Do a merge\nfirst and split soon is a waste of time. So we only merge in the 2nd\nround. This is done by adding a new internal __ocfs2_increase_refcount\nand call it with \"not-merge\" for 1st refcount operation in reflink.\n\nThis also has a side-effect that we don\u0027t need to worry too much about\nthe metadata allocation in the 2nd round since it will only merge and\nno split will happen for those records.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "ce9c5a54c0f06b0efb4db8720a0616cc6aa0e5b2",
      "tree": "617a8f4eb0d30c71691f5e786417a32c1c95cecb",
      "parents": [
        "2999d12f4d5529b282ce201b21444590c3f9f723"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Tue Aug 18 11:43:59 2009 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Sep 22 20:09:45 2009 -0700"
      },
      "message": "ocfs2: Modify removing xattr process for refcount.\n\nThe old xattr value remove is quite simple, it just erase the\ntree and free the clusters. But as we have added refcount support,\nThe process is a little complicated.\n\nWe have to lock the refcount tree at the beginning, what\u0027s more,\nwe may split the refcount tree in some cases, so meta/credits are\nneeded.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "2999d12f4d5529b282ce201b21444590c3f9f723",
      "tree": "9500f897753a59cf47e66af2cb7fd56c05ec8c1c",
      "parents": [
        "a7fe7a3a1ab5dac8d81e531c060f51e12010133b"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Tue Aug 18 11:43:55 2009 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Sep 22 20:09:45 2009 -0700"
      },
      "message": "ocfs2: Add reflink support for xattr.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "a7fe7a3a1ab5dac8d81e531c060f51e12010133b",
      "tree": "9eb5a21cc29e6913d3f591cdab37f59fbfa562d2",
      "parents": [
        "8b2c0dba5159570af5721d40490f6c529d721500"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Tue Aug 18 11:43:52 2009 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Sep 22 20:09:44 2009 -0700"
      },
      "message": "ocfs2: Create an xattr indexed block if needed.\n\nWith reflink, there is a need that we create a new xattr indexed\nblock from the very beginning. So add a new parameter for\nocfs2_create_xattr_block.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "8b2c0dba5159570af5721d40490f6c529d721500",
      "tree": "faca76fab3c9a65ba8e7be3aa93d02e4ff53f0cf",
      "parents": [
        "0129241e2b3b90ff83a8c774353e5612d84bd493"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Tue Aug 18 11:43:49 2009 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Sep 22 20:09:44 2009 -0700"
      },
      "message": "ocfs2: Call refcount tree remove process properly.\n\nNow with xattr refcount support, we need to check whether\nwe have xattr refcounted before we remove the refcount tree.\n\nNow the mechanism is:\n1) Check whether i_clusters \u003d\u003d 0, if no, exit.\n2) check whether we have i_xattr_loc in dinode. if yes, exit.\n2) Check whether we have inline xattr stored outside, if yes, exit.\n4) Remove the tree.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "0129241e2b3b90ff83a8c774353e5612d84bd493",
      "tree": "eec03f874cbdbc4c9eab4900f2de89fd1747a5ee",
      "parents": [
        "47bca4950bc40fb54e9d41cbbc8b06cd653d2ae2"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Mon Sep 21 13:04:19 2009 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Sep 22 20:09:43 2009 -0700"
      },
      "message": "ocfs2: Attach xattr clusters to refcount tree.\n\nIn ocfs2, when xattr\u0027s value is larger than OCFS2_XATTR_INLINE_SIZE,\nit will be kept outside of the blocks we store xattr entry. And they\nare stored in a b-tree also. So this patch try to attach all these\nclusters to refcount tree also.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "47bca4950bc40fb54e9d41cbbc8b06cd653d2ae2",
      "tree": "17d36e5b9f330cda55b6ee8ff9a0293bd080040e",
      "parents": [
        "5aea1f0ef4024ba28213c10181e1b16ec678c82d"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Tue Aug 18 11:43:42 2009 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Sep 22 20:09:43 2009 -0700"
      },
      "message": "ocfs2: Abstract ocfs2 xattr tree extend rec iteration process.\n\nCurrently we have ocfs2_iterate_xattr_buckets which can receive\na para and a callback to iterate a series of bucket. It is good.\nBut actually the 2 callers ocfs2_xattr_tree_list_index_block and\nocfs2_delete_xattr_index_block are almost the same. The only\ndifference is that the latter need to handle the extent record\nalso. So add a new function named ocfs2_iterate_xattr_index_block.\nIt can be given func callback which are used for exten record.\nSo now we only have one iteration function for the xattr index\nblock. Ane what\u0027s more, it is useful for our future reflink\noperations.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "5aea1f0ef4024ba28213c10181e1b16ec678c82d",
      "tree": "ca28a8214cf9a8761fbac6b5e8aef84aa22fff54",
      "parents": [
        "fd68a894fc9641f816d9cffa58e853ba91cbc1a1"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Tue Aug 18 11:43:24 2009 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Sep 22 20:09:42 2009 -0700"
      },
      "message": "ocfs2: Abstract the creation of xattr block.\n\nIn xattr reflink, we also need to create xattr block, so\nabstract the process out.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "fd68a894fc9641f816d9cffa58e853ba91cbc1a1",
      "tree": "3af84546b32c54aba009f23681fd30c28df7240b",
      "parents": [
        "492a8a33e1cb966fa0b5756c5fc11d30c8f8848e"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Tue Aug 18 11:43:21 2009 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Sep 22 20:09:41 2009 -0700"
      },
      "message": "ocfs2: Remove inode from ocfs2_xattr_bucket_get_name_value.\n\nIn ocfs2_xattr_bucket_get_name_value, actually we only use\nsuper_block. So use it.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "492a8a33e1cb966fa0b5756c5fc11d30c8f8848e",
      "tree": "eacf691b07c8fa3e81c11ff1d6b8773c2dbb9e77",
      "parents": [
        "913580b4cd445c4fb25d7cf167911a8cf6bdb1eb"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Tue Aug 18 11:43:17 2009 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Sep 22 20:09:41 2009 -0700"
      },
      "message": "ocfs2: Add CoW support for xattr.\n\nIn order to make 2 transcation(xattr and cow) independent with each other,\nwe CoW the whole xattr out in case we are setting them.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "913580b4cd445c4fb25d7cf167911a8cf6bdb1eb",
      "tree": "24ad6cb14d27f101863035029eb8cea0ee8ed361",
      "parents": [
        "1061f9c1c9f81ed88b5d268a95d8e3ace80da63a"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Mon Aug 24 14:31:03 2009 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Sep 22 20:09:40 2009 -0700"
      },
      "message": "ocfs2: Abstract duplicate clusters process in CoW.\n\nWe currently use pagecache to duplicate clusters in CoW,\nbut it isn\u0027t suitable for xattr case. So abstract it out\nso that the caller can decide which method it use.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "1061f9c1c9f81ed88b5d268a95d8e3ace80da63a",
      "tree": "de43d1c1122ade36f079f0381712bc0f06556ac5",
      "parents": [
        "a9063ab9a3827483007124bdb6f9877f0ab4c3f5"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Tue Aug 18 11:41:57 2009 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Sep 22 20:09:39 2009 -0700"
      },
      "message": "ocfs2: Return extent flags for xattr value tree.\n\nWith the new refcount tree, xattr value can also be refcounted\namong multiple files. So return the appropriate extent flags\nso that CoW can used it later.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "a9063ab9a3827483007124bdb6f9877f0ab4c3f5",
      "tree": "78afcc391daf9d66df5bf34b207aa8e9c53ca7d6",
      "parents": [
        "110a045aca62f6f564e3b68f89af2a3a5a6ecff2"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Tue Aug 18 11:40:59 2009 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Sep 22 20:09:39 2009 -0700"
      },
      "message": "ocfs2: handle file attributes issue for reflink.\n\nA reflink creates a snapshot of a file, that means the attributes\nmust be identical except for three exceptions - nlink, ino, and ctime.\n\nAs for time changes, Here is a brief description:\n\n1. Source file:\n   1) atime: Ignore. Let the lazy atime code handle that.\n   2) mtime: don\u0027t touch.\n   3) ctime: If we change the tree (adding REFCOUNTED to at least one\n             extent), update it.\n2. Destination file:\n   1) atime: ignore.\n   2) mtime: we want it to appear identical to the source.\n   3) ctime: update.\n\nThe idea here is that an ls -l will show the same time for the\nsrc and target - it shows mtime.  Backup software like rsync and tar\nwill treat the new file correctly too.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "110a045aca62f6f564e3b68f89af2a3a5a6ecff2",
      "tree": "d7c2df9a59e527eb14add4daf1c0107e486715f4",
      "parents": [
        "37f8a2bfaa8364dd3644cccee8824bb8f5e409a5"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Sat Aug 22 23:54:27 2009 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Sep 22 20:09:38 2009 -0700"
      },
      "message": "ocfs2: Add normal functions for reflink a normal file\u0027s extents.\n\n2 major functions are added in this patch.\n\nocfs2_attach_refcount_tree will create a new refcount tree to the\nold file if it doesn\u0027t have one and insert all the extent records\nto the tree if they are not refcounted.\n\nocfs2_create_reflink_node will:\n1. set the refcount tree to the new file.\n2. call ocfs2_duplicate_extent_list which will iterate all the\n   extents for the old file, insert it to the new file and increase\n   the corresponding referennce count.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "37f8a2bfaa8364dd3644cccee8824bb8f5e409a5",
      "tree": "ab3083179c621c3e8d0be3980aaed96528f90599",
      "parents": [
        "293b2f70b4a16a1ca91efd28ef3d6634262c6887"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Wed Aug 26 09:47:28 2009 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Sep 22 20:09:38 2009 -0700"
      },
      "message": "ocfs2: CoW a reflinked cluster when it is truncated.\n\nWhen we truncate a file to a specific size which resides in a reflinked\ncluster, we need to CoW it since ocfs2_zero_range_for_truncate will\nzero the space after the size(just another type of write).\n\nSo we add a \"max_cpos\" in ocfs2_refcount_cow so that it will stop when\nit hit the max cluster offset.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "293b2f70b4a16a1ca91efd28ef3d6634262c6887",
      "tree": "4a85078faae7c529fa313d4964e0d6ad0905a612",
      "parents": [
        "6ae23c5555176c5b23480c9c578ff27437085ba5"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Tue Aug 25 08:02:48 2009 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Sep 22 20:09:37 2009 -0700"
      },
      "message": "ocfs2: Integrate CoW in file write.\n\nWhen we use mmap, we CoW the refcountd clusters in\nocfs2_write_begin_nolock. While for normal file\nio(including directio), we do CoW in\nocfs2_prepare_inode_for_write.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "6ae23c5555176c5b23480c9c578ff27437085ba5",
      "tree": "4afb1c33e850fa751c6136d65a041f70fe146fe8",
      "parents": [
        "6f70fa519976a379d72781d927cf8e5f5b05ec86"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Tue Aug 18 11:30:55 2009 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Sep 22 20:09:36 2009 -0700"
      },
      "message": "ocfs2: CoW refcount tree improvement.\n\nDuring CoW, if the old extent record is refcounted, we allocate\nsom new clusters and do CoW. Actually we can have some improvement\nhere. If the old extent has refcount\u003d1, that means now it is only\nused by this file. So we don\u0027t need to allocate new clusters, just\nremove the refcounted flag and it is OK. We also have to remove\nit from the refcount tree while not deleting it.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "6f70fa519976a379d72781d927cf8e5f5b05ec86",
      "tree": "563cdeb116f2016c3c4b7a627a51f0a85eec1566",
      "parents": [
        "bcbbb24a6a5c5b3e7b8e5284e0bfa23f45c32377"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Tue Aug 25 08:05:12 2009 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Sep 22 20:09:36 2009 -0700"
      },
      "message": "ocfs2: Add CoW support.\n\nThis patch try CoW support for a refcounted record.\n\nthe whole process will be:\n1. Calculate how many clusters we need to CoW and where we start.\n   Extents that are not completely encompassed by the write will\n   be broken on 1MB boundaries.\n2. Do CoW for the clusters with the help of page cache.\n3. Change the b-tree structure with the new allocated clusters.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "bcbbb24a6a5c5b3e7b8e5284e0bfa23f45c32377",
      "tree": "e45a6cfd75cd8005fdf280c2f5f57c09186249dd",
      "parents": [
        "1aa75fea64bc26bda9be9b1b20ae253d7a481877"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Tue Aug 18 11:29:12 2009 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Sep 22 20:09:35 2009 -0700"
      },
      "message": "ocfs2: Decrement refcount when truncating refcounted extents.\n\nAdd \u0027Decrement refcount for delete\u0027 in to the normal truncate\nprocess. So for a refcounted extent record, call refcount rec\ndecrementation instead of cluster free.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "1aa75fea64bc26bda9be9b1b20ae253d7a481877",
      "tree": "5da0c235f1323b9771e44a18a5452c83c0969547",
      "parents": [
        "1823cb0b9fe5e6d48017ee3f92428f69c0235d87"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Tue Aug 18 11:28:39 2009 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Sep 22 20:09:34 2009 -0700"
      },
      "message": "ocfs2: Add functions for extents refcounted.\n\nAdd function ocfs2_mark_extent_refcounted which can mark\nan extent refcounted.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "1823cb0b9fe5e6d48017ee3f92428f69c0235d87",
      "tree": "461e5d6cc255c400acac69dd968fae935a9c073f",
      "parents": [
        "e73a819db9c2d6c4065b7cab7374709b6939e8f1"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Tue Aug 18 11:24:49 2009 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Sep 22 20:09:33 2009 -0700"
      },
      "message": "ocfs2: Add support of decrementing refcount for delete.\n\n    Given a physical cpos and length, decrement the refcount\nin the tree. If the refcount for any portion of the extent goes\nto zero, that portion is queued for freeing.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "e73a819db9c2d6c4065b7cab7374709b6939e8f1",
      "tree": "40968bc5b37d3b55e382267683c9612d4697f036",
      "parents": [
        "e2e9f6082b5ff099978774d5c0148e062344c2f9"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Tue Aug 11 14:33:14 2009 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Sep 22 20:09:33 2009 -0700"
      },
      "message": "ocfs2: Add support for incrementing refcount in the tree.\n\n    Given a physical cpos and length, increment the refcount\nin the tree. If the extent has not been seen before, a refcount\nrecord is created for it. Refcount records may be merged or\nsplit by this operation.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "e2e9f6082b5ff099978774d5c0148e062344c2f9",
      "tree": "1da7dc993c77ca08cb83aba8f21e0da9fd055044",
      "parents": [
        "fe924415957e60471536762172d127e85519ef78"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Tue Aug 18 11:22:34 2009 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Sep 22 20:09:32 2009 -0700"
      },
      "message": "ocfs2: move tree path functions to alloc.h.\n\nNow fs/ocfs2/alloc.c has more than 7000 lines. It contains our\nbasic b-tree operation. Although we have already make our b-tree\noperation generic, the basic structrue ocfs2_path which is used\nto iterate one b-tree branch is still static and limited to only\nused in alloc.c. As refcount tree need them and I don\u0027t want to\nadd any more b-tree unrelated code to alloc.c, export them out.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e \n"
    },
    {
      "commit": "fe924415957e60471536762172d127e85519ef78",
      "tree": "c26f47180bbc14fda78dae0cb3d40287d6dafd18",
      "parents": [
        "555936bfcb1af26c6919d6cedb83710bb03d4322"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Tue Aug 18 11:22:25 2009 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Sep 22 20:09:31 2009 -0700"
      },
      "message": "ocfs2: Add refcount b-tree as a new extent tree.\n\nAdd refcount b-tree as a new extent tree so that it can\nuse the b-tree to store and maniuplate ocfs2_refcount_rec.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "555936bfcb1af26c6919d6cedb83710bb03d4322",
      "tree": "8d63ff0c4a0ff9587cb84dcd8ca9333c94d34ff8",
      "parents": [
        "853a3a1439b18d5a70ada2cb3fcd468e70b7d095"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Tue Aug 18 11:22:21 2009 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Sep 22 20:09:31 2009 -0700"
      },
      "message": "ocfs2: Abstract extent split process.\n\nocfs2_mark_extent_written actually does the following things:\n1. check the parameters.\n2. initialize the left_path and split_rec.\n3. call __ocfs2_mark_extent_written. it will do:\n   1) check the flags of unwritten\n   2) do the real split work.\nThe whole process is packed tightly somehow. So this patch\nwill abstract 2 different functions so that future b-tree\noperation can work with it.\n\n1. __ocfs2_split_extent will accept path and split_rec and do\n  the real split work.\n2. ocfs2_change_extent_flag will accept a new flag and initialize\n   path and split_rec.\n\nSo now ocfs2_mark_extent_written will do:\n1. check the parameters.\n2. call ocfs2_change_extent_flag.\n   1) initalize the left_path and split_rec.\n   2) check whether the new flags conflict with the old one.\n   3) call __ocfs2_split_extent to do the split.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "853a3a1439b18d5a70ada2cb3fcd468e70b7d095",
      "tree": "96f4a2f3ca4380a6d0feb6f1b8af038bb62946c5",
      "parents": [
        "8bf396de984e68491569b49770e4fd7aca40ba65"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Tue Aug 18 11:22:18 2009 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Sep 22 20:09:30 2009 -0700"
      },
      "message": "ocfs2: Wrap ocfs2_extent_contig in ocfs2_extent_tree.\n\nAdd a new operation eo_ocfs2_extent_contig int the extent tree\u0027s\noperations vector. So that with the new refcount tree, We want\nthis so that refcount trees can always return CONTIG_NONE and\nprevent extent merging.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n\n"
    },
    {
      "commit": "8bf396de984e68491569b49770e4fd7aca40ba65",
      "tree": "1c755fa7af20e14722378df729201e6f8497fadb",
      "parents": [
        "374a263e790c4de85844283c098810a92985f623"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Mon Aug 24 11:12:02 2009 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Sep 22 20:09:30 2009 -0700"
      },
      "message": "ocfs2: Basic tree root operation.\n\nAdd basic refcount tree root operation.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "374a263e790c4de85844283c098810a92985f623",
      "tree": "a72b1f072b973723ea1cf7def27608717cf1c033",
      "parents": [
        "c732eb16bf07f9bfb7fa72b6868462471273bdbd"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Mon Aug 24 11:13:37 2009 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Sep 22 20:09:29 2009 -0700"
      },
      "message": "ocfs2: Add refcount tree lock mechanism.\n\nImplement locking around struct ocfs2_refcount_tree.  This protects\nall read/write operations on refcount trees.  ocfs2_refcount_tree\nhas its own lock and its own caching_info, protecting buffers among\nmultiple nodes.\n\nUser must call ocfs2_lock_refcount_tree before his operation on\nthe tree and unlock it after that.\n\nocfs2_refcount_trees are referenced by the block number of the\nrefcount tree root block, So we create an rb-tree on the ocfs2_super\nto look them up.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n\n"
    },
    {
      "commit": "c732eb16bf07f9bfb7fa72b6868462471273bdbd",
      "tree": "8e6cfce9d9d5ca1d5dcd1d52ca1e291a3928c6fe",
      "parents": [
        "8dec98edfe9684ce00b580a09dde3dcd21ee785b"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Tue Aug 18 11:21:00 2009 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Sep 22 20:09:28 2009 -0700"
      },
      "message": "ocfs2: Add caching info for refcount tree.\n\nrefcount tree should use its own caching info so that when\nwe downconvert the refcount tree lock, we can drop all the\ncached buffer head.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "8dec98edfe9684ce00b580a09dde3dcd21ee785b",
      "tree": "3002e990974163a09ea6d427d7cf775aaca7acca",
      "parents": [
        "a433848132d8cdfb8173745b922ddb919de11527"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Tue Aug 18 11:19:58 2009 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Sep 22 20:09:28 2009 -0700"
      },
      "message": "ocfs2: Add new refcount tree lock resource in dlmglue.\n\nrefcount tree lock resource is used to protect refcount\ntree read/write among multiple nodes.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "a433848132d8cdfb8173745b922ddb919de11527",
      "tree": "b12db738743e4eb4a7222996300fa468b1dc39e5",
      "parents": [
        "f2c870e3b12e38da6d9b5b17c4c8ae56a0ed68e4"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Tue Aug 18 11:19:29 2009 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Sep 22 20:09:27 2009 -0700"
      },
      "message": "ocfs2: Abstract caching info checkpoint.\n\nIn meta downconvert, we need to checkpoint the metadata in an inode.\nFor refcount tree, we also need it. So abstract the process out.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e \n"
    },
    {
      "commit": "f2c870e3b12e38da6d9b5b17c4c8ae56a0ed68e4",
      "tree": "23aabcc02bc4437c975626012248a7fad3a307de",
      "parents": [
        "93c97087a646429f4dc0d73298d64674ddd5cde8"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Tue Aug 18 11:19:26 2009 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Sep 22 20:09:26 2009 -0700"
      },
      "message": "ocfs2: Add ocfs2_read_refcount_block.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "93c97087a646429f4dc0d73298d64674ddd5cde8",
      "tree": "d6c58b32b031a0e23f86e1574e688585fcc26455",
      "parents": [
        "721f69c404c51a5d1dc93fddb48ee936e8e23770"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Tue Aug 18 11:19:20 2009 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Sep 22 20:09:26 2009 -0700"
      },
      "message": "ocfs2: Add metaecc for ocfs2_refcount_block.\n\nAdd metaecc and journal trigger for ocfs2_refcount_block.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "721f69c404c51a5d1dc93fddb48ee936e8e23770",
      "tree": "10aed3ec236cb7cb677f380d08710c3786d22dcd",
      "parents": [
        "5e404e9ed1b05cafb044bd46792e50197df805ed"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Tue Aug 18 11:17:49 2009 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Sep 22 20:09:25 2009 -0700"
      },
      "message": "ocfs2: Define refcount tree structure.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "342ff1a1b558ebbdb8cbd55ab6a63eca8b2473ca",
      "tree": "1f967f283dade6e03897169bb29513354f49f910",
      "parents": [
        "50223e486cabdcf7e540e519da1f26bab3084e5d",
        "24ed7a97464db44592495f98cff8bcee02f92bc2"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:51:45 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:51:45 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (34 commits)\n  trivial: fix typo in aic7xxx comment\n  trivial: fix comment typo in drivers/ata/pata_hpt37x.c\n  trivial: typo in kernel-parameters.txt\n  trivial: fix typo in tracing documentation\n  trivial: add __init/__exit macros in drivers/gpio/bt8xxgpio.c\n  trivial: add __init macro/ fix of __exit macro location in ipmi_poweroff.c\n  trivial: remove unnecessary semicolons\n  trivial: Fix duplicated word \"options\" in comment\n  trivial: kbuild: remove extraneous blank line after declaration of usage()\n  trivial: improve help text for mm debug config options\n  trivial: doc: hpfall: accept disk device to unload as argument\n  trivial: doc: hpfall: reduce risk that hpfall can do harm\n  trivial: SubmittingPatches: Fix reference to renumbered step\n  trivial: fix typos \"man[ae]g?ment\" -\u003e \"management\"\n  trivial: media/video/cx88: add __init/__exit macros to cx88 drivers\n  trivial: fix typo in CONFIG_DEBUG_FS in gcov doc\n  trivial: fix missing printk space in amd_k7_smp_check\n  trivial: fix typo s/ketymap/keymap/ in comment\n  trivial: fix typo \"to to\" in multiple files\n  trivial: fix typos in comments s/DGBU/DBGU/\n  ...\n"
    },
    {
      "commit": "0d54b217a247f39605361f867fefbb9e099a5432",
      "tree": "5af6a2cc4cbc6c327e735ac5edb642d47a1f0013",
      "parents": [
        "61e225dc341107be304fd1088146c2a5e88ff9e0"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Sep 21 17:01:09 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:24 2009 -0700"
      },
      "message": "const: make struct super_block::s_qcop const\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "61e225dc341107be304fd1088146c2a5e88ff9e0",
      "tree": "e6d3e1dc5506e232497f17721175a081a5306b5b",
      "parents": [
        "00d3803b656a5f0935518d746f6bb27d5181d29d"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Sep 21 17:01:08 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:24 2009 -0700"
      },
      "message": "const: make struct super_block::dq_op const\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a419aef8b858a2bdb98df60336063d28df4b272f",
      "tree": "1736f6650ec0bfc01074c489fc47396114099c5e",
      "parents": [
        "2944fcbe03d65a704f07e43efe14adb0d226fd09"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Tue Aug 18 11:18:35 2009 -0700"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Mon Sep 21 15:14:58 2009 +0200"
      },
      "message": "trivial: remove unnecessary semicolons\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "aa261f549d7652258331ebb12795f3bc4395d213",
      "tree": "0ca807db32a6e3f213fa52b5a053d2b27e5e6bac",
      "parents": [
        "6a46079cf57a7f7758e8b926980a4f852f89b34d"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "andi@firstfloor.org",
        "time": "Wed Sep 16 11:50:16 2009 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Sep 16 11:50:16 2009 +0200"
      },
      "message": "HWPOISON: Enable .remove_error_page for migration aware file systems\n\nEnable removing of corrupted pages through truncation\nfor a bunch of file systems: ext*, xfs, gfs2, ocfs2, ntfs\nThese should cover most server needs.\n\nI chose the set of migration aware file systems for this\nfor now, assuming they have been especially audited.\nBut in general it should be safe for all file systems\non the data area that support read/write and truncate.\n\nCaveat: the hardware error handler does not take i_mutex\nfor now before calling the truncate function. Is that ok?\n\nCc: tytso@mit.edu\nCc: hch@infradead.org\nCc: mfasheh@suse.com\nCc: aia21@cantab.net\nCc: hugh.dickins@tiscali.co.uk\nCc: swhiteho@redhat.com\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "d23c937b0f740888765676f6f82f509dbbb2bbad",
      "tree": "df4e085d935805f54061436ee820460c79143087",
      "parents": [
        "ebbbf757c6b8577ac2fb6181c08c2059153bb0e2"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue Aug 18 18:24:31 2009 +0200"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Sep 14 17:08:16 2009 +0200"
      },
      "message": "ocfs2: Update syncing after splicing to match generic version\n\nUpdate ocfs2 specific splicing code to use generic syncing helper. The sync now\ndoes not happen under rw_lock because generic_write_sync() acquires i_mutex\nwhich ranks above rw_lock. That should not matter because standard fsync path\ndoes not hold it either.\n\nAcked-by: Joel Becker \u003cJoel.Becker@oracle.com\u003e\nAcked-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\nCC: ocfs2-devel@oss.oracle.com\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "918941a3f3d46c2a69971b4718aaf13b1be2f1a7",
      "tree": "3ef80cb4b8107be981cc87904c7e80c0e383e5e5",
      "parents": [
        "b04f932171e8a99bb8ca2f863b2b9eadb85741e8"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Aug 17 18:50:08 2009 +0200"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Sep 14 17:08:15 2009 +0200"
      },
      "message": "ocfs2: Use __generic_file_aio_write instead of generic_file_aio_write_nolock\n\nUse the new helper. We have to submit data pages ourselves in case of O_SYNC\nwrite because __generic_file_aio_write does not do it for us. OCFS2 developpers\nmight think about moving the sync out of i_mutex which seems to be easily\npossible but that\u0027s out of scope of this patch.\n\nCC: ocfs2-devel@oss.oracle.com\nAcked-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "d993831fa7ffeb89e994f046f93eeb09ec91df08",
      "tree": "da4f94bbf022c83988bda71adf1f1b3a88cb4592",
      "parents": [
        "f09b00d3e789a88fa6c7c03cedc62cb65c1de0cb"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jun 12 14:45:52 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Sep 11 09:20:26 2009 +0200"
      },
      "message": "writeback: add name to backing_dev_info\n\nThis enables us to track who does what and print info. Its main use\nis catching dirty inodes on the default_backing_dev_info, so we can\nfix that up.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\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": "5e404e9ed1b05cafb044bd46792e50197df805ed",
      "tree": "e3146e03f8a0fc12307db0cbea900728a36ffaac",
      "parents": [
        "a1cf076ba93f9fdf3eb4195f9f43d1e7cb7550f2"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Feb 13 03:54:22 2009 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Sep 04 16:08:13 2009 -0700"
      },
      "message": "ocfs2: Pass ocfs2_caching_info into ocfs_init_*_extent_tree().\n\nWith this commit, extent tree operations are divorced from inodes and\nrely on ocfs2_caching_info.  Phew!\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "a1cf076ba93f9fdf3eb4195f9f43d1e7cb7550f2",
      "tree": "27fbf5b5b5b87e3d427d9deee06ec882370d1d1a",
      "parents": [
        "f3868d0fa2e20d923087a8296fda47b0afe7f9ba"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Feb 13 03:45:49 2009 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Sep 04 16:08:12 2009 -0700"
      },
      "message": "ocfs2: __ocfs2_mark_extent_written() doesn\u0027t need struct inode.\n\nWe only allow unwritten extents on data, so the toplevel\nocfs2_mark_extent_written() can use an inode all it wants.  But the\nsubfunction isn\u0027t even using the inode argument.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "f3868d0fa2e20d923087a8296fda47b0afe7f9ba",
      "tree": "d9a97217cd42d379cfa5b82a866071e3d1428a23",
      "parents": [
        "d231129f44e7ead14f5f496e664ff1e3883a7b25"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Feb 17 19:46:04 2009 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Sep 04 16:08:11 2009 -0700"
      },
      "message": "ocfs2: Teach ocfs2_replace_extent_rec() to use an extent_tree.\n\nDon\u0027t use a struct inode anymore.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "d231129f44e7ead14f5f496e664ff1e3883a7b25",
      "tree": "b7e94ee43d2a3c53e1d93df24208ab734256c007",
      "parents": [
        "dbdcf6a48a40e6c9d7081393d793c4f1c5bb4fcf"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Feb 13 03:43:22 2009 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Sep 04 16:08:11 2009 -0700"
      },
      "message": "ocfs2: ocfs2_split_and_insert() no longer needs struct inode.\n\nIt already has an extent_tree.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "dbdcf6a48a40e6c9d7081393d793c4f1c5bb4fcf",
      "tree": "d50b179dbbe1a62ea98a0b65ecf33c9a86d906b0",
      "parents": [
        "cbee7e1a6a1a2a3d6eda1f76ffc38a3ed3eeb6cc"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Feb 13 03:41:26 2009 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Sep 04 16:08:10 2009 -0700"
      },
      "message": "ocfs2: ocfs2_remove_extent() no longer needs struct inode.\n\nOne more generic btree function that is isolated from struct inode.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "cbee7e1a6a1a2a3d6eda1f76ffc38a3ed3eeb6cc",
      "tree": "438ac4917675c27ecd3dce694ae3affd7ebf6c91",
      "parents": [
        "cc79d8c19e9d39446525a1026f1a21761f5d3cd2"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Feb 13 03:34:15 2009 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Sep 04 16:08:09 2009 -0700"
      },
      "message": "ocfs2: ocfs2_add_clusters_in_btree() no longer needs struct inode.\n\nOne more function that doesn\u0027t need a struct inode to pass to its\nchildren.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "cc79d8c19e9d39446525a1026f1a21761f5d3cd2",
      "tree": "3c9788c2e5ef0c51734dad8186ecd83bf4dd6584",
      "parents": [
        "92ba470c44c1404ff18ca0f4ecce1e5b116bb933"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Feb 13 03:24:43 2009 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Sep 04 16:08:09 2009 -0700"
      },
      "message": "ocfs2: ocfs2_insert_extent() no longer needs struct inode.\n\nOne more function down, no inode in the entire insert-extent chain.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "92ba470c44c1404ff18ca0f4ecce1e5b116bb933",
      "tree": "76e29703dfc37acb9ad3d129936ae4d1ddfee258",
      "parents": [
        "627961b77e68b725851cb227db10084bf15f6920"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Feb 13 03:18:34 2009 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Sep 04 16:08:08 2009 -0700"
      },
      "message": "ocfs2: Make extent map insertion an extent_tree_operation.\n\nocfs2_insert_extent() wants to insert a record into the extent map if\nit\u0027s an inode data extent.  But since many btrees can call that\nfunction, let\u0027s make it an op on ocfs2_extent_tree.  Other tree types\ncan leave it empty.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "627961b77e68b725851cb227db10084bf15f6920",
      "tree": "2569de1a07782a3d65161b018e90335d844112f0",
      "parents": [
        "1ef61b33148a6b32b6d28383cd72ceeddfc7054d"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Feb 13 03:14:38 2009 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Sep 04 16:08:08 2009 -0700"
      },
      "message": "ocfs2: ocfs2_figure_insert_type() no longer needs struct inode.\n\nIt\u0027s not using it, so remove it from the parameter list.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "1ef61b33148a6b32b6d28383cd72ceeddfc7054d",
      "tree": "8e0c3e6131fc72847f37f1ac963b7ba7efe9be3c",
      "parents": [
        "a29702914ad36443d83b5250b3bfa1bf91e6b239"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Feb 13 03:12:33 2009 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Sep 04 16:08:07 2009 -0700"
      },
      "message": "ocfs2: Remove inode from ocfs2_figure_extent_contig().\n\nIt already has an ocfs2_extent_tree and doesn\u0027t need the inode.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "a29702914ad36443d83b5250b3bfa1bf91e6b239",
      "tree": "74937c792f6ff893dd108497119895127a16f053",
      "parents": [
        "b4a176515c715f0c6db1759a39cd9c4175e5a23a"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Feb 13 03:09:54 2009 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Sep 04 16:08:07 2009 -0700"
      },
      "message": "ocfs2: Swap inode for extent_tree in ocfs2_figure_merge_contig_type().\n\nWe don\u0027t want struct inode in generic btree operations.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "b4a176515c715f0c6db1759a39cd9c4175e5a23a",
      "tree": "e929ed1a0acb1c16755d8584f11e186cf35bc1b4",
      "parents": [
        "3505bec01829a8f690259517add55c7941a4d3d5"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Feb 13 03:07:09 2009 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Sep 04 16:08:05 2009 -0700"
      },
      "message": "ocfs2: ocfs2_extent_contig() only requires the superblock.\n\nDon\u0027t pass the inode in.  We don\u0027t want it around for generic btree\noperations.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "3505bec01829a8f690259517add55c7941a4d3d5",
      "tree": "981a67f2b16e1aaa03339e9920252b1e6ba173c8",
      "parents": [
        "c38e52bb1c0187186bd3c4a2b318ffe69cd2fdf8"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Feb 13 02:57:58 2009 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Sep 04 16:08:05 2009 -0700"
      },
      "message": "ocfs2: ocfs2_do_insert_extent() and ocfs2_insert_path() no longer need an inode.\n\nThey aren\u0027t using it, so remove it from their parameter lists.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "c38e52bb1c0187186bd3c4a2b318ffe69cd2fdf8",
      "tree": "16f8c548f3797822e1a2da68b902ef1a5f8fa8b3",
      "parents": [
        "d562862314a7b131a630f7b912490312387542fb"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Feb 13 02:56:23 2009 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Sep 04 16:08:05 2009 -0700"
      },
      "message": "ocfs2: Give ocfs2_split_record() an extent_tree instead of an inode.\n\nAnother on the way to generic btree functions.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "d562862314a7b131a630f7b912490312387542fb",
      "tree": "1ddad8ba544ac712ac1f889729a19511aaefdf22",
      "parents": [
        "4c911eefca316f580f174940cd67d561b4b7e6e8"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Feb 13 02:54:36 2009 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Sep 04 16:08:04 2009 -0700"
      },
      "message": "ocfs2: ocfs2_insert_at_leaf() doesn\u0027t need struct inode.\n\nGive it an ocfs2_extent_tree and it is happy.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "4c911eefca316f580f174940cd67d561b4b7e6e8",
      "tree": "785ae90d5e2f0fe71c37aa39027c7144abab3d0c",
      "parents": [
        "043beebb6c467a07ccd7aa666095f87fade1c28e"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Feb 13 02:50:12 2009 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Sep 04 16:08:03 2009 -0700"
      },
      "message": "ocfs2: Make truncating the extent map an extent_tree_operation.\n\nocfs2_remove_extent() wants to truncate the extent map if it\u0027s\ntruncating an inode data extent.  But since many btrees can call that\nfunction, let\u0027s make it an op on ocfs2_extent_tree.  Other tree types\ncan leave it empty.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "043beebb6c467a07ccd7aa666095f87fade1c28e",
      "tree": "6e62d3e03ff20a633bd213420bc67ec2cb25b0bb",
      "parents": [
        "d401dc12fcced123909eba10334fb5d78866d1a9"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Feb 13 02:42:30 2009 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Sep 04 16:08:03 2009 -0700"
      },
      "message": "ocfs2: ocfs2_truncate_rec() doesn\u0027t need struct inode.\n\nIt\u0027s not using it anymore.  Remove it from the parameter list.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "d401dc12fcced123909eba10334fb5d78866d1a9",
      "tree": "fb0c3042753937d64eeb3d4b60a9dd4ff6ee8150",
      "parents": [
        "c495dd24ac00654f99540f533185e1fcc9534009"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Feb 13 02:24:10 2009 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Sep 04 16:08:02 2009 -0700"
      },
      "message": "ocfs2: ocfs2_grow_branch() and ocfs2_append_rec_to_path() lose struct inode.\n\nocfs2_grow_branch() not really using it other than to pass it to the\nsubfunctions ocfs2_shift_tree_depth(), ocfs2_find_branch_target(), and\nocfs2_add_branch().  The first two weren\u0027t it either, so they drop the\nargument.  ocfs2_add_branch() only passed it to\nocfs2_adjust_rightmost_branch(), which drops the inode argument and uses\nthe ocfs2_extent_tree as well.\n\nocfs2_append_rec_to_path() can be take an ocfs2_extent_tree instead of\nthe inode.  The function ocfs2_adjust_rightmost_records() goes along for\nthe ride.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "c495dd24ac00654f99540f533185e1fcc9534009",
      "tree": "2c9837964f002e76011ee06f83b8bcee74a78c23",
      "parents": [
        "4fe82c312a7d975a9d0f591dc9180c1197ee4270"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Feb 13 02:19:11 2009 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Sep 04 16:08:02 2009 -0700"
      },
      "message": "ocfs2: ocfs2_try_to_merge_extent() doesn\u0027t need struct inode.\n\nIt\u0027s not using it, so remove it from the parameter list.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "4fe82c312a7d975a9d0f591dc9180c1197ee4270",
      "tree": "53ca5d0aeeeb92768ee993ec69324b3b6767f09f",
      "parents": [
        "70f18c08b476e315c8ee17ea34b55ea1957e7e7d"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Feb 13 02:16:08 2009 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Sep 04 16:08:01 2009 -0700"
      },
      "message": "ocfs2: ocfs2_merge_rec_left/right() no longer need struct inode.\n\nDrop it from the parameters - they already have ocfs2_extent_list.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "70f18c08b476e315c8ee17ea34b55ea1957e7e7d",
      "tree": "e53645ea3a3ff2e3d45a31c0f963815f3cfa7fb9",
      "parents": [
        "e46f74dc357947e2aed9bdd63cf335c5fd23810b"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Feb 13 02:09:31 2009 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Sep 04 16:08:00 2009 -0700"
      },
      "message": "ocfs2: ocfs2_rotate_tree_left() no longer needs struct inode.\n\nIt already gets ocfs2_extent_tree, so we can just use that.  This chains\nto the same modification for ocfs2_remove_rightmost_path() and\nocfs2_rotate_rightmost_leaf_left().\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "e46f74dc357947e2aed9bdd63cf335c5fd23810b",
      "tree": "2223c4659223d10415a72760a80981e4f784a235",
      "parents": [
        "1e2dd63fe0b6e99b81904a61090db801978b9520"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Feb 12 19:47:43 2009 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Sep 04 16:07:59 2009 -0700"
      },
      "message": "ocfs2: __ocfs2_rotate_tree_left() doesn\u0027t need struct inode.\n\nIt already has struct ocfs2_extent_tree, which has the caching info.  So\nwe don\u0027t need to pass it struct inode.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "1e2dd63fe0b6e99b81904a61090db801978b9520",
      "tree": "af22705466dda6be2e18d8a23a267e97ea57147b",
      "parents": [
        "09106bae05c3350e8d0ef0ede90b1c3da4bda2f8"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Feb 12 19:45:28 2009 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Sep 04 16:07:59 2009 -0700"
      },
      "message": "ocfs2: ocfs2_rotate_subtree_left() doesn\u0027t need struct inode.\n\nIt already has struct ocfs2_extent_tree, which has the caching info.  So\nwe don\u0027t need to pass it struct inode.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "09106bae05c3350e8d0ef0ede90b1c3da4bda2f8",
      "tree": "73e216e39897e9519b0e30843cddbd20074fcdca",
      "parents": [
        "1bbf0b8d606645c7596ee641acfbf042765c9719"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Feb 12 19:43:57 2009 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Sep 04 16:07:58 2009 -0700"
      },
      "message": "ocfs2: ocfs2_update_edge_lengths() doesn\u0027t need struct inode.\n\nPass in the extent tree, which is all we need.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "1bbf0b8d606645c7596ee641acfbf042765c9719",
      "tree": "7d0f4fd611b4617ed52ed6dad7332334381dbe0e",
      "parents": [
        "6136ca5f5f9fd38da399e9ff9380f537c1b3b901"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Feb 12 19:42:08 2009 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Sep 04 16:07:58 2009 -0700"
      },
      "message": "ocfs2: ocfs2_rotate_tree_right() doesn\u0027t need struct inode.\n\nWe don\u0027t need struct inode in ocfs2_rotate_tree_right() anymore.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "6136ca5f5f9fd38da399e9ff9380f537c1b3b901",
      "tree": "e2927c3b6084a7ea16f872a61011cbcf505f570c",
      "parents": [
        "7dc028056750328e74ca807041c822068384fe16"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Feb 12 19:32:43 2009 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Sep 04 16:07:57 2009 -0700"
      },
      "message": "ocfs2: Drop struct inode from ocfs2_extent_tree_operations.\n\nWe can get to the inode from the caching information.  Other parent\ntypes don\u0027t need it.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "7dc028056750328e74ca807041c822068384fe16",
      "tree": "507d64e5d1136afea9ad54b9011fea4dfbe8b15f",
      "parents": [
        "5c601aba8c5d9d5f944cf02b59e3288dd72ae6cf"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Feb 12 19:20:13 2009 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Sep 04 16:07:55 2009 -0700"
      },
      "message": "ocfs2: Pass ocfs2_extent_tree to ocfs2_get_subtree_root()\n\nGet rid of the inode argument.  Use extent_tree instead.  This means a\nfew more functions have to pass an extent_tree around.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "5c601aba8c5d9d5f944cf02b59e3288dd72ae6cf",
      "tree": "7b2a8f2daecfa433a6fa73a7cfecd594fe87dfaf",
      "parents": [
        "4619c73e7c9bd10bac6b60925fa28d5a2eeaf6ed"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Feb 12 19:10:13 2009 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Sep 04 16:07:55 2009 -0700"
      },
      "message": "ocfs2: Get inode out of ocfs2_rotate_subtree_root_right().\n\nPass the ocfs2_extent_list down through ocfs2_rotate_tree_right() and\nget rid of struct inode in ocfs2_rotate_subtree_root_right().\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "4619c73e7c9bd10bac6b60925fa28d5a2eeaf6ed",
      "tree": "1e280a72eac74615bd298574d747ca543051b766",
      "parents": [
        "6641b0ce3274d979338cb67b2f562189dcbc1c28"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Feb 12 19:02:36 2009 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Sep 04 16:07:54 2009 -0700"
      },
      "message": "ocfs2: ocfs2_complete_edge_insert() doesn\u0027t need struct inode at all.\n\nCompletely unused argument.  Get rid of it.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "6641b0ce3274d979338cb67b2f562189dcbc1c28",
      "tree": "840466924b7c88fe6959eb4373708198c507f554",
      "parents": [
        "42a5a7a9a5abf9a566b91c51137921957b9a14e4"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Feb 12 18:57:52 2009 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Sep 04 16:07:54 2009 -0700"
      },
      "message": "ocfs2: Pass ocfs2_extent_tree to ocfs2_unlink_path()\n\nocfs2_unlink_path() doesn\u0027t need struct inode, so let\u0027s pass it struct\nocfs2_extent_tree.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "42a5a7a9a5abf9a566b91c51137921957b9a14e4",
      "tree": "ec676255875d1290ac994f73e3a4dc09fb705b48",
      "parents": [
        "facdb77f54f09a33baf6b649496f5dd1d7922a7e"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Feb 12 18:49:19 2009 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Sep 04 16:07:53 2009 -0700"
      },
      "message": "ocfs2: ocfs2_create_new_meta_bhs() doesn\u0027t need struct inode.\n\nPass struct ocfs2_extent_tree into ocfs2_create_new_meta_bhs().  It no\nlonger needs struct inode or ocfs2_super.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "facdb77f54f09a33baf6b649496f5dd1d7922a7e",
      "tree": "676de8877773ae38b8379bc3d50073c0710e2d8c",
      "parents": [
        "3d03a305ded8057155bd3c801e64ffef9f534827"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Feb 12 18:08:48 2009 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Sep 04 16:07:53 2009 -0700"
      },
      "message": "ocfs2: ocfs2_find_path() only needs the caching info\n\nocfs2_find_path and ocfs2_find_leaf() walk our btrees, reading extent\nblocks.  They need struct ocfs2_caching_info for that, but not struct\ninode.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "3d03a305ded8057155bd3c801e64ffef9f534827",
      "tree": "4f220711f42c1abbd80a9fe8c2b6ee47e846a587",
      "parents": [
        "d9a0a1f83bf083b55b3c1f16efddecc31abace61"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Feb 12 17:49:26 2009 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Sep 04 16:07:52 2009 -0700"
      },
      "message": "ocfs2: Pass ocfs2_caching_info to ocfs2_read_extent_block().\n\nextent blocks belong to btrees on more than just inodes, so we want to\npass the ocfs2_caching_info structure directly to\nocfs2_read_extent_block().  A number of places in alloc.c can now drop\nstruct inode from their argument list.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "d9a0a1f83bf083b55b3c1f16efddecc31abace61",
      "tree": "7e75311f678fb943f2a0b14c91a0877fd7813efe",
      "parents": [
        "0cf2f7632b1789b811ab20b611c4156e6de2b055"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Feb 12 17:32:34 2009 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Sep 04 16:07:51 2009 -0700"
      },
      "message": "ocfs2: Store the ocfs2_caching_info on ocfs2_extent_tree.\n\nWhat do we cache?  Metadata blocks.  What are most of our non-inode metadata\nblocks?  Extent blocks for our btrees.  struct ocfs2_extent_tree is the\nmain structure for managing those.  So let\u0027s store the associated\nocfs2_caching_info there.\n\nThis means that ocfs2_et_root_journal_access() doesn\u0027t need struct inode\nanymore, and any place that has an et can refer to et-\u003eet_ci instead of\nINODE_CACHE(inode).\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "0cf2f7632b1789b811ab20b611c4156e6de2b055",
      "tree": "34f7cf3584e4fa2bc187d4b75ce052cb98739b0e",
      "parents": [
        "292dd27ec76b96cebcef576f330ab121f59ccf05"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Feb 12 16:41:25 2009 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Sep 04 16:07:50 2009 -0700"
      },
      "message": "ocfs2: Pass struct ocfs2_caching_info to the journal functions.\n\nThe next step in divorcing metadata I/O management from struct inode is\nto pass struct ocfs2_caching_info to the journal functions.  Thus the\njournal locks a metadata cache with the cache io_lock function.  It also\ncan compare ci_last_trans and ci_created_trans directly.\n\nThis is a large patch because of all the places we change\nocfs2_journal_access..(handle, inode, ...) to\nocfs2_journal_access..(handle, INODE_CACHE(inode), ...).\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "292dd27ec76b96cebcef576f330ab121f59ccf05",
      "tree": "d98f4d359f610e7dad53eb5b68fdb1517a043fb3",
      "parents": [
        "66fb345ddd2d343e36692da0ff66126d7a99dc1b"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Feb 12 15:41:59 2009 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Sep 04 16:07:49 2009 -0700"
      },
      "message": "ocfs2: move ip_created_trans to struct ocfs2_caching_info\n\nSimilar ip_last_trans, ip_created_trans tracks the creation of a journal\nmanaged inode.  This specifically tracks what transaction created the\ninode.  This is so the code can know if the inode has ever been written\nto disk.\n\nThis behavior is desirable for any journal managed object.  We move it\nto struct ocfs2_caching_info as ci_created_trans so that any object\nusing ocfs2_caching_info can rely on this behavior.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "66fb345ddd2d343e36692da0ff66126d7a99dc1b",
      "tree": "7e53f68bbf4c910cd81be7e39378d9552bbce4c3",
      "parents": [
        "8cb471e8f82506937fe5e2e9fb0bf90f6b1f1170"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Feb 12 15:24:40 2009 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Sep 04 16:07:49 2009 -0700"
      },
      "message": "ocfs2: move ip_last_trans to struct ocfs2_caching_info\n\nWe have the read side of metadata caching isolated to struct\nocfs2_caching_info, now we need the write side.  This means the journal\nfunctions.  The journal only does a couple of things with struct inode.\n\nThis change moves the ip_last_trans field onto struct\nocfs2_caching_info as ci_last_trans.  This field tells the journal\nwhether a pending journal flush is required.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "8cb471e8f82506937fe5e2e9fb0bf90f6b1f1170",
      "tree": "e275a8f5db101a9990ba44931cfd116123112b11",
      "parents": [
        "6e5a3d7538ad4e46a976862f593faf65750e37cc"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Feb 10 20:00:41 2009 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Sep 04 16:07:48 2009 -0700"
      },
      "message": "ocfs2: Take the inode out of the metadata read/write paths.\n\nWe are really passing the inode into the ocfs2_read/write_blocks()\nfunctions to get at the metadata cache.  This commit passes the cache\ndirectly into the metadata block functions, divorcing them from the\ninode.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "6e5a3d7538ad4e46a976862f593faf65750e37cc",
      "tree": "e87ce6d69bdbcce23eed0a195a7f80a59c01d3d9",
      "parents": [
        "47460d65a483529b3bc2bf6ccf461ad45f94df83"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Feb 10 19:00:37 2009 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Sep 04 16:07:48 2009 -0700"
      },
      "message": "ocfs2: Change metadata caching locks to an operations structure.\n\nWe don\u0027t really want to cart around too many new fields on the\nocfs2_caching_info structure.  So let\u0027s wrap all our access of the\nparent object in a set of operations.  One pointer on caching_info, and\nmore flexibility to boot.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "47460d65a483529b3bc2bf6ccf461ad45f94df83",
      "tree": "0727cae9477749e5f2596e86253a210e79c96a83",
      "parents": [
        "8379e7c46cc48f51197dd663fc6676f47f2a1e71"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Feb 10 16:05:07 2009 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Sep 04 16:07:47 2009 -0700"
      },
      "message": "ocfs2: Make the ocfs2_caching_info structure self-contained.\n\nWe want to use the ocfs2_caching_info structure in places that are not\ninodes.  To do that, it can no longer rely on referencing the inode\ndirectly.\n\nThis patch moves the flags to ocfs2_caching_info-\u003eci_flags, stores\npointers to the parent\u0027s locks on the ocfs2_caching_info, and renames\nthe constants and flags to reflect its independant state.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    }
  ],
  "next": "8379e7c46cc48f51197dd663fc6676f47f2a1e71"
}
