)]}'
{
  "log": [
    {
      "commit": "4be929be34f9bdeffa40d815d32d7d60d2c7f03b",
      "tree": "4d2c6e2b8ef766e565e2e050ee151de2e02081d3",
      "parents": [
        "940370fc86b920b51a34217a1facc3e9e97c2456"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon May 24 14:33:03 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 25 08:07:02 2010 -0700"
      },
      "message": "kernel-wide: replace USHORT_MAX, SHORT_MAX and SHORT_MIN with USHRT_MAX, SHRT_MAX and SHRT_MIN\n\n- C99 knows about USHRT_MAX/SHRT_MAX/SHRT_MIN, not\n  USHORT_MAX/SHORT_MAX/SHORT_MIN.\n\n- Make SHRT_MIN of type s16, not int, for consistency.\n\n[akpm@linux-foundation.org: fix drivers/dma/timb_dma.c]\n[akpm@linux-foundation.org: fix security/keys/keyring.c]\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nAcked-by: WANG Cong \u003cxiyou.wangcong@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "75fe0a2477dab30f00c228f9a4d79009d5677bde",
      "tree": "d52b2118634196ae6d3d89431acbbf43432db835",
      "parents": [
        "73459dcc67e77aa5cb28d51b2d84dd145977ace3"
      ],
      "author": {
        "name": "Dmitry Monakhov",
        "email": "dmonakhov@openvz.org",
        "time": "Thu Mar 04 17:32:16 2010 +0300"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri May 21 18:31:25 2010 -0400"
      },
      "message": "ocfs2: replace inode uid,gid,mode initialization with helper function\n\nAcked-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Dmitry Monakhov \u003cdmonakhov@openvz.org\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "537d81ca7c5338e4f13f3e7e7b50e87ba293ec68",
      "tree": "7dd6ece3385c60dedc4c9d556ab4e7d38c8cc7e9",
      "parents": [
        "365f0cb9d2d5eea911798935133e8dd27ea5f3fc"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Thu May 13 17:53:22 2010 -0700"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri May 21 18:31:20 2010 -0400"
      },
      "message": "ocfs: constify xattr_handler\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "c06bcbfa1ed8daaeb2a262f372b411207891e229",
      "tree": "db734e409643108ea4b5df28bf18bcfac654eaca",
      "parents": [
        "52a9ee281cfb26fffce1d6c409fb4b1f4aa8a766"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu May 13 22:14:53 2010 +0200"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri May 21 19:30:48 2010 +0200"
      },
      "message": "ocfs2: Fix lock inversion in quotas during umount\n\nWe cannot cancel delayed work from ocfs2_local_free_info because that is called\nwith dqonoff_mutex held and the work it cancels requires dqonoff_mutex to\nfinish. Cancel the work before acquiring dqonoff_mutex.\n\nAcked-by: Joel Becker \u003cJoel.Becker@oracle.com\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "52a9ee281cfb26fffce1d6c409fb4b1f4aa8a766",
      "tree": "b30f8ac1bab7f793f7c3c999e9df59818578e6d9",
      "parents": [
        "741e128933448e589a85286e535078b24f4cf568"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu May 13 20:18:45 2010 +0200"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri May 21 19:30:48 2010 +0200"
      },
      "message": "ocfs2: Use __dquot_transfer to avoid lock inversion\n\ndquot_transfer() acquires own references to dquots via dqget(). Thus it waits\nfor dq_lock which creates a lock inversion because dq_lock ranks above\ntransaction start but transaction is already started in ocfs2_setattr(). Fix\nthe problem by passing own references directly to __dquot_transfer.\n\nAcked-by: Joel Becker \u003cJoel.Becker@oracle.com\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "741e128933448e589a85286e535078b24f4cf568",
      "tree": "40a069e5c7484673529f0747a9995cc7d2a85f00",
      "parents": [
        "832d09cf1438bd172f69478bde74f20f05ec0115"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu May 13 18:05:15 2010 +0200"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri May 21 19:30:48 2010 +0200"
      },
      "message": "ocfs2: Fix NULL pointer deref when writing local dquot\n\ncommit_dqblk() can write quota info to global file. That is actually a bad\nthing to do because if we are just modifying local quota file, we are not\nprepared (do not hold proper locks, do not have transaction credits) to do\na modification of the global quota file. So do not use commit_dqblk() and\ninstead call our writing function directly.\n\nAcked-by: Joel Becker \u003cJoel.Becker@oracle.com\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "832d09cf1438bd172f69478bde74f20f05ec0115",
      "tree": "273eb6860b74f35b2fe43b8eaa808ea50af6955b",
      "parents": [
        "fb8dd8d780140a3f0e9074831a59054fec6cc451"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue May 11 17:04:14 2010 +0200"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri May 21 19:30:47 2010 +0200"
      },
      "message": "ocfs2: Fix estimate of credits needed for quota allocation\n\nWe were missing reservation of a journal credit for modification of quota\nfile inode when creating new dquot structure in the global quota file.\n\nAcked-by: Joel Becker \u003cJoel.Becker@oracle.com\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "fb8dd8d780140a3f0e9074831a59054fec6cc451",
      "tree": "09e9f7bf157784fc6b0a7df71c1fbfe711349055",
      "parents": [
        "ae4f6ef13417deaa49471c0e903914a3ef3be258"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Mar 31 16:25:37 2010 +0200"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri May 21 19:30:47 2010 +0200"
      },
      "message": "ocfs2: Fix quota locking\n\nOCFS2 had three issues with quota locking:\na) When reading dquot from global quota file, we started a transaction while\n   holding dqio_mutex which is prone to deadlocks because other paths do it\n   the other way around\nb) During ocfs2_sync_dquot we were not protected against concurrent writers\n   on the same node. Because we first copy data to local buffer, a race\n   could happen resulting in old data being written to global quota file and\n   thus causing quota inconsistency after a crash.\nc) ip_alloc_sem of quota files was acquired while a transaction is started\n   in ocfs2_quota_write which can deadlock because we first get ip_alloc_sem\n   and then start a transaction when extending quota files.\n\nWe fix the problem a) by pulling all necessary code to ocfs2_acquire_dquot\nand ocfs2_release_dquot. Thus we no longer depend on generic dquot_acquire\nto do the locking and can force proper lock ordering.\n\nProblems b) and c) are fixed by locking i_mutex and ip_alloc_sem of\nglobal quota file in ocfs2_lock_global_qf and removing ip_alloc_sem from\nocfs2_quota_read and ocfs2_quota_write.\n\nAcked-by: Joel Becker \u003cJoel.Becker@oracle.com\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "ae4f6ef13417deaa49471c0e903914a3ef3be258",
      "tree": "b8ba5499a8ad69678a232ece4d64d18447063054",
      "parents": [
        "f64dd44eb748438783b10b3f7a4968d2656a3c95"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Apr 28 19:04:29 2010 +0200"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri May 21 19:30:46 2010 +0200"
      },
      "message": "ocfs2: Avoid unnecessary block mapping when refreshing quota info\n\nThe position of global quota file info does not change. So we do not have\nto do logical -\u003e physical block translation every time we reread it from\ndisk. Thus we can also avoid taking ip_alloc_sem.\n\nAcked-by: Joel Becker \u003cJoel.Becker@oracle.com\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "f64dd44eb748438783b10b3f7a4968d2656a3c95",
      "tree": "21d73e0ed7140c8a61331eacd65157cc0983a16d",
      "parents": [
        "bc8e5f07392f05c47c8bdeff4f7098db440d065c"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Apr 28 00:22:30 2010 +0200"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri May 21 19:30:46 2010 +0200"
      },
      "message": "ocfs2: Do not map blocks from local quota file on each write\n\nThere is no need to map offset of local dquot structure to on disk block\nin each quota write. It is enough to map it just once and store the physical\nblock number in quota structure in memory. Moreover this simplifies locking\nas we do not have to take ip_alloc_sem from quota write path.\n\nAcked-by: Joel Becker \u003cJoel.Becker@oracle.com\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "12755627bdcddcdb30a1bfb9a09395a52b1d6838",
      "tree": "b2d69696975d5457648020324f683a45302fbf3c",
      "parents": [
        "fcbc59f96e38a0999e827be9d04d46b62b53b20a"
      ],
      "author": {
        "name": "Dmitry Monakhov",
        "email": "dmonakhov@openvz.org",
        "time": "Thu Apr 08 22:04:20 2010 +0400"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri May 21 19:30:45 2010 +0200"
      },
      "message": "quota: unify quota init condition in setattr\n\nQuota must being initialized if size or uid/git changes requested.\nBut initialization performed in two different places:\nin case of i_size file system is responsible for dquot init\n, but in case of uid/gid init will be called internally in\ndquot_transfer().\nThis ambiguity makes code harder to understand.\nLet\u0027s move this logic to one common helper function.\n\nSigned-off-by: Dmitry Monakhov \u003cdmonakhov@openvz.org\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "03e62303cf56e87337115f14842321043df2b4bb",
      "tree": "3024495955beccddbae347d99613bcdd33801ee4",
      "parents": [
        "33cf23b0a535475aead57707cb9f4fe135a93544",
        "18d3a98f3c1b0e27ce026afa4d1ef042f2903726"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 21 07:20:17 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 21 07:20:17 2010 -0700"
      },
      "message": "Merge branch \u0027upstream-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/ocfs2\n\n* \u0027upstream-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/ocfs2: (47 commits)\n  ocfs2: Silence a gcc warning.\n  ocfs2: Don\u0027t retry xattr set in case value extension fails.\n  ocfs2:dlm: avoid dlm-\u003east_lock lockres-\u003espinlock dependency break\n  ocfs2: Reset xattr value size after xa_cleanup_value_truncate().\n  fs/ocfs2/dlm: Use kstrdup\n  fs/ocfs2/dlm: Drop memory allocation cast\n  Ocfs2: Optimize punching-hole code.\n  Ocfs2: Make ocfs2_find_cpos_for_left_leaf() public.\n  Ocfs2: Fix hole punching to correctly do CoW during cluster zeroing.\n  Ocfs2: Optimize ocfs2 truncate to use ocfs2_remove_btree_range() instead.\n  ocfs2: Block signals for mkdir/link/symlink/O_CREAT.\n  ocfs2: Wrap signal blocking in void functions.\n  ocfs2/dlm: Increase o2dlm lockres hash size\n  ocfs2: Make ocfs2_extend_trans() really extend.\n  ocfs2/trivial: Code cleanup for allocation reservation.\n  ocfs2: make ocfs2_adjust_resv_from_alloc simple.\n  ocfs2: Make nointr a default mount option\n  ocfs2/dlm: Make o2dlm domain join/leave messages KERN_NOTICE\n  o2net: log socket state changes\n  ocfs2: print node # when tcp fails\n  ...\n"
    },
    {
      "commit": "18d3a98f3c1b0e27ce026afa4d1ef042f2903726",
      "tree": "66316c0fc51882b3110d548e715e7b0ae4ab4b6b",
      "parents": [
        "5f5261acb059f43c7fb9a2fac9d32c6ef4df2ed5"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue May 18 16:47:55 2010 -0700"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue May 18 16:48:41 2010 -0700"
      },
      "message": "ocfs2: Silence a gcc warning.\n\nocfs2_block_group_claim_bits() is never called with min_bits\u003d0, but we\nshouldn\u0027t leave status undefined if it ever is.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "5f5261acb059f43c7fb9a2fac9d32c6ef4df2ed5",
      "tree": "c4f7e8f4b774ff3bb7b0e60f4bb956729e51d5b6",
      "parents": [
        "d9ef75221a6247b758e1d7e18edb661996e4b7cf"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Thu May 13 22:49:05 2010 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue May 18 16:41:39 2010 -0700"
      },
      "message": "ocfs2: Don\u0027t retry xattr set in case value extension fails.\n\nIn normal xattr set, the set sequence is inode, xattr block\nand finally xattr bucket if we meet with a ENOSPC. But there\nis a corner case.\nSo consider we will set a xattr whose value will be stored in\na cluster, and there is no xattr block by now. So we will\nreserve 1 xattr block and 1 cluster for setting it. Now if we\nfail in value extension(in case the volume is almost full and\nwe can\u0027t allocate the cluster because the check in\nocfs2_test_bg_bit_allocatable), ENOSPC will be returned. So\nwe will try to create a bucket(this time there is a chance that\nthe reserved cluster will be used), and when we try value extension\nagain, kernel bug happens. We did meet with it. Check the bug below.\nhttp://oss.oracle.com/bugzilla/show_bug.cgi?id\u003d1251\n\nThis patch just try to avoid this by adding a set_abort in\nocfs2_xattr_set_ctxt, so in case ENOSPC happens in value extension,\nwe will check whether it is caused by the real ENOSPC or just the\nfull of inode or xattr block. If it is the first case, we set set_abort\nso that we don\u0027t try any further. we are safe to exit directly here\nince it is really ENOSPC.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "d9ef75221a6247b758e1d7e18edb661996e4b7cf",
      "tree": "a1a1355da23b7448afdc851f7a211f2b3492d6e5",
      "parents": [
        "d5a7df0649fa6a1e7800785d760e2c7d7a3204de"
      ],
      "author": {
        "name": "Wengang Wang",
        "email": "wen.gang.wang@oracle.com",
        "time": "Mon May 17 20:20:44 2010 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue May 18 16:41:34 2010 -0700"
      },
      "message": "ocfs2:dlm: avoid dlm-\u003east_lock lockres-\u003espinlock dependency break\n\nCurrently we process a dirty lockres with the lockres-\u003espinlock taken. While\nduring the process, we may need to lock on dlm-\u003east_lock. This breaks the\ndependency of dlm-\u003east_lock(lock first) and lockres-\u003espinlock(lock second).\n\nThis patch fixes the problem.\nSince we can\u0027t release lockres-\u003espinlock, we have to take dlm-\u003east_lock\njust before taking the lockres-\u003espinlock and release it after lockres-\u003espinlock\nis released. And use __dlm_queue_bast()/__dlm_queue_ast(), the nolock version,\nin dlm_shuffle_lists(). There are no too many locks on a lockres, so there is no\nperformance harm.\n\nSigned-off-by: Wengang Wang \u003cwen.gang.wang@oracle.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "d5a7df0649fa6a1e7800785d760e2c7d7a3204de",
      "tree": "35df1668e3d68dd71789e88bd9c01f914a811607",
      "parents": [
        "41841b0bcea8af7f3bff8b2a23d542b94d9c1bb1"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Mon May 10 18:09:47 2010 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue May 18 16:41:21 2010 -0700"
      },
      "message": "ocfs2: Reset xattr value size after xa_cleanup_value_truncate().\n\nIn ocfs2_prepare_xattr_entry, if we fail to grow an existing value,\nxa_cleanup_value_truncate() will leave the old entry in place.  Thus, we\nreset its value size.  However, if we were allocating a new value, we\nmust not reset the value size or we will BUG().  This resolves\noss.oracle.com bug 1247.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "41841b0bcea8af7f3bff8b2a23d542b94d9c1bb1",
      "tree": "89eddf2dffadbbd13939f94eb8cd904a26279390",
      "parents": [
        "316ce2ba8e74a7bb9153b9f93adc883cb1ceb9fd",
        "1a934c3e57594588c373aea858e4593cdfcba4f4"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue May 18 16:40:42 2010 -0700"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue May 18 16:40:42 2010 -0700"
      },
      "message": "Merge branch \u0027discontig-bg\u0027 of git://oss.oracle.com/git/tma/linux-2.6 into ocfs2-merge-window\n"
    },
    {
      "commit": "316ce2ba8e74a7bb9153b9f93adc883cb1ceb9fd",
      "tree": "642a2394a1e12e6c850243c3b1aac8b91c56c0b9",
      "parents": [
        "3914ed0cec6532ab4feb202424fc95ad05024497"
      ],
      "author": {
        "name": "Julia Lawall",
        "email": "julia@diku.dk",
        "time": "Fri May 14 21:30:48 2010 +0200"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue May 18 12:31:11 2010 -0700"
      },
      "message": "fs/ocfs2/dlm: Use kstrdup\n\nUse kstrdup when the goal of an allocation is copy a string into the\nallocated region.\n\nThe semantic patch that makes this change is as follows:\n(http://coccinelle.lip6.fr/)\n\n// \u003csmpl\u003e\n@@\nexpression from,to;\nexpression flag,E1,E2;\nstatement S;\n@@\n\n-  to \u003d kmalloc(strlen(from) + 1,flag);\n+  to \u003d kstrdup(from, flag);\n   ... when !\u003d \\(from \u003d E1 \\| to \u003d E1 \\)\n   if (to\u003d\u003dNULL || ...) S\n   ... when !\u003d \\(from \u003d E2 \\| to \u003d E2 \\)\n-  strcpy(to, from);\n// \u003c/smpl\u003e\n\nSigned-off-by: Julia Lawall \u003cjulia@diku.dk\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "3914ed0cec6532ab4feb202424fc95ad05024497",
      "tree": "034377b0e2cf83e3a6fca5883ea8e4e5191a469a",
      "parents": [
        "c1631d4a484fbb498e35d661f1aebd64c86b66bf"
      ],
      "author": {
        "name": "Julia Lawall",
        "email": "julia@diku.dk",
        "time": "Tue May 11 20:28:14 2010 +0200"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue May 18 12:31:10 2010 -0700"
      },
      "message": "fs/ocfs2/dlm: Drop memory allocation cast\n\nDrop cast on the result of kmalloc and similar functions.\n\nThe semantic patch that makes this change is as follows:\n(http://coccinelle.lip6.fr/)\n\n// \u003csmpl\u003e\n@@\ntype T;\n@@\n\n- (T *)\n  (\\(kmalloc\\|kzalloc\\|kcalloc\\|kmem_cache_alloc\\|kmem_cache_zalloc\\|\n   kmem_cache_alloc_node\\|kmalloc_node\\|kzalloc_node\\)(...))\n// \u003c/smpl\u003e\n\nSigned-off-by: Julia Lawall \u003cjulia@diku.dk\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "c1631d4a484fbb498e35d661f1aebd64c86b66bf",
      "tree": "06e951cfebbd616dbaa0017d1c030a3f6e0d8d88",
      "parents": [
        "ee149a7c6cbaee0e3a1a7d9e9f92711228ef5236"
      ],
      "author": {
        "name": "Tristan Ye",
        "email": "tristan.ye@oracle.com",
        "time": "Tue May 11 17:54:45 2010 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue May 18 12:31:05 2010 -0700"
      },
      "message": "Ocfs2: Optimize punching-hole code.\n\nThis patch simplifies the logic of handling existing holes and\nskipping extent blocks and removes some confusing comments.\n\nThe patch survived the fill_verify_holes testcase in ocfs2-test.\nIt also passed my manual sanity check and stress tests with enormous\nextent records.\n\nCurrently punching a hole on a file with 3+ extent tree depth was\nreally a performance disaster.  It can even take several hours,\nthough we may not hit this in real life with such a huge extent\nnumber.\n\nOne simple way to improve the performance is quite straightforward.\nFrom the logic of truncate, we can punch the hole from hole_end to\nhole_start, which reduces the overhead of btree operations in a\nsignificant way, such as tree rotation and moving.\n\nFollowing is the testing result when punching hole from 0 to file end\nin bytes, on a 1G file, 1G file consists of 256k extent records, each record\ncover 4k data(just one cluster, clustersize is 4k):\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n * Original punching-hole mechanism:\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\n   I waited 1 hour for its completion, unfortunately it\u0027s still ongoing.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n * Patched punching-hode mechanism:\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\n   real 0m2.518s\n   user 0m0.000s\n   sys  0m2.445s\n\nThat means we\u0027ve gained up to 1000 times improvement on performance in this\ncase, whee! It\u0027s fairly cool. and it looks like that performance gain will\nbe raising when extent records grow.\n\nThe patch was based on my former 2 patches, which were about truncating\ncodes optimization and fixup to handle CoW on punching hole.\n\nSigned-off-by: Tristan Ye \u003ctristan.ye@oracle.com\u003e\nAcked-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "ee149a7c6cbaee0e3a1a7d9e9f92711228ef5236",
      "tree": "eb91fa9c12d9d44a3a314f75c5acd4ce1b7328a5",
      "parents": [
        "e8aec068ecb1957630816cfa2c150c6b3ddd1790"
      ],
      "author": {
        "name": "Tristan Ye",
        "email": "tristan.ye@oracle.com",
        "time": "Tue May 11 17:54:44 2010 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue May 18 12:28:13 2010 -0700"
      },
      "message": "Ocfs2: Make ocfs2_find_cpos_for_left_leaf() public.\n\nThe original idea to pull ocfs2_find_cpos_for_left_leaf() out of\nalloc.c is to benefit punching-holes optimization patch, it however,\ncan also be referred by other funcs in the future who want to do the\nsame job.\n\nSigned-off-by: Tristan Ye \u003ctristan.ye@oracle.com\u003e\nAcked-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "e8aec068ecb1957630816cfa2c150c6b3ddd1790",
      "tree": "b6140b82846cd2f5ab264d01be2a4473e56faf97",
      "parents": [
        "78f94673d7faf01677f374f4ebbf324ff1a0aa6e"
      ],
      "author": {
        "name": "Tristan Ye",
        "email": "tristan.ye@oracle.com",
        "time": "Tue May 11 17:54:43 2010 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue May 18 12:27:46 2010 -0700"
      },
      "message": "Ocfs2: Fix hole punching to correctly do CoW during cluster zeroing.\n\nBased on the previous patch of optimizing truncate, the bugfix for\nrefcount trees when punching holes can be fairly easy\nand straightforward since most of work we should take into account for\nrefcounting have been completed already in ocfs2_remove_btree_range().\n\nThis patch performs CoW for refcounted extents when a hole being punched\nwhose start or end offset were in the middle of a cluster, which means\npartial zeroing of the cluster will be performed soon.\n\nThe patch has been tested fixing the following bug:\n\nhttp://oss.oracle.com/bugzilla/show_bug.cgi?id\u003d1216\n\nSigned-off-by: Tristan Ye \u003ctristan.ye@oracle.com\u003e\nAcked-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "78f94673d7faf01677f374f4ebbf324ff1a0aa6e",
      "tree": "1bd394469f12b5e148835365295d1df413c04a0c",
      "parents": [
        "547ba7c8efe43c2cabb38782e23572a6179dd1c1"
      ],
      "author": {
        "name": "Tristan Ye",
        "email": "tristan.ye@oracle.com",
        "time": "Tue May 11 17:54:42 2010 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue May 18 12:25:10 2010 -0700"
      },
      "message": "Ocfs2: Optimize ocfs2 truncate to use ocfs2_remove_btree_range() instead.\n\nTruncate is just a special case of punching holes(from new i_size to\nend), we therefore could take advantage of the existing\nocfs2_remove_btree_range() to reduce the comlexity and redundancy in\nalloc.c.  The goal here is to make truncate more generic and\nstraightforward.\n\nSeveral functions only used by ocfs2_commit_truncate() will smiply be\nremoved.\n\nocfs2_remove_btree_range() was originally used by the hole punching\ncode, which didn\u0027t take refcount trees into account (definitely a bug).\nWe therefore need to change that func a bit to handle refcount trees.\nIt must take the refcount lock, calculate and reserve blocks for\nrefcount tree changes, and decrease refcounts at the end.  We replace \nocfs2_lock_allocators() here by adding a new func\nocfs2_reserve_blocks_for_rec_trunc() which accepts some extra blocks to\nreserve.  This will not hurt any other code using\nocfs2_remove_btree_range() (such as dir truncate and hole punching).\n\nI merged the following steps into one patch since they may be\nlogically doing one thing, though I know it looks a little bit fat\nto review.\n\n1). Remove redundant code used by ocfs2_commit_truncate(), since we\u0027re\n    moving to ocfs2_remove_btree_range anyway.\n\n2). Add a new func ocfs2_reserve_blocks_for_rec_trunc() for purpose of\n    accepting some extra blocks to reserve.\n\n3). Change ocfs2_prepare_refcount_change_for_del() a bit to fit our\n    needs.  It\u0027s safe to do this since it\u0027s only being called by\n    truncate.\n\n4). Change ocfs2_remove_btree_range() a bit to take refcount case into\n    account.\n\n5). Finally, we change ocfs2_commit_truncate() to call\n    ocfs2_remove_btree_range() in a proper way.\n\nThe patch has been tested normally for sanity check, stress tests\nwith heavier workload will be expected.\n\nBased on this patch, fixing the punching holes bug will be fairly easy.\n\nSigned-off-by: Tristan Ye \u003ctristan.ye@oracle.com\u003e\nAcked-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "547ba7c8efe43c2cabb38782e23572a6179dd1c1",
      "tree": "66343f838e25938a0c41662716d6eca6eaf6d5cb",
      "parents": [
        "e4b963f10e9026c83419b5c25b93a0350413cf16"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Mon May 10 11:56:52 2010 -0700"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Mon May 10 11:56:52 2010 -0700"
      },
      "message": "ocfs2: Block signals for mkdir/link/symlink/O_CREAT.\n\nOnce file or link creation gets going, it can\u0027t be interrupted by a\nsignal.  They\u0027re not idempotent.\n\nThis blocks signals in ocfs2_mknod(), ocfs2_link(), and ocfs2_symlink()\nonce we start actually changing things.  ocfs2_mknod() covers mknod(),\ncreat(), mkdir(), and open(O_CREAT).\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "e4b963f10e9026c83419b5c25b93a0350413cf16",
      "tree": "d162595c9f79626d040cb28c84e53fd8b7fe50ff",
      "parents": [
        "0467ae954d1843de65e7cf8f706f88fe65cd8418"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed Sep 02 17:17:36 2009 -0700"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Mon May 10 11:50:10 2010 -0700"
      },
      "message": "ocfs2: Wrap signal blocking in void functions.\n\nocfs2 sometimes needs to block signals around dlm operations, but it\ncurrently does it with sigprocmask().  Even worse, it\u0027s checking the\nerror code of sigprocmask().  The in-kernel sigprocmask() can only error\nif you get the SIG_* argument wrong.  We don\u0027t.\n\nWrap the sigprocmask() calls with ocfs2_[un]block_signals().  These\nfunctions are void, but they will BUG() if somehow sigprocmask() returns\nan error.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "0467ae954d1843de65e7cf8f706f88fe65cd8418",
      "tree": "e0be29c72eb8baaeffe1b933a69d0e835cc24db8",
      "parents": [
        "c901fb00731e307c2c6e8c7d5eee005df5835f9d"
      ],
      "author": {
        "name": "Sunil Mushran",
        "email": "sunil.mushran@oracle.com",
        "time": "Wed May 05 16:25:08 2010 -0700"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed May 05 18:20:01 2010 -0700"
      },
      "message": "ocfs2/dlm: Increase o2dlm lockres hash size\n\nLockres hash size of 16KB is far too small for large filesystems (where we\nhave hundreds of thousands of lock resources stored in the table).\nThis patch increases it to 128KB.\n\nSigned-off-by: Sunil Mushran \u003csunil.mushran@oracle.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "c901fb00731e307c2c6e8c7d5eee005df5835f9d",
      "tree": "4c68bf68590d04d1045ae5d66a9ae158c56019fa",
      "parents": [
        "3e4218df3176657be72ad2fa199779be6c11fe4f"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Mon Apr 26 14:34:57 2010 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed May 05 18:18:09 2010 -0700"
      },
      "message": "ocfs2: Make ocfs2_extend_trans() really extend.\n\nIn ocfs2, we use ocfs2_extend_trans() to extend a journal handle\u0027s\nblocks. But if jbd2_journal_extend() fails, it will only restart\nwith the the new number of blocks.  This tends to be awkward since\nin most cases we want additional reserved blocks. It makes our code\nharder to mantain since the caller can\u0027t be sure all the original\nblocks will not be accessed and dirtied again.  There are 15 callers\nof ocfs2_extend_trans() in fs/ocfs2, and 12 of them have to add\nh_buffer_credits before they call ocfs2_extend_trans().  This makes\nocfs2_extend_trans() really extend atop the original block count.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "3e4218df3176657be72ad2fa199779be6c11fe4f",
      "tree": "99512a1b274e7e99af1b7fe9d388efce79399c20",
      "parents": [
        "b065556a7d1a9205403db77a318a5c5aa530e701"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Tue Apr 06 16:46:46 2010 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed May 05 18:18:09 2010 -0700"
      },
      "message": "ocfs2/trivial: Code cleanup for allocation reservation.\n\nTwo tiny cleanup for allocation reservation.\n1. Remove some extra codes in ocfs2_local_alloc_find_clear_bits.\n2. Remove an unuseful variables in ocfs2_find_resv_lhs.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nAcked-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "b065556a7d1a9205403db77a318a5c5aa530e701",
      "tree": "fd8ef1e5e67c624c9fb04689e4a4765e2e59acf8",
      "parents": [
        "4b37fcb7d41ce3b9264b9562d6ffd62db9294bd1"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Thu Apr 08 16:33:02 2010 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed May 05 18:18:09 2010 -0700"
      },
      "message": "ocfs2: make ocfs2_adjust_resv_from_alloc simple.\n\nWhen we allocate some bits from the reservation, we always\nallocate from the r_start(see ocfs2_resmap_resv_bits).\nSo there should be no reason to check between r_start\nand start. And I don\u0027t think we will change this behaviour\nlater by allocating from some bits after r_start.  Why not make\nocfs2_adjust_resv_from_alloc simple for now?\n\nThe only chance we have to adjust the reservation is when we haven\u0027t\nreached the end. With this patch, the function is more readable.\n\nNote:\nbtw, this patch also fixes an original bug in the function\nwhich I haven\u0027t found before.\n\tif (end \u003c ocfs2_resv_end(resv))\n\t\trhs \u003d end - ocfs2_resv_end(resv);\nThis code is of course buggy. ;)\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nAcked-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "4b37fcb7d41ce3b9264b9562d6ffd62db9294bd1",
      "tree": "0a171c2d8882fa64a5391f8725e2c3b4382b2d59",
      "parents": [
        "5c80d4c9e5489d5930412add87501702fe5f93fb"
      ],
      "author": {
        "name": "Sunil Mushran",
        "email": "sunil.mushran@oracle.com",
        "time": "Tue Apr 13 18:00:31 2010 -0700"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed May 05 18:18:08 2010 -0700"
      },
      "message": "ocfs2: Make nointr a default mount option\n\nOCFS2 has never really supported intr. This patch acknowledges this reality\nand makes nointr the default mount option. In a later patch, we intend to\nsupport intr.\n\nSigned-off-by: Sunil Mushran \u003csunil.mushran@oracle.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "5c80d4c9e5489d5930412add87501702fe5f93fb",
      "tree": "2a69dc7066db76cbc3f5f0d0cc4636af3f6909bb",
      "parents": [
        "23fd9abdc8f63c72fe3324e83d454ccecedaec37"
      ],
      "author": {
        "name": "Sunil Mushran",
        "email": "sunil.mushran@oracle.com",
        "time": "Tue Apr 13 18:00:30 2010 -0700"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed May 05 18:18:08 2010 -0700"
      },
      "message": "ocfs2/dlm: Make o2dlm domain join/leave messages KERN_NOTICE\n\no2dlm join and leave messages are more than informational as they are\nrequired for debugging locking issues. This patch changes them from\nKERN_INFO to KERN_NOTICE.\n\nSigned-off-by: Sunil Mushran \u003csunil.mushran@oracle.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "23fd9abdc8f63c72fe3324e83d454ccecedaec37",
      "tree": "1757ac3807a5b235a0e485784cf9517028bc9b5c",
      "parents": [
        "a5196ec5ef80309fd390191c548ee1f2e8a327ee"
      ],
      "author": {
        "name": "Srinivas Eeda",
        "email": "srinivas.eeda@oracle.com",
        "time": "Wed Mar 31 14:32:29 2010 -0700"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed May 05 18:18:08 2010 -0700"
      },
      "message": "o2net: log socket state changes\n\nThis patch logs socket state changes that lead to socket shutdown.\n\nSigned-off-by: Srinivas Eeda \u003csrinivas.eeda@oracle.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "a5196ec5ef80309fd390191c548ee1f2e8a327ee",
      "tree": "5856168bc2708230107940ec73a6752fabd8fd7b",
      "parents": [
        "83f92318fa33cc084e14e64dc903e605f75884c1"
      ],
      "author": {
        "name": "Wengang Wang",
        "email": "wen.gang.wang@oracle.com",
        "time": "Tue Mar 30 12:09:22 2010 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed May 05 18:18:08 2010 -0700"
      },
      "message": "ocfs2: print node # when tcp fails\n\nPrint the node number of a peer node if sending it a message failed.\n\nSigned-off-by: Wengang Wang \u003cwen.gang.wang@oracle.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "83f92318fa33cc084e14e64dc903e605f75884c1",
      "tree": "c7466c64019fb050c69cab27b4388e3a86d58b1a",
      "parents": [
        "b07f8f24dfe54da0f074b78949044842e8df881f"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Apr 05 18:17:16 2010 -0700"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed May 05 18:18:07 2010 -0700"
      },
      "message": "ocfs2: Add dir_resv_level mount option\n\nThe default behavior for directory reservations stays the same, but we add a\nmount option so people can tweak the size of directory reservations\naccording to their workloads.\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "b07f8f24dfe54da0f074b78949044842e8df881f",
      "tree": "8cc24b0a1e02a9b7f1241fbfecca50ac6881b938",
      "parents": [
        "6b82021b9e91cd689fdffadbcdb9a42597bbe764"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Apr 05 18:17:15 2010 -0700"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed May 05 18:18:07 2010 -0700"
      },
      "message": "ocfs2: change default reservation window sizes\n\nThe default reservation size of 4 (32-bit windows) is a bit too ambitious.\nScale it back to 16 bits (resv_level\u003d2). I have been testing various sizes\non a 4-node cluster which runs a mixed workload that is heavily threaded.\nWith a 256MB local alloc, I get *roughly* the following levels of average file\nfragmentation:\n\nresv_level\u003d0\t70%\nresv_level\u003d1\t21%\nresv_level\u003d2\t23%\nresv_level\u003d3\t24%\nresv_level\u003d4\t60%\nresv_level\u003d5\tdid not test\nresv_level\u003d6\t60%\n\nresv_level\u003d2 seemed like a good compromise between not letting windows be\ntoo small, but not so big that heavier workloads will immediately suffer\nwithout tuning.\n\nThis patch also change the behavior of directory reservations - they now\ntrack file reservations.  The previous compromise of giving directory\nwindows only 8 bits wound up fragmenting more at some window sizes because\nfile allocations had smaller unused windows to poach from.\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "6b82021b9e91cd689fdffadbcdb9a42597bbe764",
      "tree": "ac4235e792e74a2e60a41e95d62965b7ed4b3232",
      "parents": [
        "73c8a80003d13be54e2309865030404441075182"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Apr 05 18:17:14 2010 -0700"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed May 05 18:18:07 2010 -0700"
      },
      "message": "ocfs2: increase the default size of local alloc windows\n\nI have observed that the current size of 8M gives us pretty poor\nfragmentation on multi-threaded workloads which do lots of writes.\n\nGenerally, I can increase the size of local alloc windows and observe a\nmarked decrease in fragmentation, even up and beyond window sizes of 512\nmegabytes. This makes sense for a couple reasons - larger local alloc means\nmore room for reservation windows. On multi-node workloads the larger local\nalloc helps as well because we don\u0027t have to do window slides as often.\n\nAlso, I removed the OCFS2_DEFAULT_LOCAL_ALLOC_SIZE constant as it is no\nlonger used and the comment above it was out of date.\n\nTo test fragmentation, I used a workload which launched 4 threads that did\n4k writes into a series of about 140 alternating files.\n\nWith resv_level\u003d2, and a 4k/4k file system I observed the following average\nfragmentation for various localalloc\u003d parameters:\n\nlocalalloc\u003d\tavg. fragmentation\n\t8\t\t48\n\t32\t\t16\n\t64\t\t10\n\t120\t\t7\n\nOn larger cluster sizes, the difference is more dramatic.\n\nThe new default size top out at 256M, which we\u0027ll only get for cluster\nsizes of 32K and above.\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "73c8a80003d13be54e2309865030404441075182",
      "tree": "9b5a47939c22838133f46ea6d207254aa68d177b",
      "parents": [
        "a57c8fd2ad238258cc983049008aea5f985804b2"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Apr 05 18:17:13 2010 -0700"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed May 05 18:18:06 2010 -0700"
      },
      "message": "ocfs2: clean up localalloc mount option size parsing\n\nThis patch pulls the local alloc sizing code into localalloc.c and provides\na callout to it from ocfs2_fill_super(). Behavior is essentially unchanged\nexcept that I correctly calculate the maximum local alloc size. The old code\nin ocfs2_parse_options() calculated the max size as:\n\nocfs2_local_alloc_size(sb) * 8\n\nwhich is correct, in bits. Unfortunately though the option passed in is in\nmegabytes. Ultimately, this bug made no real difference - the shrink code\nwould catch a too-large size and bring it down to something reasonable.\nStill, it\u0027s less than efficient as-is.\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "a57c8fd2ad238258cc983049008aea5f985804b2",
      "tree": "2d9142401ca7a03df6edaefcc3fd937f2f24fc8d",
      "parents": [
        "33d5d380d667ad264675cfdb297dfc3c5b6542cc"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Tue Mar 16 21:01:00 2010 -0700"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed May 05 18:17:31 2010 -0700"
      },
      "message": "ocfs2: remove ocfs2_local_alloc_in_range()\n\nInodes are always allocated from the global bitmap now so we don\u0027t need this\nany more. Also, the existing implementation bounces reservations around\nneedlessly.\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "33d5d380d667ad264675cfdb297dfc3c5b6542cc",
      "tree": "9dcaaf4cb17559d502ee835f0aa18c46ee8c09a0",
      "parents": [
        "e3b4a97dbe9741a3227c3ed857a0632532fcd386"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Wed Feb 24 13:34:09 2010 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed May 05 18:17:31 2010 -0700"
      },
      "message": "ocfs2: allocate btree internal block groups from the global bitmap\n\nOtherwise, the need for a very large contiguous allocation tends to\nwreak havoc on many inode allocation reservations on the local alloc, thus\nruining any chances for contiguousness.\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "e3b4a97dbe9741a3227c3ed857a0632532fcd386",
      "tree": "31da8dd09ad6ef8959b287e36e98ead30472a284",
      "parents": [
        "4fe370afaae49c57619bb0bedb75de7e7c168308"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Dec 07 13:16:07 2009 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed May 05 18:17:30 2010 -0700"
      },
      "message": "ocfs2: use allocation reservations for directory data\n\nUse the reservations system for unindexed dir tree allocations. We don\u0027t\nbother with the indexed tree as reads from it are mostly random anyway.\nDirectory reservations are marked seperately, to allow the reservations code\na chance to optimize their window sizes. This patch allocates only 8 bits\nfor directory windows as they generally are not expected to grow as quickly\nas file data. Future improvements to dir window sizing can trivially be\nmade.\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "4fe370afaae49c57619bb0bedb75de7e7c168308",
      "tree": "7b2752fc9616578e9e3baa659e6c724b301d26c5",
      "parents": [
        "d02f00cc057809d96c044cc72d5b9809d59f7d49"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Dec 07 13:15:40 2009 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed May 05 18:17:30 2010 -0700"
      },
      "message": "ocfs2: use allocation reservations during file write\n\nAdd a per-inode reservations structure and pass it through to the\nreservations code.\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "d02f00cc057809d96c044cc72d5b9809d59f7d49",
      "tree": "44a6d81ecf9fb4b5aa91c0501a8da2ee36890a38",
      "parents": [
        "ec20cec7a351584ca6c70ead012e73d61f9a8e04"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Dec 07 13:10:48 2009 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed May 05 18:17:30 2010 -0700"
      },
      "message": "ocfs2: allocation reservations\n\nThis patch improves Ocfs2 allocation policy by allowing an inode to\nreserve a portion of the local alloc bitmap for itself. The reserved\nportion (allocation window) is advisory in that other allocation\nwindows might steal it if the local alloc bitmap becomes\nfull. Otherwise, the reservations are honored and guaranteed to be\nfree. When the local alloc window is moved to a different portion of\nthe bitmap, existing reservations are discarded.\n\nReservation windows are represented internally by a red-black\ntree. Within that tree, each node represents the reservation window of\none inode. An LRU of active reservations is also maintained. When new\ndata is written, we allocate it from the inodes window. When all bits\nin a window are exhausted, we allocate a new one as close to the\nprevious one as possible. Should we not find free space, an existing\nreservation is pulled off the LRU and cannibalized.\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "ec20cec7a351584ca6c70ead012e73d61f9a8e04",
      "tree": "39af308ae07ab168313bb50ced1bb1ae7ef7e6a3",
      "parents": [
        "b4414eea0e7b9c134262c801a87e338bf675962c"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Mar 19 14:13:52 2010 -0700"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed May 05 18:17:29 2010 -0700"
      },
      "message": "ocfs2: Make ocfs2_journal_dirty() void.\n\njbd[2]_journal_dirty_metadata() only returns 0.  It\u0027s been returning 0\nsince before the kernel moved to git.  There is no point in checking\nthis error.\n\nocfs2_journal_dirty() has been faithfully returning the status since the\nbeginning.  All over ocfs2, we have blocks of code checking this can\u0027t\nfail status.  In the past few years, we\u0027ve tried to avoid adding these\nchecks, because they are pointless.  But anyone who looks at our code\nassumes they are needed.\n\nFinally, ocfs2_journal_dirty() is made a void function.  All error\nchecking is removed from other files.  We\u0027ll BUG_ON() the status of\njbd2_journal_dirty_metadata() just in case they change it someday.  They\nwon\u0027t.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "d577632e65ea01fb3b124b652d7bd2381251da3c",
      "tree": "64a567b77fb5163572375f457ea7eeedecf60f30",
      "parents": [
        "6b933c8e6f1a2f3118082c455eef25f9b1ac7b45"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Mon May 03 19:15:49 2010 -0700"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Mon May 03 19:15:49 2010 -0700"
      },
      "message": "ocfs2: Avoid a gcc warning in ocfs2_wipe_inode().\n\ngcc warns that a variable is uninitialized.  It\u0027s actually handled, but\nan early return fools gcc.  Let\u0027s just initialize the variable to a\ngarbage value that will crash if the usage is ever broken.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "6b933c8e6f1a2f3118082c455eef25f9b1ac7b45",
      "tree": "bf31f4067a95aa23a354edfa89810c9eaaf71aaa",
      "parents": [
        "f9221fd80343285514568da6c5dbda0f87109de8"
      ],
      "author": {
        "name": "Li Dongyang",
        "email": "lidongyang@novell.com",
        "time": "Sat Apr 17 17:49:10 2010 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Apr 30 13:45:13 2010 -0700"
      },
      "message": "ocfs2: Avoid direct write if we fall back to buffered I/O\n\nwhen we fall back to buffered write from direct write, we call\n__generic_file_aio_write() but that will end up doing direct write\neven we are only prepared to do buffered write because the file\nhas the O_DIRECT flag set. This is a fix for\nhttps://bugzilla.novell.com/show_bug.cgi?id\u003d591039\nrevised with Joel\u0027s comments.\n\nSigned-off-by: Li Dongyang \u003clidongyang@novell.com\u003e\nAcked-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "f9221fd80343285514568da6c5dbda0f87109de8",
      "tree": "3a2f0077ebea9d094bdeedb319c97cb591d51c51",
      "parents": [
        "a36d515c7a2dfacebcf41729f6812dbc424ebcf0",
        "a9743fcdc0eb43d028b71267438076e1b0112ba0"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Apr 30 13:37:29 2010 -0700"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Apr 30 13:37:29 2010 -0700"
      },
      "message": "Merge branch \u0027skip_delete_inode\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mfasheh/ocfs2-mark into ocfs2-fixes\n"
    },
    {
      "commit": "a36d515c7a2dfacebcf41729f6812dbc424ebcf0",
      "tree": "4ff912d4f3c8697eb19beaed2d9b8cb9c551457b",
      "parents": [
        "c21a534e2f24968cf74976a4e721ac194db30ded"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Apr 23 15:24:59 2010 -0700"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Apr 23 15:24:59 2010 -0700"
      },
      "message": "ocfs2_dlmfs: Fix math error when reading LVB.\n\nWhen asked for a partial read of the LVB in a dlmfs file, we can\naccidentally calculate a negative count.\n\nReported-by: Dan Carpenter \u003cerror27@gmail.com\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "c21a534e2f24968cf74976a4e721ac194db30ded",
      "tree": "ed095a19d91fa586912366aeb4c91852f131fa97",
      "parents": [
        "0350cb078f5035716ebdad4ad4709d02fe466a8a"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Wed Apr 21 14:05:55 2010 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Apr 23 14:43:22 2010 -0700"
      },
      "message": "ocfs2: Update VFS inode\u0027s id info after reflink.\n\nIn reflink we update the id info on the disk but forgot to update\nthe corresponding information in the VFS inode.  Update them\naccordingly when we want to preserve the attributes.\n\nReported-by: Jeff Liu \u003cjeff.liu@oracle.com\u003e\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "0350cb078f5035716ebdad4ad4709d02fe466a8a",
      "tree": "17b2166b5c71e22571b0c244e130325d33bb77aa",
      "parents": [
        "79681842e160c3211eeeb47ea31b061038d1e41e"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "error27@gmail.com",
        "time": "Thu Apr 22 11:39:29 2010 +0200"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Apr 23 14:42:06 2010 -0700"
      },
      "message": "ocfs2: potential ERR_PTR dereference on error paths\n\nIf \"handle\" is non null at the end of the function then we assume it\u0027s a\nvalid pointer and pass it to ocfs2_commit_trans();\n\nSigned-off-by: Dan Carpenter \u003cerror27@gmail.com\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "a9743fcdc0eb43d028b71267438076e1b0112ba0",
      "tree": "c893396ac248e5f570a774b5b375d94b2858ae34",
      "parents": [
        "062d340384dcf77dfd8de0a082b5da571de3925a"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Fri Apr 23 11:42:22 2010 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Fri Apr 23 11:42:22 2010 -0700"
      },
      "message": "ocfs2: Add directory entry later in ocfs2_symlink() and ocfs2_mknod()\n\nIf we get a failure during creation of an inode we\u0027ll allow the orphan code\nto remove the inode, which is correct. However, we need to ensure that we\ndon\u0027t get any errors after the call to ocfs2_add_entry(), otherwise we could\nleave a dangling directory reference. The solution is simple - in both\ncases, all I had to do was move ocfs2_dentry_attach_lock() above the\nocfs2_add_entry() call.\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "062d340384dcf77dfd8de0a082b5da571de3925a",
      "tree": "875a86d75ff363fbebdb09cff12933bb23525077",
      "parents": [
        "ab41fdc8fdd9f0942430941c1e2b516fd481371d"
      ],
      "author": {
        "name": "Li Dongyang",
        "email": "lidongyang@novell.com",
        "time": "Thu Apr 22 16:11:29 2010 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Fri Apr 23 11:05:00 2010 -0700"
      },
      "message": "ocfs2: use OCFS2_INODE_SKIP_ORPHAN_DIR in ocfs2_mknod error path\n\nMark the inode with flag OCFS2_INODE_SKIP_ORPHAN_DIR in ocfs2_mknod, so we\ncan kill the inode in case of error.\n\n[ Fixed up comment style -Mark ]\n\nSigned-off-by: Li Dongyang \u003clidongyang@novell.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "ab41fdc8fdd9f0942430941c1e2b516fd481371d",
      "tree": "b362d6295b6b69909eefef0a1b1483e59be1fcec",
      "parents": [
        "d4cd1871cff68e188dadcf6d1280762522b643eb"
      ],
      "author": {
        "name": "Li Dongyang",
        "email": "lidongyang@novell.com",
        "time": "Thu Apr 22 16:11:25 2010 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Fri Apr 23 11:05:00 2010 -0700"
      },
      "message": "ocfs2: use OCFS2_INODE_SKIP_ORPHAN_DIR in ocfs2_symlink error path\n\nMark the inode with flag OCFS2_INODE_SKIP_ORPHAN_DIR when we get an error\nafter allocating one, so that we can kill the inode.\n\nSigned-off-by: Li Dongyang \u003clidongyang@novell.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "d4cd1871cff68e188dadcf6d1280762522b643eb",
      "tree": "cf3a6426342378956f4d797066ec060eb3939083",
      "parents": [
        "d5a30458a90597915977f06e79406b664a41b8ac"
      ],
      "author": {
        "name": "Li Dongyang",
        "email": "lidongyang@novell.com",
        "time": "Thu Apr 22 16:11:19 2010 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Fri Apr 23 11:03:49 2010 -0700"
      },
      "message": "ocfs2: add OCFS2_INODE_SKIP_ORPHAN_DIR flag and honor it in the inode wipe code\n\nCurrently in the error path of ocfs2_symlink and ocfs2_mknod, we just call\niput with the inode we failed with, but the inode wipe code will complain\nbecause we don\u0027t add the inode to orphan dir. One solution would be to lock\nthe orphan dir during the entire transaction, but that\u0027s too heavy for a\nrare error path. Instead, we add a flag, OCFS2_INODE_SKIP_ORPHAN_DIR which\ntells the inode wipe code that it won\u0027t find this inode in the orphan dir.\n\n[ Merge fixes and comment style cleanups -Mark ]\n\nSigned-off-by: Li Dongyang \u003clidongyang@novell.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "79681842e160c3211eeeb47ea31b061038d1e41e",
      "tree": "ebc5fbbd91e33fa633903b784d6bf0b4d068bb76",
      "parents": [
        "a42ab8e1a37257da37e0f018e707bf365ac24531"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Fri Apr 16 13:59:25 2010 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Apr 16 03:10:54 2010 -0700"
      },
      "message": "ocfs2: Reset status if we want to restart file extension.\n\nIn __ocfs2_extend_allocation, we will restart our file extension\nif ((!status) \u0026\u0026 restart_func). But there is a bug that the\nstatus is still left as -EGAIN. This is really an old bug,\nbut it is masked by the return value of ocfs2_journal_dirty.\nSo it show up when we make ocfs2_journal_dirty void.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "a42ab8e1a37257da37e0f018e707bf365ac24531",
      "tree": "4d85320533c3475560a36f8735fb4874680c8d12",
      "parents": [
        "428257f8870f0e72e85ce782d091fa1f366de7df"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed Mar 31 18:25:44 2010 -0700"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed Mar 31 18:39:08 2010 -0700"
      },
      "message": "ocfs2: Compute metaecc for superblocks during online resize.\n\nOnline resize writes out the new superblock and its backups directly.\nThe metaecc data wasn\u0027t being recomputed.  Let\u0027s do that directly.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nAcked-by: Mark Fasheh \u003cmfasheh@suse.com\u003e[\nCc: stable@kernel.org\n"
    },
    {
      "commit": "428257f8870f0e72e85ce782d091fa1f366de7df",
      "tree": "b705c3aa023b88595adb4d18a455e0c67c18a7f2",
      "parents": [
        "a03ab788d070c256eff1ac24cf0e3bc2ca148096"
      ],
      "author": {
        "name": "Wengang Wang",
        "email": "wen.gang.wang@oracle.com",
        "time": "Wed Mar 24 22:40:44 2010 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Mar 30 12:55:55 2010 -0700"
      },
      "message": "ocfs2: Check the owner of a lockres inside the spinlock\n\nThe checking of lockres owner in dlm_update_lvb() is not inside spinlock\nprotection. I don\u0027t see problem in current call path of dlm_update_lvb().\nBut just for code robustness.\n\nSigned-off-by: Wengang Wang \u003cwen.gang.wang@oracle.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "a03ab788d070c256eff1ac24cf0e3bc2ca148096",
      "tree": "f5c05f87457be0f863e69915fa4888bec071f6ad",
      "parents": [
        "efd647f744f3cf504ed83580274bd4b6918139fe"
      ],
      "author": {
        "name": "Coly Li",
        "email": "coly.li@suse.de",
        "time": "Fri Mar 26 05:15:12 2010 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Mar 30 12:52:13 2010 -0700"
      },
      "message": "ocfs2: one more warning fix in ocfs2_file_aio_write(), v2\n\nThis patch fixes another compiling warning in ocfs2_file_aio_write() like this,\n    fs/ocfs2/file.c: In function ‘ocfs2_file_aio_write’:\n    fs/ocfs2/file.c:2026: warning: suggest parentheses around ‘\u0026\u0026’ within ‘||’\n\nAs Joel suggested, \u0027!ret\u0027 is unary, this version removes the wrap from \u0027!ret\u0027.\n\nSigned-off-by: Coly Li \u003ccoly.li@suse.de\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "efd647f744f3cf504ed83580274bd4b6918139fe",
      "tree": "321aee41e451741c49e7581219e5059ae92b457a",
      "parents": [
        "9623e5a23724d09283c238960946ec6f65733afe"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Tue Mar 30 13:21:31 2010 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Mar 30 12:45:56 2010 -0700"
      },
      "message": "ocfs2_dlmfs: User DLM_* when decoding file open flags.\n\nIn commit 0016eedc4185a3cd7e578b027a6e69001b85d6c4, we have\nchanged dlmfs to use stackglue. So when use DLM* when we\ndecode dlm flags from open level.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "5a0e3ad6af8660be21ca98a971cd00f331318c05",
      "tree": "5bfb7be11a03176a87296a43ac6647975c00a1d1",
      "parents": [
        "ed391f4ebf8f701d3566423ce8f17e614cde9806"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 24 17:04:11 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 30 22:02:32 2010 +0900"
      },
      "message": "include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h\n\npercpu.h is included by sched.h and module.h and thus ends up being\nincluded when building most .c files.  percpu.h includes slab.h which\nin turn includes gfp.h making everything defined by the two files\nuniversally available and complicating inclusion dependencies.\n\npercpu.h -\u003e slab.h dependency is about to be removed.  Prepare for\nthis change by updating users of gfp and slab facilities include those\nheaders directly instead of assuming availability.  As this conversion\nneeds to touch large number of source files, the following script is\nused as the basis of conversion.\n\n  http://userweb.kernel.org/~tj/misc/slabh-sweep.py\n\nThe script does the followings.\n\n* Scan files for gfp and slab usages and update includes such that\n  only the necessary includes are there.  ie. if only gfp is used,\n  gfp.h, if slab is used, slab.h.\n\n* When the script inserts a new include, it looks at the include\n  blocks and try to put the new include such that its order conforms\n  to its surrounding.  It\u0027s put in the include block which contains\n  core kernel includes, in the same order that the rest are ordered -\n  alphabetical, Christmas tree, rev-Xmas-tree or at the end if there\n  doesn\u0027t seem to be any matching order.\n\n* If the script can\u0027t find a place to put a new include (mostly\n  because the file doesn\u0027t have fitting include block), it prints out\n  an error message indicating which .h file needs to be added to the\n  file.\n\nThe conversion was done in the following steps.\n\n1. The initial automatic conversion of all .c files updated slightly\n   over 4000 files, deleting around 700 includes and adding ~480 gfp.h\n   and ~3000 slab.h inclusions.  The script emitted errors for ~400\n   files.\n\n2. Each error was manually checked.  Some didn\u0027t need the inclusion,\n   some needed manual addition while adding it to implementation .h or\n   embedding .c file was more appropriate for others.  This step added\n   inclusions to around 150 files.\n\n3. The script was run again and the output was compared to the edits\n   from #2 to make sure no file was left behind.\n\n4. Several build tests were done and a couple of problems were fixed.\n   e.g. lib/decompress_*.c used malloc/free() wrappers around slab\n   APIs requiring slab.h to be added manually.\n\n5. The script was run on all .h files but without automatically\n   editing them as sprinkling gfp.h and slab.h inclusions around .h\n   files could easily lead to inclusion dependency hell.  Most gfp.h\n   inclusion directives were ignored as stuff from gfp.h was usually\n   wildly available and often used in preprocessor macros.  Each\n   slab.h inclusion directive was examined and added manually as\n   necessary.\n\n6. percpu.h was updated not to include slab.h.\n\n7. Build test were done on the following configurations and failures\n   were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my\n   distributed build env didn\u0027t work with gcov compiles) and a few\n   more options had to be turned off depending on archs to make things\n   build (like ipr on powerpc/64 which failed due to missing writeq).\n\n   * x86 and x86_64 UP and SMP allmodconfig and a custom test config.\n   * powerpc and powerpc64 SMP allmodconfig\n   * sparc and sparc64 SMP allmodconfig\n   * ia64 SMP allmodconfig\n   * s390 SMP allmodconfig\n   * alpha SMP allmodconfig\n   * um on x86_64 SMP allmodconfig\n\n8. percpu.h modifications were reverted so that it could be applied as\n   a separate patch and serve as bisection point.\n\nGiven the fact that I had only a couple of failures from tests on step\n6, I\u0027m fairly confident about the coverage of this conversion patch.\nIf there is a breakage, it\u0027s likely to be something in one of the arch\nheaders which should be easily discoverable easily on most builds of\nthe specific arch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nGuess-its-ok-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\n"
    },
    {
      "commit": "14741472a05245ed5778aa0aec055e1f920b6ef8",
      "tree": "0384fc0f8c3439a4bb2900bc725dae8a1f7924dd",
      "parents": [
        "b54c2ca475fa7d7450a45b6d778dae9dbe0bcbfe"
      ],
      "author": {
        "name": "Srinivas Eeda",
        "email": "srinivas.eeda@oracle.com",
        "time": "Mon Mar 22 16:50:47 2010 -0700"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Mar 23 18:22:59 2010 -0700"
      },
      "message": "ocfs2: Fix a race in o2dlm lockres mastery\n\nIn o2dlm, the master of a lock resource keeps a map of all interested\nnodes.  This prevents the master from purging the resource before an\ninterested node can create a lock.\n\nA race between the mastery thread and the mastery handler allowed an\ninterested node to discover who the master is without informing the\nmaster directly.  This is easily fixed by holding the dlm spinlock a\nlittle longer in the mastery handler.\n\nSigned-off-by: Srinivas Eeda \u003csrinivas.eeda@oracle.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "b54c2ca475fa7d7450a45b6d778dae9dbe0bcbfe",
      "tree": "a67f530a3f426d756a0383f8dc11b5928810d0f5",
      "parents": [
        "3939fda4b389993caf8741df5739b3e49f33a263"
      ],
      "author": {
        "name": "Tristan Ye",
        "email": "tristan.ye@oracle.com",
        "time": "Fri Mar 19 09:21:10 2010 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Mar 23 18:22:55 2010 -0700"
      },
      "message": "Ocfs2: Handle deletion of reflinked oprhan inodes correctly.\n\nThe rule is that all inodes in the orphan dir have ORPHANED_FL,\notherwise we treated it as an ERROR.  This rule works well except\nfor some rare cases of reflink operation:\n\nhttp://oss.oracle.com/bugzilla/show_bug.cgi?id\u003d1215\n\nThe problem is caused by how reflink and our orphan_scan thread\ninteract.\n\n * The orphan scan pulls the orphans into a queue first, then runs the\n   queue at a later time.  We only hold the orphan_dir\u0027s lock\n   during scanning.\n\n * Reflink create a oprhaned target in orphan_dir as its first step.\n   It removes the target and clears the flag as the final step.\n   These two steps take the orphan_dir\u0027s lock, but it is not held for\n   the duration.\n\nBased on the above semantics, a reflink inode can be moved out of the\norphan dir and have its ORPHANED_FL cleared before the queue of orphans\nis run.  This leads to a ERROR in ocfs2_query_wipde_inode().\n\nThis patch teaches ocfs2_query_wipe_inode() to detect previously\norphaned reflink targets.  If a reflink fails or a crash occurs during\nthe relfink operation, the inode will retain ORPHANED_FL and will be\nproperly wiped.\n\nSigned-off-by: Tristan Ye \u003ctristan.ye@oracle.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "3939fda4b389993caf8741df5739b3e49f33a263",
      "tree": "22f3cca50115d7d7c404fd65f87b8ab71e09ce13",
      "parents": [
        "b4414eea0e7b9c134262c801a87e338bf675962c"
      ],
      "author": {
        "name": "Tristan Ye",
        "email": "tristan.ye@oracle.com",
        "time": "Fri Mar 19 09:21:09 2010 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Mar 23 18:22:51 2010 -0700"
      },
      "message": "Ocfs2: Journaling i_flags and i_orphaned_slot when adding inode to orphan dir.\n\nCurrently, some callers were missing to journal the dirty inode after\nadding it to orphan dir.\n\nNow we\u0027re going to journal such modifications within the ocfs2_orphan_add()\nitself, It\u0027s safe to do so, though some existing caller may duplicate this,\nand it makes the logic look more straightforward anyway.\n\nSigned-off-by: Tristan Ye \u003ctristan.ye@oracle.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "b4414eea0e7b9c134262c801a87e338bf675962c",
      "tree": "09829d99527f1da69cc19074a2d3baef1195955e",
      "parents": [
        "b23179681c90a55e2a2083e1dde9f727ecffb2b7"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Thu Mar 11 18:31:09 2010 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Mar 23 18:22:40 2010 -0700"
      },
      "message": "ocfs2: Clear undo bits when local alloc is freed\n\nWhen the local alloc file changes windows, unused bits are freed back to the\nglobal bitmap. By defnition, those bits can not be in use by any file. Also,\nthe local alloc will never have been able to allocate those bits if they\nwere part of a previous truncate. Therefore it makes sense that we should\nclear unused local alloc bits in the undo buffer so that they can be used\nimmediatly.\n\n[ Modified to call it ocfs2_release_clusters() -- Joel ]\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "b23179681c90a55e2a2083e1dde9f727ecffb2b7",
      "tree": "262a3a1f4e7780fbcea841ca9ffc3d5ac0481cd5",
      "parents": [
        "dfe4d3d6a6f707fff1dbfd4b8fce65e64a91b809"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Fri Mar 19 15:04:24 2010 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Mar 19 14:53:52 2010 -0700"
      },
      "message": "ocfs2: Init meta_ac properly in ocfs2_create_empty_xattr_block.\n\nYou can\u0027t store a pointer that you haven\u0027t filled in yet and expect it\nto work.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "dfe4d3d6a6f707fff1dbfd4b8fce65e64a91b809",
      "tree": "28bbbc33446fe576b7baaa949fcd7d74c7e23726",
      "parents": [
        "b22b63ebafb97b66d1054e69941ee049d790c6cf"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Fri Mar 19 15:04:23 2010 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Mar 19 14:53:51 2010 -0700"
      },
      "message": "ocfs2: Fix the update of name_offset when removing xattrs\n\nWhen replacing a xattr\u0027s value, in some case we wipe its name/value\nfirst and then re-add it. The wipe is done by\nocfs2_xa_block_wipe_namevalue() when the xattr is in the inode or\nblock. We currently adjust name_offset for all the entries which have\n(offset \u003c name_offset). This does not adjust the entrie we\u0027re replacing.\nSince we are replacing the entry, we don\u0027t adjust the total entry count.\nWhen we calculate a new namevalue location, we trust the entries\nnow-wrong offset in ocfs2_xa_get_free_start().  The solution is to\nalso adjust the name_offset for the replaced entry, allowing\nocfs2_xa_get_free_start() to calculate the new namevalue location\ncorrectly.\n\nThe following script can trigger a kernel panic easily.\n\necho \u0027y\u0027|mkfs.ocfs2 --fs-features\u003dlocal,xattr -b 4K $DEVICE\nmount -t ocfs2 $DEVICE $MNT_DIR\nFILE\u003d$MNT_DIR/$RANDOM\nfor((i\u003d0;i\u003c76;i++))\ndo\nstring_76\u003d\"a$string_76\"\ndone\nstring_78\u003d\"aa$string_76\"\nstring_82\u003d\"aaaa$string_78\"\n\ntouch $FILE\nsetfattr -n \u0027user.test1234567890\u0027 -v $string_76 $FILE\nsetfattr -n \u0027user.test1234567890\u0027 -v $string_78 $FILE\nsetfattr -n \u0027user.test1234567890\u0027 -v $string_82 $FILE\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "b22b63ebafb97b66d1054e69941ee049d790c6cf",
      "tree": "98c6049f6ab23ad71ed4ba6dad43558296ae69b6",
      "parents": [
        "fcefd25ac89239cb57fa198f125a79ff85468c75"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Thu Mar 11 18:43:46 2010 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Mar 18 13:22:42 2010 -0700"
      },
      "message": "ocfs2: Always try for maximum bits with new local alloc windows\n\nWhat we were doing before was to ask for the current window size as the\nmaximum allocation. This had the effect of limiting the amount of allocation\nwe could get for the local alloc during times when the window size was\nshrunk due to fragmentation. In some cases, that could actually *increase*\nfragmentation by artificially limiting the number of bits we can accept. So\nwhile we still want to ask for a minimum number of bits equal to window\nsize, there is no reason why we should limit the number of bits the local\nalloc should accept. Hence always allow the maximum number of local alloc\nbits.\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "1a934c3e57594588c373aea858e4593cdfcba4f4",
      "tree": "606128ea739ae10cc30d10a13def2f0ad3e4f6bd",
      "parents": [
        "abf1b3cb5b20fbad27ca9c7497235eeb4dd3f4fd"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Thu Mar 18 15:54:22 2010 +0800"
      },
      "committer": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Thu Mar 18 15:54:22 2010 +0800"
      },
      "message": "ocfs2: enable discontig block group support.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "abf1b3cb5b20fbad27ca9c7497235eeb4dd3f4fd",
      "tree": "cd3abb6c107dfdc09c1d8014832ee27803e9e8f6",
      "parents": [
        "74380c479ad83addeff8a172ab95f59557b5b0c3"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Tue Apr 27 08:30:36 2010 +0800"
      },
      "committer": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Tue Apr 27 08:30:36 2010 +0800"
      },
      "message": "ocfs2: Set ac_last_group properly with discontig group.\n\nac_last_group is used to record the last block group we\nused during allocation. But the initialization process\nonly calls ocfs2_which_suballoc_group and fails to\nuse suballoc_loc properly. So let us do it.\nAnother function ocfs2_test_suballoc_bit also needs fix.\n\nI have searched all the callers of ocfs2_which_suballoc_group,\nand all the callers notices suballoc_loc now.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "74380c479ad83addeff8a172ab95f59557b5b0c3",
      "tree": "49b94f3ff48cd2ca6b53977a5e3070380ccecd6b",
      "parents": [
        "af2bf0d86019e0b0306965321096f8380b7ca830"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Mon Mar 22 14:20:18 2010 +0800"
      },
      "committer": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Mon Mar 22 14:20:18 2010 +0800"
      },
      "message": "ocfs2: Free block to the right block group.\n\nIn case the block we are going to free is allocated from\na discontiguous block group, we have to use suballoc_loc\nto be the right group.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "af2bf0d86019e0b0306965321096f8380b7ca830",
      "tree": "6a203b0970b00229528ddcdb9adc6c0ce734461d",
      "parents": [
        "8571882c21e5073b2f96147ec4ff9b7042339e1b"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Mon May 17 15:14:17 2010 +0800"
      },
      "committer": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Mon May 17 15:14:17 2010 +0800"
      },
      "message": "ocfs2: Add ocfs2_gd_is_discontig.\n\nAdd ocfs2_gd_is_discontig so that we can test whether\na group descriptor is discontiguous or not.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "8571882c21e5073b2f96147ec4ff9b7042339e1b",
      "tree": "1f7925e293e656e5c1c6cd2c2876ea977a7277e5",
      "parents": [
        "4711954eaa8d30f653fda238cecf919f1ae40d6f"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Tue Apr 13 14:38:06 2010 +0800"
      },
      "committer": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Tue Apr 13 14:38:06 2010 +0800"
      },
      "message": "ocfs2: ocfs2_group_bitmap_size has to handle old volume.\n\nocfs2_group_bitmap_size has to handle the case when the\nvolume don\u0027t have discontiguous block group support. So\npass the feature_incompat in and check it.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "4711954eaa8d30f653fda238cecf919f1ae40d6f",
      "tree": "f150d49ce67d3982faa22a3a73c143cc901234ac",
      "parents": [
        "95ec0adf0b56d6a3f0ca1ec87173311898486b2e"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Thu Apr 22 14:09:15 2010 +0800"
      },
      "committer": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Thu Apr 22 14:09:15 2010 +0800"
      },
      "message": "ocfs2: Some tiny bug fixes for discontiguous block allocation.\n\nThe fixes include:\n1. some endian problems.\n2. we should use bit/bpc in ocfs2_block_group_grow_discontig to\n   allocate clusters.\n3. set num_clusters properly in __ocfs2_claim_clusters.\n4. change name from ocfs2_supports_discontig_bh to\n   ocfs2_supports_discontig_bg.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "95ec0adf0b56d6a3f0ca1ec87173311898486b2e",
      "tree": "d1f0567655385ceb47c9d9169a6616f15876f6b9",
      "parents": [
        "8b06bc592ebc5a31e8d0b9c2ab17c6e78dde1f86"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Mar 26 10:10:08 2010 +0800"
      },
      "committer": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Fri Mar 26 10:10:08 2010 +0800"
      },
      "message": "ocfs2: Don\u0027t relink cluster groups when allocating discontig block groups\n\nWe don\u0027t have enough credits, and the filesystem is in a full state\nanyway.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "8b06bc592ebc5a31e8d0b9c2ab17c6e78dde1f86",
      "tree": "b05dc205b03329aa3e0c0963b76317fc91973a04",
      "parents": [
        "2b6cb576aa80611f1f6a3c88708d1e68a8d97985"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Mar 26 10:09:29 2010 +0800"
      },
      "committer": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Fri Mar 26 10:09:29 2010 +0800"
      },
      "message": "ocfs2: Grow discontig block groups in one transaction.\n\nRather than extending the transaction every time we add an extent to a\ndiscontiguous block group, we grab enough credits to fill the extent\nlist up front.  This means we can free the bits in the same transaction\nif we end up not getting enough space.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "2b6cb576aa80611f1f6a3c88708d1e68a8d97985",
      "tree": "a984f09104970133379e4d370b9f01e7f85c6f9b",
      "parents": [
        "ba2066351b630f0205ebf725f5c81a2a07a77cd7"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Mar 26 10:09:15 2010 +0800"
      },
      "committer": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Fri Mar 26 10:09:15 2010 +0800"
      },
      "message": "ocfs2: Set suballoc_loc on allocated metadata.\n\nGet the suballoc_loc from ocfs2_claim_new_inode() or\nocfs2_claim_metadata().  Store it on the appropriate field of the block\nwe just allocated.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "ba2066351b630f0205ebf725f5c81a2a07a77cd7",
      "tree": "033395fc2b1679cc17fa72751e7f1837d42aee69",
      "parents": [
        "1ed9b777f77929ae961d6f9cdf828a07200ba71c"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Mar 26 10:08:59 2010 +0800"
      },
      "committer": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Fri Mar 26 10:08:59 2010 +0800"
      },
      "message": "ocfs2: Return allocated metadata blknos on the ocfs2_suballoc_result.\n\nRather than calculating the resulting block number, return it on the\nocfs2_suballoc_result structure.  This way we can calculate block\nnumbers for discontiguous block groups.\n\nCluster groups keep doing it the old way.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "1ed9b777f77929ae961d6f9cdf828a07200ba71c",
      "tree": "a0bb6c9e9be1f5d3d46d6cdac0a4397303e22795",
      "parents": [
        "13e434cf0cacd2f03a7f4cd077e3e995ef5ef710"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu May 06 13:59:06 2010 +0800"
      },
      "committer": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Thu May 06 13:59:06 2010 +0800"
      },
      "message": "ocfs2: ocfs2_claim_*() don\u0027t need an ocfs2_super argument.\n\nThey all take an ocfs2_alloc_context, which has the allocation inode.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "13e434cf0cacd2f03a7f4cd077e3e995ef5ef710",
      "tree": "e13c0131deb1409c4445242cef52c5fda97a170f",
      "parents": [
        "aa8f8e93c898a0319bcd6c79a9a42fe52abac7d7"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Mar 26 10:08:27 2010 +0800"
      },
      "committer": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Fri Mar 26 10:08:27 2010 +0800"
      },
      "message": "ocfs2: Trim suballocations if they cross discontiguous regions\n\nA discontiguous block group can find a range of free bits that straddle\nmore than one region of its space.  Callers can\u0027t handle that, so we\ntrim the returned bits until they fit within one region.\n\nOnly cluster allocations ask for min_bits\u003e1.  Discontiguous block groups\nare only for block allocations.  So min_bits doesn\u0027t matter here.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "aa8f8e93c898a0319bcd6c79a9a42fe52abac7d7",
      "tree": "0fa5cbd4dccf25399b3da68f7627e235a9b717e5",
      "parents": [
        "9cbc01231e82f9390edaea2b766abcb7165dc4b2"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Mar 26 10:08:07 2010 +0800"
      },
      "committer": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Fri Mar 26 10:08:07 2010 +0800"
      },
      "message": "ocfs2: ocfs2_claim_suballoc_bits() doesn\u0027t need an osb argument.\n\nIt\u0027s contained on ac-\u003eac_inode-\u003ei_sb anyway.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "9cbc01231e82f9390edaea2b766abcb7165dc4b2",
      "tree": "7fd72381972cae8bd81eb3c5d5c6d1fe26173b94",
      "parents": [
        "7d1fe093bf04124dcc50c5dde1765bd098464bfa"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Mar 26 10:07:42 2010 +0800"
      },
      "committer": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Fri Mar 26 10:07:42 2010 +0800"
      },
      "message": "ocfs2: Add suballoc_loc to metadata blocks.\n\nWe need a suballoc_loc field on any suballocated block.  Define them.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "7d1fe093bf04124dcc50c5dde1765bd098464bfa",
      "tree": "a86faa1dc041acd214de5ccbc1baf80ea0109449",
      "parents": [
        "798db35f4649eac2778381c390ed7d12de9ec767"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Apr 13 14:30:19 2010 +0800"
      },
      "committer": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Tue Apr 13 14:30:19 2010 +0800"
      },
      "message": "ocfs2: Pass suballocation results back via a structure.\n\nWe\u0027re going to be adding more info to a suballocator allocation.  Rather\nthan growing every function in the chain, let\u0027s pass a result structure\naround.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "798db35f4649eac2778381c390ed7d12de9ec767",
      "tree": "988c30bd86d4913c2f9187bb8504135ec0b80f62",
      "parents": [
        "4cbe4249d6586d5d88ef271e07302407a14c8443"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Apr 13 14:26:32 2010 +0800"
      },
      "committer": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Tue Apr 13 14:26:32 2010 +0800"
      },
      "message": "ocfs2: Allocate discontiguous block groups.\n\nIf we cannot get a contiguous region for a block group, allocate a\ndiscontiguous one when the filesystem supports it.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "4cbe4249d6586d5d88ef271e07302407a14c8443",
      "tree": "907eb8e61e3cf8ababfe1890f2c52ee82eb0e227",
      "parents": [
        "0467ae954d1843de65e7cf8f706f88fe65cd8418"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Apr 13 14:26:12 2010 +0800"
      },
      "committer": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Tue Apr 13 14:26:12 2010 +0800"
      },
      "message": "ocfs2: Define data structures for discontiguous block groups.\n\nDefines the OCFS2_FEATURE_INCOMPAT_DISCONTIG_BG feature bit and modifies\nstruct ocfs2_group_desc for the feature.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "fcefd25ac89239cb57fa198f125a79ff85468c75",
      "tree": "be758d25079055bebe26dd9ad9a7db6121158a75",
      "parents": [
        "6527f8f848ec84b9daf1cb07601266126b8507ab"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Mar 15 15:39:00 2010 -0700"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed Mar 17 12:28:22 2010 -0700"
      },
      "message": "ocfs2: set i_mode on disk during acl operations\n\nocfs2_set_acl() and ocfs2_init_acl() were setting i_mode on the in-memory\ninode, but never setting it on the disk copy. Thus, acls were some times not\ngetting propagated between nodes. This patch fixes the issue by adding a\nhelper function ocfs2_acl_set_mode() which does this the right way.\nocfs2_set_acl() and ocfs2_init_acl() are then updated to call\nocfs2_acl_set_mode().\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "6527f8f848ec84b9daf1cb07601266126b8507ab",
      "tree": "fd7bbdfb3a63921e78f22480f60b5bc037e37d16",
      "parents": [
        "78c37eb0d5e6a9727b12ea0f1821795ffaa66cfe"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Wed Mar 10 09:56:52 2010 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed Mar 17 12:28:00 2010 -0700"
      },
      "message": "ocfs2: Update i_blocks in reflink operations.\n\nIn reflink, we need to upate i_blocks for the target inode.\n\nReported-by: Jie Liu \u003cjeff.liu@oracle.com\u003e\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "78c37eb0d5e6a9727b12ea0f1821795ffaa66cfe",
      "tree": "d789252a4335a1ac0910d34be29fe43bc4153d9c",
      "parents": [
        "ee860b6a650360c91f5d5f9a94262aad9be90015"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Wed Mar 03 11:26:27 2010 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed Mar 17 12:07:21 2010 -0700"
      },
      "message": "ocfs2: Change bg_chain check for ocfs2_validate_gd_parent.\n\nIn ocfs2_validate_gd_parent, we check bg_chain against the\ncl_next_free_rec of the dinode. Actually in resize, we have\nthe chance of bg_chain \u003d\u003d cl_next_free_rec. So add some\nadditional condition check for it.\n\nI also rename paramter \"clean_error\" to \"resize\", since the\nold one is not clearly enough to indicate that we should only\nmeet with this case in resize.\n\nbtw, the correpsonding bug is\nhttp://oss.oracle.com/bugzilla/show_bug.cgi?id\u003d1230.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "ee860b6a650360c91f5d5f9a94262aad9be90015",
      "tree": "745d678c30f4bcb6bd3306b39f9b2d1869481cef",
      "parents": [
        "a3d3203e4bb40f253b1541e310dc0f9305be7c84"
      ],
      "author": {
        "name": "Sachin Prabhu",
        "email": "sprabhu@redhat.com",
        "time": "Wed Mar 10 10:28:40 2010 -0500"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed Mar 17 12:07:16 2010 -0700"
      },
      "message": "\n[PATCH] Skip check for mandatory locks when unlocking\n\nocfs2_lock() will skip locks on file which has mode set to 02666. This\nis a problem in cases where the mode of the file is changed after a\nprocess has obtained a lock on the file.\n\nocfs2_lock() should skip the check for mandatory locks when unlocking a\nfile.\n\nSigned-off-by: Sachin Prabhu \u003csprabhu@redhat.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "c32da02342b7521df25fefc2ef20aee0e61cf887",
      "tree": "7e38f664fa3e13602c357d37f77d8adcf82fccc2",
      "parents": [
        "dca1d9f6d7ae428c193f32bd3e9a4ca13176648b",
        "318ae2edc3b29216abd8a2510f3f80b764f06858"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 12 16:04:50 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 12 16:04:50 2010 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (56 commits)\n  doc: fix typo in comment explaining rb_tree usage\n  Remove fs/ntfs/ChangeLog\n  doc: fix console doc typo\n  doc: cpuset: Update the cpuset flag file\n  Fix of spelling in arch/sparc/kernel/leon_kernel.c no longer needed\n  Remove drivers/parport/ChangeLog\n  Remove drivers/char/ChangeLog\n  doc: typo - Table 1-2 should refer to \"status\", not \"statm\"\n  tree-wide: fix typos \"ass?o[sc]iac?te\" -\u003e \"associate\" in comments\n  No need to patch AMD-provided drivers/gpu/drm/radeon/atombios.h\n  devres/irq: Fix devm_irq_match comment\n  Remove reference to kthread_create_on_cpu\n  tree-wide: Assorted spelling fixes\n  tree-wide: fix \u0027lenght\u0027 typo in comments and code\n  drm/kms: fix spelling in error message\n  doc: capitalization and other minor fixes in pnp doc\n  devres: typo fix s/dev/devm/\n  Remove redundant trailing semicolons from macros\n  fix typo \"definetly\" -\u003e \"definitely\" in comment\n  tree-wide: s/widht/width/g typo in comments\n  ...\n\nFix trivial conflict in Documentation/laptops/00-INDEX\n"
    },
    {
      "commit": "03affdef4fc85e416e3862abb0aa549c6034cdd0",
      "tree": "12836f1fd356a1fd6c18a44a31f252c5deea3a66",
      "parents": [
        "522dba7134d6b2e5821d3457f7941ec34f668e6d"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Wed Mar 10 15:20:32 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 12 15:52:27 2010 -0800"
      },
      "message": "fs/ocfs2/cluster/tcp.c: remove use of NIPQUAD, use %pI4\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nCc: Mark Fasheh \u003cmfasheh@suse.com\u003e\nAcked-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "318ae2edc3b29216abd8a2510f3f80b764f06858",
      "tree": "ce595adde342f57f379d277b25e4dd206988a052",
      "parents": [
        "25cf84cf377c0aae5dbcf937ea89bc7893db5176",
        "3e58974027b04e84f68b964ef368a6cd758e2f84"
      ],
      "author": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Mon Mar 08 16:55:37 2010 +0100"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Mon Mar 08 16:55:37 2010 +0100"
      },
      "message": "Merge branch \u0027for-next\u0027 into for-linus\n\nConflicts:\n\tDocumentation/filesystems/proc.txt\n\tarch/arm/mach-u300/include/mach/debug-macro.S\n\tdrivers/net/qlge/qlge_ethtool.c\n\tdrivers/net/qlge/qlge_main.c\n\tdrivers/net/typhoon.c\n"
    },
    {
      "commit": "52cf25d0ab7f78eeecc59ac652ed5090f69b619e",
      "tree": "031d1ffb3890bd69c0260c864c512e0be62ac05c",
      "parents": [
        "6c1733aca0b48db4d0e660d54976a1cca25b5eaf"
      ],
      "author": {
        "name": "Emese Revfy",
        "email": "re.emese@gmail.com",
        "time": "Tue Jan 19 02:58:23 2010 +0100"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Sun Mar 07 17:04:49 2010 -0800"
      },
      "message": "Driver core: Constify struct sysfs_ops in struct kobj_type\n\nConstify struct sysfs_ops.\n\nThis is part of the ops structure constification\neffort started by Arjan van de Ven et al.\n\nBenefits of this constification:\n\n * prevents modification of data that is shared\n   (referenced) by many other structure instances\n   at runtime\n\n * detects/prevents accidental (but not intentional)\n   modification attempts on archs that enforce\n   read-only kernel data at runtime\n\n * potentially better optimized code as the compiler\n   can assume that the const data cannot be changed\n\n * the compiler/linker move const data into .rodata\n   and therefore exclude them from false sharing\n\nSigned-off-by: Emese Revfy \u003cre.emese@gmail.com\u003e\nAcked-by: David Teigland \u003cteigland@redhat.com\u003e\nAcked-by: Matt Domsch \u003cMatt_Domsch@dell.com\u003e\nAcked-by: Maciej Sosnowski \u003cmaciej.sosnowski@intel.com\u003e\nAcked-by: Hans J. Koch \u003chjk@linutronix.de\u003e\nAcked-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nAcked-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nAcked-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "984b3f5746ed2cde3d184651dabf26980f2b66e5",
      "tree": "87dc2162b4778b0075874d9592384530022e15a4",
      "parents": [
        "e3cb91ce1ac1d93a7cc6f81bb5247f7602b572bb"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Fri Mar 05 13:41:37 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 06 11:26:23 2010 -0800"
      },
      "message": "bitops: rename for_each_bit() to for_each_set_bit()\n\nRename for_each_bit to for_each_set_bit in the kernel source tree.  To\npermit for_each_clear_bit(), should that ever be added.\n\nThe patch includes a macro to map the old for_each_bit() onto the new\nfor_each_set_bit().  This is a (very) temporary thing to ease the migration.\n\n[akpm@linux-foundation.org: add temporary for_each_bit()]\nSuggested-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSuggested-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Russell King \u003crmk@arm.linux.org.uk\u003e\nCc: David Woodhouse \u003cdwmw2@infradead.org\u003e\nCc: Artem Bityutskiy \u003cdedekind@infradead.org\u003e\nCc: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e213e26ab3988c516c06eba4dcd030ac052f6dc9",
      "tree": "6e26fbdbb842b387697d73daf6e70cf718269a77",
      "parents": [
        "c812a51d11bbe983f4c24e32b59b265705ddd3c2",
        "efd8f0e6f6c1faa041f228d7113bd3a9db802d49"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 05 13:20:53 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 05 13:20:53 2010 -0800"
      },
      "message": "Merge branch \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6\n\n* \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6: (33 commits)\n  quota: stop using QUOTA_OK / NO_QUOTA\n  dquot: cleanup dquot initialize routine\n  dquot: move dquot initialization responsibility into the filesystem\n  dquot: cleanup dquot drop routine\n  dquot: move dquot drop responsibility into the filesystem\n  dquot: cleanup dquot transfer routine\n  dquot: move dquot transfer responsibility into the filesystem\n  dquot: cleanup inode allocation / freeing routines\n  dquot: cleanup space allocation / freeing routines\n  ext3: add writepage sanity checks\n  ext3: Truncate allocated blocks if direct IO write fails to update i_size\n  quota: Properly invalidate caches even for filesystems with blocksize \u003c pagesize\n  quota: generalize quota transfer interface\n  quota: sb_quota state flags cleanup\n  jbd: Delay discarding buffers in journal_unmap_buffer\n  ext3: quota_write cross block boundary behaviour\n  quota: drop permission checks from xfs_fs_set_xstate/xfs_fs_set_xquota\n  quota: split out compat_sys_quotactl support from quota.c\n  quota: split out netlink notification support from quota.c\n  quota: remove invalid optimization from quota_sync_all\n  ...\n\nFixed trivial conflicts in fs/namei.c and fs/ufs/inode.c\n"
    },
    {
      "commit": "871a293155a24554e153538d36e3a80fa169aefb",
      "tree": "7e38f5a2f9e87f63cbc4bc1077a4bb49dde441b0",
      "parents": [
        "907f4554e2521cb28b0009d17167760650a9561c"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Mar 03 09:05:07 2010 -0500"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri Mar 05 00:20:30 2010 +0100"
      },
      "message": "dquot: cleanup dquot initialize routine\n\nGet rid of the initialize dquot operation - it is now always called from\nthe filesystem and if a filesystem really needs it\u0027s own (which none\ncurrently does) it can just call into it\u0027s own routine directly.\n\nRename the now static low-level dquot_initialize helper to __dquot_initialize\nand vfs_dq_init to dquot_initialize to have a consistent namespace.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "907f4554e2521cb28b0009d17167760650a9561c",
      "tree": "68dc49163fd34331f8efbd63592c8f1baa387031",
      "parents": [
        "9f7547580263d4a55efe06ce5cfd567f568be6e8"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Mar 03 09:05:06 2010 -0500"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri Mar 05 00:20:30 2010 +0100"
      },
      "message": "dquot: move dquot initialization responsibility into the filesystem\n\nCurrently various places in the VFS call vfs_dq_init directly.  This means\nwe tie the quota code into the VFS.  Get rid of that and make the\nfilesystem responsible for the initialization.   For most metadata operations\nthis is a straight forward move into the methods, but for truncate and\nopen it\u0027s a bit more complicated.\n\nFor truncate we currently only call vfs_dq_init for the sys_truncate case\nbecause open already takes care of it for ftruncate and open(O_TRUNC) - the\nnew code causes an additional vfs_dq_init for those which is harmless.\n\nFor open the initialization is moved from do_filp_open into the open method,\nwhich means it happens slightly earlier now, and only for regular files.\nThe latter is fine because we don\u0027t need to initialize it for operations\non special files, and we already do it as part of the namespace operations\nfor directories.\n\nAdd a dquot_file_open helper that filesystems that support generic quotas\ncan use to fill in -\u003eopen.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "9f7547580263d4a55efe06ce5cfd567f568be6e8",
      "tree": "6f926a075eeed815d0a6680c06f235da0e5ea6d9",
      "parents": [
        "257ba15cedf1288f0c96118d7e63947231d27278"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Mar 03 09:05:05 2010 -0500"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri Mar 05 00:20:30 2010 +0100"
      },
      "message": "dquot: cleanup dquot drop routine\n\nGet rid of the drop dquot operation - it is now always called from\nthe filesystem and if a filesystem really needs it\u0027s own (which none\ncurrently does) it can just call into it\u0027s own routine directly.\n\nRename the now static low-level dquot_drop helper to __dquot_drop\nand vfs_dq_drop to dquot_drop to have a consistent namespace.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "257ba15cedf1288f0c96118d7e63947231d27278",
      "tree": "7a977a0ea08a324ce74aedce19406cb0688f15e2",
      "parents": [
        "b43fa8284d7790d9cca32c9c55e24f29be2fa33b"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Mar 03 09:05:04 2010 -0500"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri Mar 05 00:20:29 2010 +0100"
      },
      "message": "dquot: move dquot drop responsibility into the filesystem\n\nCurrently clear_inode calls vfs_dq_drop directly.  This means\nwe tie the quota code into the VFS.  Get rid of that and make the\nfilesystem responsible for the drop inside the -\u003eclear_inode\nsuperblock operation.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "b43fa8284d7790d9cca32c9c55e24f29be2fa33b",
      "tree": "acb7f205fe2a1ae324e0e11c50f43baaa6b8dfab",
      "parents": [
        "759bfee658beab14af7b357156461d0eb852be2c"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Mar 03 09:05:03 2010 -0500"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri Mar 05 00:20:29 2010 +0100"
      },
      "message": "dquot: cleanup dquot transfer routine\n\nGet rid of the transfer dquot operation - it is now always called from\nthe filesystem and if a filesystem really needs it\u0027s own (which none\ncurrently does) it can just call into it\u0027s own routine directly.\n\nRename the now static low-level dquot_transfer helper to __dquot_transfer\nand vfs_dq_transfer to dquot_transfer to have a consistent namespace,\nand make the new dquot_transfer return a normal negative errno value\nwhich all callers expect.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "63936ddaa16b9486e2d426ed7b09f559a5c60f87",
      "tree": "4cb1c4581799e10c26dd71d1a7d420de3c2cfd05",
      "parents": [
        "5dd4056db84387975140ff2568eaa0406f07985e"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Mar 03 09:05:01 2010 -0500"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri Mar 05 00:20:28 2010 +0100"
      },
      "message": "dquot: cleanup inode allocation / freeing routines\n\nGet rid of the alloc_inode and free_inode dquot operations - they are\nalways called from the filesystem and if a filesystem really needs\ntheir own (which none currently does) it can just call into it\u0027s\nown routine directly.\n\nAlso get rid of the vfs_dq_alloc/vfs_dq_free wrappers and always\ncall the lowlevel dquot_alloc_inode / dqout_free_inode routines\ndirectly, which now lose the number argument which is always 1.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "5dd4056db84387975140ff2568eaa0406f07985e",
      "tree": "03c26d7f6e3367b167bfeeb1a01654c6619573f4",
      "parents": [
        "49792c806d0bfd53afc789dcdf50dc9bed2c5b83"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Mar 03 09:05:00 2010 -0500"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri Mar 05 00:20:28 2010 +0100"
      },
      "message": "dquot: cleanup space allocation / freeing routines\n\nGet rid of the alloc_space, free_space, reserve_space, claim_space and\nrelease_rsv dquot operations - they are always called from the filesystem\nand if a filesystem really needs their own (which none currently does)\nit can just call into it\u0027s own routine directly.\n\nMove shared logic into the common __dquot_alloc_space,\ndquot_claim_space_nodirty and __dquot_free_space low-level methods,\nand rationalize the wrappers around it to move as much as possible\ncode into the common block for CONFIG_QUOTA vs not.  Also rename\nall these helpers to be named dquot_* instead of vfs_dq_*.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    }
  ],
  "next": "9df5778ecee8b301b447fc05706792d5f447ace5"
}
