)]}'
{
  "log": [
    {
      "commit": "78f94673d7faf01677f374f4ebbf324ff1a0aa6e",
      "tree": "1bd394469f12b5e148835365295d1df413c04a0c",
      "parents": [
        "547ba7c8efe43c2cabb38782e23572a6179dd1c1"
      ],
      "author": {
        "name": "Tristan Ye",
        "email": "tristan.ye@oracle.com",
        "time": "Tue May 11 17:54:42 2010 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue May 18 12:25:10 2010 -0700"
      },
      "message": "Ocfs2: Optimize ocfs2 truncate to use ocfs2_remove_btree_range() instead.\n\nTruncate is just a special case of punching holes(from new i_size to\nend), we therefore could take advantage of the existing\nocfs2_remove_btree_range() to reduce the comlexity and redundancy in\nalloc.c.  The goal here is to make truncate more generic and\nstraightforward.\n\nSeveral functions only used by ocfs2_commit_truncate() will smiply be\nremoved.\n\nocfs2_remove_btree_range() was originally used by the hole punching\ncode, which didn\u0027t take refcount trees into account (definitely a bug).\nWe therefore need to change that func a bit to handle refcount trees.\nIt must take the refcount lock, calculate and reserve blocks for\nrefcount tree changes, and decrease refcounts at the end.  We replace \nocfs2_lock_allocators() here by adding a new func\nocfs2_reserve_blocks_for_rec_trunc() which accepts some extra blocks to\nreserve.  This will not hurt any other code using\nocfs2_remove_btree_range() (such as dir truncate and hole punching).\n\nI merged the following steps into one patch since they may be\nlogically doing one thing, though I know it looks a little bit fat\nto review.\n\n1). Remove redundant code used by ocfs2_commit_truncate(), since we\u0027re\n    moving to ocfs2_remove_btree_range anyway.\n\n2). Add a new func ocfs2_reserve_blocks_for_rec_trunc() for purpose of\n    accepting some extra blocks to reserve.\n\n3). Change ocfs2_prepare_refcount_change_for_del() a bit to fit our\n    needs.  It\u0027s safe to do this since it\u0027s only being called by\n    truncate.\n\n4). Change ocfs2_remove_btree_range() a bit to take refcount case into\n    account.\n\n5). Finally, we change ocfs2_commit_truncate() to call\n    ocfs2_remove_btree_range() in a proper way.\n\nThe patch has been tested normally for sanity check, stress tests\nwith heavier workload will be expected.\n\nBased on this patch, fixing the punching holes bug will be fairly easy.\n\nSigned-off-by: Tristan Ye \u003ctristan.ye@oracle.com\u003e\nAcked-by: Mark Fasheh \u003cmfasheh@suse.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": "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": "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": "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": "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": "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": "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": "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": "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"
    }
  ]
}
