)]}'
{
  "log": [
    {
      "commit": "41841b0bcea8af7f3bff8b2a23d542b94d9c1bb1",
      "tree": "89eddf2dffadbbd13939f94eb8cd904a26279390",
      "parents": [
        "316ce2ba8e74a7bb9153b9f93adc883cb1ceb9fd",
        "1a934c3e57594588c373aea858e4593cdfcba4f4"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue May 18 16:40:42 2010 -0700"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue May 18 16:40:42 2010 -0700"
      },
      "message": "Merge branch \u0027discontig-bg\u0027 of git://oss.oracle.com/git/tma/linux-2.6 into ocfs2-merge-window\n"
    },
    {
      "commit": "78f94673d7faf01677f374f4ebbf324ff1a0aa6e",
      "tree": "1bd394469f12b5e148835365295d1df413c04a0c",
      "parents": [
        "547ba7c8efe43c2cabb38782e23572a6179dd1c1"
      ],
      "author": {
        "name": "Tristan Ye",
        "email": "tristan.ye@oracle.com",
        "time": "Tue May 11 17:54:42 2010 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue May 18 12:25:10 2010 -0700"
      },
      "message": "Ocfs2: Optimize ocfs2 truncate to use ocfs2_remove_btree_range() instead.\n\nTruncate is just a special case of punching holes(from new i_size to\nend), we therefore could take advantage of the existing\nocfs2_remove_btree_range() to reduce the comlexity and redundancy in\nalloc.c.  The goal here is to make truncate more generic and\nstraightforward.\n\nSeveral functions only used by ocfs2_commit_truncate() will smiply be\nremoved.\n\nocfs2_remove_btree_range() was originally used by the hole punching\ncode, which didn\u0027t take refcount trees into account (definitely a bug).\nWe therefore need to change that func a bit to handle refcount trees.\nIt must take the refcount lock, calculate and reserve blocks for\nrefcount tree changes, and decrease refcounts at the end.  We replace \nocfs2_lock_allocators() here by adding a new func\nocfs2_reserve_blocks_for_rec_trunc() which accepts some extra blocks to\nreserve.  This will not hurt any other code using\nocfs2_remove_btree_range() (such as dir truncate and hole punching).\n\nI merged the following steps into one patch since they may be\nlogically doing one thing, though I know it looks a little bit fat\nto review.\n\n1). Remove redundant code used by ocfs2_commit_truncate(), since we\u0027re\n    moving to ocfs2_remove_btree_range anyway.\n\n2). Add a new func ocfs2_reserve_blocks_for_rec_trunc() for purpose of\n    accepting some extra blocks to reserve.\n\n3). Change ocfs2_prepare_refcount_change_for_del() a bit to fit our\n    needs.  It\u0027s safe to do this since it\u0027s only being called by\n    truncate.\n\n4). Change ocfs2_remove_btree_range() a bit to take refcount case into\n    account.\n\n5). Finally, we change ocfs2_commit_truncate() to call\n    ocfs2_remove_btree_range() in a proper way.\n\nThe patch has been tested normally for sanity check, stress tests\nwith heavier workload will be expected.\n\nBased on this patch, fixing the punching holes bug will be fairly easy.\n\nSigned-off-by: Tristan Ye \u003ctristan.ye@oracle.com\u003e\nAcked-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "83f92318fa33cc084e14e64dc903e605f75884c1",
      "tree": "c7466c64019fb050c69cab27b4388e3a86d58b1a",
      "parents": [
        "b07f8f24dfe54da0f074b78949044842e8df881f"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Apr 05 18:17:16 2010 -0700"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed May 05 18:18:07 2010 -0700"
      },
      "message": "ocfs2: Add dir_resv_level mount option\n\nThe default behavior for directory reservations stays the same, but we add a\nmount option so people can tweak the size of directory reservations\naccording to their workloads.\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "e3b4a97dbe9741a3227c3ed857a0632532fcd386",
      "tree": "31da8dd09ad6ef8959b287e36e98ead30472a284",
      "parents": [
        "4fe370afaae49c57619bb0bedb75de7e7c168308"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Dec 07 13:16:07 2009 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed May 05 18:17:30 2010 -0700"
      },
      "message": "ocfs2: use allocation reservations for directory data\n\nUse the reservations system for unindexed dir tree allocations. We don\u0027t\nbother with the indexed tree as reads from it are mostly random anyway.\nDirectory reservations are marked seperately, to allow the reservations code\na chance to optimize their window sizes. This patch allocates only 8 bits\nfor directory windows as they generally are not expected to grow as quickly\nas file data. Future improvements to dir window sizing can trivially be\nmade.\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "ec20cec7a351584ca6c70ead012e73d61f9a8e04",
      "tree": "39af308ae07ab168313bb50ced1bb1ae7ef7e6a3",
      "parents": [
        "b4414eea0e7b9c134262c801a87e338bf675962c"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Mar 19 14:13:52 2010 -0700"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed May 05 18:17:29 2010 -0700"
      },
      "message": "ocfs2: Make ocfs2_journal_dirty() void.\n\njbd[2]_journal_dirty_metadata() only returns 0.  It\u0027s been returning 0\nsince before the kernel moved to git.  There is no point in checking\nthis error.\n\nocfs2_journal_dirty() has been faithfully returning the status since the\nbeginning.  All over ocfs2, we have blocks of code checking this can\u0027t\nfail status.  In the past few years, we\u0027ve tried to avoid adding these\nchecks, because they are pointless.  But anyone who looks at our code\nassumes they are needed.\n\nFinally, ocfs2_journal_dirty() is made a void function.  All error\nchecking is removed from other files.  We\u0027ll BUG_ON() the status of\njbd2_journal_dirty_metadata() just in case they change it someday.  They\nwon\u0027t.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "74380c479ad83addeff8a172ab95f59557b5b0c3",
      "tree": "49b94f3ff48cd2ca6b53977a5e3070380ccecd6b",
      "parents": [
        "af2bf0d86019e0b0306965321096f8380b7ca830"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Mon Mar 22 14:20:18 2010 +0800"
      },
      "committer": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Mon Mar 22 14:20:18 2010 +0800"
      },
      "message": "ocfs2: Free block to the right block group.\n\nIn case the block we are going to free is allocated from\na discontiguous block group, we have to use suballoc_loc\nto be the right group.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "2b6cb576aa80611f1f6a3c88708d1e68a8d97985",
      "tree": "a984f09104970133379e4d370b9f01e7f85c6f9b",
      "parents": [
        "ba2066351b630f0205ebf725f5c81a2a07a77cd7"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Mar 26 10:09:15 2010 +0800"
      },
      "committer": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Fri Mar 26 10:09:15 2010 +0800"
      },
      "message": "ocfs2: Set suballoc_loc on allocated metadata.\n\nGet the suballoc_loc from ocfs2_claim_new_inode() or\nocfs2_claim_metadata().  Store it on the appropriate field of the block\nwe just allocated.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "1ed9b777f77929ae961d6f9cdf828a07200ba71c",
      "tree": "a0bb6c9e9be1f5d3d46d6cdac0a4397303e22795",
      "parents": [
        "13e434cf0cacd2f03a7f4cd077e3e995ef5ef710"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu May 06 13:59:06 2010 +0800"
      },
      "committer": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Thu May 06 13:59:06 2010 +0800"
      },
      "message": "ocfs2: ocfs2_claim_*() don\u0027t need an ocfs2_super argument.\n\nThey all take an ocfs2_alloc_context, which has the allocation inode.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "e213e26ab3988c516c06eba4dcd030ac052f6dc9",
      "tree": "6e26fbdbb842b387697d73daf6e70cf718269a77",
      "parents": [
        "c812a51d11bbe983f4c24e32b59b265705ddd3c2",
        "efd8f0e6f6c1faa041f228d7113bd3a9db802d49"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 05 13:20:53 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 05 13:20:53 2010 -0800"
      },
      "message": "Merge branch \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6\n\n* \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6: (33 commits)\n  quota: stop using QUOTA_OK / NO_QUOTA\n  dquot: cleanup dquot initialize routine\n  dquot: move dquot initialization responsibility into the filesystem\n  dquot: cleanup dquot drop routine\n  dquot: move dquot drop responsibility into the filesystem\n  dquot: cleanup dquot transfer routine\n  dquot: move dquot transfer responsibility into the filesystem\n  dquot: cleanup inode allocation / freeing routines\n  dquot: cleanup space allocation / freeing routines\n  ext3: add writepage sanity checks\n  ext3: Truncate allocated blocks if direct IO write fails to update i_size\n  quota: Properly invalidate caches even for filesystems with blocksize \u003c pagesize\n  quota: generalize quota transfer interface\n  quota: sb_quota state flags cleanup\n  jbd: Delay discarding buffers in journal_unmap_buffer\n  ext3: quota_write cross block boundary behaviour\n  quota: drop permission checks from xfs_fs_set_xstate/xfs_fs_set_xquota\n  quota: split out compat_sys_quotactl support from quota.c\n  quota: split out netlink notification support from quota.c\n  quota: remove invalid optimization from quota_sync_all\n  ...\n\nFixed trivial conflicts in fs/namei.c and fs/ufs/inode.c\n"
    },
    {
      "commit": "5dd4056db84387975140ff2568eaa0406f07985e",
      "tree": "03c26d7f6e3367b167bfeeb1a01654c6619573f4",
      "parents": [
        "49792c806d0bfd53afc789dcdf50dc9bed2c5b83"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Mar 03 09:05:00 2010 -0500"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri Mar 05 00:20:28 2010 +0100"
      },
      "message": "dquot: cleanup space allocation / freeing routines\n\nGet rid of the alloc_space, free_space, reserve_space, claim_space and\nrelease_rsv dquot operations - they are always called from the filesystem\nand if a filesystem really needs their own (which none currently does)\nit can just call into it\u0027s own routine directly.\n\nMove shared logic into the common __dquot_alloc_space,\ndquot_claim_space_nodirty and __dquot_free_space low-level methods,\nand rationalize the wrappers around it to move as much as possible\ncode into the common block for CONFIG_QUOTA vs not.  Also rename\nall these helpers to be named dquot_* instead of vfs_dq_*.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "b89c54282db0c8634a2d2dc200f196d571750ce5",
      "tree": "fbb34a01b3f0b2f4af6aae9ede9f3f21ef2a378d",
      "parents": [
        "a5f28ae4df291d81d9d23066f88c55ca45e388d3"
      ],
      "author": {
        "name": "Tiger Yang",
        "email": "tiger.yang@oracle.com",
        "time": "Mon Jan 25 14:11:06 2010 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Feb 26 15:41:07 2010 -0800"
      },
      "message": "ocfs2: add extent block stealing for ocfs2 v5\n\nThis patch add extent block (metadata) stealing mechanism for\nextent allocation. This mechanism is same as the inode stealing.\nif no room in slot specific extent_alloc, we will try to\nallocate extent block from the next slot.\n\nSigned-off-by: Tiger Yang \u003ctiger.yang@oracle.com\u003e\nAcked-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "5e404e9ed1b05cafb044bd46792e50197df805ed",
      "tree": "e3146e03f8a0fc12307db0cbea900728a36ffaac",
      "parents": [
        "a1cf076ba93f9fdf3eb4195f9f43d1e7cb7550f2"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Feb 13 03:54:22 2009 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Sep 04 16:08:13 2009 -0700"
      },
      "message": "ocfs2: Pass ocfs2_caching_info into ocfs_init_*_extent_tree().\n\nWith this commit, extent tree operations are divorced from inodes and\nrely on ocfs2_caching_info.  Phew!\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "cc79d8c19e9d39446525a1026f1a21761f5d3cd2",
      "tree": "3c9788c2e5ef0c51734dad8186ecd83bf4dd6584",
      "parents": [
        "92ba470c44c1404ff18ca0f4ecce1e5b116bb933"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Feb 13 03:24:43 2009 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Sep 04 16:08:09 2009 -0700"
      },
      "message": "ocfs2: ocfs2_insert_extent() no longer needs struct inode.\n\nOne more function down, no inode in the entire insert-extent chain.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "facdb77f54f09a33baf6b649496f5dd1d7922a7e",
      "tree": "676de8877773ae38b8379bc3d50073c0710e2d8c",
      "parents": [
        "3d03a305ded8057155bd3c801e64ffef9f534827"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Feb 12 18:08:48 2009 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Sep 04 16:07:53 2009 -0700"
      },
      "message": "ocfs2: ocfs2_find_path() only needs the caching info\n\nocfs2_find_path and ocfs2_find_leaf() walk our btrees, reading extent\nblocks.  They need struct ocfs2_caching_info for that, but not struct\ninode.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "3d03a305ded8057155bd3c801e64ffef9f534827",
      "tree": "4f220711f42c1abbd80a9fe8c2b6ee47e846a587",
      "parents": [
        "d9a0a1f83bf083b55b3c1f16efddecc31abace61"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Feb 12 17:49:26 2009 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Sep 04 16:07:52 2009 -0700"
      },
      "message": "ocfs2: Pass ocfs2_caching_info to ocfs2_read_extent_block().\n\nextent blocks belong to btrees on more than just inodes, so we want to\npass the ocfs2_caching_info structure directly to\nocfs2_read_extent_block().  A number of places in alloc.c can now drop\nstruct inode from their argument list.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "0cf2f7632b1789b811ab20b611c4156e6de2b055",
      "tree": "34f7cf3584e4fa2bc187d4b75ce052cb98739b0e",
      "parents": [
        "292dd27ec76b96cebcef576f330ab121f59ccf05"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Feb 12 16:41:25 2009 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Sep 04 16:07:50 2009 -0700"
      },
      "message": "ocfs2: Pass struct ocfs2_caching_info to the journal functions.\n\nThe next step in divorcing metadata I/O management from struct inode is\nto pass struct ocfs2_caching_info to the journal functions.  Thus the\njournal locks a metadata cache with the cache io_lock function.  It also\ncan compare ci_last_trans and ci_created_trans directly.\n\nThis is a large patch because of all the places we change\nocfs2_journal_access..(handle, inode, ...) to\nocfs2_journal_access..(handle, INODE_CACHE(inode), ...).\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "8cb471e8f82506937fe5e2e9fb0bf90f6b1f1170",
      "tree": "e275a8f5db101a9990ba44931cfd116123112b11",
      "parents": [
        "6e5a3d7538ad4e46a976862f593faf65750e37cc"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Feb 10 20:00:41 2009 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Sep 04 16:07:48 2009 -0700"
      },
      "message": "ocfs2: Take the inode out of the metadata read/write paths.\n\nWe are really passing the inode into the ocfs2_read/write_blocks()\nfunctions to get at the metadata cache.  This commit passes the cache\ndirectly into the metadata block functions, divorcing them from the\ninode.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "edd45c08499a3e9d4c25431cd2b6a9ce5f692c92",
      "tree": "13016ad69aa059604c1d71809d66a92f60124fd4",
      "parents": [
        "80d73f15d12f087f3fe074f8a4d6e5c5624f2b47"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue Jun 02 14:24:03 2009 +0200"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed Jun 03 19:14:30 2009 -0700"
      },
      "message": "ocfs2: Correct ordering of ip_alloc_sem and localloc locks for directories\n\nWe use ordering ip_alloc_sem -\u003e local alloc locks in ocfs2_write_begin().\nSo change lock ordering in ocfs2_extend_dir() and ocfs2_expand_inline_dir()\nto also use this lock ordering.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nAcked-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "0fba813748f16f4eaf24d492c505226c4026d58f",
      "tree": "844ff2c81adc12bab68e88a403fbdf3d48d92320",
      "parents": [
        "035a571120ddbe4f92b91bbe46f3eff05b6e43eb"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Thu Mar 19 05:08:43 2009 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Apr 21 16:23:39 2009 -0700"
      },
      "message": "ocfs2: Fix 2 warning during ocfs2 make.\n\nfs/ocfs2/dir.c: In function ‘ocfs2_extend_dir’:\nfs/ocfs2/dir.c:2700: warning: ‘ret’ may be used uninitialized in this function\n\nfs/ocfs2/suballoc.c: In function ‘ocfs2_get_suballoc_slot_bit’:\nfs/ocfs2/suballoc.c:2216: warning: comparison is always true due to limited range of data type\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "035a571120ddbe4f92b91bbe46f3eff05b6e43eb",
      "tree": "4531b51dab77f7c715b61b74d69e78093b38e16c",
      "parents": [
        "612392307cb09e49051225092cbbd7049bd8db93"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Tue Apr 07 07:40:57 2009 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Tue Apr 07 09:40:17 2009 -0700"
      },
      "message": "ocfs2: Reserve 1 more cluster in expanding_inline_dir for indexed dir.\n\nIn ocfs2_expand_inline_dir, we calculate whether we need 1 extra\ncluster if we can\u0027t store the dx inline the root and save it in\ndx_alloc. So add it when we call ocfs2_reserve_clusters.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "1d46dc08d33138c29c63d717807c08ab704fc773",
      "tree": "8e4d2e1b5c49cb379c0f800e00e1cd01d33d4d0c",
      "parents": [
        "b80b549c3520b31d3bbc4b36e37e0a5102da0b94"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Thu Feb 19 13:17:05 2009 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Fri Apr 03 11:39:17 2009 -0700"
      },
      "message": "ocfs2: fix leaf start calculation in ocfs2_dx_dir_rebalance()\n\nocfs2_dx_dir_rebalance() is passed the block offset of a dx leaf which needs\nrebalancing. Since we rebalance an entire cluster at a time however, this\nfunction needs to calculate the beginning of that cluster, in blocks. The\ncalculation was wrong, which would result in a read of non-leaf blocks. Fix\nthe calculation by adding ocfs2_block_to_cluster_start() which is a more\nstraight-forward way of determining this.\n\nReported-by: Tristan Ye \u003ctristan.ye@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "e3a93c2db6410822aa24295c3874b44ba21730a8",
      "tree": "8de41a37abc6497745d07506a0fb5174da61d7c1",
      "parents": [
        "198a1ca3b735986542c538e38b9499ffcaed7005"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Tue Feb 17 15:29:35 2009 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Fri Apr 03 11:39:16 2009 -0700"
      },
      "message": "ocfs2: Add total entry count to dx_root_block\n\nThis little bit of extra accounting speeds up ocfs2_empty_dir()\ndramatically by allowing us to short-circuit the full directory scan.\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "e7c17e43090afe558c40bfb66637744c27bd2aeb",
      "tree": "4c164c4ec59eaa7599c91f865a261517454ba45f",
      "parents": [
        "4ed8a6bb083bfcc21f1ed66a474b03c0386e4b34"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Thu Jan 29 18:17:46 2009 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Fri Apr 03 11:39:16 2009 -0700"
      },
      "message": "ocfs2: Introduce dir free space list\n\nThe only operation which doesn\u0027t get faster with directory indexing is\ninsert, which still has to walk the entire unindexed directory portion to\nfind a free block. This patch provides an improvement in directory insert\nperformance by maintaining a singly linked list of directory leaf blocks\nwhich have space for additional dirents.\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\nAcked-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "4ed8a6bb083bfcc21f1ed66a474b03c0386e4b34",
      "tree": "89cc2629bed3949e980edcae3d807e71718a9028",
      "parents": [
        "9b7895efac906d66d19856194e1ba61f37e231a4"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Nov 24 17:02:08 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Fri Apr 03 11:39:16 2009 -0700"
      },
      "message": "ocfs2: Store dir index records inline\n\nAllow us to store a small number of directory index records in the\nocfs2_dx_root_block. This saves us a disk read on small to medium sized\ndirectories (less than about 250 entries). The inline root is automatically\nturned into a root block with extents if the directory size increases beyond\nit\u0027s capacity.\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\nAcked-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "9b7895efac906d66d19856194e1ba61f37e231a4",
      "tree": "1ee6d2630cf3617251638170dcaceef41ddda8ec",
      "parents": [
        "4a12ca3a00a244e1fd1e673d151ea38b71e11d55"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Wed Nov 12 16:27:44 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Fri Apr 03 11:39:15 2009 -0700"
      },
      "message": "ocfs2: Add a name indexed b-tree to directory inodes\n\nThis patch makes use of Ocfs2\u0027s flexible btree code to add an additional\ntree to directory inodes. The new tree stores an array of small,\nfixed-length records in each leaf block. Each record stores a hash value,\nand pointer to a block in the traditional (unindexed) directory tree where a\ndirent with the given name hash resides. Lookup exclusively uses this tree\nto find dirents, thus providing us with constant time name lookups.\n\nSome of the hashing code was copied from ext3. Unfortunately, it has lots of\nunfixed checkpatch errors. I left that as-is so that tracking changes would\nbe easier.\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\nAcked-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "4a12ca3a00a244e1fd1e673d151ea38b71e11d55",
      "tree": "84e30310a7d93ead9910f761e19d3fe73c5861b3",
      "parents": [
        "59b526a30722f29e5dba6210a6e0fc34e3149b94"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Wed Nov 12 15:43:34 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Fri Apr 03 11:39:15 2009 -0700"
      },
      "message": "ocfs2: Introduce dir lookup helper struct\n\nMany directory manipulation calls pass around a tuple of dirent, and it\u0027s\ncontaining buffer_head. Dir indexing has a bit more state, but instead of\nadding yet more arguments to functions, we introduce \u0027struct\nocfs2_dir_lookup_result\u0027. In this patch, it simply holds the same tuple, but\nfuture patches will add more state.\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\nAcked-by: Joel Becker \u003cjoel.becker@oracle.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": "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": "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": "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": "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": "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": "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": "d4a8c93c8248534bdedb07f83c9aebd6f7d1d579",
      "tree": "f978a7b36d515c29657f271ca5b70281c911a82f",
      "parents": [
        "5e0b3dec0107540244ba343f983ef4f972db20de"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Oct 09 17:20:34 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Tue Oct 14 11:58:22 2008 -0700"
      },
      "message": "ocfs2: Make cached block reads the common case.\n\nocfs2_read_blocks() currently requires the CACHED flag for cached I/O.\nHowever, that\u0027s the common case.  Let\u0027s flip it around and provide an\nIGNORE_CACHE flag for the special users.  This has the added benefit of\ncleaning up the code some (ignore_cache takes on its special meaning\nearlier in the loop).\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "5e0b3dec0107540244ba343f983ef4f972db20de",
      "tree": "b279c196c84abc01b61fcd70ec7aaa7f6e74e78b",
      "parents": [
        "07446dc72cffcc6e2672d0e54061dcd1858725ba"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Oct 09 17:20:33 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Tue Oct 14 11:58:11 2008 -0700"
      },
      "message": "ocfs2: Kill the last naked wait_on_buffer() for cached reads.\n\nocfs2\u0027s cached buffer I/O goes through ocfs2_read_block(s)().  dir.c had\na naked wait_on_buffer() to wait for some readahead, but it should\nuse ocfs2_read_block() instead.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "07446dc72cffcc6e2672d0e54061dcd1858725ba",
      "tree": "43ac4e257d6300b2bf767a953a8e2138e6894c18",
      "parents": [
        "0fcaa56a2a020dd6f90c202b7084e6f4cbedb6c2"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Oct 09 17:20:32 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Tue Oct 14 11:58:03 2008 -0700"
      },
      "message": "ocfs2: Move ocfs2_bread() into dir.c\n\ndir.c is the only place using ocfs2_bread(), so let\u0027s make it static to\nthat file.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "0fcaa56a2a020dd6f90c202b7084e6f4cbedb6c2",
      "tree": "057204016523ce0274d4a23ec02944075f084e8c",
      "parents": [
        "31d33073ca38603dea705dae45e094a64ca062d6"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Oct 09 17:20:31 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Tue Oct 14 11:51:57 2008 -0700"
      },
      "message": "ocfs2: Simplify ocfs2_read_block()\n\nMore than 30 callers of ocfs2_read_block() pass exactly OCFS2_BH_CACHED.\nOnly six pass a different flag set.  Rather than have every caller care,\nlet\u0027s make ocfs2_read_block() take no flags and always do a cached read.\nThe remaining six places can call ocfs2_read_blocks() directly.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "31d33073ca38603dea705dae45e094a64ca062d6",
      "tree": "cf02beb489456ebc9e07bace80e96ad1150f2cbf",
      "parents": [
        "da1e90985a0e767e44397c9db0937e236033fa58"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Oct 09 17:20:30 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Tue Oct 14 11:43:29 2008 -0700"
      },
      "message": "ocfs2: Require an inode for ocfs2_read_block(s)().\n\nNow that synchronous readers are using ocfs2_read_blocks_sync(), all\ncallers of ocfs2_read_blocks() are passing an inode.  Use it\nunconditionally.  Since it\u0027s there, we don\u0027t need to pass the\nocfs2_super either.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "a81cb88b64a479b78c6dd5666678d50171865db8",
      "tree": "9fe0f67e30d7c70d43785827e57736ac01558c24",
      "parents": [
        "fd8351f83d413b41da956109cf429c15881886e2"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Tue Oct 07 14:25:16 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 13 17:02:44 2008 -0700"
      },
      "message": "ocfs2: Don\u0027t check for NULL before brelse()\n\nThis is pointless as brelse() already does the check.\n\nSigned-off-by: Mark Fasheh\n"
    },
    {
      "commit": "8d6220d6a74a33552cf877bcea25503d7f6a59e6",
      "tree": "2c3f662c55ab4a0a22989c06edf0d027387bfbed",
      "parents": [
        "1625f8ac151743e452ec062c2989669c508ffa48"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Aug 22 12:46:09 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 13 16:57:05 2008 -0700"
      },
      "message": "ocfs2: Change ocfs2_get_*_extent_tree() to ocfs2_init_*_extent_tree()\n\nThe original get/put_extent_tree() functions held a reference on\net_root_bh.  However, every single caller already has a safe reference,\nmaking the get/put cycle irrelevant.\n\nWe change ocfs2_get_*_extent_tree() to ocfs2_init_*_extent_tree().  It\nno longer gets a reference on et_root_bh.  ocfs2_put_extent_tree() is\nremoved.  Callers now have a simpler init+use pattern.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "f99b9b7ccf6a691f653cec45f36bfdd1e94769c7",
      "tree": "1c6ff6ea1fa1bb86b70f1fd78dd725b559c729e4",
      "parents": [
        "1e61ee79e2a96f62c007486677319814ce621c3c"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed Aug 20 19:36:33 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 13 16:57:05 2008 -0700"
      },
      "message": "ocfs2: Make ocfs2_extent_tree the first-class representation of a tree.\n\nWe now have three different kinds of extent trees in ocfs2: inode data\n(dinode), extended attributes (xattr_tree), and extended attribute\nvalues (xattr_value).  There is a nice abstraction for them,\nocfs2_extent_tree, but it is hidden in alloc.c.  All the calling\nfunctions have to pick amongst a varied API and pass in type bits and\noften extraneous pointers.\n\nA better way is to make ocfs2_extent_tree a first-class object.\nEveryone converts their object to an ocfs2_extent_tree() via the\nocfs2_get_*_extent_tree() calls, then uses the ocfs2_extent_tree for all\ntree calls to alloc.c.\n\nThis simplifies a lot of callers, making for readability.  It also\nprovides an easy way to add additional extent tree types, as they only\nneed to be defined in alloc.c with a ocfs2_get_\u003cnew\u003e_extent_tree()\nfunction.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "f56654c435c06f2b2bd5751889b1a08a3add7d6c",
      "tree": "b186d68aedc5dda7afe435f5a68c03937ae382ff",
      "parents": [
        "ac11c827192272eabb68b8f4cf844066461d9690"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Mon Aug 18 17:38:48 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 13 16:57:01 2008 -0700"
      },
      "message": "ocfs2: Add extent tree operation for xattr value btrees\n\nAdd some thin wrappers around ocfs2_insert_extent() for each of the 3\ndifferent btree types, ocfs2_inode_insert_extent(),\nocfs2_xattr_value_insert_extent() and ocfs2_xattr_tree_insert_extent(). The\nlast is for the xattr index btree, which will be used in a followup patch.\n\nAll the old callers in file.c etc will call ocfs2_dinode_insert_extent(),\nwhile the other two handle the xattr issue. And the init of extent tree are\nhandled by these functions.\n\nWhen storing xattr value which is too large, we will allocate some clusters\nfor it and here ocfs2_extent_list and ocfs2_extent_rec will also be used. In\norder to re-use the b-tree operation code, a new parameter named \"private\"\nis added into ocfs2_extent_tree and it is used to indicate the root of\nocfs2_exent_list. The reason is that we can\u0027t deduce the root from the\nbuffer_head now. It may be in an inode, an ocfs2_xattr_block or even worse,\nin any place in an ocfs2_xattr_bucket.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "0eb8d47e69a2211a36643b180f1843ef45f6017d",
      "tree": "745a063238cbcf6af84644bd51d4bfcd592e06a1",
      "parents": [
        "e7d4cb6bc19658646357eeff134645cd9bc3479f"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Mon Aug 18 17:38:45 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 13 13:57:59 2008 -0700"
      },
      "message": "ocfs2: Make high level btree extend code generic\n\nFactor out the non-inode specifics of ocfs2_do_extend_allocation() into a more generic\nfunction, ocfs2_do_cluster_allocation(). ocfs2_do_extend_allocation calls\nocfs2_do_cluster_allocation() now, but the latter can be used for other\nbtree types as well.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "e7d4cb6bc19658646357eeff134645cd9bc3479f",
      "tree": "4e24321e5c28fb90dffa1f396972fddb3c458e58",
      "parents": [
        "811f933df1e55615fd0bb4818f31e3868a8e6e23"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Mon Aug 18 17:38:44 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 13 13:57:58 2008 -0700"
      },
      "message": "ocfs2: Abstract ocfs2_extent_tree in b-tree operations.\n\nIn the old extent tree operation, we take the hypothesis that we\nare using the ocfs2_extent_list in ocfs2_dinode as the tree root.\nAs xattr will also use ocfs2_extent_list to store large value\nfor a xattr entry, we refactor the tree operation so that xattr\ncan use it directly.\n\nThe refactoring includes 4 steps:\n1. Abstract set/get of last_eb_blk and update_clusters since they may\n   be stored in different location for dinode and xattr.\n2. Add a new structure named ocfs2_extent_tree to indicate the\n   extent tree the operation will work on.\n3. Remove all the use of fe_bh and di, use root_bh and root_el in\n   extent tree instead. So now all the fe_bh is replaced with\n   et-\u003eroot_bh, el with root_el accordingly.\n4. Make ocfs2_lock_allocators generic. Now it is limited to be only used\n   in file extend allocation. But the whole function is useful when we want\n   to store large EAs.\n\nNote: This patch doesn\u0027t touch ocfs2_commit_truncate() since it is not used\nfor anything other than truncate inode data btrees.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "811f933df1e55615fd0bb4818f31e3868a8e6e23",
      "tree": "53335e59bdff02d7ddb3a2ec15d36239fe50003d",
      "parents": [
        "231b87d10920e024efaf0f9e86e1bab7bced1620"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Mon Aug 18 17:38:43 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 13 13:57:58 2008 -0700"
      },
      "message": "ocfs2: Use ocfs2_extent_list instead of ocfs2_dinode.\n\nocfs2_extend_meta_needed(), ocfs2_calc_extend_credits() and\nocfs2_reserve_new_metadata() are all useful for extent tree operations. But\nthey are all limited to an inode btree because they use a struct\nocfs2_dinode parameter. Change their parameter to struct ocfs2_extent_list\n(the part of an ocfs2_dinode they actually use) so that the xattr btree code\ncan use these functions.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "231b87d10920e024efaf0f9e86e1bab7bced1620",
      "tree": "00283dfb9e4a7054576be8a073635dc51bdc4e22",
      "parents": [
        "9a8ff578fb430a8816dfbc73c77e5e09c6d9c343"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Mon Aug 18 17:38:42 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 13 13:57:58 2008 -0700"
      },
      "message": "ocfs2: Modify ocfs2_num_free_extents for future xattr usage.\n\nocfs2_num_free_extents() is used to find the number of free extent records\nin an inode btree. Hence, it takes an \"ocfs2_dinode\" parameter. We want to\nuse this for extended attribute trees in the future, so genericize the\ninterface the take a buffer head. A future patch will allow that buffer_head\nto contain any structure rooting an ocfs2 btree.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "9780eb6cfaf7d2d5ccc061eaf94e7aec6a17791e",
      "tree": "103ce3e47f06adcf3825902d406d06e6a76fd065",
      "parents": [
        "83cab5338fa8c74f979223698c8d4cc88f2ab68e"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Tue Aug 05 11:32:46 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Fri Aug 22 11:09:02 2008 -0700"
      },
      "message": "ocfs2: correctly set i_blocks after inline dir gets expanded\n\nWe were setting i_blocks based on allocation before the extent insert, which\nis wrong as the value is a calculation based on ip_clusters which gets\nupdated as a result of the insert. This patch moves the line in question\nto just after the call to ocfs2_insert_extent().\n\nWithout this fix, inline directories were temporarily having an i_blocks\nvalue of zero immediately after expansion to extents.\n\nReported-and-tested-by: Tristan Ye \u003ctristan.ye@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "83cab5338fa8c74f979223698c8d4cc88f2ab68e",
      "tree": "3acf8331abe32db8204ba0aba7a708cb1c5a5912",
      "parents": [
        "a1af7d15a18d1e375b0a6fee93789a0bbfe088b4"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Thu Aug 21 14:14:27 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Fri Aug 22 11:09:02 2008 -0700"
      },
      "message": "ocfs2: Jump to correct label in ocfs2_expand_inline_dir()\n\nWhen we fail to insert extent in ocfs2_expand_inline_dir(), we should go to\nout_commit, not out.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "0dd3256e04c452396c9d22943e4a18e02f4dbdf4",
      "tree": "2e4cdc053041d9313ed0dfbac111d28261c238c8",
      "parents": [
        "1044e401af9a309637828aa3cc8f3b6409fcbf4e"
      ],
      "author": {
        "name": "Marcin Slusarz",
        "email": "marcin.slusarz@gmail.com",
        "time": "Wed Feb 13 00:06:18 2008 +0100"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Mon Mar 03 15:50:21 2008 -0800"
      },
      "message": "[PATCH] ocfs2: le*_add_cpu conversion\n\nreplace all:\nlittle_endian_variable \u003d cpu_to_leX(leX_to_cpu(little_endian_variable) +\n\t\t\t\t\texpression_in_cpu_byteorder);\nwith:\n\tleX_add_cpu(\u0026little_endian_variable, expression_in_cpu_byteorder);\ngenerated with semantic patch\n\nSigned-off-by: Marcin Slusarz \u003cmarcin.slusarz@gmail.com\u003e\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "c78bad11fbf1272ea021f56458025dc98486d6f4",
      "tree": "7ac1cc64d3429c3b3c52e707212d5a0711a9a9d1",
      "parents": [
        "ee0fc097ef47a4a6ff6b4800f2391030131b7828"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Sun Feb 03 17:33:42 2008 +0200"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Sun Feb 03 17:33:42 2008 +0200"
      },
      "message": "fs/: Spelling fixes\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\n"
    },
    {
      "commit": "e63aecb651ba73dffc62f9608ee1b7ae2a0ffd4b",
      "tree": "06a4b727230120fe73421dc3149c21aaed5fe91e",
      "parents": [
        "c934a92d05b549dd2f25db72c5fc3cb9dcf1b611"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Thu Oct 18 15:30:42 2007 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Fri Jan 25 14:46:01 2008 -0800"
      },
      "message": "ocfs2: Rename ocfs2_meta_[un]lock\n\nCall this the \"inode_lock\" now, since it covers both data and meta data.\nThis patch makes no functional changes.\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "0af4bd38876416d945ad6a1338798696604952a1",
      "tree": "1a07dd53e768ee4649fb68a147ae5bacfa5adbad",
      "parents": [
        "dbeeb816e805091e7cfc03baf36dc40b4adb2bbd"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Wed Oct 24 18:23:27 2007 +0200"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Tue Nov 06 15:31:06 2007 -0800"
      },
      "message": "[2.6 patch] make ocfs2_find_entry_el() static\n\nocfs2_find_entry_el() can become static.\n\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "2b47c3611de05c585e2d81204f6c7e3e255a3461",
      "tree": "24a14614fb9bf507b4b6ad3fa6a7cfa5a92318fb",
      "parents": [
        "41d10da3717409de33d5441f2f6d8f072ab3fbb6"
      ],
      "author": {
        "name": "Mathieu Desnoyers",
        "email": "mathieu.desnoyers@polymtl.ca",
        "time": "Tue Oct 16 23:27:21 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:42:53 2007 -0700"
      },
      "message": "Fix f_version type: should be u64 instead of unsigned long\n\nFix f_version type: should be u64 instead of long\n\nThere is a type inconsistency between struct inode i_version and struct file\nf_version.\n\nfs.h:\n\nstruct inode\n  u64                     i_version;\n\nand\n\nstruct file\n  unsigned long           f_version;\n\nUsers do:\n\nfs/ext3/dir.c:\n\nif (filp-\u003ef_version !\u003d inode-\u003ei_version) {\n\nSo why isn\u0027t f_version a u64 ? It becomes a problem if versions gets\nhigher than 2^32 and we are on an architecture where longs are 32 bits.\n\nThis patch changes the f_version type to u64, and updates the users accordingly.\n\nIt applies to 2.6.23-rc2-mm2.\n\nSigned-off-by: Mathieu Desnoyers \u003cmathieu.desnoyers@polymtl.ca\u003e\nCc: Martin Bligh \u003cmbligh@google.com\u003e\nCc: \"Randy.Dunlap\" \u003crdunlap@xenotime.net\u003e\nCc: Al Viro \u003cviro@ftp.linux.org.uk\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nCc: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e7b34019606ab1dd06196635e931b0c302799228",
      "tree": "c5fc9393ddd817b3e577e6df755e924015d3c06e",
      "parents": [
        "5b6a3a2b4a5f071d170f8122038dd647a84810a8"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Mon Sep 24 14:25:27 2007 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Fri Oct 12 11:54:41 2007 -0700"
      },
      "message": "ocfs2: Optionally return filldir errors\n\nModify ocfs2_dir_foreach_blk() to optionally return any error from the\nfilldir callback. This way ocfs2_dirforeach() can terminate early, as\nopposed to always passing through the entire directory. This fixes a bug\nintroduced during a previous code refactor where ocfs2_empty_dir() would\nloop infinitely.\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "5b6a3a2b4a5f071d170f8122038dd647a84810a8",
      "tree": "dd50e12c6670f950889e24401d0bcee900bbba2a",
      "parents": [
        "23193e513d1cd69411469f028d56fd175d4a6b07"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Thu Sep 13 16:33:54 2007 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Fri Oct 12 11:54:41 2007 -0700"
      },
      "message": "ocfs2: Write support for directories with inline data\n\nCreate all new directories with OCFS2_INLINE_DATA_FL and the inline data\nbytes formatted as an empty directory. Inode size field reflects the actual\namount of inline data available, which makes searching for dirent space\nvery similar to the regular directory search.\n\nInline-data directories are automatically pushed out to extents on any\ninsert request which is too large for the available space.\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\nReviewed-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "23193e513d1cd69411469f028d56fd175d4a6b07",
      "tree": "18c2c6019d4ba6253a7c2ce87b53a118801ce534",
      "parents": [
        "1afc32b952335f665327a1a9001ba1b44bb76fd9"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Wed Sep 12 13:01:18 2007 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Fri Oct 12 11:54:40 2007 -0700"
      },
      "message": "ocfs2: Read support for directories with inline data\n\nThis splits out extent based directory read support and implements\ninline-data versions of those functions. All knowledge of inline-data versus\nextent based directories is internalized. For lookups the code uses\nocfs2_find_entry_id(), full dir iterations make use of\nocfs2_dir_foreach_blk_id().\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\nReviewed-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "8553cf4f360d6fc4913a0bdd3b22dd7b5bb9a3be",
      "tree": "705bedbd5dcaf12e1ed8bb3c3f6fc8f9bd828477",
      "parents": [
        "38760e243249f03b4c6d78ca624dd846a2681b67"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Thu Sep 13 16:29:01 2007 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Fri Oct 12 11:54:39 2007 -0700"
      },
      "message": "ocfs2: Cleanup dirent size check\n\nThe check to see if a new dirent would fit in an old one is pretty ugly, and\nit\u0027s done at least twice. Clean things up by putting this in it\u0027s own\neasier-to-read function.\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\nReviewed-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "38760e243249f03b4c6d78ca624dd846a2681b67",
      "tree": "adf4cc72ac30455f9d4a646f64f1628e38b14a89",
      "parents": [
        "be94d11704ef79030fd2e6a0c41b4a7f65f9e860"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Tue Sep 11 17:21:56 2007 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Fri Oct 12 11:54:38 2007 -0700"
      },
      "message": "ocfs2: Rename cleanups\n\nocfs2_rename() does direct manipulation of the dirent it\u0027s gotten back from\na directory search. Wrap this manipulation inside of a function so that we\ncan transparently change directory update behavior in the future. As an\nadded bonus, this gets rid of an ugly macro.\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\nReviewed-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "be94d11704ef79030fd2e6a0c41b4a7f65f9e860",
      "tree": "10b060625c464db127210acc00e8aa80b43ce6f3",
      "parents": [
        "0bfbbf62a8b5a129ba2c689283bfece80a601aba"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Tue Sep 11 15:22:06 2007 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Fri Oct 12 11:54:38 2007 -0700"
      },
      "message": "ocfs2: Provide convenience function for ino lookup\n\nA couple paths which needed to just match a parent dir + name pair to an\ninode number were a bit messy because they had to deal with\nocfs2_find_files_on_disk() which returns a larger number of values. Provide\na convenience function, ocfs2_lookup_ino_from_name() which internalizes all\nthe extra accounting.\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\nReviewed-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "0bfbbf62a8b5a129ba2c689283bfece80a601aba",
      "tree": "af010d9f03acf04f81aef04eb07e2962fe502543",
      "parents": [
        "5eae5b96fc86e6c85f5f90e90fe9e6966f1fec63"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Wed Sep 12 11:19:00 2007 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Fri Oct 12 11:54:37 2007 -0700"
      },
      "message": "ocfs2: Implement ocfs2_empty_dir() as a caller of ocfs2_dir_foreach()\n\nWe can preserve the behavior of ocfs2_empty_dir(), while getting rid of the\nopen coded directory walk by just providing a smart filldir callback. This\nalso automatically gets to use the dir readahead code, though in this case\nany advantage is minor at best.\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\nReviewed-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "5eae5b96fc86e6c85f5f90e90fe9e6966f1fec63",
      "tree": "f9ab0815a6b0ee9c181a17e304abb8386bd09843",
      "parents": [
        "7e8536797d4508ddc790cc3af6a281db1582d485"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Mon Sep 10 17:50:51 2007 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Fri Oct 12 11:54:37 2007 -0700"
      },
      "message": "ocfs2: Remove open coded readdir()\n\nocfs2_queue_orphans() has an open coded readdir loop which can easily just\nuse a directory accessor function.\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\nReviewed-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "7e8536797d4508ddc790cc3af6a281db1582d485",
      "tree": "dd18e042cb00ff09077244ffd755b363776e1dc3",
      "parents": [
        "b8bc5f4fde376c9eee524a9a2b7e85560e604e85"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Mon Sep 10 17:30:26 2007 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Fri Oct 12 11:54:37 2007 -0700"
      },
      "message": "ocfs2: Pass raw u64 to filldir\n\nfilldir_t can take this, so don\u0027t turn de-\u003einode into a 32 bit value. Right\nnow this doesn\u0027t make a difference since no ocfs2 inodes overflow that, but\nit could be a nasty surprise later on if some kernel code is calling\nocfs2_dir_foreach_blk() and expecting real inode numbers back...\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\nReviewed-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "b8bc5f4fde376c9eee524a9a2b7e85560e604e85",
      "tree": "859f375caec2ff80626494ad00f28723d6b51eaf",
      "parents": [
        "316f4b9f98a353ac1be93199694fd97272378815"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Mon Sep 10 17:17:52 2007 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Fri Oct 12 11:54:36 2007 -0700"
      },
      "message": "ocfs2: Abstract out core dir listing functionality\n\nPut this in it\u0027s own function so that the functionality can be overridden.\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\nReviewed-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "316f4b9f98a353ac1be93199694fd97272378815",
      "tree": "c54f7feb08fc1693f64879d8a3edc18cf3bb2713",
      "parents": [
        "1d410a6e337a0d2d5543ad1d9bccb670a7a05312"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Fri Sep 07 18:21:26 2007 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Fri Oct 12 11:54:36 2007 -0700"
      },
      "message": "ocfs2: Move directory manipulation code into dir.c\n\nThe code for adding, removing, deleting directory entries was splattered all\nover namei.c. I\u0027d rather have this all centralized, so that it\u0027s easier to\nmake changes for inline dir data, and eventually indexed directories.\n\nNone of the code in any of the functions was changed. I only removed the\nstatic keyword from some prototypes so that they could be exported.\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\nReviewed-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "2ae99a60374f360ba07037ebbf33d19b89ac43a6",
      "tree": "ce83db2022a28deb8c402fca7c08cf924ee8e608",
      "parents": [
        "b27b7cbcf12a1bfff1ed68a73ddd7d11edc20daf"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Fri Mar 09 16:43:28 2007 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Tue Jul 10 17:32:04 2007 -0700"
      },
      "message": "ocfs2: Support creation of unwritten extents\n\nThis can now be trivially supported with re-use of our existing extend code.\n\nocfs2_allocate_unwritten_extents() takes a start offset and a byte length\nand iterates over the inode, adding extents (marked as unwritten) until len\nis reached. Existing extents are skipped over.\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "ee19a77956cb65c5da54d85a5efefe50b39fa6e5",
      "tree": "1ce4410333f2ad72460cb742d3f5974acb6f9caa",
      "parents": [
        "6cb129f5675c39944e5fe18fd2530a2eb771b754"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed Mar 28 18:27:07 2007 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Wed May 02 15:07:42 2007 -0700"
      },
      "message": "ocfs2: Wrap access of directory allocations with ip_alloc_sem.\n\nOCFS2_I(inode)-\u003eip_alloc_sem is a read-write semaphore protecting\nlocal concurrent access of ocfs2 inodes.  However, ocfs2 directories were\nnot taking the semaphore while they accessed or modified the allocation\ntree.\n\nocfs2_extend_dir() needs to take the semaphore in a write mode when it\nadds to the allocation.  All other directory users get there via\nocfs2_bread(), which takes the semaphore in read mode.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "8110b073a9135acf0a71bccfc20c0d1023f179c6",
      "tree": "b668738e25648f3fcfd7b1063ab8d4948cebc668",
      "parents": [
        "4f902c37727bbedbc0508a1477874c58ddcc9af8"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Thu Mar 22 16:53:23 2007 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Thu Apr 26 15:07:40 2007 -0700"
      },
      "message": "ocfs2: Fix up i_blocks calculation to know about holes\n\nOlder file systems which didn\u0027t support holes did a dumb calculation of\ni_blocks based on i_size. This is no longer accurate, so fix things up to\ntake actual allocation into account.\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "49cb8d2d496ce06869ccca2ab368ed6b0b5b979d",
      "tree": "7aded7178e87dc26eb2ceafb169d7e68a8ee5ded",
      "parents": [
        "e48edee2d8eab812f31f0ff62c6ba635ca2e1e21"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Fri Mar 09 16:21:46 2007 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Thu Apr 26 15:02:41 2007 -0700"
      },
      "message": "ocfs2: Read from an unwritten extent returns zeros\n\nReturn an optional extent flags field from our lookup functions and wire up\ncallers to treat unwritten regions as holes for the purpose of returning\nzeros to the user.\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "363041a5f74b953ab6b705ac9c88e5eda218a24b",
      "tree": "c0661c3f88978f2049693682f1cb94b20a8454c0",
      "parents": [
        "dcd0538ff4e854fa9d7f4630b359ca8fdb5cb5a8"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Wed Jan 17 12:31:35 2007 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Thu Apr 26 15:01:31 2007 -0700"
      },
      "message": "ocfs2: temporarily remove extent map caching\n\nThe code in extent_map.c is not prepared to deal with a subtree being\nrotated between lookups. This can happen when filling holes in sparse files.\nInstead of a lengthy patch to update the code (which would likely lose the\nbenefit of caching subtree roots), we remove most of the algorithms and\nimplement a simple path based lookup. A less ambitious extent caching scheme\nwill be added in a later patch.\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "dcd0538ff4e854fa9d7f4630b359ca8fdb5cb5a8",
      "tree": "226d725f8199907cea2433d1d183b01e51d9bc55",
      "parents": [
        "6f16bf655c5795586dd2ac96a7c70e0b9a378746"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Tue Jan 16 11:32:23 2007 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Thu Apr 26 14:44:03 2007 -0700"
      },
      "message": "ocfs2: sparse b-tree support\n\nIntroduce tree rotations into the b-tree code. This will allow ocfs2 to\nsupport sparse files. Much of the added code is designed to be generic (in\nthe ocfs2 sense) so that it can later be re-used to implement large\nextended attributes.\n\nThis patch only adds the rotation code and does minimal updates to callers\nof the extent api.\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "d28c91740ae2cd1d963f9e4e3889789894cb6d52",
      "tree": "0f519133422e1248b6e7519960877dd062f4c2b5",
      "parents": [
        "6db5fc5d536560e31978c6911b1f5662e42083ac"
      ],
      "author": {
        "name": "Josef Sipek",
        "email": "jsipek@fsl.cs.sunysb.edu",
        "time": "Fri Dec 08 02:37:25 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Dec 08 08:28:48 2006 -0800"
      },
      "message": "[PATCH] struct path: convert ocfs2\n\nSigned-off-by: Josef Sipek \u003cjsipek@fsl.cs.sunysb.edu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "25899deef46c226c49c53b42c00e0f032379c04b",
      "tree": "ac8c19482ab05ee2e13d874eecd8b2eaa507a156",
      "parents": [
        "7f1a37e31f94b4f1c123d32ce9f69205ab2095bd"
      ],
      "author": {
        "name": "Tiger Yang",
        "email": "tiger.yang@oracle.com",
        "time": "Wed Nov 15 15:49:02 2006 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Fri Dec 01 18:28:58 2006 -0800"
      },
      "message": "ocfs2: update file system paths to set atime\n\nConditionally update atime in ocfs2_file_aio_read(), ocfs2_readdir() and\nocfs2_mmap().\n\nSigned-off-by: Tiger Yang \u003ctiger.yang@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "1fabe1481fac9e01bf8bffa60a2307ef379aa5de",
      "tree": "17092c1be837ed95c8f26646003e9e49cfdb9663",
      "parents": [
        "65eff9ccf86d63eb5c3e9071450a36e4e4fa9564"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Mon Oct 09 18:11:45 2006 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Fri Dec 01 18:28:28 2006 -0800"
      },
      "message": "ocfs2: Remove struct ocfs2_journal_handle in favor of handle_t\n\nThis is mostly a search and replace as ocfs2_journal_handle is now no more\nthan a container for a handle_t pointer.\n\nocfs2_commit_trans() becomes very straight forward, and we remove some out\nof date comments / code.\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "65eff9ccf86d63eb5c3e9071450a36e4e4fa9564",
      "tree": "3610e008294ce4e5cfbc9abff3c98153f35ed2d4",
      "parents": [
        "dae85832ffe2879b57b23aea319a0ec17667898d"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Mon Oct 09 17:26:22 2006 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Fri Dec 01 18:28:23 2006 -0800"
      },
      "message": "ocfs2: remove handle argument to ocfs2_start_trans()\n\nAll callers either pass in NULL directly, or a local variable that is\nalready set to NULL.\n\nThe internals of ocfs2_start_trans() get a nice cleanup as a result.\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "02dc1af44e9fa4b8801169891b3a1ba4047537ad",
      "tree": "db84e9ec9731dcfcf91bea226403881d0feccb49",
      "parents": [
        "4bcec1847ac4f75c2ee6d091b495f34d8d822e6a"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Mon Oct 09 16:48:10 2006 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Fri Dec 01 18:28:08 2006 -0800"
      },
      "message": "ocfs2: pass ocfs2_super * into ocfs2_commit_trans()\n\nThis sets us up to remove handle-\u003ejournal.\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "4bcec1847ac4f75c2ee6d091b495f34d8d822e6a",
      "tree": "faac00bd440eff91bd59a3cef88e74220082163a",
      "parents": [
        "a301a27d715276a71827004549bcbb2b64776c11"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Mon Oct 09 16:02:40 2006 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Fri Dec 01 18:28:05 2006 -0800"
      },
      "message": "ocfs2: remove unused handle argument from ocfs2_meta_lock_full()\n\nNow that this is unused and all callers pass NULL, we can safely remove it.\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "da5cbf2f9df922cfdafa39351691fa83517f1e25",
      "tree": "845dc288b72f0408870f50605bb3c96eec978dd8",
      "parents": [
        "8d5596c687c49c1d8812c3456946dec15d069139"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Fri Oct 06 18:34:35 2006 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Fri Dec 01 18:27:49 2006 -0800"
      },
      "message": "ocfs2: don\u0027t use handle for locking in allocation functions\n\nInstead we record our state on the allocation context structure which all\ncallers already know about and lifetime correctly. This means the\nreservation functions don\u0027t need a handle passed in any more, and we can\nalso take it off the alloc context.\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "aa9588741db907785e4d92c8b768dd6c9077e6f0",
      "tree": "d34da288a9d296a8a2ba19dfa0f1df8429bd3e33",
      "parents": [
        "e0b4096d34fbd6b30838c417100c9d0ef73c71f2"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Fri Apr 21 13:49:02 2006 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Wed Sep 20 15:53:40 2006 -0700"
      },
      "message": "ocfs2: implement directory read-ahead\n\nUptodate.c now knows about read-ahead buffers. Use some more aggressive\nlogic in ocfs2_readdir().\n\nThe two functions which currently use directory read-ahead are\nocfs2_find_entry() and ocfs2_readdir().\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "2b388c67906ee8cd3bf1a600a7023cd0807d414f",
      "tree": "9c03bb07a2a6e467fb9219e8c98fea1a5cec71de",
      "parents": [
        "e7515d065d09f6450c996a8fa206ad66569e183c"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed May 10 18:28:59 2006 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Thu Jun 29 14:48:30 2006 -0700"
      },
      "message": "ocfs2: Compile-time disabling of ocfs2 debugging output.\n\nGive gcc the chance to compile out the debug logging code in ocfs2.\nThis saves some size at the expense of being able to debug the code.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "b0697053f9e8de9cea3d510d9e290851ece9460b",
      "tree": "bcfa2ae33e4a5302ddbe94dec0eaf95013e79850",
      "parents": [
        "29004858a76ba9e26393dd8a85e653f105a33753"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Fri Mar 03 10:24:33 2006 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Fri Mar 24 14:58:28 2006 -0800"
      },
      "message": "ocfs2: don\u0027t use MLF* in the file system\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "1b1dcc1b57a49136f118a0f16367256ff9994a69",
      "tree": "b0b36d4f41d28c9d6514fb309d33c1a084d6309b",
      "parents": [
        "794ee1baee1c26be40410233e6c20bceb2b03c08"
      ],
      "author": {
        "name": "Jes Sorensen",
        "email": "jes@sgi.com",
        "time": "Mon Jan 09 15:59:24 2006 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@hera.kernel.org",
        "time": "Mon Jan 09 15:59:24 2006 -0800"
      },
      "message": "[PATCH] mutex subsystem, semaphore to mutex: VFS, -\u003ei_sem\n\nThis patch converts the inode semaphore to a mutex. I have tested it on\nXFS and compiled as much as one can consider on an ia64. Anyway your\nluck with it might be different.\n\nModified-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n\n(finished the conversion)\n\nSigned-off-by: Jes Sorensen \u003cjes@sgi.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "ccd979bdbce9fba8412beb3f1de68a9d0171b12c",
      "tree": "c50ed941849ce06ccadd4ce27599b3ef9fdbe2ae",
      "parents": [
        "8df08c89c668e1bd922a053fdb5ba1fadbecbb38"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Thu Dec 15 14:31:24 2005 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Jan 03 11:45:47 2006 -0800"
      },
      "message": "[PATCH] OCFS2: The Second Oracle Cluster Filesystem\n\nThe OCFS2 file system module.\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\nSigned-off-by: Kurt Hackel \u003ckurt.hackel@oracle.com\u003e\n"
    }
  ]
}
