)]}'
{
  "log": [
    {
      "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": "da1e90985a0e767e44397c9db0937e236033fa58",
      "tree": "88d16dd378bf1b180d345a87de95316546af348a",
      "parents": [
        "936b8834366ec05f2a6993f73afd8348cac9718e"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Oct 09 17:20:29 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Tue Oct 14 11:29:10 2008 -0700"
      },
      "message": "ocfs2: Separate out sync reads from ocfs2_read_blocks()\n\nThe ocfs2_read_blocks() function currently handles sync reads, cached,\nreads, and sometimes cached reads.  We\u0027re going to add some\nfunctionality to it, so first we should simplify it.  The uncached,\nsynchronous reads are much easer to handle as a separate function, so we\ninstroduce ocfs2_read_blocks_sync().\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "936b8834366ec05f2a6993f73afd8348cac9718e",
      "tree": "6f1d4b4e7586599bd11ff92a88a751aa78ce1a4b",
      "parents": [
        "2057e5c6780d86939a199031cdbafb81e6f88aac"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Thu Oct 09 23:06:14 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 13 17:02:45 2008 -0700"
      },
      "message": "ocfs2: Refactor xattr list and remove ocfs2_xattr_handler().\n\nAccording to Christoph Hellwig\u0027s advice, we really don\u0027t need\na -\u003elist to handle one xattr\u0027s list. Just a map from index to\nxattr prefix is enough. And I also refactor the old list method\nwith the reference from fs/xfs/linux-2.6/xfs_xattr.c and the\nxattr list method in btrfs.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "2057e5c6780d86939a199031cdbafb81e6f88aac",
      "tree": "f36039ea7d491f44215a880b03f37c1644bb4f41",
      "parents": [
        "99219aea68b5bff4f182858372b43181ad3bdb34"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Thu Oct 09 23:06:13 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 13 17:02:44 2008 -0700"
      },
      "message": "ocfs2: Calculate EA hash only by its suffix.\n\nAccording to Christoph Hellwig\u0027s advice, the hash value of EA\nis only calculated by its suffix.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "99219aea68b5bff4f182858372b43181ad3bdb34",
      "tree": "fbe3c16322ecc658e2c432dc7700bb1b19d00d54",
      "parents": [
        "40daa16a3441abe822bfcc748150116a77aee2ea"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Tue Oct 07 14:52:59 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 13 17:02:44 2008 -0700"
      },
      "message": "ocfs2: Move trusted and user attribute support into xattr.c\n\nPer Christoph Hellwig\u0027s suggestion - don\u0027t split these up. It\u0027s not like we\ngained much by having the two tiny files around.\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "40daa16a3441abe822bfcc748150116a77aee2ea",
      "tree": "218d2966a03e9ed1afd3ae2945389f781fa229ce",
      "parents": [
        "a81cb88b64a479b78c6dd5666678d50171865db8"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Tue Oct 07 14:31:42 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 13 17:02:44 2008 -0700"
      },
      "message": "ocfs2: Uninline ocfs2_xattr_name_hash()\n\nThis is too big to be inlined.\n\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": "fd8351f83d413b41da956109cf429c15881886e2",
      "tree": "86557f75dd1ab2f3b1ed7d8cda479d09f2e2372d",
      "parents": [
        "696b55d768ea5ebf38a369da615f8c956750ab3f"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Tue Oct 07 12:50:46 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 13 17:02:44 2008 -0700"
      },
      "message": "ocfs2: use smaller counters in ocfs2_remove_xattr_clusters_from_cache\n\ni and b_len don\u0027t really need to be u64\u0027s. Xattr extent lengths should be\nlimited by the VFS, and then the size of our on-disk length field.\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "4cc8124584610fbe087ea2bed29ca52d2d0aa84a",
      "tree": "4d1da0e72b6161ba3a321ff4533ca2f1a8511adf",
      "parents": [
        "009d37502a7b9fc89741e66b4454afca4edc1c26"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Tue Oct 07 11:02:04 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 13 17:02:44 2008 -0700"
      },
      "message": "ocfs2: make la_debug_mutex static\n\nIt can also be moved into ocfs2_la_debug_read().\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "009d37502a7b9fc89741e66b4454afca4edc1c26",
      "tree": "5baff62529735bf9e1a0d72108fe3183876de18e",
      "parents": [
        "5a09561199e7f8d3feaaa01c39372050e140b775"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 06 16:16:08 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 13 17:02:44 2008 -0700"
      },
      "message": "ocfs2: Remove pointless !!\n\nocfs2_stack_supports_plocks() doesn\u0027t need this to properly return a zero or\none value.\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "5a09561199e7f8d3feaaa01c39372050e140b775",
      "tree": "5affae979a564bae543e81d70abc58015ce44f80",
      "parents": [
        "06b240d8af21ddee4cfec3b0f02b81d9f168a98a"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Fri Sep 19 22:17:41 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 13 17:02:43 2008 -0700"
      },
      "message": "ocfs2: Add empty bucket support in xattr.\n\nAs Mark mentioned, it may be time-consuming when we remove the\nempty xattr bucket, so this patch try to let empty bucket exist\nin xattr operation. The modification includes:\n1. Remove the functin of bucket and extent record deletion during\n   xattr delete.\n2. In xattr set:\n   1) Don\u0027t clean the last entry so that if the bucket is empty,\n      the hash value of the bucket is the hash value of the entry\n      which is deleted last.\n   2) During insert, if we meet with an empty bucket, just use the\n      1st entry.\n3. In binary search of xattr bucket, use the bucket hash value(which\n   stored in the 1st xattr entry) to find the right place.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "06b240d8af21ddee4cfec3b0f02b81d9f168a98a",
      "tree": "eb725cc51e755252b17efb235db4c9d9adeb7469",
      "parents": [
        "b0f73cfc36ed62decdd3f78e943bbfd00ee80e49"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Fri Sep 19 22:16:34 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 13 17:02:43 2008 -0700"
      },
      "message": "ocfs2/xattr.c: Fix a bug when inserting xattr.\n\nDuring the process of xatt insertion, we use binary search\nto find the right place and \"low\" is set to it. But when\nthere is one xattr which has the same name hash as the inserted\none, low is the wrong value. So set it to the right position.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "b0f73cfc36ed62decdd3f78e943bbfd00ee80e49",
      "tree": "66449d0a071b68774edc85e17d09af737d4b83d6",
      "parents": [
        "2b4e30fbde425828b17f0e9c8f8e3fd3ecb2bc75"
      ],
      "author": {
        "name": "Sunil Mushran",
        "email": "sunil.mushran@oracle.com",
        "time": "Fri Sep 05 11:29:14 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 13 17:02:43 2008 -0700"
      },
      "message": "ocfs2: Add xattr mount option in ocfs2_show_options()\n\nPatch adds check for [no]user_xattr in ocfs2_show_options() that completes\nthe list of all mount options.\n\nSigned-off-by: Sunil Mushran \u003csunil.mushran@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "2b4e30fbde425828b17f0e9c8f8e3fd3ecb2bc75",
      "tree": "5b340cde72e058b51642f0c7255818f62014bc91",
      "parents": [
        "12462f1d9f0b96389497438dc2730c6f7410be82"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed Sep 03 20:03:41 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 13 17:02:43 2008 -0700"
      },
      "message": "ocfs2: Switch over to JBD2.\n\nocfs2 wants JBD2 for many reasons, not the least of which is that JBD is\nlimiting our maximum filesystem size.\n\nIt\u0027s a pretty trivial change.  Most functions are just renamed.  The\nonly functional change is moving to Jan\u0027s inode-based ordered data mode.\nIt\u0027s better, too.\n\nBecause JBD2 reads and writes JBD journals, this is compatible with any\nexisting filesystem.  It can even interact with JBD-based ocfs2 as long\nas the journal is formated for JBD.\n\nWe provide a compatibility option so that paranoid people can still use\nJBD for the time being.  This will go away shortly.\n\n[ Moved call of ocfs2_begin_ordered_truncate() from ocfs2_delete_inode() to\n  ocfs2_truncate_for_delete(). --Mark ]\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "12462f1d9f0b96389497438dc2730c6f7410be82",
      "tree": "d96dec791dd45cc8901dc6a894bdbe96ad7e7c67",
      "parents": [
        "1187c968852e3c668f3b9376083851f81f6eee22"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed Sep 03 20:03:40 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 13 16:57:08 2008 -0700"
      },
      "message": "ocfs2: Add the \u0027inode64\u0027 mount option.\n\nNow that ocfs2 limits inode numbers to 32bits, add a mount option to\ndisable the limit.  This parallels XFS.  64bit systems can handle the\nlarger inode numbers.\n\n[ Added description of inode64 mount option in ocfs2.txt. --Mark ]\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "1187c968852e3c668f3b9376083851f81f6eee22",
      "tree": "23a34ab89f724cc015f9e4f6e8bc6ed0fc20ce51",
      "parents": [
        "08413899db89d8d636c2a2d4ba5c356ab587d7ef"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed Sep 03 20:03:39 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 13 16:57:07 2008 -0700"
      },
      "message": "ocfs2: Limit inode allocation to 32bits.\n\nocfs2 inode numbers are block numbers.  For any filesystem with less\nthan 2^32 blocks, this is not a problem.  However, when ocfs2 starts\nusing JDB2, it will be able to support filesystems with more than 2^32\nblocks.  This would result in inode numbers higher than 2^32.\n\nThe problem is that stat(2) can\u0027t handle those numbers on 32bit\nmachines.  The simple solution is to have ocfs2 allocate all inodes\nbelow that boundary.\n\nThe suballoc code is changed to honor an optional block limit.  Only the\ninode suballocator sets that limit - all other allocations stay unlimited.\n\nThe biggest trick is to grow the inode suballocator beneath that limit.\nThere\u0027s no point in allocating block groups that are above the limit,\nthen rejecting their elements later on.  We want to prevent the inode\nallocator from ever having block groups above the limit.  This involves\na little gyration with the local alloc code.  If the local alloc window\nis above the limit, it signals the caller to try the global bitmap but\ndoes not disable the local alloc file (which can be used for other\nallocations).\n\n[ Minor cleanup - removed an ML_NOTICE comment. --Mark ]\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "08413899db89d8d636c2a2d4ba5c356ab587d7ef",
      "tree": "82e65ffa9b0b30d0206259ae99e0fbc8db667936",
      "parents": [
        "28b8ca0b7f70b1b048d03dc0b9d87f58619e9791"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Fri Aug 29 09:00:19 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 13 16:57:06 2008 -0700"
      },
      "message": "ocfs2: Resolve deadlock in ocfs2_xattr_free_block.\n\nIn ocfs2_xattr_free_block, we take a cluster lock on xb_alloc_inode while we\nhave a transaction open. This will deadlock the downconvert thread, so fix\nit.\n\nWe can clean up how xattr blocks are removed while here - this patch also\nmoves the mechanism of releasing xattr block (including both value, xattr\ntree and xattr block) into this function.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "28b8ca0b7f70b1b048d03dc0b9d87f58619e9791",
      "tree": "24e581b6bc0d8a71c528b3f15b081712714e291e",
      "parents": [
        "8d6220d6a74a33552cf877bcea25503d7f6a59e6"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Mon Sep 01 08:45:18 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 13 16:57:06 2008 -0700"
      },
      "message": "ocfs2: bug-fix for journal extend in xattr.\n\nIn ocfs2_extend_trans, when we can\u0027t extend the current\ntransaction, it will commit current transaction and restart\na new one. So if the previous credits we have allocated aren\u0027t\nused(the block isn\u0027t dirtied before our extend), we will not\nhave enough credits for any future operation(it will cause jbd\ncomplain and bug out). So check this and re-extend it.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\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": "1625f8ac151743e452ec062c2989669c508ffa48",
      "tree": "0da18fe83c3c0153c33ed1ad5903e4ae08e2fb6e",
      "parents": [
        "f99b9b7ccf6a691f653cec45f36bfdd1e94769c7"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Aug 21 17:11:10 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 13 16:57:05 2008 -0700"
      },
      "message": "ocfs2: Comment struct ocfs2_extent_tree_operations.\n\nstruct ocfs2_extent_tree_operations provides methods for the different\non-disk btrees in ocfs2.  Describing what those methods do is probably a\ngood idea.\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": "1e61ee79e2a96f62c007486677319814ce621c3c",
      "tree": "50e966441431ec036649dac3ebd17d1452937f26",
      "parents": [
        "1a09f556e5415a29cdddaf9a6ebf474194161cf3"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed Aug 20 18:32:45 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 13 16:57:05 2008 -0700"
      },
      "message": "ocfs2: Add an insertion check to ocfs2_extent_tree_operations.\n\nA couple places check an extent_tree for a valid inode.  We move that\nout to add an eo_insert_check() operation.  It can be called from\nocfs2_insert_extent() and elsewhere.\n\nWe also have the wrapper calls ocfs2_et_insert_check() and\nocfs2_et_sanity_check() ignore NULL ops.  That way we don\u0027t have to\nprovide useless operations for xattr types.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "1a09f556e5415a29cdddaf9a6ebf474194161cf3",
      "tree": "902dc5cc4719ffce151c610b3441baa3511aa50e",
      "parents": [
        "943cced39ee45ed2db25efd25eee8ba49cf2dfc4"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed Aug 20 17:44:24 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 13 16:57:05 2008 -0700"
      },
      "message": "ocfs2: Create specific get_extent_tree functions.\n\nA caller knows what kind of extent tree they have.  There\u0027s no reason\nthey have to call ocfs2_get_extent_tree() with a NULL when they could\njust as easily call a specific function to their type of extent tree.\n\nIntroduce ocfs2_dinode_get_extent_tree(),\nocfs2_xattr_tree_get_extent_tree(), and\nocfs2_xattr_value_get_extent_tree().  They only take the necessary\narguments, calling into the underlying __ocfs2_get_extent_tree() to do\nthe real work.\n\n__ocfs2_get_extent_tree() is the old ocfs2_get_extent_tree(), but\nwithout needing any switch-by-type logic.\n\nocfs2_get_extent_tree() is now a wrapper around the specific calls.  It\nexists because a couple alloc.c functions can take et_type.  This will\ngo later.\n\nAnother benefit is that ocfs2_xattr_value_get_extent_tree() can take a\nstruct ocfs2_xattr_value_root* instead of void*.  This gives us\ntypechecking where we didn\u0027t have it before.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "943cced39ee45ed2db25efd25eee8ba49cf2dfc4",
      "tree": "a06ce33db4a9b918c98e38a434e7060b32255e6d",
      "parents": [
        "1c25d93a4a27c90c3ae33f9e724f7b67783d68d1"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed Aug 20 17:31:10 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 13 16:57:04 2008 -0700"
      },
      "message": "ocfs2: Determine an extent tree\u0027s max_leaf_clusters in an et_op.\n\nProvide an optional extent_tree_operation to specify the\nmax_leaf_clusters of an ocfs2_extent_tree.  If not provided, the value\nis 0 (unlimited).\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "1c25d93a4a27c90c3ae33f9e724f7b67783d68d1",
      "tree": "d62c9b19fae527770939748566ce3a31ce0bce53",
      "parents": [
        "0ce1010f1a4319e02574b856d50dfdc0ed855f40"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed Aug 20 17:09:42 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 13 16:57:04 2008 -0700"
      },
      "message": "ocfs2: Use struct ocfs2_extent_tree in ocfs2_num_free_extents().\n\nocfs2_num_free_extents() re-implements the logic of\nocfs2_get_extent_tree().  Now that ocfs2_get_extent_tree() does not\nallocate, let\u0027s use it in ocfs2_num_free_extents() to simplify the code.\n\nThe inode validation code in ocfs2_num_free_extents() is not needed.\nAll callers are passing in pre-validated inodes.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "0ce1010f1a4319e02574b856d50dfdc0ed855f40",
      "tree": "6d65e00caa9c4c5310fd4f51a07678d46803adfd",
      "parents": [
        "ea5efa151265a743f48e3d371992a0100d73a0eb"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed Aug 20 17:19:50 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 13 16:57:04 2008 -0700"
      },
      "message": "ocfs2: Provide the get_root_el() method to ocfs2_extent_tree_operations.\n\nThe root_el of an ocfs2_extent_tree needs to be calculated from\net-\u003eet_object.  Make it an operation on et-\u003eet_ops.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "ea5efa151265a743f48e3d371992a0100d73a0eb",
      "tree": "5e3688b0882271210b524564f5b6b42e2813f32c",
      "parents": [
        "dc0ce61af418305afa7e0d05d86ab334e0daabf7"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed Aug 20 16:57:27 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 13 16:57:04 2008 -0700"
      },
      "message": "ocfs2: Make \u0027private\u0027 into \u0027object\u0027 on ocfs2_extent_tree.\n\nThe \u0027private\u0027 pointer was a way to store off xattr values, which don\u0027t\nlive at a set place in the bh.  But the concept of \"the object\ncontaining the extent tree\" is much more generic.  For an inode it\u0027s the\nstruct ocfs2_dinode, for an xattr value its the value.  Let\u0027s save off\nthe \u0027object\u0027 at all times.  If NULL is passed to\nocfs2_get_extent_tree(), \u0027object\u0027 is set to bh-\u003eb_data;\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "dc0ce61af418305afa7e0d05d86ab334e0daabf7",
      "tree": "7122bafdcb29a77cd65e34a600d3df76b9e165fe",
      "parents": [
        "ce1d9ea621291ed5e985d6677278c6bb20d96a40"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed Aug 20 16:48:35 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 13 16:57:04 2008 -0700"
      },
      "message": "ocfs2: Make ocfs2_extent_tree get/put instead of alloc.\n\nRather than allocating a struct ocfs2_extent_tree, just put it on the\nstack.  Fill it with ocfs2_get_extent_tree() and drop it with\nocfs2_put_extent_tree().  Now the callers don\u0027t have to ENOMEM, yet\nstill safely ref the root_bh.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "ce1d9ea621291ed5e985d6677278c6bb20d96a40",
      "tree": "5bd40bdd327745ab0e91fb181752062306147135",
      "parents": [
        "35dc0aa3c5e7391319754e0c19cdfc0a28eb5b25"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed Aug 20 16:30:07 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 13 16:57:04 2008 -0700"
      },
      "message": "ocfs2: Prefix the ocfs2_extent_tree structure.\n\nThe members of the ocfs2_extent_tree structure gain a prefix of \u0027et_\u0027.\nAll users are updated.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "35dc0aa3c5e7391319754e0c19cdfc0a28eb5b25",
      "tree": "709fc00742bbcf9fc8941e0fe61845a22bb5a73b",
      "parents": [
        "ff1ec20ef65d51cc3466e86912cdeaac16f3aaa0"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed Aug 20 16:25:06 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 13 16:57:04 2008 -0700"
      },
      "message": "ocfs2: Prefix the extent tree operations structure.\n\nThe ocfs2_extent_tree_operations structure gains a field prefix on its\nmembers.  The -\u003eeo_sanity_check() operation gains a wrapper function for\ncompleteness.  All of the extent tree operation wrappers gain a\nconsistent name (ocfs2_et_*()).\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "ff1ec20ef65d51cc3466e86912cdeaac16f3aaa0",
      "tree": "2c5859e0f8e502ede6110397062208afe0641ad6",
      "parents": [
        "8154da3d2114241cf3edb108b43e2172be86d483"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Tue Aug 19 10:54:29 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 13 16:57:03 2008 -0700"
      },
      "message": "ocfs2: fix printk format warnings\n\nThis patch fixes the following build warnings:\n\nfs/ocfs2/xattr.c: In function \u0027ocfs2_half_xattr_bucket\u0027:\nfs/ocfs2/xattr.c:3282: warning: format \u0027%d\u0027 expects type \u0027int\u0027, but argument 7 has type \u0027long int\u0027\nfs/ocfs2/xattr.c:3282: warning: format \u0027%d\u0027 expects type \u0027int\u0027, but argument 8 has type \u0027long int\u0027\nfs/ocfs2/xattr.c:3282: warning: format \u0027%d\u0027 expects type \u0027int\u0027, but argument 7 has type \u0027long int\u0027\nfs/ocfs2/xattr.c:3282: warning: format \u0027%d\u0027 expects type \u0027int\u0027, but argument 8 has type \u0027long int\u0027\nfs/ocfs2/xattr.c:3282: warning: format \u0027%d\u0027 expects type \u0027int\u0027, but argument 7 has type \u0027long int\u0027\nfs/ocfs2/xattr.c:3282: warning: format \u0027%d\u0027 expects type \u0027int\u0027, but argument 8 has type \u0027long int\u0027\nfs/ocfs2/xattr.c: In function \u0027ocfs2_xattr_set_entry_in_bucket\u0027:\nfs/ocfs2/xattr.c:4092: warning: format \u0027%d\u0027 expects type \u0027int\u0027, but argument 6 has type \u0027size_t\u0027\nfs/ocfs2/xattr.c:4092: warning: format \u0027%d\u0027 expects type \u0027int\u0027, but argument 6 has type \u0027size_t\u0027\nfs/ocfs2/xattr.c:4092: warning: format \u0027%d\u0027 expects type \u0027int\u0027, but argument 6 has type \u0027size_t\u0027\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "8154da3d2114241cf3edb108b43e2172be86d483",
      "tree": "a6d1c1652469d9a34b50dbdab4a435376bf3f32c",
      "parents": [
        "a394425643e1e9c3a624d629fc8ba5633d8474c6"
      ],
      "author": {
        "name": "Tiger Yang",
        "email": "tiger.yang@oracle.com",
        "time": "Mon Aug 18 17:11:46 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 13 16:57:03 2008 -0700"
      },
      "message": "ocfs2: Add incompatible flag for extended attribute\n\nThis patch adds the s_incompat flag for extended attribute support. This\nhelps us ensure that older versions of Ocfs2 or ocfs2-tools will not be able\nto mount a volume with xattr support.\n\nSigned-off-by: Tiger Yang \u003ctiger.yang@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "a394425643e1e9c3a624d629fc8ba5633d8474c6",
      "tree": "bf7ae7087452f22530448070cbccee921ba985ef",
      "parents": [
        "012255961c9ecfe22b7a1df47ac26ab37818cb1e"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Mon Aug 18 17:38:54 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 13 16:57:03 2008 -0700"
      },
      "message": "ocfs2: Delete all xattr buckets during inode removal\n\nIn inode removal, we need to iterate all the buckets, remove any\nexternally-stored EA values and delete the xattr buckets.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "012255961c9ecfe22b7a1df47ac26ab37818cb1e",
      "tree": "914d2a1f58734f44389bdae6e47b555ec8f81c12",
      "parents": [
        "ca12b7c48942d21b2e7890b820db9d578bc291cd"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Mon Aug 18 17:38:53 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 13 16:57:03 2008 -0700"
      },
      "message": "ocfs2: Enable xattr set in index btree\n\nWhere the previous patches added the ability of list/get xattr in buckets\nfor ocfs2, this patch enables ocfs2 to store large numbers of EAs.\n\nThe original design doc is written by Mark Fasheh, and it can be found in\nhttp://oss.oracle.com/osswiki/OCFS2/DesignDocs/IndexedEATrees. I only had to\nmake small modifications to it.\n\nFirst, because the bucket size is 4K, a new field named xh_free_start is added\nin ocfs2_xattr_header to indicate the next valid name/value offset in a bucket.\nIt is used when we store new EA name/value. With this field, we can find the\nplace more quickly and what\u0027s more, we don\u0027t need to sort the name/value every\ntime to let the last entry indicate the next unused space. This makes the\ninsert operation more efficient for blocksizes smaller than 4k.\n\nBecause of the new xh_free_start, another field named as xh_name_value_len is\nalso added in ocfs2_xattr_header. It records the total length of all the\nname/values in the bucket. We need this so that we can check it and defragment\nthe bucket if there is not enough contiguous free space.\n\nAn xattr insertion looks like this:\n1. xattr_index_block_find: find the right bucket by the name_hash, say bucketA.\n2. check whether there is enough space in bucketA. If yes, insert it directly\n   and modify xh_free_start and xh_name_value_len accordingly. If not, check\n   xh_name_value_len to see whether we can store this by defragment the bucket.\n   If yes, defragment it and go on insertion.\n3. If defragement doesn\u0027t work, check whether there is new empty bucket in\n   the clusters within this extent record. If yes, init the new bucket and move\n   all the buckets after bucketA one by one to the next bucket. Move half of the\n   entries in bucketA to the next bucket and go on insertion.\n4. If there is no new bucket, grow the extent tree.\n\nAs for xattr deletion, we will delete an xattr bucket when all it\u0027s xattrs\nare removed and move all the buckets after it to the previous one. When all\nthe xattr buckets in an extend record are freed, free this extend records\nfrom ocfs2_xattr_tree.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "ca12b7c48942d21b2e7890b820db9d578bc291cd",
      "tree": "e051e6ceb77a05db7dd1d749d7f3f1682c69196c",
      "parents": [
        "589dc2602f2a1b7fa5e59b90f548af189f128d77"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Mon Aug 18 17:38:52 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 13 16:57:03 2008 -0700"
      },
      "message": "ocfs2: Optionally limit extent size in ocfs2_insert_extent()\n\nIn xattr bucket, we want to limit the maximum size of a btree leaf,\notherwise we\u0027ll lose the benefits of hashing because we\u0027ll have to search\nlarge leaves.\n\nSo add a new field in ocfs2_extent_tree which indicates the maximum leaf cluster\nsize we want so that we can prevent ocfs2_insert_extent() from merging the leaf\nrecord even if it is contiguous with an adjacent record.\n\nOther btree types are not affected by this change.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "589dc2602f2a1b7fa5e59b90f548af189f128d77",
      "tree": "0a87e16146aa06c72de8db0aed1215c8be72b5fc",
      "parents": [
        "0c044f0b24b9128ba8c297149d88bd81f2e36af3"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Mon Aug 18 17:38:51 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 13 16:57:03 2008 -0700"
      },
      "message": "ocfs2: Add xattr lookup code xattr btrees\n\nAdd code to lookup a given extended attribute in the xattr btree. Lookup\nfollows this general scheme:\n\n1. Use ocfs2_xattr_get_rec to find the xattr extent record\n\n2. Find the xattr bucket within the extent which may contain this xattr\n\n3. Iterate the bucket to find the xattr. In ocfs2_xattr_block_get(), we need\n   to recalcuate the block offset and name offset for the right position of\n   name/value.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "0c044f0b24b9128ba8c297149d88bd81f2e36af3",
      "tree": "2a0d6a34fca5e5a8bdfde0d1068cb56d4252e864",
      "parents": [
        "ba492615f0d32d0210b02c14b24512b4372b13d6"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Mon Aug 18 17:38:50 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 13 16:57:03 2008 -0700"
      },
      "message": "ocfs2: Add xattr bucket iteration for large numbers of EAs\n\nOcfs2 breaks up xattr index tree leaves into 4k regions, called buckets.\nAttributes are stored within a given bucket, depending on hash value.\n\nAfter a discussion with Mark, we decided that the per-bucket index\n(xe_entry[]) would only exist in the 1st block of a bucket. Likewise,\nname/value pairs will not straddle more than one block. This allows the\nmajority of operations to work directly on the buffer heads in a leaf block.\n\nThis patch adds code to iterate the buckets in an EA. A new abstration of\nocfs2_xattr_bucket is added. It records the bhs in this bucket and\nocfs2_xattr_header. This keeps the code neat, improving readibility.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "ba492615f0d32d0210b02c14b24512b4372b13d6",
      "tree": "65275171ba8543a497037c5a159701a06277af4b",
      "parents": [
        "cf1d6c763fbcb115263114302485ad17e7933d87"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Mon Aug 18 17:38:49 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 13 16:57:02 2008 -0700"
      },
      "message": "ocfs2: Add xattr index tree operations\n\nWhen necessary, an ocfs2_xattr_block will embed an ocfs2_extent_list to\nstore large numbers of EAs. This patch adds a new type in\nocfs2_extent_tree_type and adds the implementation so that we can re-use the\nb-tree code to handle the storage of many EAs.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "cf1d6c763fbcb115263114302485ad17e7933d87",
      "tree": "85717dc9d20b7ac1e31b683653933f2d30099f44",
      "parents": [
        "fdd77704a8b4666a32120fcd1e4a9fedaf3263d8"
      ],
      "author": {
        "name": "Tiger Yang",
        "email": "tiger.yang@oracle.com",
        "time": "Mon Aug 18 17:11:00 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 13 16:57:02 2008 -0700"
      },
      "message": "ocfs2: Add extended attribute support\n\nThis patch implements storing extended attributes both in inode or a single\nexternal block. We only store EA\u0027s in-inode when blocksize \u003e 512 or that\ninode block has free space for it. When an EA\u0027s value is larger than 80\nbytes, we will store the value via b-tree outside inode or block.\n\nSigned-off-by: Tiger Yang \u003ctiger.yang@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "fdd77704a8b4666a32120fcd1e4a9fedaf3263d8",
      "tree": "bfc7ba78487c5c6287354b2b07ee4042bff566bc",
      "parents": [
        "f56654c435c06f2b2bd5751889b1a08a3add7d6c"
      ],
      "author": {
        "name": "Tiger Yang",
        "email": "tiger.yang@oracle.com",
        "time": "Mon Aug 18 17:08:55 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 13 16:57:02 2008 -0700"
      },
      "message": "ocfs2: reserve inline space for extended attribute\n\nAdd the structures and helper functions we want for handling inline extended\nattributes. We also update the inline-data handlers so that they properly\nfunction in the event that we have both inline data and inline attributes\nsharing an inode block.\n\nSigned-off-by: Tiger Yang \u003ctiger.yang@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": "ac11c827192272eabb68b8f4cf844066461d9690",
      "tree": "cd96822f16199879a203d30a4957f7d191c8659d",
      "parents": [
        "5a7bc8eb29b8c759df374d97b6189e03d4ea71c5"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Mon Aug 18 17:38:47 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 13 13:57:59 2008 -0700"
      },
      "message": "ocfs2: Add helper function in uptodate.c for removing xattr clusters\n\nThe old uptodate only handles the issue of removing one buffer_head from\nocfs2 inode\u0027s buffer cache. With xattr clusters, we may need to remove\nmultiple buffer_head\u0027s at a time.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "5a7bc8eb29b8c759df374d97b6189e03d4ea71c5",
      "tree": "9356d290dccd0afbb1b0e1f183c49bda843df052",
      "parents": [
        "0eb8d47e69a2211a36643b180f1843ef45f6017d"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Mon Aug 18 17:38:46 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 13 13:57:59 2008 -0700"
      },
      "message": "ocfs2: Add the basic xattr disk layout in ocfs2_fs.h\n\nOcfs2 uses a very flexible structure for storing extended attributes on\ndisk. Small amount of attributes are stored directly in the inode block - up\nto 256 bytes worth. If that fills up, attributes are also stored in an\nexternal block, linked to from the inode block. That block can in turn\nexpand to a btree, capable of storing large numbers of attributes.\n\nIndividual attribute values are stored inline if they\u0027re small enough\n(currently about 80 bytes, this can be changed though), and otherwise are\nexpanded to a btree. The theoretical limit to the size of an individual\nattribute is about the same as an inode, though the kernel\u0027s upper bound on\nthe size of an attributes data is far smaller.\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": "9a8ff578fb430a8816dfbc73c77e5e09c6d9c343",
      "tree": "be97f570b59a4af8fbf0c4c054619193155aaaa6",
      "parents": [
        "9c7af40b210e87f8fddd97b0badc0a352862234a"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Tue Jul 29 18:29:18 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 13 13:57:58 2008 -0700"
      },
      "message": "ocfs2: track local alloc state via debugfs\n\nA per-mount debugfs file, \"local_alloc\" is created which when read will\nexpose live state of the nodes local alloc file. Performance impact is\nminimal, only a bit of memory overhead per mount point. Still, the code is\nhidden behind CONFIG_OCFS2_FS_STATS. This feature will help us debug\nlocal alloc performance problems on a live system.\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "9c7af40b210e87f8fddd97b0badc0a352862234a",
      "tree": "deb248e5295439b96ad9bd1789e8512f93803142",
      "parents": [
        "ebcee4b5c9136096f64ee6f691a013d7c0a4bc34"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jul 28 18:02:53 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 13 13:57:57 2008 -0700"
      },
      "message": "ocfs2: throttle back local alloc when low on disk space\n\nOcfs2\u0027s local allocator disables itself for the duration of a mount point\nwhen it has trouble allocating a large enough area from the primary bitmap.\nThat can cause performance problems, especially for disks which were only\ntemporarily full or fragmented. This patch allows for the allocator to\nshrink it\u0027s window first, before being disabled. Later, it can also be\nre-enabled so that any performance drop is minimized.\n\nTo do this, we allow the value of osb-\u003elocal_alloc_bits to be shrunk when\nneeded. The default value is recorded in a mostly read-only variable so that\nwe can re-initialize when required.\n\nLocking had to be updated so that we could protect changes to\nlocal_alloc_bits. Mostly this involves protecting various local alloc values\nwith the osb spinlock. A new state is also added, OCFS2_LA_THROTTLED, which\nis used when the local allocator is has shrunk, but is not disabled. If the\navailable space dips below 1 megabyte, the local alloc file is disabled. In\neither case, local alloc is re-enabled 30 seconds after the event, or when\nan appropriate amount of bits is seen in the primary bitmap.\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "ebcee4b5c9136096f64ee6f691a013d7c0a4bc34",
      "tree": "cb28c9135559a8f5aaf4c61b9d39f9c4ce733b55",
      "parents": [
        "53da4939f349d4edd283b043219221ca5b78e4d4"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jul 28 14:55:20 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 13 13:57:57 2008 -0700"
      },
      "message": "ocfs2: Track local alloc bits internally\n\nDo this instead of tracking absolute local alloc size. This avoids\nneedless re-calculatiion of bits from bytes in localalloc.c. Additionally,\nthe value is now in a more natural unit for internal file system bitmap\nwork.\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "53da4939f349d4edd283b043219221ca5b78e4d4",
      "tree": "3e0f8e1bd5474822431cffd1e449df9b639e1772",
      "parents": [
        "a447c0932445f92ce6f4c1bd020f62c5097a7842"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jul 21 14:29:16 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 13 13:57:57 2008 -0700"
      },
      "message": "ocfs2: POSIX file locks support\n\nThis is actually pretty easy since fs/dlm already handles the bulk of the\nwork. The Ocfs2 userspace cluster stack module already uses fs/dlm as the\nunderlying lock manager, so I only had to add the right calls.\n\nCluster-aware POSIX locks (\"plocks\") can be turned off by the same means at\nUNIX locks - mount with \u0027noflocks\u0027, or create a local-only Ocfs2 volume.\nInternally, the file system uses two sets of file_operations, depending on\nwhether cluster aware plocks is required. This turns out to be easier than\nimplementing local-only versions of -\u003elock.\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "a447c0932445f92ce6f4c1bd020f62c5097a7842",
      "tree": "bacf05bc7f9764515cdd6f7dc5e2254776b4f160",
      "parents": [
        "54cebc68c81eacac41a21bdfe99dc889d3882c60"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Oct 13 10:46:57 2008 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 13 10:10:37 2008 -0700"
      },
      "message": "vfs: Use const for kernel parser table\n\nThis is a much better version of a previous patch to make the parser\ntables constant. Rather than changing the typedef, we put the \"const\" in\nall the various places where its required, allowing the __initconst\nexception for nfsroot which was the cause of the previous trouble.\n\nThis was posted for review some time ago and I believe its been in -mm\nsince then.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Alexander Viro \u003caviro@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "00dc417fa3e763345b34ccb6034d72de76eea0a1",
      "tree": "c50da655dbd6747499f4516280f323b90214af62",
      "parents": [
        "c4b929b85bdb64afacbbf6453b1f2bf7e14c9e89"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Fri Oct 03 17:32:11 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Oct 03 17:32:11 2008 -0400"
      },
      "message": "ocfs2: fiemap support\n\nPlug ocfs2 into -\u003efiemap. Some portions of ocfs2_get_clusters() had to be\nrefactored so that the extent cache can be skipped in favor of going\ndirectly to the on-disk records. This makes it easier for us to determine\nwhich extent is the last one in the btree. Also, I\u0027m not sure we want to be\ncaching fiemap lookups anyway as they\u0027re not directly related to data\nread/write.\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: ocfs2-devel@oss.oracle.com\nCc: linux-fsdevel@vger.kernel.org\n"
    },
    {
      "commit": "0e116227a01580acf47437adba3afadf21b6bd5f",
      "tree": "65844ab6db53a7713e258830e571ced05a8d61ae",
      "parents": [
        "adee14b2e1557d0a8559f29681732d05a89dfc35"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Wed Sep 03 01:57:14 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Wed Sep 10 01:44:08 2008 -0700"
      },
      "message": "ocfs2: Fix a bug in direct IO read.\n\nocfs2 will become read-only if we try to read the bytes which pass\nthe end of i_size. This can be easily reproduced by following steps:\n1. mkfs a ocfs2 volume with bs\u003d4k cs\u003d4k and nosparse.\n2. create a small file(say less than 100 bytes) and we will create the file\n   which is allocated 1 cluster.\n3. read 8196 bytes from the kernel using O_DIRECT which exceeds the limit.\n4. The ocfs2 volume becomes read-only and dmesg shows:\nOCFS2: ERROR (device sda13): ocfs2_direct_IO_get_blocks:\nInode 66010 has a hole at block 1\nFile system is now read-only due to the potential of on-disk corruption.\nPlease run fsck.ocfs2 once the file system is unmounted.\n\nSo suppress the ERROR message.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "d6817cdbd143f87f9d7c59a4c3194091190eeb84",
      "tree": "5744bb0cb5d3083f37674d845576d61431b4ebb3",
      "parents": [
        "de6bf18e9ce0df807dab08cff08751cac383429d"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "Joel.Becker@oracle.com",
        "time": "Fri Aug 22 14:30:10 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Aug 25 07:29:47 2008 -0700"
      },
      "message": "ocfs2: Increment the reference count of an already-active stack.\n\nThe ocfs2_stack_driver_request() function failed to increment the\nrefcount of an already-active stack.  It only did the increment on the\nfirst reference.  Whoops.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nTested-by: Marcos Matsunaga \u003cmarcos.matsunaga@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": "a1af7d15a18d1e375b0a6fee93789a0bbfe088b4",
      "tree": "24af83391b39cf787b7579859682c4050970ed76",
      "parents": [
        "a57a874b04e27cb530a0e18c244387452e73ccce"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Tue Aug 19 17:20:28 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Fri Aug 22 11:08:38 2008 -0700"
      },
      "message": "ocfs2: Fix sleep-with-spinlock recovery regression\n\nThis fixes a bug introduced with 539d8264093560b917ee3afe4c7f74e5da09d6a5:\n    [PATCH 2/2] ocfs2: Fix race between mount and recovery\n\nocfs2_mark_dead_nodes() was reading journal inodes while holding the\nspinlock protecting our in-memory recovery state. The fix is very simple -\nthe disk state is protected by a cluster lock that\u0027s already held, so we\njust move the spinlock down past the read.\n\nReviewed-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "a57a874b04e27cb530a0e18c244387452e73ccce",
      "tree": "95b12c06d13ad9767bf5474bc59fd762e1df5765",
      "parents": [
        "18496e80f729be5f536d0315751b3bbb95ca913e"
      ],
      "author": {
        "name": "Alexander Beregalov",
        "email": "a.beregalov@gmail.com",
        "time": "Wed Aug 06 00:50:41 2008 +0400"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Fri Aug 22 10:56:57 2008 -0700"
      },
      "message": "[PATCH] ocfs2/cluster/netdebug.c: fix warning\n\nocfs2/cluster/netdebug.c: fix warning\n\nfs/ocfs2/cluster/netdebug.c:154: warning: format \u0027%lu\u0027 expects\n     type \u0027long unsigned int\u0027, but argument 17 has type \u0027suseconds_t\u0027\n\nSigned-off-by: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "18496e80f729be5f536d0315751b3bbb95ca913e",
      "tree": "78b5c43b39bdf41571527f421780eb1d5dd9f778",
      "parents": [
        "d3ee1b405872214609868f3cde631ac157026dd0"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Thu Aug 07 00:11:12 2008 +0300"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Fri Aug 22 10:56:40 2008 -0700"
      },
      "message": "[PATCH] ocfs2/cluster/tcp.c: make some functions static\n\nCommit 0f475b2abed6cbccee1da20a0bef2895eb2a0edd (ocfs2/net: Silence build\nwarnings) made sense as far as it fixed compile warnings, but it was not\nrequired that it made the functions global.\n\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "c259ae52e204d42f8b2d484c85517a4c367030e1",
      "tree": "e5f9e57aeee77704758c6dfeb19654140a827ef2",
      "parents": [
        "961cecbee6786f4b1f1b8f695e87045b583f9f49"
      ],
      "author": {
        "name": "Julia Lawall",
        "email": "julia@diku.dk",
        "time": "Mon Jul 21 09:59:15 2008 +0200"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Thu Jul 31 16:21:14 2008 -0700"
      },
      "message": "[PATCH] ocfs2: Release mutex in error handling code\n\nThe mutex is released on a successful return, so it would seem that it\nshould be released on an error return as well.\n\nThe semantic patch finds this problem is as follows:\n(http://www.emn.fr/x-info/coccinelle/)\n\n// \u003csmpl\u003e\n@@\nexpression l;\n@@\n\nmutex_lock(l);\n... when !\u003d mutex_unlock(l)\n    when any\n    when strict\n(\nif (...) { ... when !\u003d mutex_unlock(l)\n+   mutex_unlock(l);\n    return ...;\n}\n|\nmutex_unlock(l);\n)\n// \u003c/smpl\u003e\n\nSigned-off-by: Julia Lawall \u003cjulia@diku.dk\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "961cecbee6786f4b1f1b8f695e87045b583f9f49",
      "tree": "350d8604d04c594463372e3fab0cab2e953c7770",
      "parents": [
        "539d8264093560b917ee3afe4c7f74e5da09d6a5"
      ],
      "author": {
        "name": "Sunil Mushran",
        "email": "sunil.mushran@oracle.com",
        "time": "Wed Jul 16 17:22:22 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Thu Jul 31 16:21:14 2008 -0700"
      },
      "message": "[PATCH] ocfs2: Fix oops when racing files truncates with writes into an mmap region\n\nThis patch fixes an oops that is reproduced when one races writes to a mmap-ed\nregion with another process truncating the file.\n\nSigned-off-by: Sunil Mushran \u003csunil.mushran@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "539d8264093560b917ee3afe4c7f74e5da09d6a5",
      "tree": "1fce83387272c0b2d61bd945769f4984aa5e79ce",
      "parents": [
        "c69991aac71a8beb57c11d651c7fd4b24c32aa8b"
      ],
      "author": {
        "name": "Sunil Mushran",
        "email": "sunil.mushran@oracle.com",
        "time": "Mon Jul 14 17:31:10 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Thu Jul 31 16:21:14 2008 -0700"
      },
      "message": "[PATCH 2/2] ocfs2: Fix race between mount and recovery\n\nAs the fs recovery is asynchronous, there is a small chance that another\nnode can mount (and thus recover) the slot before the recovery thread\ngets to it.\n\nIf this happens, the recovery thread will block indefinitely on the\njournal/slot lock as that lock will be held for the duration of the mount\n(by design) by the node assigned to that slot.\n\nThe solution implemented is to keep track of the journal replays using\na recovery generation in the journal inode, which will be incremented by the\nthread replaying that journal. The recovery thread, before attempting the\nblocking lock on the journal/slot lock, will compare the generation on disk\nwith what it has cached and skip recovery if it does not match.\n\nThis bug appears to have been inadvertently introduced during the mount/umount\nvote removal by mainline commit 34d024f84345807bf44163fac84e921513dde323. In the\nmount voting scheme, the messaging would indirectly indicate that the slot\nwas being recovered.\n\nSigned-off-by: Sunil Mushran \u003csunil.mushran@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "c69991aac71a8beb57c11d651c7fd4b24c32aa8b",
      "tree": "936505f5248e2e7cd89407cb4d328b0d2027cafa",
      "parents": [
        "ecb3d28c7edd58b54f16838c434b342ba9195bec"
      ],
      "author": {
        "name": "Sunil Mushran",
        "email": "sunil.mushran@oracle.com",
        "time": "Mon Jul 14 17:31:09 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Thu Jul 31 16:21:13 2008 -0700"
      },
      "message": "[PATCH 1/2] ocfs2: Add counter in struct ocfs2_dinode to track journal replays\n\nThis patch renames the ij_pad to ij_recovery_generation in struct ocfs2_dinode.\nThis will be used to keep count of journal replays after an unclean shutdown.\n\nSigned-off-by: Sunil Mushran \u003csunil.mushran@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "e6305c43eda10ebfd2ad9e35d6e172ccc7bb3695",
      "tree": "8a95bd0e27fb3ce895cca9ef91af2e1605e4cdab",
      "parents": [
        "1bd5191d9f5d1928c4efdf604c4164b04bb88dbe"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jul 15 21:03:57 2008 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 26 20:53:14 2008 -0400"
      },
      "message": "[PATCH] sanitize -\u003epermission() prototype\n\n* kill nameidata * argument; map the 3 bits in -\u003eflags anybody cares\n  about to new MAY_... ones and pass with the mask.\n* kill redundant gfs2_iop_permission()\n* sanitize ecryptfs_permission()\n* fix remaining places where -\u003epermission() instances might barf on new\n  MAY_... found in mask.\n\nThe obvious next target in that direction is permission(9)\n\nfolded fix for nfs_permission() breakage from Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "51cc50685a4275c6a02653670af9f108a64e01cf",
      "tree": "819d47bd2b0c8a9d1835d863853804b0a0242b97",
      "parents": [
        "d91958815d214ea365b98cbff6215383897edcb6"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Fri Jul 25 19:45:34 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 26 12:00:07 2008 -0700"
      },
      "message": "SL*B: drop kmem cache argument from constructor\n\nKmem cache passed to constructor is only needed for constructors that are\nthemselves multiplexeres.  Nobody uses this \"feature\", nor does anybody uses\npassed kmem cache in non-trivial way, so pass only pointer to object.\n\nNon-trivial places are:\n\tarch/powerpc/mm/init_64.c\n\tarch/powerpc/mm/hugetlbpage.c\n\nThis is flag day, yes.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nAcked-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nAcked-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Jon Tollefson \u003ckniht@linux.vnet.ibm.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Matt Mackall \u003cmpm@selenic.com\u003e\n[akpm@linux-foundation.org: fix arch/powerpc/mm/hugetlbpage.c]\n[akpm@linux-foundation.org: fix mm/slab.c]\n[akpm@linux-foundation.org: fix ubifs]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a6795e9ebb420d87af43789174689af0d66d1d35",
      "tree": "fb2a86ad010015fdd311f3b7f6ef30f60c14b8f7",
      "parents": [
        "f89ab8619e5320cc9c2576f5f8dcbaf6c0ba3950"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Jul 17 15:21:29 2008 -0700"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Jul 17 15:21:29 2008 -0700"
      },
      "message": "configfs: Allow -\u003emake_item() and -\u003emake_group() to return detailed errors.\n\nThe configfs operations -\u003emake_item() and -\u003emake_group() currently\nreturn a new item/group.  A return of NULL signifies an error.  Because\nof this, -ENOMEM is the only return code bubbled up the stack.\n\nMultiple folks have requested the ability to return specific error codes\nwhen these operations fail.  This patch adds that ability by changing the\n-\u003emake_item/group() ops to return ERR_PTR() values.  These errors are\nbubbled up appropriately.  NULL returns are changed to -ENOMEM for\ncompatibility.\n\nAlso updated are the in-kernel users of configfs.\n\nThis is a rework of reverted commit 11c3b79218390a139f2d474ee1e983a672d5839a.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "f89ab8619e5320cc9c2576f5f8dcbaf6c0ba3950",
      "tree": "e703050b232c76de7cb25afd63a2b4dd885c4bb9",
      "parents": [
        "5b664cb235e97afbf34db9c4d77f08ebd725335e"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Jul 17 14:53:48 2008 -0700"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Jul 17 14:53:48 2008 -0700"
      },
      "message": "Revert \"configfs: Allow -\u003emake_item() and -\u003emake_group() to return detailed errors.\"\n\nThis reverts commit 11c3b79218390a139f2d474ee1e983a672d5839a.  The code\nwill move to PTR_ERR().\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "5b664cb235e97afbf34db9c4d77f08ebd725335e",
      "tree": "518540649c38342209790de8e0b575ac1a6fa722",
      "parents": [
        "f39548a6ad1dbdfaab552419386ec5bb1d76fa0d",
        "c0420ad2ca514551ca086510b0e7d17a05c70492"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 17 10:55:51 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 17 10:55:51 2008 -0700"
      },
      "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:\n  [PATCH] ocfs2: fix oops in mmap_truncate testing\n  configfs: call drop_link() to cleanup after create_link() failure\n  configfs: Allow -\u003emake_item() and -\u003emake_group() to return detailed errors.\n  configfs: Fix failing mkdir() making racing rmdir() fail\n  configfs: Fix deadlock with racing rmdir() and rename()\n  configfs: Make configfs_new_dirent() return error code instead of NULL\n  configfs: Protect configfs_dirent s_links list mutations\n  configfs: Introduce configfs_dirent_lock\n  ocfs2: Don\u0027t snprintf() without a format.\n  ocfs2: Fix CONFIG_OCFS2_DEBUG_FS #ifdefs\n  ocfs2/net: Silence build warnings on sparc64\n  ocfs2: Handle error during journal load\n  ocfs2: Silence an error message in ocfs2_file_aio_read()\n  ocfs2: use simple_read_from_buffer()\n  ocfs2: fix printk format warnings with OCFS2_FS_STATS\u003dn\n  [PATCH 2/2] ocfs2: Instrument fs cluster locks\n  [PATCH 1/2] ocfs2: Add CONFIG_OCFS2_FS_STATS config option\n"
    },
    {
      "commit": "c0420ad2ca514551ca086510b0e7d17a05c70492",
      "tree": "d0c66f31d3ca100ad2bc0ac1dcd0e293865fd894",
      "parents": [
        "e75206517504461778c283b942440ef312e437d5"
      ],
      "author": {
        "name": "Coly Li",
        "email": "coyli@suse.de",
        "time": "Mon Jun 30 18:45:45 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Wed Jul 16 16:13:04 2008 -0700"
      },
      "message": "[PATCH] ocfs2: fix oops in mmap_truncate testing\n\nThis patch fixes a mmap_truncate bug which was found by ocfs2 test suite.\n\nIn an ocfs2 cluster more than 1 node, run program mmap_truncate, which races\nmmap writes and truncates from multiple processes. While the test is\nrunning, a stat from another node forces writeout, causing an oops in\nocfs2_get_block() because it sees a buffer to write which isn\u0027t allocated.\n\nThis patch fixed the bug by clear dirty and uptodate bits in buffer, leave\nthe buffer unmapped and return.\n\nFix is suggested by Mark Fasheh, and I code up the patch.\n\nSigned-off-by: Coly Li \u003ccoyli@suse.de\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "2fceef397f9880b212a74c418290ce69e7ac00eb",
      "tree": "d9cc09ab992825ef7fede4a688103503e3caf655",
      "parents": [
        "feae1ef116ed381625d3731c5ae4f4ebcb3fa302",
        "bce7f793daec3e65ec5c5705d2457b81fe7b5725"
      ],
      "author": {
        "name": "Jonathan Corbet",
        "email": "corbet@lwn.net",
        "time": "Mon Jul 14 15:29:34 2008 -0600"
      },
      "committer": {
        "name": "Jonathan Corbet",
        "email": "corbet@lwn.net",
        "time": "Mon Jul 14 15:29:34 2008 -0600"
      },
      "message": "Merge commit \u0027v2.6.26\u0027 into bkl-removal\n"
    },
    {
      "commit": "11c3b79218390a139f2d474ee1e983a672d5839a",
      "tree": "03fa1a4927f2d9856ee45a64d522424478058b6f",
      "parents": [
        "6d8344baee99402de58b5fa5dfea197242955c15"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Jun 12 14:00:18 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jul 14 13:57:16 2008 -0700"
      },
      "message": "configfs: Allow -\u003emake_item() and -\u003emake_group() to return detailed errors.\n\nThe configfs operations -\u003emake_item() and -\u003emake_group() currently\nreturn a new item/group.  A return of NULL signifies an error.  Because\nof this, -ENOMEM is the only return code bubbled up the stack.\n\nMultiple folks have requested the ability to return specific error codes\nwhen these operations fail.  This patch adds that ability by changing the\n-\u003emake_item/group() ops to return an int.\n\nAlso updated are the in-kernel users of configfs.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "fe9f387740ac7cb3b7c2fffa76807e997e6c6292",
      "tree": "40c052c3ace5e07980c01aa5c4ea5d2d0df9638b",
      "parents": [
        "e407e39783a7206d20b3e9961aedf272de966e31"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Jun 12 22:39:18 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jul 14 13:57:15 2008 -0700"
      },
      "message": "ocfs2: Don\u0027t snprintf() without a format.\n\nSome system files are per-slot.  Their names include the slot number.\nocfs2_sprintf_system_inode_name() uses the system inode definitions to\nfill in the slot number with snprintf().\n\nFor global system files, there is no node number, and the name was\nprinted as a format with no arguments.  -Wformat-nonliteral and\n-Wformat-security don\u0027t like this.  Instead, use a static \"%s\" format\nand the name as the argument.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "e407e39783a7206d20b3e9961aedf272de966e31",
      "tree": "f38fb034a20b36ad016e4f5d80fbdd31c609fb67",
      "parents": [
        "461c6a30eca6f25add1dadb9fd8a1d8e89a6e627"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Jun 12 22:35:39 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jul 14 13:57:15 2008 -0700"
      },
      "message": "ocfs2: Fix CONFIG_OCFS2_DEBUG_FS #ifdefs\n\nA couple places use OCFS2_DEBUG_FS where they really mean\nCONFIG_OCFS2_DEBUG_FS.\n\nReported-by: Robert P. J. Day \u003crpjday@crashcourse.ca\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "461c6a30eca6f25add1dadb9fd8a1d8e89a6e627",
      "tree": "6754c44a95964287e0e8daeaa5f202467d441c8d",
      "parents": [
        "01af482037d32c215aab208a0b110ffe6fd782c0"
      ],
      "author": {
        "name": "Sunil Mushran",
        "email": "sunil.mushran@oracle.com",
        "time": "Mon May 19 16:23:37 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jul 14 13:57:15 2008 -0700"
      },
      "message": "ocfs2/net: Silence build warnings on sparc64\n\nsuseconds_t is type long on most arches except sparc64 where it is type int.\nThis patch silences the following warnings that are generated when building\non it.\n\nnetdebug.c: In function \u0027nst_seq_show\u0027:\nnetdebug.c:152: warning: format \u0027%lu\u0027 expects type \u0027long unsigned int\u0027, but argument 13 has type \u0027suseconds_t\u0027\nnetdebug.c:152: warning: format \u0027%lu\u0027 expects type \u0027long unsigned int\u0027, but argument 15 has type \u0027suseconds_t\u0027\nnetdebug.c:152: warning: format \u0027%lu\u0027 expects type \u0027long unsigned int\u0027, but argument 17 has type \u0027suseconds_t\u0027\nnetdebug.c: In function \u0027sc_seq_show\u0027:\nnetdebug.c:332: warning: format \u0027%lu\u0027 expects type \u0027long unsigned int\u0027, but argument 19 has type \u0027suseconds_t\u0027\nnetdebug.c:332: warning: format \u0027%lu\u0027 expects type \u0027long unsigned int\u0027, but argument 21 has type \u0027suseconds_t\u0027\nnetdebug.c:332: warning: format \u0027%lu\u0027 expects type \u0027long unsigned int\u0027, but argument 23 has type \u0027suseconds_t\u0027\nnetdebug.c:332: warning: format \u0027%lu\u0027 expects type \u0027long unsigned int\u0027, but argument 25 has type \u0027suseconds_t\u0027\nnetdebug.c:332: warning: format \u0027%lu\u0027 expects type \u0027long unsigned int\u0027, but argument 27 has type \u0027suseconds_t\u0027\nnetdebug.c:332: warning: format \u0027%lu\u0027 expects type \u0027long unsigned int\u0027, but argument 29 has type \u0027suseconds_t\u0027\n\nSigned-off-by: Sunil Mushran \u003csunil.mushran@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "01af482037d32c215aab208a0b110ffe6fd782c0",
      "tree": "c15e6ca3753aded21dc6e0821ffc66519c5c1abb",
      "parents": [
        "56753bd3b9220f6f2477eb1cf97f40c24e0a4c91"
      ],
      "author": {
        "name": "Wengang Wang",
        "email": "wen.gang.wang@oracle.com",
        "time": "Tue Jun 10 14:24:48 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jul 14 13:57:15 2008 -0700"
      },
      "message": "ocfs2: Handle error during journal load\n\nThis patch ensures the mount fails if the fs is unable to load the journal.\n\nSigned-off-by: Wengang Wang \u003cwen.gang.wang@oracle.com\u003e\nAcked-by: Sunil Mushran \u003csunil.mushran@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "56753bd3b9220f6f2477eb1cf97f40c24e0a4c91",
      "tree": "1b80c6d64a5089d96195f6a718ca76a5bb002684",
      "parents": [
        "7600c72b75bab374ad39b2a4799a0728579a8e2f"
      ],
      "author": {
        "name": "Sunil Mushran",
        "email": "sunil.mushran@oracle.com",
        "time": "Mon Jun 09 11:24:41 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jul 14 13:57:15 2008 -0700"
      },
      "message": "ocfs2: Silence an error message in ocfs2_file_aio_read()\n\nThis patch silences an EINVAL error message in ocfs2_file_aio_read()\nthat is always due to a user error.\n\nSigned-off-by: Sunil Mushran \u003csunil.mushran@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "7600c72b75bab374ad39b2a4799a0728579a8e2f",
      "tree": "751862ffd0b70c6ce6dbfcde3002b1a4a1225493",
      "parents": [
        "dd25e55ea133b14678cfaa9e205b082b24b26dbc"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Mon Jun 09 16:34:23 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jul 14 13:57:15 2008 -0700"
      },
      "message": "ocfs2: use simple_read_from_buffer()\n\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nAcked-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "dd25e55ea133b14678cfaa9e205b082b24b26dbc",
      "tree": "ddbf448a41cf491de70395bbb788dc06bb6a6deb",
      "parents": [
        "8ddb7b004dfa1832a750e199df8bff4b75b73565"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Wed May 28 14:41:00 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jul 14 13:57:14 2008 -0700"
      },
      "message": "ocfs2: fix printk format warnings with OCFS2_FS_STATS\u003dn\n\nFix printk format warnings when OCFS2_FS_STATS\u003dn:\n\nlinux-next-20080528/fs/ocfs2/dlmglue.c: In function \u0027ocfs2_dlm_seq_show\u0027:\nlinux-next-20080528/fs/ocfs2/dlmglue.c:2623: warning: format \u0027%llu\u0027 expects type \u0027long long unsigned int\u0027, but argument 3 has type \u0027int\u0027\nlinux-next-20080528/fs/ocfs2/dlmglue.c:2623: warning: format \u0027%llu\u0027 expects type \u0027long long unsigned int\u0027, but argument 4 has type \u0027int\u0027\nlinux-next-20080528/fs/ocfs2/dlmglue.c:2623: warning: format \u0027%llu\u0027 expects type \u0027long long unsigned int\u0027, but argument 7 has type \u0027int\u0027\nlinux-next-20080528/fs/ocfs2/dlmglue.c:2623: warning: format \u0027%llu\u0027 expects type \u0027long long unsigned int\u0027, but argument 8 has type \u0027int\u0027\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "8ddb7b004dfa1832a750e199df8bff4b75b73565",
      "tree": "92adac97690c27e44a65825864d4d5f9a6a2ca22",
      "parents": [
        "ce7231e92dac381f6e4f9cfdfdf9e0ea055223ad"
      ],
      "author": {
        "name": "Sunil Mushran",
        "email": "sunil.mushran@oracle.com",
        "time": "Tue May 13 13:45:15 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jul 14 13:57:14 2008 -0700"
      },
      "message": "[PATCH 2/2] ocfs2: Instrument fs cluster locks\n\nThis patch adds code to track the number of times the fs takes\nvarious cluster locks as well as the times associated with it.\nThe information is made available to users via debugfs.\n\nThis patch was originally written by Jan Kara \u003cjack@suse.cz\u003e.\n\nSigned-off-by: Sunil Mushran \u003csunil.mushran@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "e988cf1cfed4ed80bf40528e655fe18bed6a38b6",
      "tree": "eeaf62bcf6e9f9b3154b70bf98e70881234f7ccc",
      "parents": [
        "6329d3021bcfa9038621e6e917d98929421d8ec8"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Thu Jul 10 09:25:39 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Thu Jul 10 09:25:39 2008 -0700"
      },
      "message": "ocfs2: Fix flags in ocfs2_file_lock\n\nThe stack-glue merge changed the way we use flags in dlmglue in that we now\nuse the fs/dlm equivalents. Unfortunately, a merge error left the new flock\ncode only partially updated. This took a while to show up though, because\nthe lock level constants are actually identical between o2dlm and fs/dlm.\nThe *_CONVERT and *_NOQUEUE flags have different values though, which is\neventually causing a crash in flags_to_o2dlm().\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "18c6ac383f3e46cfce08d0bf972705852a4e1268",
      "tree": "5033900d63758c6259a6af667a07765d0c9dde11",
      "parents": [
        "b2798bf0ec2cb5a17bfc1430c5ba6d971c436a03"
      ],
      "author": {
        "name": "Sunil Mushran",
        "email": "sunil.mushran@oracle.com",
        "time": "Mon Jul 07 10:06:29 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jul 07 11:24:29 2008 -0700"
      },
      "message": "[PATCH] ocfs2/dlm: Fixes oops in dlm_new_lockres()\n\nPatch fixes a race that can result in an oops while adding a\nlockres to the dlm lockres tracking list.\n\nBug introduced by mainline commit 29576f8bb54045be944ba809d4fca1ad77c94165.\n\nSigned-off-by: Sunil Mushran \u003csunil.mushran@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "b7fdf9fdd6457c9ed02099fe82bab92b0b3e291b",
      "tree": "d35a977d782982fc49a4ca86bea37195c5502ecf",
      "parents": [
        "930ab4e532623795f934467c452a8c71be2c30fe"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Tue May 20 19:16:28 2008 +0200"
      },
      "committer": {
        "name": "Jonathan Corbet",
        "email": "corbet@lwn.net",
        "time": "Wed Jul 02 15:06:23 2008 -0600"
      },
      "message": "ocfs2-stack_user: BKL pushdown\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\n"
    },
    {
      "commit": "2c39450b39880e162b3eb339672314101f58ee1a",
      "tree": "48e99a531dd5263d7a84cf23492373f45fbdea6e",
      "parents": [
        "9f9a99f4eccc64650e932090cff0ebd07b81e334"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri May 30 15:58:26 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jun 16 10:46:52 2008 -0700"
      },
      "message": "ocfs2: Remove -\u003ehangup() from stack glue operations.\n\nThe -\u003ehangup() call was only used to execute ocfs2_hb_ctl.  Now that\nthe generic stack glue code handles this, the underlying stack drivers\ndon\u0027t need to know about it.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "9f9a99f4eccc64650e932090cff0ebd07b81e334",
      "tree": "44315dfb1b5f3d4fc802e4d7cde5d681832b34f0",
      "parents": [
        "3878f110f71a0971ff7acc15dd6db711b6ef37c6"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri May 30 15:43:58 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jun 16 10:46:51 2008 -0700"
      },
      "message": "ocfs2: Move the call of ocfs2_hb_ctl into the stack glue.\n\nTake o2hb_stop() out of the o2cb code and make it part of the generic\nstack glue as ocfs2_leave_group().  This also allows us to remove the\nocfs2_get_hb_ctl_path() function - everything to do with hb_ctl is now\npart of stackglue.c.  o2cb no longer needs a -\u003ehangup() function.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "3878f110f71a0971ff7acc15dd6db711b6ef37c6",
      "tree": "39d5e1e8508cab23ba79c5da5abf897ca5843a9b",
      "parents": [
        "066519068ad2fbe98c7f45552b1f592903a9c8c8"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri May 30 15:30:49 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jun 16 10:46:50 2008 -0700"
      },
      "message": "ocfs2: Move the hb_ctl_path sysctl into the stack glue.\n\nocfs2 needs to call out to the hb_ctl program at unmount for all cluster\nstacks.  The first step is to move the hb_ctl_path sysctl out of the\no2cb code and into the generic stack glue.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "0f475b2abed6cbccee1da20a0bef2895eb2a0edd",
      "tree": "386f7ceb5ce95482f476d087397d56056f8c6fe5",
      "parents": [
        "959040c37a8cae8117907d4aed87f1b01ff1ea19"
      ],
      "author": {
        "name": "Sunil Mushran",
        "email": "sunil.mushran@oracle.com",
        "time": "Mon May 12 18:31:37 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Fri May 30 15:15:12 2008 -0700"
      },
      "message": "[PATCH 3/3] ocfs2/net: Silence build warnings\n\nThis patch silences the build warnings concerning o2net_init_nst()\nand friends when building without CONFIG_DEBUG_FS enabled.\n\nSigned-off-by: Sunil Mushran \u003csunil.mushran@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "959040c37a8cae8117907d4aed87f1b01ff1ea19",
      "tree": "043ec96c152c2a39372582425c5508922d98ea1d",
      "parents": [
        "271d772d02507c7541d5e6b4938ed2380e59a39a"
      ],
      "author": {
        "name": "Sunil Mushran",
        "email": "sunil.mushran@oracle.com",
        "time": "Mon May 12 18:31:36 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Fri May 30 15:15:10 2008 -0700"
      },
      "message": "[PATCH 2/3] ocfs2/dlm: Silence build warnings\n\nThis patch silences the build warnings concerning dlm_debug_init()\nand friends when building without CONFIG_DEBUG_FS enabled.\n\nSigned-off-by: Sunil Mushran \u003csunil.mushran@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "271d772d02507c7541d5e6b4938ed2380e59a39a",
      "tree": "7d7a0c25c6089563a31d3f658834794ed090d40a",
      "parents": [
        "a12630b186d56a77d17c9b34c82b88dda4337ed7"
      ],
      "author": {
        "name": "Sunil Mushran",
        "email": "sunil.mushran@oracle.com",
        "time": "Mon May 12 18:31:35 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Fri May 30 15:15:04 2008 -0700"
      },
      "message": "[PATCH 1/3] ocfs2/net: Silence build warnings\n\nThis patch silences the build warnings concerning o2net_debugfs_init()\nand friends when building without CONFIG_DEBUG_FS enabled.\n\nSigned-off-by: Sunil Mushran \u003csunil.mushran@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "a12630b186d56a77d17c9b34c82b88dda4337ed7",
      "tree": "f6b16a06beefc527d04562833b843146b360352d",
      "parents": [
        "1beee8dc8cf58e3f605bd7b34d7a39939be7d8d2"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri May 09 18:49:29 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Fri May 30 15:14:08 2008 -0700"
      },
      "message": "ocfs2: Rename \u0027user_stack\u0027 plugin structure to \u0027ocfs2_user_plugin\u0027\n\nThe static structure describing the userspace cluster plugin for ocfs2\nwas named \u0027user_stack\u0027, which is a real pain when people are grep(1)ing\nthe tree for the program stack object \u0027user_stack\u0027.  Change the name to\nsomething distinct and namespaced.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "9d8df6aa9b1ca74127b11537d91de492dbea666a",
      "tree": "a17ffeafcf0e85b400c6d9ff7dce13f5a4fc8947",
      "parents": [
        "f6c2fb5ccff51e19850b1aca024a3b20b16a81e9"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ftp.linux.org.uk",
        "time": "Wed May 21 06:32:11 2008 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 21 16:55:59 2008 -0700"
      },
      "message": "ocfs2 endianness fixes\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4ba1c5bfd2e5a6c9528eb7777b66c297e70f61ca",
      "tree": "a06a4587053ce6f999920651880a499c058fd58a",
      "parents": [
        "bc535809c06ada210d89f5a43b335c68ecbb8e1b"
      ],
      "author": {
        "name": "Sunil Mushran",
        "email": "sunil.mushran@oracle.com",
        "time": "Fri Apr 18 15:03:59 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Wed Apr 30 17:09:58 2008 -0700"
      },
      "message": "ocfs2: Use GFP_NOFS in kmalloc during localalloc window move\n\nkmalloc() during a localalloc window move can trigger the mm to prune\nthe dcache which inturn can trigger the fs to delete an inode causing\nit start a recursive transaction.\n\nThe fix also makes the change in kmalloc during localalloc shutdown\njust to be safe.\n\nFixes oss bugzilla#901\nhttp://oss.oracle.com/bugzilla/show_bug.cgi?id\u003d901\n\nSigned-off-by: Sunil Mushran \u003csunil.mushran@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "bc535809c06ada210d89f5a43b335c68ecbb8e1b",
      "tree": "3186b9d590a06d17a7026680fba57546e0d0c418",
      "parents": [
        "95642e56647d84963428a1168baa8a73cb782ac3"
      ],
      "author": {
        "name": "Sunil Mushran",
        "email": "sunil.mushran@oracle.com",
        "time": "Fri Apr 18 10:23:53 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Wed Apr 30 17:09:54 2008 -0700"
      },
      "message": "ocfs2: Allow uid/gid/perm changes of symlinks\n\nThis patch adds the ability to change attributes of a symlink.\nFixes oss bugzilla#963\nhttp://oss.oracle.com/bugzilla/show_bug.cgi?id\u003d963\n\nSigned-off-by: Sunil Mushran \u003csunil.mushran@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "95642e56647d84963428a1168baa8a73cb782ac3",
      "tree": "b51e64fc7a83b54abacd4d87f6adb39d0bf9859f",
      "parents": [
        "4af694e672aaa85940d6e29d27b7eeea5f6eb258"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Mon Apr 21 11:49:37 2008 +0300"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Wed Apr 30 17:09:40 2008 -0700"
      },
      "message": "ocfs2/dlm: dlmdebug.c: make 2 functions static\n\nThis patch makes the following needlessly global functions static:\n- stringify_lockname()\n- dlm_debug_put()\n\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nAcked-by: Sunil Mushran \u003csunil.mushran@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "4af694e672aaa85940d6e29d27b7eeea5f6eb258",
      "tree": "1b3c44adc3aed1e90b6468412b8a1bcc527c1668",
      "parents": [
        "4d8755b5e667df8f01647773ba744a5ac97e68e6"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Mon Apr 21 11:49:31 2008 +0300"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Wed Apr 30 17:09:25 2008 -0700"
      },
      "message": "ocfs2: make struct o2cb_stack_ops static\n\nThis patch makes the needlessly global struct o2cb_stack_ops static.\n\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nAcked-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "4d8755b5e667df8f01647773ba744a5ac97e68e6",
      "tree": "ea6a4a785196d0ed1994716796cf7f9d8f5e902d",
      "parents": [
        "9d80f7539a91c0154e40fc9e4ae5e818dd8f102e"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Mon Apr 21 11:49:26 2008 +0300"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Wed Apr 30 17:09:08 2008 -0700"
      },
      "message": "ocfs2: make struct ocfs2_control_device static\n\nThis patch makes the needlessly global struct ocfs2_control_device\nstatic.\n\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nAcked-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    }
  ],
  "next": "9d80f7539a91c0154e40fc9e4ae5e818dd8f102e"
}
