)]}'
{
  "log": [
    {
      "commit": "468eedde23d6c9335935773f4f5764267d5a7763",
      "tree": "7daaae752dc2e1793ba83bc854e5f8daa4879223",
      "parents": [
        "da561c9cfa3022f6134ef52686d52931d3d1df3d"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "boyu.mt@taobao.com",
        "time": "Tue Feb 22 22:14:41 2011 +0800"
      },
      "committer": {
        "name": "Tao Ma",
        "email": "boyu.mt@taobao.com",
        "time": "Tue Feb 22 22:14:41 2011 +0800"
      },
      "message": "ocfs2: Remove mlog(0) from fs/ocfs2/file.c\n\nThis is the 2nd step to remove the debug info of INODE.\n\nSigned-off-by: Tao Ma \u003cboyu.mt@taobao.com\u003e\n\n"
    },
    {
      "commit": "c1e8d35ef5ffb393b94a192034b5e3541e005d75",
      "tree": "b9a7f089acd3408c2835a3dfd6aa7bb0407587b3",
      "parents": [
        "ef6b689b63b9f5227ccee6f16dd9ee3faf58a464"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "boyu.mt@taobao.com",
        "time": "Mon Mar 07 16:43:21 2011 +0800"
      },
      "committer": {
        "name": "Tao Ma",
        "email": "boyu.mt@taobao.com",
        "time": "Mon Mar 07 16:43:21 2011 +0800"
      },
      "message": "ocfs2: Remove EXIT from masklog.\n\nmlog_exit is used to record the exit status of a function.\nBut because it is added in so many functions, if we enable it,\nthe system logs get filled up quickly and cause too much I/O.\nSo actually no one can open it for a production system or even\nfor a test.\n\nThis patch just try to remove it or change it. So:\n1. if all the error paths already use mlog_errno, it is just removed.\n   Otherwise, it will be replaced by mlog_errno.\n2. if it is used to print some return value, it is replaced with\n   mlog(0,...).\nmlog_exit_ptr is changed to mlog(0.\nAll those mlog(0,...) will be replaced with trace events later.\n\nSigned-off-by: Tao Ma \u003cboyu.mt@taobao.com\u003e\n"
    },
    {
      "commit": "ef6b689b63b9f5227ccee6f16dd9ee3faf58a464",
      "tree": "ebe3416fcc221e152f2625e8e8794e92e3d8c979",
      "parents": [
        "422e6c4bc4b48c15b3cb57a1ca71431abfc57e54"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "boyu.mt@taobao.com",
        "time": "Mon Feb 21 11:10:44 2011 +0800"
      },
      "committer": {
        "name": "Tao Ma",
        "email": "boyu.mt@taobao.com",
        "time": "Mon Feb 21 11:10:44 2011 +0800"
      },
      "message": "ocfs2: Remove ENTRY from masklog.\n\nENTRY is used to record the entry of a function.\nBut because it is added in so many functions, if we enable it,\nthe system logs get filled up quickly and cause too much I/O.\nSo actually no one can open it for a production system or even\nfor a test.\n\nSo for mlog_entry_void, we just remove it.\nfor mlog_entry(...), we replace it with mlog(0,...), and they\nwill be replace by trace event later.\n\nSigned-off-by: Tao Ma \u003cboyu.mt@taobao.com\u003e\n"
    },
    {
      "commit": "2fe17c1075836b66678ed2a305fd09b6773883aa",
      "tree": "eb5287be8138686682eef9622872cfc7657e0664",
      "parents": [
        "64c23e86873ee410554d6d1c76b60da47025e96f"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Jan 14 13:07:43 2011 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jan 17 02:25:31 2011 -0500"
      },
      "message": "fallocate should be a file operation\n\nCurrently all filesystems except XFS implement fallocate asynchronously,\nwhile XFS forced a commit.  Both of these are suboptimal - in case of O_SYNC\nI/O we really want our allocation on disk, especially for the !KEEP_SIZE\ncase where we actually grow the file with user-visible zeroes.  On the\nother hand always commiting the transaction is a bad idea for fast-path\nuses of fallocate like for example in recent Samba versions.   Given\nthat block allocation is a data plane operation anyway change it from\nan inode operation to a file operation so that we have the file structure\navailable that lets us check for O_SYNC.\n\nThis also includes moving the code around for a few of the filesystems,\nand remove the already unnedded S_ISDIR checks given that we only wire\nup fallocate for regular files.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "64c23e86873ee410554d6d1c76b60da47025e96f",
      "tree": "b30c5ff8782ebfdec6956d7834f796731fd3a1d4",
      "parents": [
        "eb745dbccce56f1bbe3f80b95ad2a325145171c2"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Jan 14 13:07:30 2011 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jan 17 02:25:30 2011 -0500"
      },
      "message": "make the feature checks in -\u003efallocate future proof\n\nInstead of various home grown checks that might need updates for new\nflags just check for any bit outside the mask of the features supported\nby the filesystem.  This makes the check future proof for any newly\nadded flag.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "db47fef2cd9aab76ab976e8b45a06a1b3ad0e3e4",
      "tree": "6a1527c3a7ae8992714e0fcddd0da35b1e040eb5",
      "parents": [
        "c25d246715b87ad37e69e7abd1a0fed781423fa2"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Nov 17 20:46:17 2010 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jan 12 20:16:43 2011 -0500"
      },
      "message": "Ocfs2: handle hole punching via fallocate properly\n\nThis patch just makes ocfs2 use its UNRESERVP ioctl when we get the hole punch\nflag in fallocate.  I didn\u0027t test it, but it seems simple enough.  Thanks,\n\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nAcked-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b74c79e99389cd79b31fcc08f82c24e492e63c7e",
      "tree": "763c6b412517306670bc625e90035f2d16bb739f",
      "parents": [
        "34286d6662308d82aed891852d04c7c3a2649b16"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:58 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:29 2011 +1100"
      },
      "message": "fs: provide rcu-walk aware permission i_ops\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "39c99f12f15c8bf8257985d9b2a2548a03d18c00",
      "tree": "38f09ce41f6cbfd3a73b1dc66098ba3bf05e2d6a",
      "parents": [
        "388c4bcb4e63e88fb1f312a2f5f9eb2623afcf5b"
      ],
      "author": {
        "name": "Tristan Ye",
        "email": "tristan.ye@oracle.com",
        "time": "Tue Dec 07 14:35:07 2010 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Dec 09 15:36:48 2010 -0800"
      },
      "message": "Ocfs2: Teach \u0027coherency\u003dfull\u0027 O_DIRECT writes to correctly up_read i_alloc_sem.\n\nDue to newly-introduced \u0027coherency\u003dfull\u0027 O_DIRECT writes also takes the EX\nrw_lock like buffered writes did(rw_level \u003d\u003d 1), it turns out messing the\nusage of \u0027level\u0027 in ocfs2_dio_end_io() up, which caused i_alloc_sem being\nfailed to get up_read\u0027d correctly.\n\nThis patch tries to teach ocfs2_dio_end_io to understand well on all locking\nstuffs by explicitly introducing a new bit for i_alloc_sem in iocb\u0027s private\ndata, just like what we did for rw_lock.\n\nSigned-off-by: Tristan Ye \u003ctristan.ye@oracle.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "ebdec241d509cf69f6ebf1ecdc036359d3dbe154",
      "tree": "e3c23f9b213936cb8501c83f55522a01f4a69aca",
      "parents": [
        "56b0dacfa2b8416815a2f2a5f4f51e46be4cf14c"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Wed Oct 06 10:47:23 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 25 21:18:20 2010 -0400"
      },
      "message": "fs: kill block_prepare_write\n\n__block_write_begin and block_prepare_write are identical except for slightly\ndifferent calling conventions.  Convert all callers to the __block_write_begin\ncalling conventions and drop block_prepare_write.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "f8cae0f03f75adb54b1d48ddbc90f84a1f5de186",
      "tree": "6007d5bb2b955d6509cfb19384aba85c8d4caa94",
      "parents": [
        "d2ecad9faca2221ae6f664f146f0dcae661bf39d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 19:30:38 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 19:30:38 2010 -0700"
      },
      "message": "ocfs2: drop the BLKDEV_IFL_WAIT flag\n\nCommit dd3932eddf42 (\"block: remove BLKDEV_IFL_WAIT\") had removed the\nflag argument to blkdev_issue_flush(), but the ocfs2 merge brought in a\nnew one.  It didn\u0027t cause a merge conflict, so the merges silently\nworked out fine, but the result didn\u0027t actually compile.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7bdb0d18bfd381cc5491eb95973ec5604b356c7e",
      "tree": "1abe07df935a336eeac5c7705dc9b59341b47b0a",
      "parents": [
        "75d9bbc73804285020aa4d99bd2a9600edea8945"
      ],
      "author": {
        "name": "Tristan Ye",
        "email": "tristan.ye@oracle.com",
        "time": "Mon Oct 11 16:46:39 2010 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Mon Oct 11 14:14:55 2010 -0700"
      },
      "message": "ocfs2: Add a mount option \"coherency\u003d*\" to handle cluster coherency for O_DIRECT writes.\n\nCurrently, the default behavior of O_DIRECT writes was allowing\nconcurrent writing among nodes to the same file, with no cluster\ncoherency guaranteed (no EX lock held).  This can leave stale data in\nthe cache for buffered reads on other nodes.\n\nThe new mount option introduce a chance to choose two different\nbehaviors for O_DIRECT writes:\n\n    * coherency\u003dfull, as the default value, will disallow\n                      concurrent O_DIRECT writes by taking\n                      EX locks.\n\n    * coherency\u003dbuffered, allow concurrent O_DIRECT writes\n                          without EX lock among nodes, which\n                          gains high performance at risk of\n                          getting stale data on other nodes.\n\nSigned-off-by: Tristan Ye \u003ctristan.ye@oracle.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "c0e1a3e80dc030cd54f06416efbf9e439bf6ecb7",
      "tree": "659e4af1bc80c9b14458cfcfae87a35fe196e8bf",
      "parents": [
        "5e98d492406818e6a94c0ba54c61f59d40cefa4a"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed Sep 15 16:56:54 2010 -0700"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed Sep 15 16:56:54 2010 -0700"
      },
      "message": "ocfs2: Silence unused warning.\n\nWhen CONFIG_OCFS2_DEBUG_MASKLOG is undefined, we don\u0027t use the dentry\nvariable in ocfs2_sync_file().  Let\u0027s just move all access to the dentry\ninside the logging call.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "729963a1ff8d069d05dab6a024bfd59805ac622c",
      "tree": "5489aae570960d1908d738913ea581cc1689fbbb",
      "parents": [
        "17ae521158d6fe89cfdd00a9990aa40d02e81391",
        "6ea4843f53282465f2bdbe5eedde7d8c3081dfdf"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Sep 10 08:41:04 2010 -0700"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Sep 10 08:41:04 2010 -0700"
      },
      "message": "Merge branch \u0027cow_readahead\u0027 of git://oss.oracle.com/git/tma/linux-2.6 into merge-2\n"
    },
    {
      "commit": "4c38881f87c21ada5609a4065cb10e3e74da0d6e",
      "tree": "cc311dbffe1e6435e3a25151d32a82b5c9150684",
      "parents": [
        "83fd9c7f65634ac440a6b9b7a63ba562f213ac60"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Aug 05 20:32:46 2010 +0200"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Sep 10 08:39:44 2010 -0700"
      },
      "message": "ocfs2: Remove ocfs2_sync_inode()\n\nocfs2_sync_inode() is used only from ocfs2_sync_file(). But all data has\nalready been written before calling ocfs2_sync_file() and ocfs2 doesn\u0027t use\ninode\u0027s private_list for tracking metadata buffers thus sync_mapping_buffers()\nis superfluous as well.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nAcked-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "95fa859a268fd7d9bae6f2d4d095e3f61100ac1b",
      "tree": "93d006d3ac6e848c47ae5e3a3155e001d5bf42d7",
      "parents": [
        "3c3f20c9813391ba4004764072989744395cf405"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Wed Jun 09 16:48:59 2010 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Sep 10 08:38:52 2010 -0700"
      },
      "message": "ocfs2: Remove obscure error handling in direct_write.\n\nIn ocfs2, actually we don\u0027t allow any direct write pass i_size,\nsee the function ocfs2_prepare_inode_for_write. So we don\u0027t\nneed the bogus simple_setsize.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "81c8c82b5a39f9127e8b239e9b406a6c3a41b228",
      "tree": "960d5e11585afea6bb4e24a87fb73a975e16883c",
      "parents": [
        "9b4c0ff32ccd87ab52d4c5bd0a0536febce11370"
      ],
      "author": {
        "name": "Tristan Ye",
        "email": "tristan.ye@oracle.com",
        "time": "Thu Aug 19 15:15:00 2010 +0800"
      },
      "committer": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Wed Sep 08 14:25:57 2010 +0800"
      },
      "message": "Ocfs2: Fix a regression bug from mainline commit(6b933c8e6f1a2f3118082c455eef25f9b1ac7b45).\n\nThe patch is to fix the regression bug brought from commit 6b933c8...( \u0027ocfs2:\nAvoid direct write if we fall back to buffered I/O\u0027):\n\nhttp://oss.oracle.com/bugzilla/show_bug.cgi?id\u003d1285\n\nThe commit 6b933c8e6f1a2f3118082c455eef25f9b1ac7b45 changed __generic_file_aio_write\nto generic_file_buffered_write, which didn\u0027t call filemap_{write,wait}_range to  flush\nthe pagecaches when we were falling O_DIRECT writes back to buffered ones. it did hurt\nthe O_DIRECT semantics somehow in extented odirect writes.\n\nThis patch tries to guarantee O_DIRECT writes of \u0027fall back to buffered\u0027 to be correctly\nflushed.\n\nSigned-off-by: Tristan Ye \u003ctristan.ye@oracle.com\u003e\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "9b4c0ff32ccd87ab52d4c5bd0a0536febce11370",
      "tree": "b9e77d2798eac9051353b29f22e9315d9d9e13b5",
      "parents": [
        "b2b6ebf5f740e015b2155343958f067e594323ea"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue Aug 24 14:28:03 2010 +0200"
      },
      "committer": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Wed Sep 08 14:25:57 2010 +0800"
      },
      "message": "ocfs2: Fix deadlock when allocating page\n\nWe cannot call grab_cache_page() when holding filesystem locks or with\na transaction started as grab_cache_page() calls page allocation with\nGFP_KERNEL flag and thus page reclaim can recurse back into the filesystem\ncausing deadlocks or various assertion failures. We have to use\nfind_or_create_page() instead and pass it GFP_NOFS as we do with other\nallocations.\n\nAcked-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "04eda1a18019bb387dc7e97ee99979dd88dc608a",
      "tree": "8162ad0ec77c7ef80903a1fec134b43b71a7d272",
      "parents": [
        "f63afdb2c32db850fa1bfccf84643a8885cbeb61"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Aug 05 20:32:45 2010 +0200"
      },
      "committer": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Wed Sep 08 14:25:55 2010 +0800"
      },
      "message": "ocfs2: Flush drive\u0027s caches on fdatasync\n\nWhen \u0027barrier\u0027 mount option is specified, we have to issue a cache flush\nduring fdatasync(2). We have to do this even if inode doesn\u0027t have\nI_DIRTY_DATASYNC set because we still have to get written *data* to disk so\nthat they are not lost in case of crash.\n\nAcked-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSinged-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "155027121fe52f9b4f25e9d156c22f2f5012e5fe",
      "tree": "74067d52b685ab314173e74cc85a43a5d9e20c7d",
      "parents": [
        "b890823635e022467b924e3d9da8c5166a4e349c"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Thu Aug 12 10:36:38 2010 +0800"
      },
      "committer": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Thu Aug 12 10:39:57 2010 +0800"
      },
      "message": "ocfs2: Add struct file to ocfs2_refcount_cow.\n\nAdd a new parameter \u0027struct file *\u0027 to ocfs2_refcount_cow\nso that we can add readahead support later.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "b890823635e022467b924e3d9da8c5166a4e349c",
      "tree": "0fbd6c0051c51b0d03df82b8c7203dfc868b383a",
      "parents": [
        "0378da0fda6edf5aaffda6f1248a78986bd955b5"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Thu Aug 12 10:27:14 2010 +0800"
      },
      "committer": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Thu Aug 12 10:39:52 2010 +0800"
      },
      "message": "ocfs2: pass struct file* to ocfs2_prepare_inode_for_write.\n\nstruct file * has file_ra_state to store the readahead state\nand data. So pass this to ocfs2_prepare_inode_for_write. so\nthat it can be used in ocfs2_refcount_cow.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "2c27c65ed0696f0b5df2dad2cf6462d72164d547",
      "tree": "7d9036e3dea98938f7fd7074366ee73929e9b2e5",
      "parents": [
        "db78b877f7744bec4a9d9f9e7d10da3931d7cd39"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Jun 04 11:30:04 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:47:39 2010 -0400"
      },
      "message": "check ATTR_SIZE contraints in inode_change_ok\n\nMake sure we check the truncate constraints early on in -\u003esetattr by adding\nthose checks to inode_change_ok.  Also clean up and document inode_change_ok\nto make this obvious.\n\nAs a fallout we don\u0027t have to call inode_newsize_ok from simple_setsize and\nsimplify it down to a truncate_setsize which doesn\u0027t return an error.  This\nsimplifies a lot of setattr implementations and means we use truncate_setsize\nalmost everywhere.  Get rid of fat_setsize now that it\u0027s trivial and mark\next2_setsize static to make the calling convention obvious.\n\nKeep the inode_newsize_ok in vmtruncate for now as all callers need an\naudit for its removal anyway.\n\nNote: setattr code in ecryptfs doesn\u0027t call inode_change_ok at all and\nneeds a deeper audit, but that is left for later.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "1025774ce411f2bd4b059ad7b53f0003569b74fa",
      "tree": "2be221c205cb5579652a6063e8ee27d1c72d1bbd",
      "parents": [
        "eef2380c187890816b73b1a4cb89a09203759469"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Jun 04 11:30:02 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:47:37 2010 -0400"
      },
      "message": "remove inode_setattr\n\nReplace inode_setattr with opencoded variants of it in all callers.  This\nmoves the remaining call to vmtruncate into the filesystem methods where it\ncan be replaced with the proper truncate sequence.\n\nIn a few cases it was obvious that we would never end up calling vmtruncate\nso it was left out in the opencoded variant:\n\n spufs: explicitly checks for ATTR_SIZE earlier\n btrfs,hugetlbfs,logfs,dlmfs: explicitly clears ATTR_SIZE earlier\n ufs: contains an opencoded simple_seattr + truncate that sets the filesize just above\n\nIn addition to that ncpfs called inode_setattr with handcrafted iattrs,\nwhich allowed to trim down the opencoded variant.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "5453258d532e72731b0829e4fefd36dd611a2fff",
      "tree": "6caa67ad70df5cd266ff42f458d6994b689898a5",
      "parents": [
        "13ceef099edd2b70c5a6f3a9ef5d6d97cda2e096"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Jul 16 13:32:33 2010 -0700"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Jul 16 13:33:39 2010 -0700"
      },
      "message": "ocfs2: Silence gcc warning in ocfs2_write_zero_page().\n\nocfs2_write_zero_page() has a loop that won\u0027t ever be skipped, but gcc\ndoesn\u0027t know that.  Set ret\u003d0 just to make gcc happy.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "5693486bad2bc2ac585a2c24f7e2f3964b478df9",
      "tree": "03d61d72c1b73bbf0b049bf0328f8e0c69f35a43",
      "parents": [
        "a4bfb4cf11fd2211b788af59dc8a8b4394bca227"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Jul 01 15:13:31 2010 -0700"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Jul 08 13:25:35 2010 -0700"
      },
      "message": "ocfs2: Zero the tail cluster when extending past i_size.\n\nocfs2\u0027s allocation unit is the cluster.  This can be larger than a block\nor even a memory page.  This means that a file may have many blocks in\nits last extent that are beyond the block containing i_size.  There also\nmay be more unwritten extents after that.\n\nWhen ocfs2 grows a file, it zeros the entire cluster in order to ensure\nfuture i_size growth will see cleared blocks.  Unfortunately,\nblock_write_full_page() drops the pages past i_size.  This means that\nocfs2 is actually leaking garbage data into the tail end of that last\ncluster.  This is a bug.\n\nWe adjust ocfs2_write_begin_nolock() and ocfs2_extend_file() to detect\nwhen a write or truncate is past i_size.  They will use\nocfs2_zero_extend() to ensure the data is properly zeroed.\n\nOlder versions of ocfs2_zero_extend() simply zeroed every block between\ni_size and the zeroing position.  This presumes three things:\n\n1) There is allocation for all of these blocks.\n2) The extents are not unwritten.\n3) The extents are not refcounted.\n\n(1) and (2) hold true for non-sparse filesystems, which used to be the\nonly users of ocfs2_zero_extend().  (3) is another bug.\n\nSince we\u0027re now using ocfs2_zero_extend() for sparse filesystems as\nwell, we teach ocfs2_zero_extend() to check every extent between\ni_size and the zeroing position.  If the extent is unwritten, it is\nignored.  If it is refcounted, it is CoWed.  Then it is zeroed.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "a4bfb4cf11fd2211b788af59dc8a8b4394bca227",
      "tree": "c06f45ac5a992575a0e47dbc80bdf187db030cca",
      "parents": [
        "1739da40543ed2129050ccfa8a076a851ab6ed00"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Jul 06 14:36:06 2010 -0700"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Jul 08 13:24:49 2010 -0700"
      },
      "message": "ocfs2: When zero extending, do it by page.\n\nocfs2_zero_extend() does its zeroing block by block, but it calls a\nfunction named ocfs2_write_zero_page().  Let\u0027s have\nocfs2_write_zero_page() handle the page level.  From\nocfs2_zero_extend()\u0027s perspective, it is now page-at-a-time.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "15c6fd9786dfaab43547bf60df6fa63170fb64fc",
      "tree": "afd997b3402761e28b6c39f414fbd93c69fdcdce",
      "parents": [
        "7bb46a6734a7e1ad4beaecc11cae7ed3ff81d30f"
      ],
      "author": {
        "name": "npiggin@suse.de",
        "email": "npiggin@suse.de",
        "time": "Thu May 27 01:05:34 2010 +1000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu May 27 22:15:42 2010 -0400"
      },
      "message": "kill spurious reference to vmtruncate\n\nLots of filesystems calls vmtruncate despite not implementing the old\n-\u003etruncate method.  Switch them to use simple_setsize and add some\ncomments about the truncate code where it seems fitting.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "7ea8085910ef3dd4f3cad6845aaa2b580d39b115",
      "tree": "d9c1edb5906f943f7d70bfb4b65106e29772d379",
      "parents": [
        "cc967be54710d97c05229b2e5ba2d00df84ddd64"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Wed May 26 17:53:25 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu May 27 22:05:02 2010 -0400"
      },
      "message": "drop unused dentry argument to -\u003efsync\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "5dd4056db84387975140ff2568eaa0406f07985e",
      "tree": "03c26d7f6e3367b167bfeeb1a01654c6619573f4",
      "parents": [
        "49792c806d0bfd53afc789dcdf50dc9bed2c5b83"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Mar 03 09:05:00 2010 -0500"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri Mar 05 00:20:28 2010 +0100"
      },
      "message": "dquot: cleanup space allocation / freeing routines\n\nGet rid of the alloc_space, free_space, reserve_space, claim_space and\nrelease_rsv dquot operations - they are always called from the filesystem\nand if a filesystem really needs their own (which none currently does)\nit can just call into it\u0027s own routine directly.\n\nMove shared logic into the common __dquot_alloc_space,\ndquot_claim_space_nodirty and __dquot_free_space low-level methods,\nand rationalize the wrappers around it to move as much as possible\ncode into the common block for CONFIG_QUOTA vs not.  Also rename\nall these helpers to be named dquot_* instead of vfs_dq_*.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "5051f76883897ea3d3d034c92e7b84236da2ec57",
      "tree": "58893d2ed954046be420e59f5743fcb7c7a273a4",
      "parents": [
        "6fcef3f04a1a0f8d7a086147d2f2e650c8cc2754"
      ],
      "author": {
        "name": "Wengang Wang",
        "email": "wen.gang.wang@oracle.com",
        "time": "Fri Feb 26 18:18:25 2010 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Sat Feb 27 20:08:51 2010 -0800"
      },
      "message": "ocfs2: send SIGXFSZ if new filesize exceeds limit -v2\n\nThis patch makes ocfs2 send SIGXFSZ if new file size exceeds the rlimit.\nProcesses may get SIGXFSZ on one node (in the cluster) while others will\nnot on another if file size limits are different on the two nodes.\n\nSigned-off-by: Wengang Wang \u003cwen.gang.wang@oracle.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "66b116c9d8f70baadf5b2145dddb35af222df041",
      "tree": "b1e7592378c5eb14c03a8928795c627ed0f8bc40",
      "parents": [
        "cbe0e331fdbdb256943499358c75bc098a2134c1"
      ],
      "author": {
        "name": "Coly Li",
        "email": "coly.li@suse.de",
        "time": "Thu Feb 25 14:57:13 2010 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Feb 26 15:41:18 2010 -0800"
      },
      "message": "ocfs2: fix warning in ocfs2_file_aio_write()\n\nThis patch fixes a compiling warning in ocfs2_file_aio_write().\n\nSigned-off-by: Coly Li \u003ccoly.li@suse.de\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "96a1cc731adb28dc4feb71701091b80e67d486a7",
      "tree": "0220e211d3468b18e288d77bc828b6101adc9245",
      "parents": [
        "b89c54282db0c8634a2d2dc200f196d571750ce5"
      ],
      "author": {
        "name": "Wengang Wang",
        "email": "wen.gang.wang@oracle.com",
        "time": "Tue Feb 09 14:57:45 2010 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Feb 26 15:41:07 2010 -0800"
      },
      "message": "ocfs2: Clean up the checks for CoW and direct I/O.\n\nWhen ocfs2 has to do CoW for refcounted extents, we disable direct I/O\nand go through the buffered I/O path.  This makes the combined check\neasier to read.\n\nSigned-off-by: Wengang Wang \u003cwen.gang.wang@oracle.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "60c486744c9a30ea60fa863e9587242dde2fe4bd",
      "tree": "e93e3752955a5ae8faf39e957eb46d5586534531",
      "parents": [
        "0a1ea437d87af830786605813972e8e277992917"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Wed Feb 03 09:56:04 2010 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Feb 02 18:15:37 2010 -0800"
      },
      "message": "ocfs2: Add parenthesis to wrap the check for O_DIRECT.\n\nAdd parenthesis to wrap the check for O_DIRECT.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "2bd632165c1f783888bd4cbed95f2f304829159b",
      "tree": "a4938fece1a47d22b1f8ca652a8218736b27aa3a",
      "parents": [
        "e5f2cb2b1ad05473fffe6970618997b906f23873"
      ],
      "author": {
        "name": "Sunil Mushran",
        "email": "sunil.mushran@oracle.com",
        "time": "Mon Jan 25 16:57:38 2010 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Mon Jan 25 19:20:51 2010 -0800"
      },
      "message": "ocfs2/trivial: Remove trailing whitespaces\n\nPatch removes trailing whitespaces.\n\nSigned-off-by: Sunil Mushran \u003csunil.mushran@oracle.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "86470e98cc52532006f47a6cb96d3ebe1ba7ad97",
      "tree": "f80366196c7b1bcf7546b2ed0265cc66497caff0",
      "parents": [
        "6b7b284958d47b77d06745b36bc7f36dab769d9b"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Thu Dec 03 21:55:05 2009 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed Dec 30 19:53:35 2009 -0800"
      },
      "message": "ocfs2: Handle O_DIRECT when writing to a refcounted cluster.\n\nIn case of writing to a refcounted cluster with O_DIRECT,\nwe need to fall back to buffer write. And when it is finished,\nwe need to flush the page and the journal as we did for other\nO_DIRECT writes.\n\nThis patch fix oss bug 1191.\nhttp://oss.oracle.com/bugzilla/show_bug.cgi?id\u003d1191\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nTested-by: Tristan Ye \u003ctristan.ye@oracle.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "6b2f3d1f769be5779b479c37800229d9a4809fc3",
      "tree": "046ef6736ec6c25ab1c68741ba715d13645af336",
      "parents": [
        "59bc055211b8d266ab6089158058bf8268e02006"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Tue Oct 27 11:05:28 2009 +0100"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Dec 10 15:02:50 2009 +0100"
      },
      "message": "vfs: Implement proper O_SYNC semantics\n\nWhile Linux provided an O_SYNC flag basically since day 1, it took until\nLinux 2.4.0-test12pre2 to actually get it implemented for filesystems,\nsince that day we had generic_osync_around with only minor changes and the\ngreat \"For now, when the user asks for O_SYNC, we\u0027ll actually give\nO_DSYNC\" comment.  This patch intends to actually give us real O_SYNC\nsemantics in addition to the O_DSYNC semantics.  After Jan\u0027s O_SYNC\npatches which are required before this patch it\u0027s actually surprisingly\nsimple, we just need to figure out when to set the datasync flag to\nvfs_fsync_range and when not.\n\nThis patch renames the existing O_SYNC flag to O_DSYNC while keeping it\u0027s\nnumerical value to keep binary compatibility, and adds a new real O_SYNC\nflag.  To guarantee backwards compatiblity it is defined as expanding to\nboth the O_DSYNC and the new additional binary flag (__O_SYNC) to make\nsure we are backwards-compatible when compiled against the new headers.\n\nThis also means that all places that don\u0027t care about the differences can\njust check O_DSYNC and get the right behaviour for O_SYNC, too - only\nplaces that actuall care need to check __O_SYNC in addition.  Drivers and\nnetwork filesystems have been updated in a fail safe way to always do the\nfull sync magic if O_DSYNC is set.  The few places setting O_SYNC for\nlower layers are kept that way for now to stay failsafe.\n\nWe enforce that O_DSYNC is set when __O_SYNC is set early in the open path\nto make sure we always get these sane options.\n\nNote that parisc really screwed up their headers as they already define a\nO_DSYNC that has always been a no-op.  We try to repair it by using it for\nthe new O_DSYNC and redefinining O_SYNC to send both the traditional\nO_SYNC numerical value _and_ the O_DSYNC one.\n\nCc: Richard Henderson \u003crth@twiddle.net\u003e\nCc: Ivan Kokshaysky \u003cink@jurassic.park.msu.ru\u003e\nCc: Grant Grundler \u003cgrundler@parisc-linux.org\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Andreas Dilger \u003cadilger@sun.com\u003e\nAcked-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nAcked-by: Kyle McMartin \u003ckyle@mcmartin.ca\u003e\nAcked-by: Ulrich Drepper \u003cdrepper@redhat.com\u003e\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "2f48d593b6ceb7bb63d34124ceba77d33be298cf",
      "tree": "87c77763eefb395dc25010ce989d4d704615225d",
      "parents": [
        "87f4b1bb98696e6cf84f57df7de41f28c2a7dbeb"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Thu Oct 15 11:10:49 2009 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed Oct 28 22:48:23 2009 -0700"
      },
      "message": "ocfs2: duplicate inline data properly during reflink.\n\nThe old reflink fails to handle inodes with inline data and will oops\nif it encounters them.  This patch copies inline data to the new inode.\nExtended attributes may still be refcounted.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nTested-by: Tristan Ye \u003ctristan.ye@oracle.com\u003e\n"
    },
    {
      "commit": "b64ada6b23d4a305fb3ca59b79dd38707fc53b69",
      "tree": "61bc87dc3a2549f54231261aaa544acffcd12281",
      "parents": [
        "be90a49ca22a95f184d9f32d35b5247b44032849",
        "b80474b432913f73cce8db001e9fa3104f9b79ee"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 23 09:29:20 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 23 09:29:20 2009 -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: (85 commits)\n  ocfs2: Use buffer IO if we are appending a file.\n  ocfs2: add spinlock protection when dealing with lockres-\u003epurge.\n  dlmglue.c: add missed mlog lines\n  ocfs2: __ocfs2_abort() should not enable panic for local mounts\n  ocfs2: Add ioctl for reflink.\n  ocfs2: Enable refcount tree support.\n  ocfs2: Implement ocfs2_reflink.\n  ocfs2: Add preserve to reflink.\n  ocfs2: Create reflinked file in orphan dir.\n  ocfs2: Use proper parameter for some inode operation.\n  ocfs2: Make transaction extend more efficient.\n  ocfs2: Don\u0027t merge in 1st refcount ops of reflink.\n  ocfs2: Modify removing xattr process for refcount.\n  ocfs2: Add reflink support for xattr.\n  ocfs2: Create an xattr indexed block if needed.\n  ocfs2: Call refcount tree remove process properly.\n  ocfs2: Attach xattr clusters to refcount tree.\n  ocfs2: Abstract ocfs2 xattr tree extend rec iteration process.\n  ocfs2: Abstract the creation of xattr block.\n  ocfs2: Remove inode from ocfs2_xattr_bucket_get_name_value.\n  ...\n"
    },
    {
      "commit": "8b2c0dba5159570af5721d40490f6c529d721500",
      "tree": "faca76fab3c9a65ba8e7be3aa93d02e4ff53f0cf",
      "parents": [
        "0129241e2b3b90ff83a8c774353e5612d84bd493"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Tue Aug 18 11:43:49 2009 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Sep 22 20:09:44 2009 -0700"
      },
      "message": "ocfs2: Call refcount tree remove process properly.\n\nNow with xattr refcount support, we need to check whether\nwe have xattr refcounted before we remove the refcount tree.\n\nNow the mechanism is:\n1) Check whether i_clusters \u003d\u003d 0, if no, exit.\n2) check whether we have i_xattr_loc in dinode. if yes, exit.\n2) Check whether we have inline xattr stored outside, if yes, exit.\n4) Remove the tree.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "37f8a2bfaa8364dd3644cccee8824bb8f5e409a5",
      "tree": "ab3083179c621c3e8d0be3980aaed96528f90599",
      "parents": [
        "293b2f70b4a16a1ca91efd28ef3d6634262c6887"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Wed Aug 26 09:47:28 2009 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Sep 22 20:09:38 2009 -0700"
      },
      "message": "ocfs2: CoW a reflinked cluster when it is truncated.\n\nWhen we truncate a file to a specific size which resides in a reflinked\ncluster, we need to CoW it since ocfs2_zero_range_for_truncate will\nzero the space after the size(just another type of write).\n\nSo we add a \"max_cpos\" in ocfs2_refcount_cow so that it will stop when\nit hit the max cluster offset.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "293b2f70b4a16a1ca91efd28ef3d6634262c6887",
      "tree": "4a85078faae7c529fa313d4964e0d6ad0905a612",
      "parents": [
        "6ae23c5555176c5b23480c9c578ff27437085ba5"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Tue Aug 25 08:02:48 2009 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Sep 22 20:09:37 2009 -0700"
      },
      "message": "ocfs2: Integrate CoW in file write.\n\nWhen we use mmap, we CoW the refcountd clusters in\nocfs2_write_begin_nolock. While for normal file\nio(including directio), we do CoW in\nocfs2_prepare_inode_for_write.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "d23c937b0f740888765676f6f82f509dbbb2bbad",
      "tree": "df4e085d935805f54061436ee820460c79143087",
      "parents": [
        "ebbbf757c6b8577ac2fb6181c08c2059153bb0e2"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue Aug 18 18:24:31 2009 +0200"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Sep 14 17:08:16 2009 +0200"
      },
      "message": "ocfs2: Update syncing after splicing to match generic version\n\nUpdate ocfs2 specific splicing code to use generic syncing helper. The sync now\ndoes not happen under rw_lock because generic_write_sync() acquires i_mutex\nwhich ranks above rw_lock. That should not matter because standard fsync path\ndoes not hold it either.\n\nAcked-by: Joel Becker \u003cJoel.Becker@oracle.com\u003e\nAcked-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\nCC: ocfs2-devel@oss.oracle.com\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "918941a3f3d46c2a69971b4718aaf13b1be2f1a7",
      "tree": "3ef80cb4b8107be981cc87904c7e80c0e383e5e5",
      "parents": [
        "b04f932171e8a99bb8ca2f863b2b9eadb85741e8"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Aug 17 18:50:08 2009 +0200"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Sep 14 17:08:15 2009 +0200"
      },
      "message": "ocfs2: Use __generic_file_aio_write instead of generic_file_aio_write_nolock\n\nUse the new helper. We have to submit data pages ourselves in case of O_SYNC\nwrite because __generic_file_aio_write does not do it for us. OCFS2 developpers\nmight think about moving the sync out of i_mutex which seems to be easily\npossible but that\u0027s out of scope of this patch.\n\nCC: ocfs2-devel@oss.oracle.com\nAcked-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "5e404e9ed1b05cafb044bd46792e50197df805ed",
      "tree": "e3146e03f8a0fc12307db0cbea900728a36ffaac",
      "parents": [
        "a1cf076ba93f9fdf3eb4195f9f43d1e7cb7550f2"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Feb 13 03:54:22 2009 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Sep 04 16:08:13 2009 -0700"
      },
      "message": "ocfs2: Pass ocfs2_caching_info into ocfs_init_*_extent_tree().\n\nWith this commit, extent tree operations are divorced from inodes and\nrely on ocfs2_caching_info.  Phew!\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "cbee7e1a6a1a2a3d6eda1f76ffc38a3ed3eeb6cc",
      "tree": "438ac4917675c27ecd3dce694ae3affd7ebf6c91",
      "parents": [
        "cc79d8c19e9d39446525a1026f1a21761f5d3cd2"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Feb 13 03:34:15 2009 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Sep 04 16:08:09 2009 -0700"
      },
      "message": "ocfs2: ocfs2_add_clusters_in_btree() no longer needs struct inode.\n\nOne more function that doesn\u0027t need a struct inode to pass to its\nchildren.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "0cf2f7632b1789b811ab20b611c4156e6de2b055",
      "tree": "34f7cf3584e4fa2bc187d4b75ce052cb98739b0e",
      "parents": [
        "292dd27ec76b96cebcef576f330ab121f59ccf05"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Feb 12 16:41:25 2009 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Sep 04 16:07:50 2009 -0700"
      },
      "message": "ocfs2: Pass struct ocfs2_caching_info to the journal functions.\n\nThe next step in divorcing metadata I/O management from struct inode is\nto pass struct ocfs2_caching_info to the journal functions.  Thus the\njournal locks a metadata cache with the cache io_lock function.  It also\ncan compare ci_last_trans and ci_created_trans directly.\n\nThis is a large patch because of all the places we change\nocfs2_journal_access..(handle, inode, ...) to\nocfs2_journal_access..(handle, INODE_CACHE(inode), ...).\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "cefcb800fa9536bb6f29485c53e6c82a65b0c022",
      "tree": "2ec23ec56afc83b0462d1ea141b13fd615962e41",
      "parents": [
        "812e7a6a43fc34bc8f70c2b80db4ea5997d66ea8"
      ],
      "author": {
        "name": "Goldwyn Rodrigues",
        "email": "rgoldwyn@gmail.com",
        "time": "Sat Jul 11 10:57:27 2009 -0500"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Mon Jul 20 15:47:58 2009 -0700"
      },
      "message": "ocfs2: Initialize count in aio_write before generic_write_checks\n\ngeneric_write_checks() expects count to be initialized to the size of\nthe write.  Writes to files open with O_DIRECT|O_LARGEFILE write 0 bytes\nbecause count is uninitialized.\n\nSigned-off-by: Goldwyn Rodrigues \u003crgoldwyn@suse.de\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "812e7a6a43fc34bc8f70c2b80db4ea5997d66ea8",
      "tree": "e6bb0b870f7b17690ec81c118119afc910bcabec",
      "parents": [
        "17ae26b669886efe237b77439e43eb390fceb119"
      ],
      "author": {
        "name": "Wengang Wang",
        "email": "wen.gang.wang@oracle.com",
        "time": "Fri Jul 10 13:26:04 2009 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Jul 10 16:53:52 2009 -0700"
      },
      "message": "ocfs2: log the actual return value of ocfs2_file_aio_write()\n\nin ocfs2_file_aio_write(), log_exit() could don\u0027t log the value\nwhich is really returned. this patch fixes it.\n\nSigned-off-by: Wengang Wang \u003cwen.gang.wang@oracle.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "1962f39abbb2d5643a7d59169422661a2d58793d",
      "tree": "a6d5f0566e10d9fd1417d9deda78ebe83b067ca2",
      "parents": [
        "1c520dfbf391e1617ef61553f815b8006a066c44"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Fri Jun 19 15:36:52 2009 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Mon Jun 22 14:24:45 2009 -0700"
      },
      "message": "ocfs2: Update atime in splice read if necessary.\n\nWe should call ocfs2_inode_lock_atime instead of ocfs2_inode_lock\nin ocfs2_file_splice_read like we do in ocfs2_file_aio_read so\nthat we can update atime in splice read if necessary.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "e04cc15f52eb072937cec2bbd8499f37afe5e1ef",
      "tree": "6c1613e6ca90dcb4c71035210bcb0540837abdbc",
      "parents": [
        "06c59bb896ce23c56829f6acf667faebd51dd3b8"
      ],
      "author": {
        "name": "Hisashi Hifumi",
        "email": "hifumi.hisashi@oss.ntt.co.jp",
        "time": "Tue Jun 09 16:47:45 2009 +0900"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Jun 09 10:45:47 2009 -0700"
      },
      "message": "ocfs2: fdatasync should skip unimportant metadata writeout\n\nIn ocfs2, fdatasync and fsync are identical.\nI think fdatasync should skip committing transaction when\ninode-\u003ei_state is set just I_DIRTY_SYNC and this indicates\nonly atime or/and mtime updates.\nFollowing patch improves fdatasync throughput.\n\n#sysbench --num-threads\u003d16 --max-requests\u003d300000 --test\u003dfileio\n--file-block-size\u003d4K --file-total-size\u003d16G --file-test-mode\u003drndwr\n--file-fsync-mode\u003dfdatasync run\n\nResults:\n-2.6.30-rc8\nTest execution summary:\n    total time:                          107.1445s\n    total number of events:              119559\n    total time taken by event execution: 116.1050\n    per-request statistics:\n         min:                            0.0000s\n         avg:                            0.0010s\n         max:                            0.1220s\n         approx.  95 percentile:         0.0016s\n\nThreads fairness:\n    events (avg/stddev):           7472.4375/303.60\n    execution time (avg/stddev):   7.2566/0.64\n\n-2.6.30-rc8-patched\nTest execution summary:\n    total time:                          86.8529s\n    total number of events:              300016\n    total time taken by event execution: 24.3077\n    per-request statistics:\n         min:                            0.0000s\n         avg:                            0.0001s\n         max:                            0.0336s\n         approx.  95 percentile:         0.0001s\n\nThreads fairness:\n    events (avg/stddev):           18751.0000/718.75\n    execution time (avg/stddev):   1.5192/0.05\n\nSigned-off-by: Hisashi Hifumi \u003chifumi.hisashi@oss.ntt.co.jp\u003e\nAcked-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "65bac575e35915801ea518b9d8d8824367d125c8",
      "tree": "bce57755cf8b9f783cdab046ea519c0e41f595e1",
      "parents": [
        "b4c30de39a2596503e888a7b47d19792f25913d6"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue Jun 02 14:24:01 2009 +0200"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed Jun 03 19:14:29 2009 -0700"
      },
      "message": "ocfs2: Fix possible deadlock with quotas in ocfs2_setattr()\n\nWe called vfs_dq_transfer() with global quota file lock held. This can lead\nto deadlocks as if vfs_dq_transfer() has to allocate new quota structure,\nit calls ocfs2_dquot_acquire() which tries to get quota file lock again and\nthis can block if another node requested the lock in the mean time.\n\nSince we have to call vfs_dq_transfer() with transaction already started\nand quota file lock ranks above the transaction start, we cannot just rely\non ocfs2_dquot_acquire() or ocfs2_dquot_release() on getting the lock\nif they need it. We fix the problem by acquiring pointers to all quota\nstructures needed by vfs_dq_transfer() already before calling the function.\nBy this we are sure that all quota structures are properly allocated and\nthey can be freed only after we drop references to them. Thus we don\u0027t need\nquota file lock anywhere inside vfs_dq_transfer().\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "328eaaba4e41a04c1dc4679d65bea3fee4349d86",
      "tree": "171bf86b590a841729bab11feec874869bcab49e",
      "parents": [
        "eb443e5a25d43996deb62b9bcee1a4ce5dea2ead"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Tue Apr 14 19:48:39 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Apr 15 12:10:12 2009 +0200"
      },
      "message": "ocfs2: fix i_mutex locking in ocfs2_splice_to_file()\n\nRearrange locking of i_mutex on destination and call to\nocfs2_rw_lock() so locks are only held while buffers are copied with\nthe pipe_to_file() actor, and not while waiting for more data on the\npipe.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "7bfac9ecf0585962fe13584f5cf526d8c8e76f17",
      "tree": "7e7c98311bb0d4c26e514b337216bbc8ade8d078",
      "parents": [
        "612392307cb09e49051225092cbbd7049bd8db93"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Mon Apr 06 17:41:00 2009 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:34:46 2009 -0700"
      },
      "message": "splice: fix deadlock in splicing to file\n\nThere\u0027s a possible deadlock in generic_file_splice_write(),\nsplice_from_pipe() and ocfs2_file_splice_write():\n\n - task A calls generic_file_splice_write()\n - this calls inode_double_lock(), which locks i_mutex on both\n   pipe-\u003einode and target inode\n - ordering depends on inode pointers, can happen that pipe-\u003einode is\n   locked first\n - __splice_from_pipe() needs more data, calls pipe_wait()\n - this releases lock on pipe-\u003einode, goes to interruptible sleep\n - task B calls generic_file_splice_write(), similarly to the first\n - this locks pipe-\u003einode, then tries to lock inode, but that is\n   already held by task A\n - task A is interrupted, it tries to lock pipe-\u003einode, but fails, as\n   it is already held by task B\n - ABBA deadlock\n\nFix this by explicitly ordering locks: the outer lock must be on\ntarget inode and the inner lock (which is later unlocked and relocked)\nmust be on pipe-\u003einode.  This is OK, pipe inodes and target inodes\nform two nonoverlapping sets, generic_file_splice_write() and friends\nare not called with a target which is a pipe.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nAcked-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\nAcked-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c19a28e1193a6c854738d609ae9b2fe2f6e6bea4",
      "tree": "79a354f827a5d3656be3f55d18d31265750d9d06",
      "parents": [
        "f15659628b43b27c20447c731456c39cbec973e9"
      ],
      "author": {
        "name": "Fernando Carrijo",
        "email": "fcarrijo@yahoo.com.br",
        "time": "Wed Jan 07 18:09:08 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:14 2009 -0800"
      },
      "message": "remove lots of double-semicolons\n\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nAcked-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nAcked-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nAcked-by: Casey Schaufler \u003ccasey@schaufler-ca.com\u003e\nAcked-by: Takashi Iwai \u003ctiwai@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "13723d00e374c2a6d6ccb5af6de965e89c3e1b01",
      "tree": "70dcd8f3d188bf2f62e4bf4b44a0662d8cd527ca",
      "parents": [
        "ffdd7a54631f07918b75e324d86713a08c11ec06"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Oct 17 19:25:01 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:32 2009 -0800"
      },
      "message": "ocfs2: Use metadata-specific ocfs2_journal_access_*() functions.\n\nThe per-metadata-type ocfs2_journal_access_*() functions hook up jbd2\ncommit triggers and allow us to compute metadata ecc right before the\nbuffers are written out.  This commit provides ecc for inodes, extent\nblocks, group descriptors, and quota blocks.  It is not safe to use\nextened attributes and metaecc at the same time yet.\n\nThe ocfs2_extent_tree and ocfs2_path abstractions in alloc.c both hide\nthe type of block at their root.  Before, it didn\u0027t matter, but now the\nroot block must use the appropriate ocfs2_journal_access_*() function.\nTo keep this abstract, the structures now have a pointer to the matching\njournal_access function and a wrapper call to call it.\n\nA few places use naked ocfs2_write_block() calls instead of adding the\nblocks to the journal.  We make sure to calculate their checksum and ecc\nbefore the write.\n\nSince we pass around the journal_access functions.  Let\u0027s typedef them\nin ocfs2.h.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "a90714c150e3ce677c57a9dac3ab1ec342c75a95",
      "tree": "43e3e744d86122940c0db39ac1bfed0d434b3216",
      "parents": [
        "9e33d69f553aaf11377307e8d6f82deb3385e351"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Oct 09 19:38:40 2008 +0200"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:23 2009 -0800"
      },
      "message": "ocfs2: Add quota calls for allocation and freeing of inodes and space\n\nAdd quota calls for allocation and freeing of inodes and space, also update\nestimates on number of needed credits for a transaction. Move out inode\nallocation from ocfs2_mknod_locked() because vfs_dq_init() must be called\noutside of a transaction.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "9e33d69f553aaf11377307e8d6f82deb3385e351",
      "tree": "ded5f48f6cf82db976f30d5f0f4d44b941f60f44",
      "parents": [
        "bbbd0eb34bf801dee01e345785959a75258f6567"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Aug 25 19:56:50 2008 +0200"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:23 2009 -0800"
      },
      "message": "ocfs2: Implementation of local and global quota file handling\n\nFor each quota type each node has local quota file. In this file it stores\nchanges users have made to disk usage via this node. Once in a while this\ninformation is synced to global file (and thus with other nodes) so that\nlimits enforcement at least aproximately works.\n\nGlobal quota files contain all the information about usage and limits. It\u0027s\nmostly handled by the generic VFS code (which implements a trie of structures\ninside a quota file). We only have to provide functions to convert structures\nfrom on-disk format to in-memory one. We also have to provide wrappers for\nvarious quota functions starting transactions and acquiring necessary cluster\nlocks before the actual IO is really started.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "b657c95c11088d77fc1bfc9c84d940f778bf9d12",
      "tree": "7e52e73aabbdbc55f644ad26735edc25a652ac32",
      "parents": [
        "a68979b857283daf4acc405e476dcc8812a3ff2b"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Nov 13 14:49:11 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:36:52 2009 -0800"
      },
      "message": "ocfs2: Wrap inode block reads in a dedicated function.\n\nThe ocfs2 code currently reads inodes off disk with a simple\nocfs2_read_block() call.  Each place that does this has a different set\nof sanity checks it performs.  Some check only the signature.  A couple\nvalidate the block number (the block read vs di-\u003ei_blkno).  A couple\nothers check for VALID_FL.  Only one place validates i_fs_generation.  A\ncouple check nothing.  Even when an error is found, they don\u0027t all do\nthe same thing.\n\nWe wrap inode reading into ocfs2_read_inode_block().  This will validate\nall the above fields, going readonly if they are invalid (they never\nshould be).  ocfs2_read_inode_block_full() is provided for the places\nthat want to pass read_block flags.  Every caller is passing a struct\ninode with a valid ip_blkno, so we don\u0027t need a separate blkno argument\neither.\n\nWe will remove the validation checks from the rest of the code in a\nlater commit, as they are no longer necessary.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "060bc66dd5017460076d9e808e2198cd532c943d",
      "tree": "11b4919c11c6529b783ae553a27a722e22b522b6",
      "parents": [
        "23fc2702bea686569281708ad519b41a11d0a2f4"
      ],
      "author": {
        "name": "Tiger Yang",
        "email": "tiger.yang@oracle.com",
        "time": "Fri Nov 14 11:17:29 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:34:20 2009 -0800"
      },
      "message": "ocfs2: add ocfs2_acl_chmod\n\nThis function is used to update acl xattrs during file mode changes.\n\nSigned-off-by: Tiger Yang \u003ctiger.yang@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "23fc2702bea686569281708ad519b41a11d0a2f4",
      "tree": "a567f38647047836332d1cfc17d7ad0be05c55ef",
      "parents": [
        "929fb014e041c6572c5e8c3686f1e32742b5b953"
      ],
      "author": {
        "name": "Tiger Yang",
        "email": "tiger.yang@oracle.com",
        "time": "Fri Nov 14 11:17:18 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:34:20 2009 -0800"
      },
      "message": "ocfs2: add ocfs2_check_acl\n\nThis function is used to enhance permission checking with POSIX ACLs.\n\nSigned-off-by: Tiger Yang \u003ctiger.yang@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "fecc01126d7a244b7e9b563c80663ffdca35343b",
      "tree": "dbc9144a0f4b6e6997928b2fa2ddeb483f8fd2d7",
      "parents": [
        "85db90e77806d48a19fda77dabe8897d369a1710"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Wed Nov 12 15:16:38 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:34:19 2009 -0800"
      },
      "message": "ocfs2: turn __ocfs2_remove_inode_range() into ocfs2_remove_btree_range()\n\nThis patch genericizes the high level handling of extent removal.\nocfs2_remove_btree_range() is nearly identical to\n__ocfs2_remove_inode_range(), except that extent tree operations have been\nused where necessary. We update ocfs2_remove_inode_range() to use the\ngeneric helper. Now extent tree based structures have an easy way to\ntruncate ranges.\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\nAcked-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "c435400140d24fbcb3da6b1e006be831f9056cb6",
      "tree": "6f90cad133521a2a4d52a57149a41199bdf89367",
      "parents": [
        "80bcaf3469b8aefd316d4ceb27d9af7cfbb0b913"
      ],
      "author": {
        "name": "Dmitri Monakhov",
        "email": "dmonakhov@openvz.org",
        "time": "Mon Oct 27 13:01:49 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Nov 10 09:51:47 2008 -0800"
      },
      "message": "ocfs2: truncate outstanding block after direct io failure\n\nSigned-off-by: Dmitri Monakhov \u003cdmonakhov@openvz.org\u003e\nCc: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nCc: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\nCc: Joel Becker \u003cJoel.Becker@oracle.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "fa38e92cb34e27e60d0faf1035934eb9b44aa1d4",
      "tree": "a7bbefddcf693735aa0dbdf3abca25b57268df1a",
      "parents": [
        "8573f79d30077875e2b6e83849b5245bfbb08685"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Oct 20 19:23:51 2008 +0200"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Nov 10 09:51:46 2008 -0800"
      },
      "message": "ocfs2: Fix check of return value of ocfs2_start_trans()\n\nOn failure, ocfs2_start_trans() returns values like ERR_PTR(-ENOMEM).\nThus checks for !handle are wrong. Fix them to use IS_ERR().\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "4e02ed4b4a2fae34aae766a5bb93ae235f60adb8",
      "tree": "bddfb61b7cc4a4007ae176ccb1ace5740b61da8d",
      "parents": [
        "9b913735e53ab0da4a792bac0de8e178cc13dcfb"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Wed Oct 29 14:00:55 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 30 11:38:45 2008 -0700"
      },
      "message": "fs: remove prepare_write/commit_write\n\nNothing uses prepare_write or commit_write. Remove them from the tree\ncompletely.\n\n[akpm@linux-foundation.org: schedule simple_prepare_write() for unexporting]\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0fcaa56a2a020dd6f90c202b7084e6f4cbedb6c2",
      "tree": "057204016523ce0274d4a23ec02944075f084e8c",
      "parents": [
        "31d33073ca38603dea705dae45e094a64ca062d6"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Oct 09 17:20:31 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Tue Oct 14 11:51:57 2008 -0700"
      },
      "message": "ocfs2: Simplify ocfs2_read_block()\n\nMore than 30 callers of ocfs2_read_block() pass exactly OCFS2_BH_CACHED.\nOnly six pass a different flag set.  Rather than have every caller care,\nlet\u0027s make ocfs2_read_block() take no flags and always do a cached read.\nThe remaining six places can call ocfs2_read_blocks() directly.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "31d33073ca38603dea705dae45e094a64ca062d6",
      "tree": "cf02beb489456ebc9e07bace80e96ad1150f2cbf",
      "parents": [
        "da1e90985a0e767e44397c9db0937e236033fa58"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Oct 09 17:20:30 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Tue Oct 14 11:43:29 2008 -0700"
      },
      "message": "ocfs2: Require an inode for ocfs2_read_block(s)().\n\nNow that synchronous readers are using ocfs2_read_blocks_sync(), all\ncallers of ocfs2_read_blocks() are passing an inode.  Use it\nunconditionally.  Since it\u0027s there, we don\u0027t need to pass the\nocfs2_super either.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "a81cb88b64a479b78c6dd5666678d50171865db8",
      "tree": "9fe0f67e30d7c70d43785827e57736ac01558c24",
      "parents": [
        "fd8351f83d413b41da956109cf429c15881886e2"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Tue Oct 07 14:25:16 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 13 17:02:44 2008 -0700"
      },
      "message": "ocfs2: Don\u0027t check for NULL before brelse()\n\nThis is pointless as brelse() already does the check.\n\nSigned-off-by: Mark Fasheh\n"
    },
    {
      "commit": "2b4e30fbde425828b17f0e9c8f8e3fd3ecb2bc75",
      "tree": "5b340cde72e058b51642f0c7255818f62014bc91",
      "parents": [
        "12462f1d9f0b96389497438dc2730c6f7410be82"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed Sep 03 20:03:41 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 13 17:02:43 2008 -0700"
      },
      "message": "ocfs2: Switch over to JBD2.\n\nocfs2 wants JBD2 for many reasons, not the least of which is that JBD is\nlimiting our maximum filesystem size.\n\nIt\u0027s a pretty trivial change.  Most functions are just renamed.  The\nonly functional change is moving to Jan\u0027s inode-based ordered data mode.\nIt\u0027s better, too.\n\nBecause JBD2 reads and writes JBD journals, this is compatible with any\nexisting filesystem.  It can even interact with JBD-based ocfs2 as long\nas the journal is formated for JBD.\n\nWe provide a compatibility option so that paranoid people can still use\nJBD for the time being.  This will go away shortly.\n\n[ Moved call of ocfs2_begin_ordered_truncate() from ocfs2_delete_inode() to\n  ocfs2_truncate_for_delete(). --Mark ]\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "8d6220d6a74a33552cf877bcea25503d7f6a59e6",
      "tree": "2c3f662c55ab4a0a22989c06edf0d027387bfbed",
      "parents": [
        "1625f8ac151743e452ec062c2989669c508ffa48"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Aug 22 12:46:09 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 13 16:57:05 2008 -0700"
      },
      "message": "ocfs2: Change ocfs2_get_*_extent_tree() to ocfs2_init_*_extent_tree()\n\nThe original get/put_extent_tree() functions held a reference on\net_root_bh.  However, every single caller already has a safe reference,\nmaking the get/put cycle irrelevant.\n\nWe change ocfs2_get_*_extent_tree() to ocfs2_init_*_extent_tree().  It\nno longer gets a reference on et_root_bh.  ocfs2_put_extent_tree() is\nremoved.  Callers now have a simpler init+use pattern.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "f99b9b7ccf6a691f653cec45f36bfdd1e94769c7",
      "tree": "1c6ff6ea1fa1bb86b70f1fd78dd725b559c729e4",
      "parents": [
        "1e61ee79e2a96f62c007486677319814ce621c3c"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed Aug 20 19:36:33 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 13 16:57:05 2008 -0700"
      },
      "message": "ocfs2: Make ocfs2_extent_tree the first-class representation of a tree.\n\nWe now have three different kinds of extent trees in ocfs2: inode data\n(dinode), extended attributes (xattr_tree), and extended attribute\nvalues (xattr_value).  There is a nice abstraction for them,\nocfs2_extent_tree, but it is hidden in alloc.c.  All the calling\nfunctions have to pick amongst a varied API and pass in type bits and\noften extraneous pointers.\n\nA better way is to make ocfs2_extent_tree a first-class object.\nEveryone converts their object to an ocfs2_extent_tree() via the\nocfs2_get_*_extent_tree() calls, then uses the ocfs2_extent_tree for all\ntree calls to alloc.c.\n\nThis simplifies a lot of callers, making for readability.  It also\nprovides an easy way to add additional extent tree types, as they only\nneed to be defined in alloc.c with a ocfs2_get_\u003cnew\u003e_extent_tree()\nfunction.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "cf1d6c763fbcb115263114302485ad17e7933d87",
      "tree": "85717dc9d20b7ac1e31b683653933f2d30099f44",
      "parents": [
        "fdd77704a8b4666a32120fcd1e4a9fedaf3263d8"
      ],
      "author": {
        "name": "Tiger Yang",
        "email": "tiger.yang@oracle.com",
        "time": "Mon Aug 18 17:11:00 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 13 16:57:02 2008 -0700"
      },
      "message": "ocfs2: Add extended attribute support\n\nThis patch implements storing extended attributes both in inode or a single\nexternal block. We only store EA\u0027s in-inode when blocksize \u003e 512 or that\ninode block has free space for it. When an EA\u0027s value is larger than 80\nbytes, we will store the value via b-tree outside inode or block.\n\nSigned-off-by: Tiger Yang \u003ctiger.yang@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "f56654c435c06f2b2bd5751889b1a08a3add7d6c",
      "tree": "b186d68aedc5dda7afe435f5a68c03937ae382ff",
      "parents": [
        "ac11c827192272eabb68b8f4cf844066461d9690"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Mon Aug 18 17:38:48 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 13 16:57:01 2008 -0700"
      },
      "message": "ocfs2: Add extent tree operation for xattr value btrees\n\nAdd some thin wrappers around ocfs2_insert_extent() for each of the 3\ndifferent btree types, ocfs2_inode_insert_extent(),\nocfs2_xattr_value_insert_extent() and ocfs2_xattr_tree_insert_extent(). The\nlast is for the xattr index btree, which will be used in a followup patch.\n\nAll the old callers in file.c etc will call ocfs2_dinode_insert_extent(),\nwhile the other two handle the xattr issue. And the init of extent tree are\nhandled by these functions.\n\nWhen storing xattr value which is too large, we will allocate some clusters\nfor it and here ocfs2_extent_list and ocfs2_extent_rec will also be used. In\norder to re-use the b-tree operation code, a new parameter named \"private\"\nis added into ocfs2_extent_tree and it is used to indicate the root of\nocfs2_exent_list. The reason is that we can\u0027t deduce the root from the\nbuffer_head now. It may be in an inode, an ocfs2_xattr_block or even worse,\nin any place in an ocfs2_xattr_bucket.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "0eb8d47e69a2211a36643b180f1843ef45f6017d",
      "tree": "745a063238cbcf6af84644bd51d4bfcd592e06a1",
      "parents": [
        "e7d4cb6bc19658646357eeff134645cd9bc3479f"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Mon Aug 18 17:38:45 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 13 13:57:59 2008 -0700"
      },
      "message": "ocfs2: Make high level btree extend code generic\n\nFactor out the non-inode specifics of ocfs2_do_extend_allocation() into a more generic\nfunction, ocfs2_do_cluster_allocation(). ocfs2_do_extend_allocation calls\nocfs2_do_cluster_allocation() now, but the latter can be used for other\nbtree types as well.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "e7d4cb6bc19658646357eeff134645cd9bc3479f",
      "tree": "4e24321e5c28fb90dffa1f396972fddb3c458e58",
      "parents": [
        "811f933df1e55615fd0bb4818f31e3868a8e6e23"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Mon Aug 18 17:38:44 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 13 13:57:58 2008 -0700"
      },
      "message": "ocfs2: Abstract ocfs2_extent_tree in b-tree operations.\n\nIn the old extent tree operation, we take the hypothesis that we\nare using the ocfs2_extent_list in ocfs2_dinode as the tree root.\nAs xattr will also use ocfs2_extent_list to store large value\nfor a xattr entry, we refactor the tree operation so that xattr\ncan use it directly.\n\nThe refactoring includes 4 steps:\n1. Abstract set/get of last_eb_blk and update_clusters since they may\n   be stored in different location for dinode and xattr.\n2. Add a new structure named ocfs2_extent_tree to indicate the\n   extent tree the operation will work on.\n3. Remove all the use of fe_bh and di, use root_bh and root_el in\n   extent tree instead. So now all the fe_bh is replaced with\n   et-\u003eroot_bh, el with root_el accordingly.\n4. Make ocfs2_lock_allocators generic. Now it is limited to be only used\n   in file extend allocation. But the whole function is useful when we want\n   to store large EAs.\n\nNote: This patch doesn\u0027t touch ocfs2_commit_truncate() since it is not used\nfor anything other than truncate inode data btrees.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "811f933df1e55615fd0bb4818f31e3868a8e6e23",
      "tree": "53335e59bdff02d7ddb3a2ec15d36239fe50003d",
      "parents": [
        "231b87d10920e024efaf0f9e86e1bab7bced1620"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Mon Aug 18 17:38:43 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 13 13:57:58 2008 -0700"
      },
      "message": "ocfs2: Use ocfs2_extent_list instead of ocfs2_dinode.\n\nocfs2_extend_meta_needed(), ocfs2_calc_extend_credits() and\nocfs2_reserve_new_metadata() are all useful for extent tree operations. But\nthey are all limited to an inode btree because they use a struct\nocfs2_dinode parameter. Change their parameter to struct ocfs2_extent_list\n(the part of an ocfs2_dinode they actually use) so that the xattr btree code\ncan use these functions.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "231b87d10920e024efaf0f9e86e1bab7bced1620",
      "tree": "00283dfb9e4a7054576be8a073635dc51bdc4e22",
      "parents": [
        "9a8ff578fb430a8816dfbc73c77e5e09c6d9c343"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Mon Aug 18 17:38:42 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 13 13:57:58 2008 -0700"
      },
      "message": "ocfs2: Modify ocfs2_num_free_extents for future xattr usage.\n\nocfs2_num_free_extents() is used to find the number of free extent records\nin an inode btree. Hence, it takes an \"ocfs2_dinode\" parameter. We want to\nuse this for extended attribute trees in the future, so genericize the\ninterface the take a buffer head. A future patch will allow that buffer_head\nto contain any structure rooting an ocfs2 btree.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "53da4939f349d4edd283b043219221ca5b78e4d4",
      "tree": "3e0f8e1bd5474822431cffd1e449df9b639e1772",
      "parents": [
        "a447c0932445f92ce6f4c1bd020f62c5097a7842"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jul 21 14:29:16 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Oct 13 13:57:57 2008 -0700"
      },
      "message": "ocfs2: POSIX file locks support\n\nThis is actually pretty easy since fs/dlm already handles the bulk of the\nwork. The Ocfs2 userspace cluster stack module already uses fs/dlm as the\nunderlying lock manager, so I only had to add the right calls.\n\nCluster-aware POSIX locks (\"plocks\") can be turned off by the same means at\nUNIX locks - mount with \u0027noflocks\u0027, or create a local-only Ocfs2 volume.\nInternally, the file system uses two sets of file_operations, depending on\nwhether cluster aware plocks is required. This turns out to be easier than\nimplementing local-only versions of -\u003elock.\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "00dc417fa3e763345b34ccb6034d72de76eea0a1",
      "tree": "c50da655dbd6747499f4516280f323b90214af62",
      "parents": [
        "c4b929b85bdb64afacbbf6453b1f2bf7e14c9e89"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Fri Oct 03 17:32:11 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Oct 03 17:32:11 2008 -0400"
      },
      "message": "ocfs2: fiemap support\n\nPlug ocfs2 into -\u003efiemap. Some portions of ocfs2_get_clusters() had to be\nrefactored so that the extent cache can be skipped in favor of going\ndirectly to the on-disk records. This makes it easier for us to determine\nwhich extent is the last one in the btree. Also, I\u0027m not sure we want to be\ncaching fiemap lookups anyway as they\u0027re not directly related to data\nread/write.\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: ocfs2-devel@oss.oracle.com\nCc: linux-fsdevel@vger.kernel.org\n"
    },
    {
      "commit": "c259ae52e204d42f8b2d484c85517a4c367030e1",
      "tree": "e5f9e57aeee77704758c6dfeb19654140a827ef2",
      "parents": [
        "961cecbee6786f4b1f1b8f695e87045b583f9f49"
      ],
      "author": {
        "name": "Julia Lawall",
        "email": "julia@diku.dk",
        "time": "Mon Jul 21 09:59:15 2008 +0200"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Thu Jul 31 16:21:14 2008 -0700"
      },
      "message": "[PATCH] ocfs2: Release mutex in error handling code\n\nThe mutex is released on a successful return, so it would seem that it\nshould be released on an error return as well.\n\nThe semantic patch finds this problem is as follows:\n(http://www.emn.fr/x-info/coccinelle/)\n\n// \u003csmpl\u003e\n@@\nexpression l;\n@@\n\nmutex_lock(l);\n... when !\u003d mutex_unlock(l)\n    when any\n    when strict\n(\nif (...) { ... when !\u003d mutex_unlock(l)\n+   mutex_unlock(l);\n    return ...;\n}\n|\nmutex_unlock(l);\n)\n// \u003c/smpl\u003e\n\nSigned-off-by: Julia Lawall \u003cjulia@diku.dk\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "e6305c43eda10ebfd2ad9e35d6e172ccc7bb3695",
      "tree": "8a95bd0e27fb3ce895cca9ef91af2e1605e4cdab",
      "parents": [
        "1bd5191d9f5d1928c4efdf604c4164b04bb88dbe"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jul 15 21:03:57 2008 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 26 20:53:14 2008 -0400"
      },
      "message": "[PATCH] sanitize -\u003epermission() prototype\n\n* kill nameidata * argument; map the 3 bits in -\u003eflags anybody cares\n  about to new MAY_... ones and pass with the mask.\n* kill redundant gfs2_iop_permission()\n* sanitize ecryptfs_permission()\n* fix remaining places where -\u003epermission() instances might barf on new\n  MAY_... found in mask.\n\nThe obvious next target in that direction is permission(9)\n\nfolded fix for nfs_permission() breakage from Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "56753bd3b9220f6f2477eb1cf97f40c24e0a4c91",
      "tree": "1b80c6d64a5089d96195f6a718ca76a5bb002684",
      "parents": [
        "7600c72b75bab374ad39b2a4799a0728579a8e2f"
      ],
      "author": {
        "name": "Sunil Mushran",
        "email": "sunil.mushran@oracle.com",
        "time": "Mon Jun 09 11:24:41 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jul 14 13:57:15 2008 -0700"
      },
      "message": "ocfs2: Silence an error message in ocfs2_file_aio_read()\n\nThis patch silences an EINVAL error message in ocfs2_file_aio_read()\nthat is always due to a user error.\n\nSigned-off-by: Sunil Mushran \u003csunil.mushran@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "bc535809c06ada210d89f5a43b335c68ecbb8e1b",
      "tree": "3186b9d590a06d17a7026680fba57546e0d0c418",
      "parents": [
        "95642e56647d84963428a1168baa8a73cb782ac3"
      ],
      "author": {
        "name": "Sunil Mushran",
        "email": "sunil.mushran@oracle.com",
        "time": "Fri Apr 18 10:23:53 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Wed Apr 30 17:09:54 2008 -0700"
      },
      "message": "ocfs2: Allow uid/gid/perm changes of symlinks\n\nThis patch adds the ability to change attributes of a symlink.\nFixes oss bugzilla#963\nhttp://oss.oracle.com/bugzilla/show_bug.cgi?id\u003d963\n\nSigned-off-by: Sunil Mushran \u003csunil.mushran@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "c9ec14884d69a303eef4faae42bd3c4e25b19941",
      "tree": "50ed19faff3fbaaab8dfa872b506501a24826df3",
      "parents": [
        "5dabd69515765156605b09261abf969236a77803"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@suse.de",
        "time": "Sun Jan 27 03:17:17 2008 +0100"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Fri Apr 18 08:56:11 2008 -0700"
      },
      "message": "ocfs2: Convert ocfs2 over to unlocked_ioctl\n\nAs far as I can see there is nothing in ocfs2_ioctl that requires the BKL,\nso use unlocked_ioctl\n\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "634bf74d1e8a8d06727505ea4eb73e780d7aa246",
      "tree": "b0e26b53ec5755202f8a532f5672f02f2e0fef95",
      "parents": [
        "32c3c0e2e515197ad240f5104116254975e6bbce"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Dec 19 15:25:42 2007 +0100"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Fri Jan 25 15:05:45 2008 -0800"
      },
      "message": "ocfs2: printf fixes\n\nExplicitely convert loff_t to long long in printf. Just for sure...\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "32c3c0e2e515197ad240f5104116254975e6bbce",
      "tree": "eb68b0a63c68ca9f51a5dad94430696c2bb17b2a",
      "parents": [
        "d2849fb294d92d6eee0a811c688f1ecb39d26800"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Dec 19 15:24:52 2007 +0100"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Fri Jan 25 15:05:45 2008 -0800"
      },
      "message": "ocfs2: Use generic_file_llseek\n\nWe should use generic_file_llseek() and not default_llseek() so that\ns_maxbytes gets properly checked when seeking.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "53fc622b9e829c8e632e45ef8c14f054388759c1",
      "tree": "6b8585ab00312dd798d8087c452393bf6cc0d344",
      "parents": [
        "cf8e06f1a860d8680d6bb4ac8ec7d7724988e46f"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Thu Dec 20 16:49:04 2007 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Fri Jan 25 15:05:43 2008 -0800"
      },
      "message": "[PATCH 2/2] ocfs2: cluster aware flock()\n\nHook up ocfs2_flock(), using the new flock lock type in dlmglue.c. A new\nmount option, \"localflocks\" is added so that users can revert to old\nfunctionality as need be.\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    }
  ],
  "next": "e63aecb651ba73dffc62f9608ee1b7ae2a0ffd4b"
}
