)]}'
{
  "log": [
    {
      "commit": "cc597bc3d31468596af6b8ad2b1d1b593e308957",
      "tree": "303754908b583ff1da423bd37b56b01bd4585106",
      "parents": [
        "ed803862954528e6fcf7bd0f2b2e5a772a7c3281",
        "c475146d8f3b97e79f9ef88521e28ad40ac07de6"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 26 10:41:00 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 26 10:41:00 2009 -0800"
      },
      "message": "Merge branch \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-quota-2.6\n\n* \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-quota-2.6:\n  ocfs2: Remove ocfs2_dquot_initialize() and ocfs2_dquot_drop()\n  quota: Improve locking\n"
    },
    {
      "commit": "2fe4371dff3f1a5a1f7d91f1b090076954f4d17e",
      "tree": "4f40f557953600e3e01bf8803045ea2c7f78ad42",
      "parents": [
        "f5c77969b33cc5cbb4534289bf23cb1794f9d37c"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Thu Jan 22 10:26:11 2009 +0300"
      },
      "committer": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Thu Jan 22 13:15:54 2009 +0300"
      },
      "message": "fs/Kconfig: move ocfs2 out\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\n"
    },
    {
      "commit": "c475146d8f3b97e79f9ef88521e28ad40ac07de6",
      "tree": "da13d60d9198aaef47cf2590e879f067645918db",
      "parents": [
        "cc33412fb1f11613e20f9dfc2919a77ecd63fbc4"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Jan 12 17:44:34 2009 +0100"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Jan 21 15:25:57 2009 +0100"
      },
      "message": "ocfs2: Remove ocfs2_dquot_initialize() and ocfs2_dquot_drop()\n\nSince -\u003eacquire_dquot and -\u003erelease_dquot callbacks aren\u0027t called under\ndqptr_sem anymore, we don\u0027t have to start a transaction and obtain locks\nso early. So we can just remove all this complicated stuff.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nAcked-by: Mark Fasheh \u003cmfasheh@suse.de\u003e\n"
    },
    {
      "commit": "73ac36ea14fd18ea3dc057e41b16ff31a3c0bd5a",
      "tree": "7f187cade83d9ca9bd180273c25e1216a1dff506",
      "parents": [
        "da2bdf9a6ff40b10d77620d0d76b02a738c103cb"
      ],
      "author": {
        "name": "Coly Li",
        "email": "coyli@suse.de",
        "time": "Wed Jan 07 18:09:16 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:15 2009 -0800"
      },
      "message": "fix similar typos to successfull\n\nWhen I review ocfs2 code, find there are 2 typos to \"successfull\".  After\ndoing grep \"successfull \" in kernel tree, 22 typos found totally -- great\nminds always think alike :)\n\nThis patch fixes all the similar typos. Thanks for Randy\u0027s ack and comments.\n\nSigned-off-by: Coly Li \u003ccoyli@suse.de\u003e\nAcked-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nAcked-by: Roland Dreier \u003crolandd@cisco.com\u003e\nCc: Jeremy Kerr \u003cjk@ozlabs.org\u003e\nCc: Jeff Garzik \u003cjeff@garzik.org\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nCc: Mark Fasheh \u003cmfasheh@suse.com\u003e\nCc: Vlad Yasevich \u003cvladislav.yasevich@hp.com\u003e\nCc: Sridhar Samudrala \u003csri@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c19a28e1193a6c854738d609ae9b2fe2f6e6bea4",
      "tree": "79a354f827a5d3656be3f55d18d31265750d9d06",
      "parents": [
        "f15659628b43b27c20447c731456c39cbec973e9"
      ],
      "author": {
        "name": "Fernando Carrijo",
        "email": "fcarrijo@yahoo.com.br",
        "time": "Wed Jan 07 18:09:08 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:14 2009 -0800"
      },
      "message": "remove lots of double-semicolons\n\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nAcked-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nAcked-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nAcked-by: Casey Schaufler \u003ccasey@schaufler-ca.com\u003e\nAcked-by: Takashi Iwai \u003ctiwai@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "025dfdafe77f20b3890981a394774baab7b9c827",
      "tree": "c4d514990d7a0673df5d32aa11fded95f9644ff0",
      "parents": [
        "0abb8b6a939b742f273edc68b64dba26c57331bc"
      ],
      "author": {
        "name": "Frederik Schwarzer",
        "email": "schwarzerf@gmail.com",
        "time": "Thu Oct 16 19:02:37 2008 +0200"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Tue Jan 06 11:28:06 2009 +0100"
      },
      "message": "trivial: fix then -\u003e than typos in comments and documentation\n\n- (better, more, bigger ...) then -\u003e (...) than\n\nSigned-off-by: Frederik Schwarzer \u003cschwarzerf@gmail.com\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "10cc04f5a01041ffff068b3f9b195bfdc5290c45",
      "tree": "5c53027ce5299075759b70e1447ce811ba1afdf0",
      "parents": [
        "520c85346666d4d9a6fcaaa8450542302dc28b91",
        "9047beabb8a396f0b18de1e4a9ab920cf92054af"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 05 18:32:43 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 05 18:32:43 2009 -0800"
      },
      "message": "Merge branch \u0027upstream-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mfasheh/ocfs2\n\n* \u0027upstream-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mfasheh/ocfs2: (138 commits)\n  ocfs2: Access the right buffer_head in ocfs2_merge_rec_left.\n  ocfs2: use min_t in ocfs2_quota_read()\n  ocfs2: remove unneeded lvb casts\n  ocfs2: Add xattr support checking in init_security\n  ocfs2: alloc xattr bucket in ocfs2_xattr_set_handle\n  ocfs2: calculate and reserve credits for xattr value in mknod\n  ocfs2/xattr: fix credits calculation during index create\n  ocfs2/xattr: Always updating ctime during xattr set.\n  ocfs2/xattr: Remove extend_trans call and add its credits from the beginning\n  ocfs2/dlm: Fix race during lockres mastery\n  ocfs2/dlm: Fix race in adding/removing lockres\u0027 to/from the tracking list\n  ocfs2/dlm: Hold off sending lockres drop ref message while lockres is migrating\n  ocfs2/dlm: Clean up errors in dlm_proxy_ast_handler()\n  ocfs2/dlm: Fix a race between migrate request and exit domain\n  ocfs2: One more hamming code optimization.\n  ocfs2: Another hamming code optimization.\n  ocfs2: Don\u0027t hand-code xor in ocfs2_hamming_encode().\n  ocfs2: Enable metadata checksums.\n  ocfs2: Validate superblock with checksum and ecc.\n  ocfs2: Checksum and ECC for directory blocks.\n  ...\n"
    },
    {
      "commit": "56ff5efad96182f4d3cb3dc6b07396762c658f16",
      "tree": "cb91f93aa2324573527165d56d230b606a3111ed",
      "parents": [
        "acfa4380efe77e290d3a96b11cd4c9f24f4fbb18"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Dec 09 09:34:39 2008 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jan 05 11:54:28 2009 -0500"
      },
      "message": "zero i_uid/i_gid on inode allocation\n\n... and don\u0027t bother in callers.  Don\u0027t bother with zeroing i_blocks,\nwhile we are at it - it\u0027s already been zeroed.\n\ni_mode is not worth the effort; it has no common default value.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "9047beabb8a396f0b18de1e4a9ab920cf92054af",
      "tree": "abb7ea8752cd3e2fdfeaaf1609aed155d919aa7d",
      "parents": [
        "dad7d975e4bd893c79fd122105b37b9a1776816a"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Mon Jan 05 14:45:24 2009 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:37 2009 -0800"
      },
      "message": "ocfs2: Access the right buffer_head in ocfs2_merge_rec_left.\n\nIn commit \"ocfs2: Use metadata-specific ocfs2_journal_access_*()\nfunctions\", the wrong buffer_head is accessed. So change it\nto the right buffer_head.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nAcked-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "dad7d975e4bd893c79fd122105b37b9a1776816a",
      "tree": "b9d7b1e89cd3a59754881b2b04bb43838081709b",
      "parents": [
        "a641dc2a5a1445eb4cb491080dfc41c42a9eb37d"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Wed Dec 24 16:33:08 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:37 2009 -0800"
      },
      "message": "ocfs2: use min_t in ocfs2_quota_read()\n\nThis is preferred to min().\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "a641dc2a5a1445eb4cb491080dfc41c42a9eb37d",
      "tree": "95e33d83f3399924521febd6e886b62d4715e23c",
      "parents": [
        "38d59ef61c11cafc50a66787bdbbe80d58bbd9c0"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Wed Dec 24 16:03:48 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:36 2009 -0800"
      },
      "message": "ocfs2: remove unneeded lvb casts\n\ndlmglue.c has lots of code which casts the return value of ocfs2_dlm_lvb().\nThis is pointless however, as ocfs2_dlm_lvb() returns void *.\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "38d59ef61c11cafc50a66787bdbbe80d58bbd9c0",
      "tree": "6b8c730648dfd71374ed727646e2f54c828a98e8",
      "parents": [
        "008aafaf0b4aa0476da483e3c6e3edbe951811ff"
      ],
      "author": {
        "name": "Tiger Yang",
        "email": "tiger.yang@oracle.com",
        "time": "Wed Dec 17 10:22:56 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:36 2009 -0800"
      },
      "message": "ocfs2: Add xattr support checking in init_security\n\nWe must check whether ocfs2 volume support xattr in init_security,\nif not support xattr and security is enable, would cause failure of mknod.\n\nSigned-off-by: Tiger Yang \u003ctiger.yang@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "008aafaf0b4aa0476da483e3c6e3edbe951811ff",
      "tree": "2c9ac5e471a66938ed26b46220ab72ef06073112",
      "parents": [
        "0e445b6fe93c723fe8093fd04ddfeb11ae2de082"
      ],
      "author": {
        "name": "Tiger Yang",
        "email": "tiger.yang@oracle.com",
        "time": "Tue Dec 09 16:43:08 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:36 2009 -0800"
      },
      "message": "ocfs2: alloc xattr bucket in ocfs2_xattr_set_handle\n\nIn extreme situation, may need xattr bucket for setting\nsecurity entry and acl entries during mknod. This only\nhappens when block size is too small.\n\nSigned-off-by: Tiger Yang \u003ctiger.yang@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "0e445b6fe93c723fe8093fd04ddfeb11ae2de082",
      "tree": "a7c2d8ccab64ef70477992b0121dd52966c66154",
      "parents": [
        "90cb546cada68bb8c2278afdb4b65c2ac11f2877"
      ],
      "author": {
        "name": "Tiger Yang",
        "email": "tiger.yang@oracle.com",
        "time": "Tue Dec 09 16:42:51 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:36 2009 -0800"
      },
      "message": "ocfs2: calculate and reserve credits for xattr value in mknod\n\nWe extend the credits for xattr\u0027s large value in set_value_outside\nbefore, this can give rise to a credits issue when we set one security\nentry and two acl entries duing mknod. As we remove extend_trans form\nset_value_outside, we must calculate and reserve the credits for\nxattr\u0027s large value in mknod.\n\nSigned-off-by: Tiger Yang \u003ctiger.yang@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "90cb546cada68bb8c2278afdb4b65c2ac11f2877",
      "tree": "68f70ca93bf16cd20fbb039fa17cd4d3828a7df7",
      "parents": [
        "4b3f6209bf9eec46fe5ebb168718fef5c443c157"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Fri Dec 05 06:20:56 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:36 2009 -0800"
      },
      "message": "ocfs2/xattr: fix credits calculation during index create\n\nWhen creating a xattr index block, the old calculation forget\nto add credits for the meta change of the alloc file. So add\nmore credits and more comments to explain it.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "4b3f6209bf9eec46fe5ebb168718fef5c443c157",
      "tree": "d8e7a430678736be6facd135b58a77cb7b07b3ab",
      "parents": [
        "71d548a6af36fe98c95fbd0522147f842bd5f054"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Fri Dec 05 06:20:55 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:36 2009 -0800"
      },
      "message": "ocfs2/xattr: Always updating ctime during xattr set.\n\nIn xattr set, we should always update ctime if the operation goes\nsucessfully. The old one mistakenly put it in ocfs2_xattr_set_entry\nwhich is only called when we set xattr in inode or xattr block. The\nside benefit is that it resolve the bug 1052 since in that scenario,\nocfs2_calc_xattr_set_need only calc out the xattr set credits while\nocfs2_xattr_set_entry update the inode also which isn\u0027t concerned with\nthe process of xattr set.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "71d548a6af36fe98c95fbd0522147f842bd5f054",
      "tree": "196202d8fcc0ce03baa4c3d181cfbf0090392497",
      "parents": [
        "7b791d68562e4ce5ab57cbacb10a1ad4ee33956e"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Fri Dec 05 06:20:54 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:36 2009 -0800"
      },
      "message": "ocfs2/xattr: Remove extend_trans call and add its credits from the beginning\n\nActually, when setting a new xattr value, we know it from the very\nbeginning, and it isn\u0027t like the extension of bucket in which case\nwe can\u0027t figure it out. So remove ocfs2_extend_trans in that function\nand calculate it before the transaction. It also relieve acl operation\nfrom the worry about the side effect of ocfs2_extend_trans.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "7b791d68562e4ce5ab57cbacb10a1ad4ee33956e",
      "tree": "7ecff8f244995c4d16dff21f2a61c9946ab67435",
      "parents": [
        "b0d4f817ba5de8adb875ace594554a96d7737710"
      ],
      "author": {
        "name": "Sunil Mushran",
        "email": "sunil.mushran@oracle.com",
        "time": "Tue Dec 16 15:49:23 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:35 2009 -0800"
      },
      "message": "ocfs2/dlm: Fix race during lockres mastery\n\ndlm_get_lock_resource() is supposed to return a lock resource with a proper\nmaster. If multiple concurrent threads attempt to lookup the lockres for the\nsame lockid while the lock mastery in underway, one or more threads are likely\nto return a lockres without a proper master.\n\nThis patch makes the threads wait in dlm_get_lock_resource() while the mastery\nis underway, ensuring all threads return the lockres with a proper master.\n\nThis issue is known to be limited to users using the flock() syscall. For all\nother fs operations, the ocfs2 dlmglue layer serializes the dlm op for each\nlockid.\n\nUsers encountering this bug will see flock() return EINVAL and dmesg have the\nfollowing error:\nERROR: Dlm error \"DLM_BADARGS\" while calling dlmlock on resource \u003cLOCKID\u003e: bad api args\n\nReported-by: Coly Li \u003ccoyli@suse.de\u003e\nSigned-off-by: Sunil Mushran \u003csunil.mushran@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "b0d4f817ba5de8adb875ace594554a96d7737710",
      "tree": "2e64d3240d6ad879c4ffa1c01ca1696abf3bb2fb",
      "parents": [
        "d4f7e650e55af6b235871126f747da88600e8040"
      ],
      "author": {
        "name": "Sunil Mushran",
        "email": "sunil.mushran@oracle.com",
        "time": "Tue Dec 16 15:49:22 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:35 2009 -0800"
      },
      "message": "ocfs2/dlm: Fix race in adding/removing lockres\u0027 to/from the tracking list\n\nThis patch adds a new lock, dlm-\u003etracking_lock, to protect adding/removing\nlockres\u0027 to/from the dlm-\u003etracking_list. We were previously using dlm-\u003espinlock\nfor the same, but that proved inadequate as we could be freeing a lockres from\na context that did not hold that lock. As the new lock only protects this list,\nwe can explicitly take it when removing the lockres from the tracking list.\n\nThis bug was exposed when testing multiple processes concurrently flock() the\nsame file.\n\nSigned-off-by: Sunil Mushran \u003csunil.mushran@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "d4f7e650e55af6b235871126f747da88600e8040",
      "tree": "77fb97d3195c0910b9741afbf23fee7ce6ef65b3",
      "parents": [
        "57dff2676eb68d805883a2204faaa5339ac44e03"
      ],
      "author": {
        "name": "Sunil Mushran",
        "email": "sunil.mushran@oracle.com",
        "time": "Tue Dec 16 15:49:21 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:35 2009 -0800"
      },
      "message": "ocfs2/dlm: Hold off sending lockres drop ref message while lockres is migrating\n\nDuring lockres purge, o2dlm sends a drop reference message to the lockres\nmaster. This patch delays the message if the lockres is being migrated.\n\nFixes oss bugzilla#1012\nhttp://oss.oracle.com/bugzilla/show_bug.cgi?id\u003d1012\n\nSigned-off-by: Sunil Mushran \u003csunil.mushran@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "57dff2676eb68d805883a2204faaa5339ac44e03",
      "tree": "549d04127ed394c8918e98b115befc4ebf73a6b1",
      "parents": [
        "2b83256407687613e906bee93d98a25339128a4d"
      ],
      "author": {
        "name": "Sunil Mushran",
        "email": "sunil.mushran@oracle.com",
        "time": "Tue Dec 16 15:49:20 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:35 2009 -0800"
      },
      "message": "ocfs2/dlm: Clean up errors in dlm_proxy_ast_handler()\n\nPatch cleans printed errors in dlm_proxy_ast_handler(). The errors now includes\nthe node number that sent the (b)ast. Also it reduces the number of endian swaps\nof the cookie.\n\nSigned-off-by: Sunil Mushran \u003csunil.mushran@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "2b83256407687613e906bee93d98a25339128a4d",
      "tree": "5886c51adcb20b3d735ccf38e1f7e70671aefb43",
      "parents": [
        "58896c4d0e5868360ea0693c607d5bf74f79da6b"
      ],
      "author": {
        "name": "Sunil Mushran",
        "email": "sunil.mushran@oracle.com",
        "time": "Tue Dec 16 15:49:19 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:35 2009 -0800"
      },
      "message": "ocfs2/dlm: Fix a race between migrate request and exit domain\n\nPatch address a racing migrate request message and an exit domain message.\nInstead of blocking exit domains for the duration of the migrate, we ignore\nfailure to deliver that message. This is because an exiting domain should\nnot have any active locks and thus has no role to play in the migration.\n\nSigned-off-by: Sunil Mushran \u003csunil.mushran@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "58896c4d0e5868360ea0693c607d5bf74f79da6b",
      "tree": "d598e01e07eb5a6a5c45ba45017b41f6d33eed54",
      "parents": [
        "7bb458a58588f397068e4166c615e9fcc7480c16"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Dec 16 13:54:40 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:35 2009 -0800"
      },
      "message": "ocfs2: One more hamming code optimization.\n\nThe previous optimization used a fast find-highest-bit-set operation to\ngive us a good starting point in calc_code_bit().  This version lets the\ncaller cache the previous code buffer bit offset.  Thus, the next call\nalways starts where the last one left off.\n\nThis reduces the calculation another 39%, for a total 80% reduction from\nthe original, naive implementation.  At least, on my machine.  This also\nbrings the parity calculation to within an order of magnitude of the\ncrc32 calculation.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "7bb458a58588f397068e4166c615e9fcc7480c16",
      "tree": "a5d330c12f983837097f775e2d7c6c4d85fb9acd",
      "parents": [
        "e798b3f8a920c82a8e556dd54df97f0d3d0f9144"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Mon Dec 15 18:24:33 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:35 2009 -0800"
      },
      "message": "ocfs2: Another hamming code optimization.\n\nIn the calc_code_bit() function, we must find all powers of two beneath\nthe code bit number, *after* it\u0027s shifted by those powers of two.  This\nrequires a loop to see where it ends up.\n\nWe can optimize it by starting at its most significant bit.  This shaves\n32% off the time, for a total of 67.6% shaved off of the original, naive\nimplementation.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "e798b3f8a920c82a8e556dd54df97f0d3d0f9144",
      "tree": "1f9c19ba29f65e44c10d77597a746224e0e72c72",
      "parents": [
        "9d28cfb73f3abccce001daf2d247b16bf20e2248"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Mon Dec 15 17:13:48 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:34 2009 -0800"
      },
      "message": "ocfs2: Don\u0027t hand-code xor in ocfs2_hamming_encode().\n\nWhen I wrote ocfs2_hamming_encode(), I was following documentation of\nthe algorithm and didn\u0027t have quite the (possibly still imperfect) grasp\nof it I do now.  As part of this, I literally hand-coded xor.  I would\ntest a bit, and then add that bit via xor to the parity word.\n\nI can, of course, just do a single xor of the parity word and the source\nword (the code buffer bit offset).  This cuts CPU usage by 53% on a\nmostly populated buffer (an inode containing utmp.h inline).\n\nJoel\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "9d28cfb73f3abccce001daf2d247b16bf20e2248",
      "tree": "d162f69c8dccdb8940418722c04909ff9fa84797",
      "parents": [
        "d030cc978e9e636dc39ce9a9e8282d48698a3b30"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Oct 16 17:53:29 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:34 2009 -0800"
      },
      "message": "ocfs2: Enable metadata checksums.\n\nAdd OCFS2_FEATURE_INCOMPAT_META_ECC to the list of supported features.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "d030cc978e9e636dc39ce9a9e8282d48698a3b30",
      "tree": "0d9053e2968eba3505c8333b96869b9d2a16cccc",
      "parents": [
        "c175a518b4a1d514483abf61813ce5d855917164"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Dec 11 15:04:14 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:34 2009 -0800"
      },
      "message": "ocfs2: Validate superblock with checksum and ecc.\n\nThe superblock is read via a raw call.  Validate it after we find it\nfrom its signature.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "c175a518b4a1d514483abf61813ce5d855917164",
      "tree": "e437a3d1377fab38c1d8ef6289fd9ea3590d09b2",
      "parents": [
        "87d35a74b15ec703910a63e0667692fb5e267be0"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed Dec 10 17:58:22 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:34 2009 -0800"
      },
      "message": "ocfs2: Checksum and ECC for directory blocks.\n\nUse the db_check field of ocfs2_dir_block_trailer to crc/ecc the\ndirblocks.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "87d35a74b15ec703910a63e0667692fb5e267be0",
      "tree": "39f18bcf38b855fa7ec806803567532f214129f0",
      "parents": [
        "84008972491ca91b240f106191519781dabb8016"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Wed Dec 10 17:36:25 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:34 2009 -0800"
      },
      "message": "ocfs2: Add directory block trailers.\n\nFuture ocfs2 features metaecc and indexed directories need to store a\nlittle bit of data in each dirblock.  For compatibility, we place this\nin a trailer at the end of the dirblock.  The trailer plays itself as an\nempty dirent, so that if the features are turned off, it can be reused\nwithout requiring a tunefs scan.\n\nThis code adds the trailer and validates it when the block is read in.\n\n[ Mark is the original author, but I reinserted this code before his\n  dir index work.  -- Joel ]\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "84008972491ca91b240f106191519781dabb8016",
      "tree": "3f69af46613a9aa74f9aa64f52aa67e55eef2116",
      "parents": [
        "4311901daabe1d0f22cfcf86c57ad450f14b4e9f"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Dec 09 16:11:49 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:34 2009 -0800"
      },
      "message": "ocfs2: Use proper journal_access function in xattr.c\n\nChange the rest of the naked ocfs2_journal_access() calls in\nfs/ocfs2/xattr.c to use the appropriate ocfs2_journal_access_*() call\nfor their metadata type.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "4311901daabe1d0f22cfcf86c57ad450f14b4e9f",
      "tree": "1c4bfbbc288ca085bf58bfad339956ab4cc9a946",
      "parents": [
        "512620f44df85df87348fc9a6fc54fcaa254b8d3"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Dec 09 16:24:43 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:33 2009 -0800"
      },
      "message": "ocfs2: Pass value buf to ocfs2_remove_value_outside().\n\nocfs2_remove_value_outside() needs to know the type of buffer it is\nlooking at.  Pass in an ocfs2_xattr_value_buf.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "512620f44df85df87348fc9a6fc54fcaa254b8d3",
      "tree": "18e720d79e7f0d08cb8e5469319daacc8a208088",
      "parents": [
        "0c748e95327d00e9eb19d0f34b32147ecbc02137"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Dec 09 15:58:35 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:33 2009 -0800"
      },
      "message": "ocfs2: Use ocfs2_xattr_value_buf in ocfs2_xattr_set_entry().\n\nocfs2_xattr_set_entry is the function that knows what type of block it\nis setting into.  This is what we wanted from ocfs2_xattr_value_buf.\nPlus, moving the value buf up into ocfs2_xattr_set_entry() allows us to\npass it into ocfs2_xattr_set_value_outside() and ocfs2_xattr_cleanup().\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "0c748e95327d00e9eb19d0f34b32147ecbc02137",
      "tree": "25a5a4e27bcceaf11c70dedfc3fe476c16c73346",
      "parents": [
        "b3e5d37905730dc5ddff717f55ed830caa80ea0e"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Dec 09 15:46:15 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:33 2009 -0800"
      },
      "message": "ocfs2: Pass value buf to ocfs2_xattr_update_entry().\n\nocfs2_xattr_update_entry() updates the entry portion of an xattr buffer.\nThis can be part of multiple metadata block types, so pass the buffer in\nvia an ocfs2_xattr_value_buf.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "b3e5d37905730dc5ddff717f55ed830caa80ea0e",
      "tree": "00431340f37700a04aa02007da1cf2bcfd0a734e",
      "parents": [
        "19b801f45fa5e4840b9be3dcf1e73b08f35b04d9"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Dec 09 15:01:04 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:32 2009 -0800"
      },
      "message": "ocfs2: Pass ocfs2_xattr_value_buf into ocfs2_xattr_value_truncate().\n\nThe callers of ocfs2_xattr_value_truncate() now pass in\nocfs2_xattr_value_bufs.  These callers are the ones that calculated the\nxv location, so they are the right starting point.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "19b801f45fa5e4840b9be3dcf1e73b08f35b04d9",
      "tree": "c91eb5ab422dd176847d30c5ba07cd9c939179f2",
      "parents": [
        "d72cc72d57ecaf9047da51269dabd6880c1399ac"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Dec 09 14:36:50 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:32 2009 -0800"
      },
      "message": "ocfs2: Pull ocfs2_xattr_value_buf up into ocfs2_xattr_value_truncate().\n\nPlace an ocfs2_xattr_value_buf in ocfs2_xattr_value_truncate() and pass\nit down to ocfs2_xattr_shrink_size().  We can also pass it into\nocfs2_xattr_extend_allocation(), replacing its ocfs2_xattr_value_buf.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "d72cc72d57ecaf9047da51269dabd6880c1399ac",
      "tree": "ce272e0f7933fcdda4e87d2fd484ffad69a68e52",
      "parents": [
        "2a50a743bdaab104155bd9e988d2ba3bb4177263"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Dec 09 14:30:41 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:32 2009 -0800"
      },
      "message": "ocfs2: Pull ocfs2_xattr_value_buf up from __ocfs2_remove_xattr_range().\n\nPlace an ocfs2_xattr_value_buf in __ocfs2_xattr_shrink_size() and pass\nit down to __ocfs2_remove_xattr_range().\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "2a50a743bdaab104155bd9e988d2ba3bb4177263",
      "tree": "a330bfffe09dfca4340075bd9c44f632a3284469",
      "parents": [
        "4d0e214ee83185fcaa2cb97cd026d32bdc5c994a"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Dec 09 14:24:33 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:32 2009 -0800"
      },
      "message": "ocfs2: Create ocfs2_xattr_value_buf.\n\nWhen an ocfs2 extended attribute is large enough to require its own\nallocation tree, we root it with an ocfs2_xattr_value_root.  However,\nthese roots can be a part of inodes, xattr blocks, or xattr buckets.\nThus, they need a different journal access function for each container.\n\nWe wrap the bh, its journal access function, and the value root (xv) in\na structure called ocfs2_xattr_valu_buf.  This is a package that can\nbe passed around.  In this first pass, we simply pass it to the\nextent tree code.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "4d0e214ee83185fcaa2cb97cd026d32bdc5c994a",
      "tree": "7e5c2a6a2f2a384a0ebc0804f126a8106ad0b43f",
      "parents": [
        "13723d00e374c2a6d6ccb5af6de965e89c3e1b01"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Dec 05 11:19:37 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:32 2009 -0800"
      },
      "message": "ocfs2: Add ecc and checksums to ocfs2 xattr buckets.\n\nThe xattr bucket can span multiple blocks on disk.  We have wrappers\nfor this structure in the code.  We use the new multi-block ecc calls to\ncalculate and validate the bucket.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "13723d00e374c2a6d6ccb5af6de965e89c3e1b01",
      "tree": "70dcd8f3d188bf2f62e4bf4b44a0662d8cd527ca",
      "parents": [
        "ffdd7a54631f07918b75e324d86713a08c11ec06"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Oct 17 19:25:01 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:32 2009 -0800"
      },
      "message": "ocfs2: Use metadata-specific ocfs2_journal_access_*() functions.\n\nThe per-metadata-type ocfs2_journal_access_*() functions hook up jbd2\ncommit triggers and allow us to compute metadata ecc right before the\nbuffers are written out.  This commit provides ecc for inodes, extent\nblocks, group descriptors, and quota blocks.  It is not safe to use\nextened attributes and metaecc at the same time yet.\n\nThe ocfs2_extent_tree and ocfs2_path abstractions in alloc.c both hide\nthe type of block at their root.  Before, it didn\u0027t matter, but now the\nroot block must use the appropriate ocfs2_journal_access_*() function.\nTo keep this abstract, the structures now have a pointer to the matching\njournal_access function and a wrapper call to call it.\n\nA few places use naked ocfs2_write_block() calls instead of adding the\nblocks to the journal.  We make sure to calculate their checksum and ecc\nbefore the write.\n\nSince we pass around the journal_access functions.  Let\u0027s typedef them\nin ocfs2.h.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "ffdd7a54631f07918b75e324d86713a08c11ec06",
      "tree": "a49a65968158fde60129d7d614a7f66e5ac44cdf",
      "parents": [
        "50655ae9e91d272d48997bada59efe166aa5e343"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Oct 17 22:32:01 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:31 2009 -0800"
      },
      "message": "ocfs2: Wrap up the common use cases of ocfs2_new_path().\n\nThe majority of ocfs2_new_path() calls are:\n\n\tocfs2_new_path(path_root_bh(otherpath),\n\t\t       path_root_el(otherpath));\n\nLet\u0027s call that ocfs2_new_path_from_path().  The rest do similar things\nfrom struct ocfs2_extent_tree.  Let\u0027s call those\nocfs2_new_path_from_et().  This will make the next change easier.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "50655ae9e91d272d48997bada59efe166aa5e343",
      "tree": "ca821943897781fe4852c6ac447ccb4760ec8c65",
      "parents": [
        "d6b32bbb3eae3fb787f1c33bf9f767ca1ddeb208"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Sep 11 15:53:07 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:31 2009 -0800"
      },
      "message": "ocfs2: Add journal_access functions with jbd2 triggers.\n\nWe create wrappers for ocfs2_journal_access() that are specific to the\ntype of metadata block.  This allows us to associate jbd2 commit\ntriggers with the block.  The triggers will compute metadata ecc in a\nfuture commit.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "d6b32bbb3eae3fb787f1c33bf9f767ca1ddeb208",
      "tree": "ce38de666096f571f4b1754e898729cf2d9eb435",
      "parents": [
        "684ef278377725d505aa23259ee673dab9b11851"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Oct 17 14:55:01 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:31 2009 -0800"
      },
      "message": "ocfs2: block read meta ecc.\n\nAdd block check calls to the read_block validate functions.  This is the\nalmost all of the read-side checking of metaecc.  xattr buckets are not checked\nyet.   Writes are also unchecked, and so a read-write mount will quickly fail.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "684ef278377725d505aa23259ee673dab9b11851",
      "tree": "7034049bc755b90eb555f515ba7661e77a846e6d",
      "parents": [
        "70ad1ba7b48364d758a112df0823edc5ca6632aa"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Dec 02 17:44:05 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:31 2009 -0800"
      },
      "message": "ocfs2: Add a validation hook for quota block reads.\n\nAdd a currently-returns-success hook for quota block reads.  We\u0027ll be\nadding checks to this.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "70ad1ba7b48364d758a112df0823edc5ca6632aa",
      "tree": "0ec30f4a812c1e66e3e3e7457eca1db8a451549a",
      "parents": [
        "ab552d54673f262d7f70014003d3928d29270f22"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Oct 16 17:54:25 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:31 2009 -0800"
      },
      "message": "ocfs2: Add the underlying blockcheck code.\n\nThis is the code that computes crc32 and ecc for ocfs2 metadata blocks.\nThere are high-level functions that check whether the filesystem has the\necc feature, mid-level functions that work on a single block or array of\nbuffer_heads, and the low-level ecc hamming code that can handle\nmultiple buffers like crc32_le().\n\nIt\u0027s not hooked up to the filesystem yet.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "ab552d54673f262d7f70014003d3928d29270f22",
      "tree": "86a966a56e0fc38ce0a1464b811b31ece1cf820c",
      "parents": [
        "e06c8227fd94ec181849ba206bf032be31c4295c"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Oct 16 17:50:30 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:31 2009 -0800"
      },
      "message": "ocfs2: Add the on-disk structures for metadata checksums.\n\nDefine struct ocfs2_block_check, an 8-byte structure containing a 32bit\ncrc32_le and a 16bit hamming code ecc.  This will be used for metadata\nchecksums.  Add the structure to free spaces in the various metadata\nstructures.\n\nAdd the OCFS2_FEATURE_INCOMPAT_META_ECC bit.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "754938c142ae0c28360426c43f965ddc5164b21e",
      "tree": "e2c764f7868c91ab8e39f56d29951480dbf468e7",
      "parents": [
        "91f2033fa997aa92607470ed1ef90685b9d77a8c"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Mon Dec 15 06:03:41 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:30 2009 -0800"
      },
      "message": "ocfs2/quota: Add QUOTA in mlog_attribute.\n\nA new mlog mask has to be added into mlog_attribute before it can\nbe really used in mlog. ML_QUOTA is only added in masklog.h, so\nadd it to the array to enable it.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "91f2033fa997aa92607470ed1ef90685b9d77a8c",
      "tree": "7082fbdd368eff8e82e09f26b24a9f19d17a8278",
      "parents": [
        "ed29c0ca14871021fc8aced74650648dcb2c6e81"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed Nov 26 15:25:41 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:30 2009 -0800"
      },
      "message": "ocfs2: Pass xs-\u003ebucket into ocfs2_add_new_xattr_bucket().\n\nPass the actual target bucket for insert through to\nocfs2_add_new_xattr_bucket().  Now growing a bucket has no buffer_head\nknowledge.\n\nocfs2_add_new_xattr_bucket() leavs xs-\u003ebucket in the proper state for\ninsert.  However, it doesn\u0027t update the rest of the search fields in xs,\nso we still have to relse() and re-find.  That\u0027s OK, because everything\nis cached.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "ed29c0ca14871021fc8aced74650648dcb2c6e81",
      "tree": "ffba575cfb791be897110800bf8f4266edebc306",
      "parents": [
        "012ee910876e251621705e8dea7c353fd4914e19"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed Nov 26 15:08:44 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:30 2009 -0800"
      },
      "message": "ocfs2: Move buckets up into ocfs2_add_new_xattr_bucket().\n\nLift the buckets from ocfs2_add_new_xattr_cluster() up into\nocfs2_add_new_xattr_bucket().  Now ocfs2_add_new_xattr_cluster()\ndoesn\u0027t deal with buffer_heads.  In fact, we no longer have to play\nget_bh() tricks at all.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "012ee910876e251621705e8dea7c353fd4914e19",
      "tree": "eba6b0ff6fdcd26ab3294eb9984fef2c16426140",
      "parents": [
        "41cb814866110b6e35dad7569ecf96163c3bb824"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed Nov 26 14:43:31 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:30 2009 -0800"
      },
      "message": "ocfs2: Move buckets up into ocfs2_add_new_xattr_cluster().\n\nLift the buckets from ocfs2_adjust_xattr_cross_cluster() up into\nocfs2_add_new_xattr_cluster().  Now ocfs2_adjust_xattr_cross_cluster()\ndoesn\u0027t deal with buffer_heads.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "41cb814866110b6e35dad7569ecf96163c3bb824",
      "tree": "dddaf0e1f5ecc558b6f8c71933b1932aaf02e4d3",
      "parents": [
        "92cf3adf48097b7561a3c83f800ed3b2b25b18d4"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed Nov 26 14:25:21 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:30 2009 -0800"
      },
      "message": "ocfs2: Pass buckets into ocfs2_mv_xattr_bucket_cross_cluster().\n\nNow that ocfs2_adjust_xattr_cross_cluster() has buckets, it can pass\nthem into ocfs2_mv_xattr_bucket_cross_cluster().  It no longer has to\ncare about buffer_heads.  The manipulation of first_bh and header_bh\nmoves up to ocfs2_adjust_xattr_cross_cluster().\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "92cf3adf48097b7561a3c83f800ed3b2b25b18d4",
      "tree": "841838592697a827a94596a4f84f2bb1a6cc9730",
      "parents": [
        "c58b6032f93358871361a92d7743dbc85d27084e"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed Nov 26 14:12:09 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:30 2009 -0800"
      },
      "message": "ocfs2: Start using buckets in ocfs2_adjust_xattr_cross_cluster().\n\nWe want to be passing around buckets instead of buffer_heads.  Let\u0027s get\nthem into ocfs2_adjust_xattr_cross_cluster.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "c58b6032f93358871361a92d7743dbc85d27084e",
      "tree": "0757a1b192ff048ecd4d4c37936db65d5d306fb8",
      "parents": [
        "54ecb6b6df54bf72befb359b21f3759b2952f9d9"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed Nov 26 13:36:24 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:29 2009 -0800"
      },
      "message": "ocfs2: Use ocfs2_mv_xattr_buckets() in ocfs2_mv_xattr_bucket_cross_cluster().\n\nNow that ocfs2_mv_xattr_buckets() can move a partial cluster\u0027s worth of\nbuckets, ocfs2_mv_xattr_bucket_cross_cluster() can use it.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "54ecb6b6df54bf72befb359b21f3759b2952f9d9",
      "tree": "2b11ad3bbc6f049be5829a72850b3b62d70dbd2c",
      "parents": [
        "874d65af1c8b8f6456a934701e6828d3017be029"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed Nov 26 13:18:31 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:29 2009 -0800"
      },
      "message": "ocfs2: ocfs2_mv_xattr_buckets() can handle a partial cluster now.\n\nIf you look at ocfs2_mv_xattr_bucket_cross_cluster(), you\u0027ll notice that\ntwo-thirds of the code is almost identical to ocfs2_mv_xattr_buckets().\nThe only difference is that ocfs2_mv_xattr_buckets() moves a whole\ncluster\u0027s worth, while ocfs2_mv_xattr_bucket_cross_cluster() moves half\nthe cluster.\n\nWe change ocfs2_mv_xattr_buckets() to allow moving partial clusters.\nThe original caller of ocfs2_mv_xattr_buckets() still moves the whole\ncluster\u0027s worth - it just passes a start_bucket of 0.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "874d65af1c8b8f6456a934701e6828d3017be029",
      "tree": "d4c7c08236cf8734ecb9da580e389adbac77e28c",
      "parents": [
        "b5c03e746959bb005b987e9d8511df46680c3daa"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed Nov 26 13:02:18 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:29 2009 -0800"
      },
      "message": "ocfs2: Rename ocfs2_cp_xattr_cluster() to ocfs2_mv_xattr_buckets().\n\nocfs2_cp_xattr_cluster() takes the last cluster of an xattr extent,\ncopies its buckets to the front of a new extent, and then shrinks the bucket\ncount of the original extent.  So it\u0027s really moving the data, not\ncopying it.\n\nWhile we\u0027re here, the function doesn\u0027t need a buffer_head for the old\nextent, just the block number.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "b5c03e746959bb005b987e9d8511df46680c3daa",
      "tree": "7ce25b024b37f82815195f3e82ca43609328e789",
      "parents": [
        "2b656c1d6fc5ba7791a360766780a212faed5705"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Nov 25 19:58:16 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:27 2009 -0800"
      },
      "message": "ocfs2: Use ocfs2_cp_xattr_bucket() in ocfs2_mv_xattr_bucket_cross_cluster().\n\nThe buffer copy loop of ocfs2_mv_xattr_bucket_cross_cluster() actually\nlooks a lot like ocfs2_cp_xattr_bucket().  Let\u0027s just use that instead.\nWe also use bucket operations to update the buckets at the start of each\nextent.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "2b656c1d6fc5ba7791a360766780a212faed5705",
      "tree": "ea1ec010e7c3af013f3fe2cbbbed180ad20b73b8",
      "parents": [
        "15d609293d1954465a4788b9b182214323c6a2a1"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Nov 25 19:00:15 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:27 2009 -0800"
      },
      "message": "ocfs2: Explain t_is_new in ocfs2_cp_xattr_cluster().\n\nI was unsure of the JOURNAL_ACCESS parameters in\nocfs2_cp_xattr_cluster().  They\u0027re based on the function argument\n\u0027t_is_new\u0027, but I couldn\u0027t quite figure out how t_is_new mapped to\nallocation.  ocfs2_cp_xattr_cluster() actually overwrites the target,\nregardless of t_is_new.\n\nWell, I just figured it out.  So I\u0027m adding a big fat comment for those\nwho come after me.  ocfs2_divide_xattr_cluster() has the same behavior.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "15d609293d1954465a4788b9b182214323c6a2a1",
      "tree": "3a044a10a8c09397703964c23bc7156baf12747d",
      "parents": [
        "92de109ade7999084fb0bfcc65d603252504e0d0"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Nov 25 18:36:42 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:27 2009 -0800"
      },
      "message": "ocfs2: Dirty the entire first bucket in ocfs2_cp_xattr_cluster().\n\nocfs2_cp_xattr_cluster() takes the last bucket of a full extent and\ncopies it over to a new extent.  It then updates the headers of both\nextents to reflect the new state.  It is passed the first bh of\nthe first bucket in order to update that first extent\u0027s bucket count.\nIt reads and dirties the first bh of the new extent for the same reason.\n\nHowever, future code wants to always dirty the entire bucket when it\nis changed.  So it is changed to read the entire bucket it is updating\nfor both extents.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "92de109ade7999084fb0bfcc65d603252504e0d0",
      "tree": "6a834f52a9e36118045d31017f7265ef5c0bb060",
      "parents": [
        "88c3b0622acf82c7c86fbc066e81e15edc7c1685"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Nov 25 17:06:40 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:26 2009 -0800"
      },
      "message": "ocfs2: Dirty the entire first bucket in ocfs2_extend_xattr_bucket()\n\nocfs2_extend_xattr_bucket() takes an extent of buckets and shifts some\nof them down to make room for a new xattr.  It is passed the first bh of\nthe first bucket, because that is where we store the number of buckets\nin the extent.\n\nHowever, future code wants to always dirty the entire bucket when it\nis changed.  So let\u0027s pass the entire bucket into this function, skip\nany block reads (we have them), and add the access/dirty logic.  We also\ncan skip passing in the target bucket bh - we only need its block\nnumber.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "88c3b0622acf82c7c86fbc066e81e15edc7c1685",
      "tree": "100cf2f28cd2601b64db7c6a917dfcbcc72b4019",
      "parents": [
        "548b0f22bb7497ba76f91627b99f9fed53a91704"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Thu Dec 11 08:54:11 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:26 2009 -0800"
      },
      "message": "ocfs2: Narrow the transaction for deleting xattrs from a bucket.\n\nWe move the transaction into the loop because in\nocfs2_remove_extent, we will double the credits in function\nocfs2_extend_rotate_transaction. So if we have a large loop\nnumber, we will soon waste much the journal space.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "548b0f22bb7497ba76f91627b99f9fed53a91704",
      "tree": "c5242ab4cb1780fa6aa55624e92adb7a4fb5e1ef",
      "parents": [
        "df32b3343aa11e0c7f54783594b24321d17d376f"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Mon Nov 24 19:32:13 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:26 2009 -0800"
      },
      "message": "ocfs2: Dirty the entire bucket in ocfs2_bucket_value_truncate()\n\nocfs2_bucket_value_truncate() currently takes the first bh of the\nbucket, and magically plays around with the value bh - even though\nthe bucket structure in the calling function already has it.\n\nIn addition, future code wants to always dirty the entire bucket when it\nis changed.  So let\u0027s pass the entire bucket into this function, skip\nany block reads (we have them), and add the access/dirty logic.\n\nocfs2_xattr_update_value_size() is no longer necessary, as it only did\none thing other than journal access/dirty.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "df32b3343aa11e0c7f54783594b24321d17d376f",
      "tree": "5d8f864cdbbb60af5f0eb62e7e9c4f0ef1bdbd08",
      "parents": [
        "e35ff98f7c37b7bc901b4b90a66a0287565e456c"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Tue Nov 25 07:21:36 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:26 2009 -0800"
      },
      "message": "ocfs2/quota: sparse fixes for quota\n\nFix 2 minor things in quota. They are both found by sparse check.\n1. an endian bug in ocfs2_local_quota_add_chunk.\n2. change olq_alloc_dquot to static.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "e35ff98f7c37b7bc901b4b90a66a0287565e456c",
      "tree": "0c8c7c2bcaa240d8757c0e6505604b2fe618e41c",
      "parents": [
        "a5b5ee320185adc091a3a31630d278806b19d8f0"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Wed Nov 26 16:20:19 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:26 2009 -0800"
      },
      "message": "ocfs2: fix indendation in ocfs2_dquot_drop_slow\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "9a2f3866c825c67c3a5806799cdc93fb7517f0c4",
      "tree": "2b3e9621ef8e9c7b75e8a05408b7754c7881564f",
      "parents": [
        "53a3604610e92a5344cf8003c19975583e71a598"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue Nov 25 15:31:30 2008 +0100"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:25 2009 -0800"
      },
      "message": "ocfs2: Fix build warnings (64-bit types vs long long)\n\nfs/ocfs2/quota_local.c: In function \u0027olq_set_dquot\u0027:\nfs/ocfs2/quota_local.c:844: warning: format \u0027%lld\u0027 expects type \u0027long long int\u0027, but argument 7 has type \u0027__le64\u0027\nfs/ocfs2/quota_local.c:844: warning: format \u0027%lld\u0027 expects type \u0027long long int\u0027, but argument 8 has type \u0027__le64\u0027\nfs/ocfs2/quota_local.c:844: warning: format \u0027%lld\u0027 expects type \u0027long long int\u0027, but argument 7 has type \u0027__le64\u0027\nfs/ocfs2/quota_local.c:844: warning: format \u0027%lld\u0027 expects type \u0027long long int\u0027, but argument 8 has type \u0027__le64\u0027\nfs/ocfs2/quota_local.c:844: warning: format \u0027%lld\u0027 expects type \u0027long long int\u0027, but argument 7 has type \u0027__le64\u0027\nfs/ocfs2/quota_local.c:844: warning: format \u0027%lld\u0027 expects type \u0027long long int\u0027, but argument 8 has type \u0027__le64\u0027\nfs/ocfs2/quota_global.c: In function \u0027__ocfs2_sync_dquot\u0027:\nfs/ocfs2/quota_global.c:457: warning: format \u0027%lld\u0027 expects type \u0027long long int\u0027, but argument 8 has type \u0027s64\u0027\nfs/ocfs2/quota_global.c:457: warning: format \u0027%lld\u0027 expects type \u0027long long int\u0027, but argument 10 has type \u0027s64\u0027\nfs/ocfs2/quota_global.c:457: warning: format \u0027%lld\u0027 expects type \u0027long long int\u0027, but argument 8 has type \u0027s64\u0027\nfs/ocfs2/quota_global.c:457: warning: format \u0027%lld\u0027 expects type \u0027long long int\u0027, but argument 10 has type \u0027s64\u0027\nfs/ocfs2/quota_global.c:457: warning: format \u0027%lld\u0027 expects type \u0027long long int\u0027, but argument 8 has type \u0027s64\u0027\nfs/ocfs2/quota_global.c:457: warning: format \u0027%lld\u0027 expects type \u0027long long int\u0027, but argument 10 has type \u0027s64\u0027\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "53a3604610e92a5344cf8003c19975583e71a598",
      "tree": "c0b0caef727d1ead4132a4c52fa34af1dbf46acd",
      "parents": [
        "af09e51b6810d3408db1c0e956b3b0687b0e3723"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue Nov 25 15:31:29 2008 +0100"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:25 2009 -0800"
      },
      "message": "ocfs2: Make ocfs2_get_quota_block() consistent with ocfs2_read_quota_block()\n\nMake function return error status and not buffer pointer so that it\u0027s\nconsistent with ocfs2_read_quota_block().\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "af09e51b6810d3408db1c0e956b3b0687b0e3723",
      "tree": "1a77fce2998b9cf3a2d26dd1158803045bdf846f",
      "parents": [
        "85eb8b73d66530bb7b931789ae7a5ec9744eed34"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue Nov 25 15:31:28 2008 +0100"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:25 2009 -0800"
      },
      "message": "ocfs2: Fix oops when extending quota files\n\nWe have to mark buffer as uptodate before calling ocfs2_journal_access() and\nocfs2_set_buffer_uptodate() does not do this for us.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "85eb8b73d66530bb7b931789ae7a5ec9744eed34",
      "tree": "4590be147364e0437f23a0d6bf72ccc900852eb9",
      "parents": [
        "57a09a7b3d9445a17c78d544f1e49d4d7d61705a"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "Joel.Becker@oracle.com",
        "time": "Tue Nov 25 15:31:27 2008 +0100"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:24 2009 -0800"
      },
      "message": "ocfs2: Fix ocfs2_read_quota_block() error handling.\n\nocfs2_bread() has become ocfs2_read_virt_blocks(), with a prototype to\nmatch ocfs2_read_blocks().  The quota code, converting from\nocfs2_bread(), wraps the call to ocfs2_read_virt_blocks() in\nocfs2_read_quota_block().  Unfortunately, the prototype of\nocfs2_read_quota_block() matches the old prototype of ocfs2_bread().\n\nThe problem is that ocfs2_bread() returned the buffer head, and callers\nassumed that a NULL pointer was indicative of error.  It wasn\u0027t.  This\nis why ocfs2_bread() took an int*err argument as well.\n\nThe new prototype of ocfs2_read_virt_blocks() avoids this error handling\nconfusion.  Let\u0027s change ocfs2_read_quota_block() to match.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "57a09a7b3d9445a17c78d544f1e49d4d7d61705a",
      "tree": "27c0221c4fe220a3cfeba71af2e6f35f68f69212",
      "parents": [
        "b86c86fa1feb50221dc16071ae5b8a4acf3bd32c"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue Nov 25 15:31:26 2008 +0100"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:24 2009 -0800"
      },
      "message": "ocfs2: Add missing initialization\n\nAdd missing variable initialization to ocfs2_dquot_drop_slow().\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "b86c86fa1feb50221dc16071ae5b8a4acf3bd32c",
      "tree": "b50f8f05bb9e16a81bba5d6dd8b838799c5a9df7",
      "parents": [
        "e97fcd95a4778a8caf1980c6c72fdf68185a0838"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Tue Nov 18 17:16:47 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:24 2009 -0800"
      },
      "message": "ocfs2: Use BH_JBDPrivateStart instead of BH_Unshadow\n\nThis is safer. We no longer have to worry about tracking changes to\njbd_state_bits.\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "19ece546a418997226bd91552fbc41abcb05cea6",
      "tree": "f10ba25a07d020551833f53720bbba475788f957",
      "parents": [
        "2205363dce7447b8e85f1ead14387664c1a98753"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Aug 21 20:13:17 2008 +0200"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:24 2009 -0800"
      },
      "message": "ocfs2: Enable quota accounting on mount, disable on umount\n\nEnable quota usage tracking on mount and disable it on umount. Also\nadd support for quota on and quota off quotactls and usrquota and\ngrpquota mount options. Add quota features among supported ones.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "2205363dce7447b8e85f1ead14387664c1a98753",
      "tree": "729b2716f2e31bda2e035a11cc39aa5472dff2c4",
      "parents": [
        "171bf93ce11f4c9929fdce6ce63df8da2f3c4475"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Oct 20 23:50:38 2008 +0200"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:24 2009 -0800"
      },
      "message": "ocfs2: Implement quota recovery\n\nImplement functions for recovery after a crash. Functions just\nread local quota file and sync info to global quota file.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "171bf93ce11f4c9929fdce6ce63df8da2f3c4475",
      "tree": "a6f29032a86bcc2b0e9971c85ec8fab22b3300ef",
      "parents": [
        "a90714c150e3ce677c57a9dac3ab1ec342c75a95"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 20 15:36:47 2008 +0200"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:24 2009 -0800"
      },
      "message": "ocfs2: Periodic quota syncing\n\nThis patch creates a work queue for periodic syncing of locally cached quota\ninformation to the global quota files. We constantly queue a delayed work\nitem, to get the periodic behavior.\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "a90714c150e3ce677c57a9dac3ab1ec342c75a95",
      "tree": "43e3e744d86122940c0db39ac1bfed0d434b3216",
      "parents": [
        "9e33d69f553aaf11377307e8d6f82deb3385e351"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Oct 09 19:38:40 2008 +0200"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:23 2009 -0800"
      },
      "message": "ocfs2: Add quota calls for allocation and freeing of inodes and space\n\nAdd quota calls for allocation and freeing of inodes and space, also update\nestimates on number of needed credits for a transaction. Move out inode\nallocation from ocfs2_mknod_locked() because vfs_dq_init() must be called\noutside of a transaction.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "9e33d69f553aaf11377307e8d6f82deb3385e351",
      "tree": "ded5f48f6cf82db976f30d5f0f4d44b941f60f44",
      "parents": [
        "bbbd0eb34bf801dee01e345785959a75258f6567"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Aug 25 19:56:50 2008 +0200"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:23 2009 -0800"
      },
      "message": "ocfs2: Implementation of local and global quota file handling\n\nFor each quota type each node has local quota file. In this file it stores\nchanges users have made to disk usage via this node. Once in a while this\ninformation is synced to global file (and thus with other nodes) so that\nlimits enforcement at least aproximately works.\n\nGlobal quota files contain all the information about usage and limits. It\u0027s\nmostly handled by the generic VFS code (which implements a trie of structures\ninside a quota file). We only have to provide functions to convert structures\nfrom on-disk format to in-memory one. We also have to provide wrappers for\nvarious quota functions starting transactions and acquiring necessary cluster\nlocks before the actual IO is really started.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "bbbd0eb34bf801dee01e345785959a75258f6567",
      "tree": "04120dd2b08f79d446dd4c4a841ab740e354efab",
      "parents": [
        "1a224ad11eeb190da4a123e156601aad1bb67f24"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Aug 21 18:22:30 2008 +0200"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:23 2009 -0800"
      },
      "message": "ocfs2: Mark system files as not subject to quota accounting\n\nMark system files as not subject to quota accounting. This prevents\npossible recursions into quota code and thus deadlocks.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "1a224ad11eeb190da4a123e156601aad1bb67f24",
      "tree": "093f4e8449c0fed95af2d73904f67c65a93241ff",
      "parents": [
        "90e86a63eadf1a3b2f19b68d82150dc63fe01443"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Aug 20 15:43:36 2008 +0200"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:23 2009 -0800"
      },
      "message": "ocfs2: Assign feature bits and system inodes to quota feature and quota files\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "90e86a63eadf1a3b2f19b68d82150dc63fe01443",
      "tree": "4168749ab4c9a0e849c9ad419ee66a2992053243",
      "parents": [
        "12c77527e4138bc3b17d17b0e0c909e4fc84924f"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Aug 27 22:30:28 2008 +0200"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:23 2009 -0800"
      },
      "message": "ocfs2: Support nested transactions\n\nOCFS2 can easily support nested transactions. We just have to\ntake care and not spoil statistics acquire semaphore unnecessarily.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "9f868f16e40e9ad8e39aebff94a4be0d96520734",
      "tree": "1099a634a2cc283ca523947a816bd746ee3768a9",
      "parents": [
        "97aff52ae13d3c11a074bbbfc80ad0b59cb8cdeb"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Wed Nov 19 16:48:42 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:36:55 2009 -0800"
      },
      "message": "ocfs2/xattr: Restore not_found in xis\n\nDuring an xattr set, when we move a xattr which was stored in inode to the\noutside bucket, we have to delete it and it will use the old value of\nxis-\u003enot_found. xis-\u003enot_found is removed by ocfs2_calc_xattr_set_need\nthough, so we must restore it.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "97aff52ae13d3c11a074bbbfc80ad0b59cb8cdeb",
      "tree": "2ac3992a8dfe6c7b94653f47548975503c3998f4",
      "parents": [
        "53ef99cad9878f02f27bb30bc304fc42af8bdd6e"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Wed Nov 19 16:48:41 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:36:55 2009 -0800"
      },
      "message": "ocfs2/xattr: Fix a bug in xattr allocation estimation\n\nWhen we extend one xattr\u0027s value to a large size, the old value size might\nbe smaller than the size of a value root. In those cases, we still need to\nguess the metadata allocation.\n\nReported-by: Tiger Yang \u003ctiger.yang@oracle.com\u003e\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "53ef99cad9878f02f27bb30bc304fc42af8bdd6e",
      "tree": "bb5dcb223666197cf737d24e4cc87506c4473a79",
      "parents": [
        "511308d90b53479b194cd067715f44dc99d39b08"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Tue Nov 18 16:53:43 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:36:55 2009 -0800"
      },
      "message": "ocfs2: Remove JBD compatibility layer\n\nJBD2 is fully backwards compatible with JBD and it\u0027s been tested enough with\nOcfs2 that we can clean this code up now.\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "511308d90b53479b194cd067715f44dc99d39b08",
      "tree": "7f8597ce83fe6543871fab3df4c4a21b11875ea4",
      "parents": [
        "a8549fb5abb2b372e46d5de0d23ff8b24f4a61af"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Nov 13 14:49:21 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:36:55 2009 -0800"
      },
      "message": "ocfs2: Convert ocfs2_read_dir_block() to ocfs2_read_virt_blocks()\n\nNow that we\u0027ve centralized the ocfs2_read_virt_blocks() code, let\u0027s use\nit in ocfs2_read_dir_block().\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "a8549fb5abb2b372e46d5de0d23ff8b24f4a61af",
      "tree": "b35c565519fec6827b4bd76938dcfd39e762caf4",
      "parents": [
        "970e4936d7d15f35d00fd15a14f5343ba78b2fc8"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Nov 13 14:49:20 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:36:54 2009 -0800"
      },
      "message": "ocfs2: Wrap virtual block reads in ocfs2_read_virt_blocks()\n\nThe ocfs2_read_dir_block() function really maps an inode\u0027s virtual\nblocks to physical ones before calling ocfs2_read_blocks().  Let\u0027s\nextract that to common code, because other places might want to do that.\n\nOther than the block number being virtual, ocfs2_read_virt_blocks()\ntakes the same arguments as ocfs2_read_blocks().  It converts those\nvirtual block numbers to physical before calling ocfs2_read_blocks()\ndirectly.  If the blocks asked for are discontiguous, this can mean\nmultiple calls to ocfs2_read_blocks(), but this is mostly hidden from\nthe caller.\n\nLike ocfs2_read_blocks(), the caller can pass in an existing\nbuffer_head.  This is usually done to pick up some readahead I/O.\nocfs2_read_virt_blocks() checks the buffer_head\u0027s block number\nagainst the extent map - it must match.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "970e4936d7d15f35d00fd15a14f5343ba78b2fc8",
      "tree": "92057c7deab6b9d8e5c3889d6a354b5989a3b68d",
      "parents": [
        "4ae1d69bedc8d174cb8a558694607e013157cde1"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Nov 13 14:49:19 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:36:53 2009 -0800"
      },
      "message": "ocfs2: Validate metadata only when it\u0027s read from disk.\n\nAdd an optional validation hook to ocfs2_read_blocks().  Now the\nvalidation function is only called when a block was actually read off of\ndisk.  It is not called when the buffer was in cache.\n\nWe add a buffer state bit BH_NeedsValidate to flag these buffers.  It\nmust always be one higher than the last JBD2 buffer state bit.\n\nThe dinode, dirblock, extent_block, and xattr_block validators are\nlifted to this scheme directly.  The group_descriptor validator needs to\nbe split into two pieces.  The first part only needs the gd buffer and\nis passed to ocfs2_read_block().  The second part requires the dinode as\nwell, and is called every time.  It\u0027s only 3 compares, so it\u0027s tiny.\nThis also allows us to clean up the non-fatal gd check used by resize.c.\nIt now has no magic argument.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "4ae1d69bedc8d174cb8a558694607e013157cde1",
      "tree": "ce5c599415435d24ddc5cae88207f5f26c0a18b4",
      "parents": [
        "a22305cc693254a2aa651e797875669112ef8635"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Nov 13 14:49:18 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:36:53 2009 -0800"
      },
      "message": "ocfs2: Wrap xattr block reads in a dedicated function\n\nWe weren\u0027t consistently checking xattr blocks after we read them.\nMost places checked the signature, but none checked xb_blkno or\nxb_fs_signature.  Create a toplevel ocfs2_read_xattr_block() that does\nthe read and the validation.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "a22305cc693254a2aa651e797875669112ef8635",
      "tree": "6beabdffc91bec297824f2049293c14bb05daadb",
      "parents": [
        "5e96581a377fc6bd76e9b112da9aeb8a7ae8bf22"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Nov 13 14:49:17 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:36:53 2009 -0800"
      },
      "message": "ocfs2: Wrap dirblock reads in a dedicated function.\n\nWe have ocfs2_bread() as a vestige of the original ext-based dir code.\nIt\u0027s only used by directories, though.  Turn it into\nocfs2_read_dir_block(), with a prototype matching the other metadata\nread functions.  It\u0027s set up to validate dirblocks when the time comes.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "5e96581a377fc6bd76e9b112da9aeb8a7ae8bf22",
      "tree": "ce2e1d8819b6020567828ca9021438c0824aa8d4",
      "parents": [
        "4203530613280281868b3ca36c817530bca3825c"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Nov 13 14:49:16 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:36:53 2009 -0800"
      },
      "message": "ocfs2: Wrap extent block reads in a dedicated function.\n\nWe weren\u0027t consistently checking extent blocks after we read them.\nMost places checked the signature, but none checked h_blkno or\nh_fs_signature.  Create a toplevel ocfs2_read_extent_block() that does\nthe read and the validation.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "4203530613280281868b3ca36c817530bca3825c",
      "tree": "57acc14e07bd97491a3781eb61e8c83c3c6e0151",
      "parents": [
        "68f64d471be38631d7196b938d9809802dd467fa"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Nov 13 14:49:15 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:36:53 2009 -0800"
      },
      "message": "ocfs2: Morph the haphazard OCFS2_IS_VALID_GROUP_DESC() checks.\n\nRandom places in the code would check a group descriptor bh to see if it\nwas valid. The previous commit unified descriptor block reads,\nvalidating all block reads in the same place.  Thus, these checks are no\nlonger necessary.  Rather than eliminate them, however, we change them\nto BUG_ON() checks.  This ensures the assumptions remain true.  All of\nthe code paths to these checks have been audited to ensure they come\nfrom a validated descriptor read.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "68f64d471be38631d7196b938d9809802dd467fa",
      "tree": "b94f14b3a8b093dc52f2b034e7666b14c536f0d6",
      "parents": [
        "57e3e7971136003c96766346049aa73b82cab079"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Nov 13 14:49:14 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:36:53 2009 -0800"
      },
      "message": "ocfs2: Wrap group descriptor reads in a dedicated function.\n\nWe have a clean call for validating group descriptors, but every place\nthat wants the always does a read_block()+validate() call pair.  Create\na toplevel ocfs2_read_group_descriptor() that does the right\nthing.  This allows us to leverage the single call point later for\nfancier handling.  We also add validation of gd-\u003ebg_generation against\nthe superblock and gd-\u003ebg_blkno against the block we thought we read.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "57e3e7971136003c96766346049aa73b82cab079",
      "tree": "4ba192d7507c77bc1bebd20ba6d82fbbe3da5428",
      "parents": [
        "10995aa2451afa20b721cc7de856cae1a13dba57"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Nov 13 14:49:13 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:36:53 2009 -0800"
      },
      "message": "ocfs2: Consolidate validation of group descriptors.\n\nCurrently the validation of group descriptors is directly duplicated so\nthat one version can error the filesystem and the other (resize) can\njust report the problem.  Consolidate to one function that takes a\nboolean.  Wrap that function with the old call for the old users.\n\nThis is in preparation for lifting the read+validate step into a\nsingle function.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "10995aa2451afa20b721cc7de856cae1a13dba57",
      "tree": "63129e7d752fb018dc76aa42de136baa4a8a4232",
      "parents": [
        "b657c95c11088d77fc1bfc9c84d940f778bf9d12"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Nov 13 14:49:12 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:36:52 2009 -0800"
      },
      "message": "ocfs2: Morph the haphazard OCFS2_IS_VALID_DINODE() checks.\n\nRandom places in the code would check a dinode bh to see if it was\nvalid.  Not only did they do different levels of validation, they\nhandled errors in different ways.\n\nThe previous commit unified inode block reads, validating all block\nreads in the same place.  Thus, these haphazard checks are no longer\nnecessary.  Rather than eliminate them, however, we change them to\nBUG_ON() checks.  This ensures the assumptions remain true.  All of the\ncode paths to these checks have been audited to ensure they come from a\nvalidated inode read.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "b657c95c11088d77fc1bfc9c84d940f778bf9d12",
      "tree": "7e52e73aabbdbc55f644ad26735edc25a652ac32",
      "parents": [
        "a68979b857283daf4acc405e476dcc8812a3ff2b"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Nov 13 14:49:11 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:36:52 2009 -0800"
      },
      "message": "ocfs2: Wrap inode block reads in a dedicated function.\n\nThe ocfs2 code currently reads inodes off disk with a simple\nocfs2_read_block() call.  Each place that does this has a different set\nof sanity checks it performs.  Some check only the signature.  A couple\nvalidate the block number (the block read vs di-\u003ei_blkno).  A couple\nothers check for VALID_FL.  Only one place validates i_fs_generation.  A\ncouple check nothing.  Even when an error is found, they don\u0027t all do\nthe same thing.\n\nWe wrap inode reading into ocfs2_read_inode_block().  This will validate\nall the above fields, going readonly if they are invalid (they never\nshould be).  ocfs2_read_inode_block_full() is provided for the places\nthat want to pass read_block flags.  Every caller is passing a struct\ninode with a valid ip_blkno, so we don\u0027t need a separate blkno argument\neither.\n\nWe will remove the validation checks from the rest of the code in a\nlater commit, as they are no longer necessary.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "a68979b857283daf4acc405e476dcc8812a3ff2b",
      "tree": "6bbf9d235e1ae38f4263f92d4075df6913befc8a",
      "parents": [
        "89c38bd0ade3c567707ed8fce088b253b0369c50"
      ],
      "author": {
        "name": "Tiger Yang",
        "email": "tiger.yang@oracle.com",
        "time": "Fri Nov 14 11:17:52 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:36:52 2009 -0800"
      },
      "message": "ocfs2: add mount option and Kconfig option for acl\n\nThis patch adds the Kconfig option \"CONFIG_OCFS2_FS_POSIX_ACL\"\nand mount options \"acl\" to enable acls in Ocfs2.\n\nSigned-off-by: Tiger Yang \u003ctiger.yang@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "89c38bd0ade3c567707ed8fce088b253b0369c50",
      "tree": "ffc5bf6a8871efa8e7793c552d16ac9fb92f1334",
      "parents": [
        "060bc66dd5017460076d9e808e2198cd532c943d"
      ],
      "author": {
        "name": "Tiger Yang",
        "email": "tiger.yang@oracle.com",
        "time": "Fri Nov 14 11:17:41 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:34:20 2009 -0800"
      },
      "message": "ocfs2: add ocfs2_init_acl in mknod\n\nWe need to get the parent directories acls and let the new child inherit it.\nTo this, we add additional calculations for data/metadata allocation.\n\nSigned-off-by: Tiger Yang \u003ctiger.yang@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "060bc66dd5017460076d9e808e2198cd532c943d",
      "tree": "11b4919c11c6529b783ae553a27a722e22b522b6",
      "parents": [
        "23fc2702bea686569281708ad519b41a11d0a2f4"
      ],
      "author": {
        "name": "Tiger Yang",
        "email": "tiger.yang@oracle.com",
        "time": "Fri Nov 14 11:17:29 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:34:20 2009 -0800"
      },
      "message": "ocfs2: add ocfs2_acl_chmod\n\nThis function is used to update acl xattrs during file mode changes.\n\nSigned-off-by: Tiger Yang \u003ctiger.yang@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "23fc2702bea686569281708ad519b41a11d0a2f4",
      "tree": "a567f38647047836332d1cfc17d7ad0be05c55ef",
      "parents": [
        "929fb014e041c6572c5e8c3686f1e32742b5b953"
      ],
      "author": {
        "name": "Tiger Yang",
        "email": "tiger.yang@oracle.com",
        "time": "Fri Nov 14 11:17:18 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:34:20 2009 -0800"
      },
      "message": "ocfs2: add ocfs2_check_acl\n\nThis function is used to enhance permission checking with POSIX ACLs.\n\nSigned-off-by: Tiger Yang \u003ctiger.yang@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "929fb014e041c6572c5e8c3686f1e32742b5b953",
      "tree": "149328875787dab63ec873cfa06364f4a23ac06d",
      "parents": [
        "4e3e9d027f63488e676bf7700ec515a192e54f69"
      ],
      "author": {
        "name": "Tiger Yang",
        "email": "tiger.yang@oracle.com",
        "time": "Fri Nov 14 11:17:04 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:34:20 2009 -0800"
      },
      "message": "ocfs2: add POSIX ACL API\n\nThis patch adds POSIX ACL(access control lists) APIs in ocfs2. We convert\nstruct posix_acl to many ocfs2_acl_entry and regard them as an extended\nattribute entry.\n\nSigned-off-by: Tiger Yang \u003ctiger.yang@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "4e3e9d027f63488e676bf7700ec515a192e54f69",
      "tree": "5726c86a7460dcb8acbc9effe3236050105495da",
      "parents": [
        "534eadddc1de8754a227202c0e747af4973f82ce"
      ],
      "author": {
        "name": "Tiger Yang",
        "email": "tiger.yang@oracle.com",
        "time": "Fri Nov 14 11:16:53 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:34:20 2009 -0800"
      },
      "message": "ocfs2: add ocfs2_xattr_get_nolock\n\nThis function does the work of ocfs2_xattr_get under an open lock.\n\nSigned-off-by: Tiger Yang \u003ctiger.yang@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "534eadddc1de8754a227202c0e747af4973f82ce",
      "tree": "e044976da3644f020ed1da420211cc433dbc0a92",
      "parents": [
        "923f7f3102b80403152e05aee3d55ecfce240440"
      ],
      "author": {
        "name": "Tiger Yang",
        "email": "tiger.yang@oracle.com",
        "time": "Fri Nov 14 11:16:41 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:34:20 2009 -0800"
      },
      "message": "ocfs2: add ocfs2_init_security in during file create\n\nSecurity attributes must be set when creating a new inode.\n\nWe do this in three steps.\n\n- First, get security xattr\u0027s name and value by security_operation\n\n- Calculate and reserve the meta data and clusters needed by this security\n  xattr before starting transaction\n\n- Finally, we set it before add_entry\n\nSigned-off-by: Tiger Yang \u003ctiger.yang@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "923f7f3102b80403152e05aee3d55ecfce240440",
      "tree": "54184688eb9dcc4ff4521348a31fd8313470d33a",
      "parents": [
        "6c3faba4421e230d77a181c260972229c542dec9"
      ],
      "author": {
        "name": "Tiger Yang",
        "email": "tiger.yang@oracle.com",
        "time": "Fri Nov 14 11:16:27 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:34:20 2009 -0800"
      },
      "message": "ocfs2: add security xattr API\n\nThis patch add security xattr set/get/list APIs to\nsupport security attributes in Ocfs2.\n\nSigned-off-by: Tiger Yang \u003ctiger.yang@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "6c3faba4421e230d77a181c260972229c542dec9",
      "tree": "a36c271b5cd82a696cac6b3c774d62fddb997801",
      "parents": [
        "f5d362022a947e84b0a3dd656d09c6b2322e234f"
      ],
      "author": {
        "name": "Tiger Yang",
        "email": "tiger.yang@oracle.com",
        "time": "Fri Nov 14 11:16:03 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:34:19 2009 -0800"
      },
      "message": "ocfs2: add ocfs2_xattr_set_handle\n\nThis function is used to set xattr\u0027s in a started transaction. It is only\ncalled during inode creation inode for initial security/acl xattrs of the\nnew inode. These xattrs could be put into ibody or extent block, so xattr\nbucket would not be use in this case.\n\nSigned-off-by: Tiger Yang \u003ctiger.yang@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "f5d362022a947e84b0a3dd656d09c6b2322e234f",
      "tree": "eb9772da46c5e2566618414eba11845ed13482dc",
      "parents": [
        "fecc01126d7a244b7e9b563c80663ffdca35343b"
      ],
      "author": {
        "name": "Tiger Yang",
        "email": "tiger.yang@oracle.com",
        "time": "Fri Nov 14 11:15:44 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:34:19 2009 -0800"
      },
      "message": "ocfs2: move new inode allocation out of the transaction\n\nMove out inode allocation from ocfs2_mknod_locked() because\nvfs_dq_init() must be called outside of a transaction.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Tiger Yang \u003ctiger.yang@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    }
  ],
  "next": "fecc01126d7a244b7e9b563c80663ffdca35343b"
}
