)]}'
{
  "log": [
    {
      "commit": "c4bc8dcbbe7a7876d76e3f3e129a2ccec46d7cdb",
      "tree": "9412b6e44738d25b35c88887489f4dd915c564f9",
      "parents": [
        "a3ac1414eb601136ba3475e841fe76ccbab5e88d"
      ],
      "author": {
        "name": "Cong Wang",
        "email": "amwang@redhat.com",
        "time": "Fri Nov 25 23:14:34 2011 +0800"
      },
      "committer": {
        "name": "Cong Wang",
        "email": "xiyou.wangcong@gmail.com",
        "time": "Tue Mar 20 21:48:25 2012 +0800"
      },
      "message": "ocfs2: remove the second argument of k[un]map_atomic()\n\nAcked-by: Joel Becker \u003cjlbec@evilplan.org\u003e\nSigned-off-by: Cong Wang \u003camwang@redhat.com\u003e\n"
    },
    {
      "commit": "99b1bb61b225c3eb4d3b196d4f1d041695b19a7e",
      "tree": "06cabdc34538f3b38a39e3b802ecc1a2ab2aae00",
      "parents": [
        "c7e25e6e0b0486492c5faaf6312b37413642c48e",
        "93862d5e1ab875664c6cc95254fc365028a48bb1"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "jlbec@evilplan.org",
        "time": "Sun Aug 21 21:02:57 2011 -0700"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "jlbec@evilplan.org",
        "time": "Sun Aug 21 21:02:57 2011 -0700"
      },
      "message": "Merge branch \u0027mw-3.1-jul25\u0027 of git://oss.oracle.com/git/smushran/linux-2.6 into ocfs2-fixes\n"
    },
    {
      "commit": "c7e25e6e0b0486492c5faaf6312b37413642c48e",
      "tree": "c097a213a8eb2ad336fb2ef8046d2e71f0fa1f4a",
      "parents": [
        "a11f7e63c59810a81494d4c4b028af707d4c7ca4"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Jun 23 22:51:47 2011 +0200"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "jlbec@evilplan.org",
        "time": "Thu Jul 28 02:07:19 2011 -0700"
      },
      "message": "ocfs2: Avoid livelock in ocfs2_readpage()\n\nWhen someone writes to an inode, readers accessing the same inode via\nocfs2_readpage() just busyloop trying to get ip_alloc_sem because\ndo_generic_file_read() looks up the page again and retries -\u003ereadpage()\nwhen previous attempt failed with AOP_TRUNCATED_PAGE. When there are enough\nreaders, they can occupy all CPUs and in non-preempt kernel the system is\ndeadlocked because writer holding ip_alloc_sem is never run to release the\nsemaphore. Fix the problem by making reader block on ip_alloc_sem to break\nthe busy loop.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Joel Becker \u003cjlbec@evilplan.org\u003e\n"
    },
    {
      "commit": "a11f7e63c59810a81494d4c4b028af707d4c7ca4",
      "tree": "6d28cfc9519f96db5c20780bf765de9e0fc03bef",
      "parents": [
        "730e663bd82c1a10a85ff00728d34152a5a67ec8"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Wed Jun 22 14:23:38 2011 -0700"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "jlbec@evilplan.org",
        "time": "Thu Jul 28 02:07:16 2011 -0700"
      },
      "message": "ocfs2: serialize unaligned aio\n\nFix a corruption that can happen when we have (two or more) outstanding\naio\u0027s to an overlapping unaligned region.  Ext4\n(e9e3bcecf44c04b9e6b505fd8e2eb9cea58fb94d) and xfs recently had to fix\nsimilar issues.\n\nIn our case what happens is that we can have an outstanding aio on a region\nand if a write comes in with some bytes overlapping the original aio we may\ndecide to read that region into a page before continuing (typically because\nof buffered-io fallback).  Since we have no ordering guarantees with the\naio, we can read stale or bad data into the page and then write it back out.\n\nIf the i/o is page and block aligned, then we avoid this issue as there\nwon\u0027t be any need to read data from disk.\n\nI took the same approach as Eric in the ext4 patch and introduced some\nserialization of unaligned async direct i/o.  I don\u0027t expect this to have an\neffect on the most common cases of AIO.  Unaligned aio will be slower\nthough, but that\u0027s far more acceptable than data corruption.\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\nSigned-off-by: Joel Becker \u003cjlbec@evilplan.org\u003e\n"
    },
    {
      "commit": "5cffff9e29866a3de98c2c25135b3199491f93b0",
      "tree": "11b53cb3ad7cb44adb80f7802a62c145bf713514",
      "parents": [
        "a035bff6b82aca89c1223e2c614adc2d17ec8aa2"
      ],
      "author": {
        "name": "Wengang Wang",
        "email": "wen.gang.wang@oracle.com",
        "time": "Sun Jul 24 10:36:54 2011 -0700"
      },
      "committer": {
        "name": "Sunil Mushran",
        "email": "sunil.mushran@oracle.com",
        "time": "Sun Jul 24 10:36:54 2011 -0700"
      },
      "message": "ocfs2: Fix ocfs2_page_mkwrite()\n\nThis patch address two shortcomings in ocfs2_page_mkwrite():\n1. Makes the function return better VM_FAULT_* errors.\n2. It handles a error that is triggered when a page is dropped from the mapping\ndue to memory pressure. This patch locks the page to prevent that.\n\n[Patch was cleaned up by Sunil Mushran.]\n\nSigned-off-by: Wengang Wang \u003cwen.gang.wang@oracle.com\u003e\nSigned-off-by: Sunil Mushran \u003csunil.mushran@oracle.com\u003e\n"
    },
    {
      "commit": "72c5052ddc3956d847f21c2b8d55c93664a51b2c",
      "tree": "47b381f3f746cdc1612f432bd902278f8901f84a",
      "parents": [
        "aacfc19c626ebd3daa675652457d71019a1f583f"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Fri Jun 24 14:29:48 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:50 2011 -0400"
      },
      "message": "fs: move inode_dio_done to the end_io handler\n\nFor filesystems that delay their end_io processing we should keep our\ni_dio_count until the the processing is done.  Enable this by moving\nthe inode_dio_done call to the end_io handler if one exist.  Note that\nthe actual move to the workqueue for ext4 and XFS is not done in\nthis patch yet, but left to the filesystem maintainers.  At least\nfor XFS it\u0027s not needed yet either as XFS has an internal equivalent\nto i_dio_count.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "df2d6f26586f12a24f3ae5df4e236dc5c08d6eb4",
      "tree": "68c6ec96177f766d3b9ab0a48408271ef2af4d89",
      "parents": [
        "562c72aa57c36b178eacc3500a0215651eca9429"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Fri Jun 24 14:29:46 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:48 2011 -0400"
      },
      "message": "fs: always maintain i_dio_count\n\nMaintain i_dio_count for all filesystems, not just those using DIO_LOCKING.\nThis these filesystems to also protect truncate against direct I/O requests\nby using common code.  Right now the only non-DIO_LOCKING filesystem that\nappears to do so is XFS, which uses an opencoded variant of the i_dio_count\nscheme.\n\nBehaviour doesn\u0027t change for filesystems never calling inode_dio_wait.\nFor ext4 behaviour changes when using the dioread_nonlock option, which\npreviously was missing any protection between truncate and direct I/O reads.\nFor ocfs2 that handcrafted i_dio_count manipulations are replaced with\nthe common code now enable.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "bd5fe6c5eb9c548d7f07fe8f89a150bb6705e8e3",
      "tree": "ef5341c7747f809aec7ae233f6e3ef90af39be5f",
      "parents": [
        "f9b5570d7fdedff32a2e78102bfb54cd1b12b289"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Fri Jun 24 14:29:43 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:46 2011 -0400"
      },
      "message": "fs: kill i_alloc_sem\n\ni_alloc_sem is a rather special rw_semaphore.  It\u0027s the last one that may\nbe released by a non-owner, and it\u0027s write side is always mirrored by\nreal exclusion.  It\u0027s intended use it to wait for all pending direct I/O\nrequests to finish before starting a truncate.\n\nReplace it with a hand-grown construct:\n\n - exclusion for truncates is already guaranteed by i_mutex, so it can\n   simply fall way\n - the reader side is replaced by an i_dio_count member in struct inode\n   that counts the number of pending direct I/O requests.  Truncate can\u0027t\n   proceed as long as it\u0027s non-zero\n - when i_dio_count reaches non-zero we wake up a pending truncate using\n   wake_up_bit on a new bit in i_flags\n - new references to i_dio_count can\u0027t appear while we are waiting for\n   it to read zero because the direct I/O count always needs i_mutex\n   (or an equivalent like XFS\u0027s i_iolock) for starting a new operation.\n\nThis scheme is much simpler, and saves the space of a spinlock_t and a\nstruct list_head in struct inode (typically 160 bits on a non-debug 64-bit\nsystem).\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "03e4970c10151c5fb25ddd7e9a142d63c6a8d058",
      "tree": "393447b9d0a6ebc64689d6e793e80ad549b97e35",
      "parents": [
        "1788c208aab15f9d9d1d24cff0d0c64b5c73bbee",
        "272b62c1f0f6f742046e45b50b6fec98860208a0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 28 13:03:31 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 28 13:03:31 2011 -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: (39 commits)\n  Treat writes as new when holes span across page boundaries\n  fs,ocfs2: Move o2net_get_func_run_time under CONFIG_OCFS2_FS_STATS.\n  ocfs2/dlm: Move kmalloc() outside the spinlock\n  ocfs2: Make the left masklogs compat.\n  ocfs2: Remove masklog ML_AIO.\n  ocfs2: Remove masklog ML_UPTODATE.\n  ocfs2: Remove masklog ML_BH_IO.\n  ocfs2: Remove masklog ML_JOURNAL.\n  ocfs2: Remove masklog ML_EXPORT.\n  ocfs2: Remove masklog ML_DCACHE.\n  ocfs2: Remove masklog ML_NAMEI.\n  ocfs2: Remove mlog(0) from fs/ocfs2/dir.c\n  ocfs2: remove NAMEI from symlink.c\n  ocfs2: Remove masklog ML_QUOTA.\n  ocfs2: Remove mlog(0) from quota_local.c.\n  ocfs2: Remove masklog ML_RESERVATIONS.\n  ocfs2: Remove masklog ML_XATTR.\n  ocfs2: Remove masklog ML_SUPER.\n  ocfs2: Remove mlog(0) from fs/ocfs2/heartbeat.c\n  ocfs2: Remove mlog(0) from fs/ocfs2/slot_map.c\n  ...\n\nFix up trivial conflict in fs/ocfs2/super.c\n"
    },
    {
      "commit": "272b62c1f0f6f742046e45b50b6fec98860208a0",
      "tree": "e57667bcd599a145f845fdb6aa4925ead19c0592",
      "parents": [
        "99bdc3880c611c7f2061fbd5372ef81b40217e26"
      ],
      "author": {
        "name": "Goldwyn Rodrigues",
        "email": "rgoldwyn@gmail.com",
        "time": "Thu Feb 17 09:44:40 2011 -0600"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "jlbec@evilplan.org",
        "time": "Mon Mar 28 09:44:58 2011 -0700"
      },
      "message": "Treat writes as new when holes span across page boundaries\n\nWhen a hole spans across page boundaries, the next write forces\na read of the block. This could end up reading existing garbage\ndata from the disk in ocfs2_map_page_blocks. This leads to\nnon-zero holes. In order to avoid this, mark the writes as new\nwhen the holes span across page boundaries.\n\nSigned-off-by: Goldwyn Rodrigues \u003crgoldwyn@suse.de\u003e\nSigned-off-by: jlbec \u003cjlbec@evilplan.org\u003e\n"
    },
    {
      "commit": "7eaceaccab5f40bbfda044629a6298616aeaed50",
      "tree": "33954d12f63e25a47eb6d86ef3d3d0a5e62bf752",
      "parents": [
        "73c101011926c5832e6e141682180c4debe2cf45"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 10 08:52:07 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 10 08:52:07 2011 +0100"
      },
      "message": "block: remove per-queue plugging\n\nCode has been converted over to the new explicit on-stack plugging,\nand delay users have been converted to use the new API for that.\nSo lets kill off the old plugging along with aops-\u003esync_page().\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "9558156bcf8e4750d20034e941213273743ed86a",
      "tree": "08896a6c162938d34eade14509b85bb7f2116707",
      "parents": [
        "198aac2838731691ca67e15fd8a56f65307d3677"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "boyu.mt@taobao.com",
        "time": "Tue Feb 22 21:33:59 2011 +0800"
      },
      "committer": {
        "name": "Tao Ma",
        "email": "boyu.mt@taobao.com",
        "time": "Tue Feb 22 21:33:59 2011 +0800"
      },
      "message": "ocfs2: Remove mlog(0) from fs/ocfs2/aops.c\n\nRemove all the \"mlog(0,\" in fs/ocfs2/aops.c.\n\nSigned-off-by: Tao Ma \u003cboyu.mt@taobao.com\u003e\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": "498f7f505dc79934c878c7667840c50c64f232fc",
      "tree": "67eca6dcb6fe76ec3d2bdef5e3102591fe957776",
      "parents": [
        "0969d11e201b82d30a158ccdb3aca67a7b845613",
        "d6351db2073315ddebac72cc1935e912f60f86e0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 11 11:28:34 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 11 11:28:34 2011 -0800"
      },
      "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: (22 commits)\n  MAINTAINERS: Update Joel Becker\u0027s email address\n  ocfs2: Remove unused truncate function from alloc.c\n  ocfs2/cluster: dereferencing before checking in nst_seq_show()\n  ocfs2: fix build for OCFS2_FS_STATS not enabled\n  ocfs2/cluster: Show o2net timing statistics\n  ocfs2/cluster: Track process message timing stats for each socket\n  ocfs2/cluster: Track send message timing stats for each socket\n  ocfs2/cluster: Use ktime instead of timeval in struct o2net_sock_container\n  ocfs2/cluster: Replace timeval with ktime in struct o2net_send_tracking\n  ocfs2: Add DEBUG_FS dependency\n  ocfs2/dlm: Hard code the values for enums\n  ocfs2/dlm: Minor cleanup\n  ocfs2/dlm: Cleanup dlmdebug.c\n  ocfs2: Release buffer_head in case of error in ocfs2_double_lock.\n  ocfs2/cluster: Pin the local node when o2hb thread starts\n  ocfs2/cluster: Show pin state for each o2hb region\n  ocfs2/cluster: Pin/unpin o2hb regions\n  ocfs2/cluster: Remove dropped region from o2hb quorum region bitmap\n  ocfs2/cluster: Pin the remote node item in configfs\n  ocfs2/dlm: make existing convertion precedent over new lock\n  ...\n"
    },
    {
      "commit": "50308d813bf26500fed671882469939fd19403a3",
      "tree": "4fab5caccf450f3528c1e88c7a0299680578c1ec",
      "parents": [
        "b0c3844d8af6b9f3f18f31e1b0502fbefa2166be"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Thu Nov 04 15:14:11 2010 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Dec 16 00:46:02 2010 -0800"
      },
      "message": "ocfs2: Try to free truncate log when meeting ENOSPC in write.\n\nRecently, one of our colleagues meet with a problem that if we\nwrite/delete a 32mb files repeatly, we will get an ENOSPC in\nthe end. And the corresponding bug is 1288.\nhttp://oss.oracle.com/bugzilla/show_bug.cgi?id\u003d1288\n\nThe real problem is that although we have freed the clusters,\nthey are in truncate log and they will be summed up so that\nwe can free them once in a whole.\n\nSo this patch just try to resolve it. In case we see -ENOSPC\nin ocfs2_write_begin_no_lock, we will check whether the truncate\nlog has enough clusters for our need, if yes, we will try to\nflush the truncate log at that point and try again. This method\nis inspired by Mark Fasheh \u003cmfasheh@suse.com\u003e. Thanks.\n\nCc: Mark Fasheh \u003cmfasheh@suse.com\u003e\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\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": "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": "83fd9c7f65634ac440a6b9b7a63ba562f213ac60",
      "tree": "2b1656fbf0bfbff76b9d9d062546f33a7b3236b1",
      "parents": [
        "95fa859a268fd7d9bae6f2d4d095e3f61100ac1b"
      ],
      "author": {
        "name": "Goldwyn Rodrigues",
        "email": "rgoldwyn@gmail.com",
        "time": "Thu Jun 10 17:21:36 2010 -0500"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Sep 10 08:39:27 2010 -0700"
      },
      "message": "Reorganize data elements to reduce struct sizes\n\nThanks for the comments. I have incorportated them all.\n\nCONFIG_OCFS2_FS_STATS is enabled and CONFIG_DEBUG_LOCK_ALLOC is disabled.\nStatistics now look like -\nocfs2_write_ctxt: 2144 - 2136 \u003d 8\nocfs2_inode_info: 1960 - 1848 \u003d 112\nocfs2_journal: 168 - 160 \u003d 8\nocfs2_lock_res: 336 - 304 \u003d 32\nocfs2_refcount_tree: 512 - 472 \u003d 40\n\nSigned-off-by: Goldwyn Rodrigues \u003crgoldwyn@suse.de\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@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": "0378da0fda6edf5aaffda6f1248a78986bd955b5",
      "tree": "67b0128e65deb27818eb52d09dd1d0598675a3b2",
      "parents": [
        "5af568cbd55f60b5a1d174f621b273e4f585dc35"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Thu Aug 12 10:25:28 2010 +0800"
      },
      "committer": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Thu Aug 12 10:39:48 2010 +0800"
      },
      "message": "ocfs2: pass struct file* to ocfs2_write_begin_nolock.\n\nstruct file * has file_ra_state to store the readahead state\nand data. So pass this to ocfs2_write_begin_nolock so that\nit can be used in ocfs2_refcount_cow.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "eafdc7d190a944c755a9fe68573c193e6e0217e7",
      "tree": "915c3cc8004706fabf88eae1ab123a3fa0147516",
      "parents": [
        "256249584bda1a9357e2d29987a37f5b2df035f6"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Jun 04 11:29:53 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:47:29 2010 -0400"
      },
      "message": "sort out blockdev_direct_IO variants\n\nMove the call to vmtruncate to get rid of accessive blocks to the callers\nin prepearation of the new truncate calling sequence.  This was only done\nfor DIO_LOCKING filesystems, so the __blockdev_direct_IO_newtrunc variant\nwas not needed anyway.  Get rid of blockdev_direct_IO_no_locking and\nits _newtrunc variant while at it as just opencoding the two additional\nparamters is shorted than the name suffix.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "40e2e97316af6e62affab7a392e792494b8d9dde",
      "tree": "981ce3b464467893683d47f52ae5d35fdd32d46a",
      "parents": [
        "696123fca877905696591829c97a2cef11c8d048"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Sun Jul 18 21:17:09 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon Jul 26 16:09:02 2010 -0500"
      },
      "message": "direct-io: move aio_complete into -\u003eend_io\n\nFilesystems with unwritten extent support must not complete an AIO request\nuntil the transaction to convert the extent has been commited.  That means\nthe aio_complete calls needs to be moved into the -\u003eend_io callback so\nthat the filesystem can control when to call it exactly.\n\nThis makes a bit of a mess out of dio_complete and the -\u003eend_io callback\nprototype even more complicated.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "693c241a5f6aa01417f5f4caf9f82e60e316398d",
      "tree": "4d3509db621c7af934332c433e62b49bb548a60b",
      "parents": [
        "5693486bad2bc2ac585a2c24f7e2f3964b478df9"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Jul 02 17:20:27 2010 -0700"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Mon Jul 12 13:55:27 2010 -0700"
      },
      "message": "ocfs2: No need to zero pages past i_size.\n\nWhen ocfs2 fills a hole, it does so by allocating clusters.  When a\ncluster is larger than the write, ocfs2 must zero the portions of the\ncluster outside of the write.  If the clustersize is smaller than a\npagecache page, this is handled by the normal pagecache mechanisms, but\nwhen the clustersize is larger than a page, ocfs2\u0027s write code will zero\nthe pages adjacent to the write.  This makes sure the entire cluster is\nzeroed correctly.\n\nCurrently ocfs2 behaves exactly the same when writing past i_size.\nHowever, this means ocfs2 is writing zeroed pages for portions of a new\ncluster that are beyond i_size.  The page writeback code isn\u0027t expecting\nthis.  It treats all pages past the one containing i_size as left behind\ndue to a previous truncate operation.\n\nThankfully, ocfs2 calculates the number of pages it will be working on\nup front.  The rest of the write code merely honors the original\ncalculation.  We can simply trim the number of pages to only cover the\nactual file data.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nCc: stable@kernel.org\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": "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": "e213e26ab3988c516c06eba4dcd030ac052f6dc9",
      "tree": "6e26fbdbb842b387697d73daf6e70cf718269a77",
      "parents": [
        "c812a51d11bbe983f4c24e32b59b265705ddd3c2",
        "efd8f0e6f6c1faa041f228d7113bd3a9db802d49"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 05 13:20:53 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 05 13:20:53 2010 -0800"
      },
      "message": "Merge branch \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6\n\n* \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6: (33 commits)\n  quota: stop using QUOTA_OK / NO_QUOTA\n  dquot: cleanup dquot initialize routine\n  dquot: move dquot initialization responsibility into the filesystem\n  dquot: cleanup dquot drop routine\n  dquot: move dquot drop responsibility into the filesystem\n  dquot: cleanup dquot transfer routine\n  dquot: move dquot transfer responsibility into the filesystem\n  dquot: cleanup inode allocation / freeing routines\n  dquot: cleanup space allocation / freeing routines\n  ext3: add writepage sanity checks\n  ext3: Truncate allocated blocks if direct IO write fails to update i_size\n  quota: Properly invalidate caches even for filesystems with blocksize \u003c pagesize\n  quota: generalize quota transfer interface\n  quota: sb_quota state flags cleanup\n  jbd: Delay discarding buffers in journal_unmap_buffer\n  ext3: quota_write cross block boundary behaviour\n  quota: drop permission checks from xfs_fs_set_xstate/xfs_fs_set_xquota\n  quota: split out compat_sys_quotactl support from quota.c\n  quota: split out netlink notification support from quota.c\n  quota: remove invalid optimization from quota_sync_all\n  ...\n\nFixed trivial conflicts in fs/namei.c and fs/ufs/inode.c\n"
    },
    {
      "commit": "5dd4056db84387975140ff2568eaa0406f07985e",
      "tree": "03c26d7f6e3367b167bfeeb1a01654c6619573f4",
      "parents": [
        "49792c806d0bfd53afc789dcdf50dc9bed2c5b83"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Mar 03 09:05:00 2010 -0500"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri Mar 05 00:20:28 2010 +0100"
      },
      "message": "dquot: cleanup space allocation / freeing routines\n\nGet rid of the alloc_space, free_space, reserve_space, claim_space and\nrelease_rsv dquot operations - they are always called from the filesystem\nand if a filesystem really needs their own (which none currently does)\nit can just call into it\u0027s own routine directly.\n\nMove shared logic into the common __dquot_alloc_space,\ndquot_claim_space_nodirty and __dquot_free_space low-level methods,\nand rationalize the wrappers around it to move as much as possible\ncode into the common block for CONFIG_QUOTA vs not.  Also rename\nall these helpers to be named dquot_* instead of vfs_dq_*.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "cbaee472f274ea9a98aabe47025f6e5551acadcb",
      "tree": "51e505735b76655092db17470c334abc99777abc",
      "parents": [
        "66b116c9d8f70baadf5b2145dddb35af222df041"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Fri Feb 26 10:54:52 2010 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Feb 26 15:41:19 2010 -0800"
      },
      "message": "ocfs2: Only bug out in direct io write for reflinked extent.\n\nIn ocfs2_direct_IO_get_blocks, we only need to bug out\nin case of we are going to write a recounted extent rec.\n\nWhat a silly bug introduced by me!\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nCc: stable@kernel.org\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": "5fe878ae7f82fbf0830dbfaee4c5ca18f3aee442",
      "tree": "7e7ad290cfb30705948d8ebeb46b013afa913f42",
      "parents": [
        "23aee091d804efa8cc732a31c1ae5d625e1ec886"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Tue Dec 15 16:47:50 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 16 07:20:13 2009 -0800"
      },
      "message": "direct-io: cleanup blockdev_direct_IO locking\n\nCurrently the locking in blockdev_direct_IO is a mess, we have three\ndifferent locking types and very confusing checks for some of them.  The\nmost complicated one is DIO_OWN_LOCKING for reads, which happens to not\nactually be used.\n\nThis patch gets rid of the DIO_OWN_LOCKING - as mentioned above the read\ncase is unused anyway, and the write side is almost identical to\nDIO_NO_LOCKING.  The difference is that DIO_NO_LOCKING always sets the\ncreate argument for the get_blocks callback to zero, but we can easily\nmove that to the actual get_blocks callbacks.  There are four users of the\nDIO_NO_LOCKING mode: gfs already ignores the create argument and thus is\nfine with the new version, ocfs2 only errors out if create were ever set,\nand we can remove this dead code now, the block device code only ever uses\ncreate for an error message if we are fully beyond the device which can\nnever happen, and last but not least XFS will need the new behavour for\nwrites.\n\nNow we can replace the lock_type variable with a flags one, where no flag\nmeans the DIO_NO_LOCKING behaviour and DIO_LOCKING is kept as the first\nflag.  Separate out the check for not allowing to fill holes into a\nseparate flag, although for now both flags always get set at the same\ntime.\n\nAlso revamp the documentation of the locking scheme to actually make\nsense.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nCc: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: Zach Brown \u003czach.brown@oracle.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Alex Elder \u003caelder@sgi.com\u003e\nCc: Mark Fasheh \u003cmfasheh@suse.com\u003e\nCc: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "db16826367fefcb0ddb93d76b66adc52eb4e6339",
      "tree": "626224c1eb1eb79c522714591f208b4fdbdcd9d4",
      "parents": [
        "cd6045138ed1bb5d8773e940d51c34318eef3ef2",
        "465fdd97cbe16ef8727221857e96ef62dd352017"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:53:22 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:53:22 2009 -0700"
      },
      "message": "Merge branch \u0027hwpoison\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-mce-2.6\n\n* \u0027hwpoison\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-mce-2.6: (21 commits)\n  HWPOISON: Enable error_remove_page on btrfs\n  HWPOISON: Add simple debugfs interface to inject hwpoison on arbitary PFNs\n  HWPOISON: Add madvise() based injector for hardware poisoned pages v4\n  HWPOISON: Enable error_remove_page for NFS\n  HWPOISON: Enable .remove_error_page for migration aware file systems\n  HWPOISON: The high level memory error handler in the VM v7\n  HWPOISON: Add PR_MCE_KILL prctl to control early kill behaviour per process\n  HWPOISON: shmem: call set_page_dirty() with locked page\n  HWPOISON: Define a new error_remove_page address space op for async truncation\n  HWPOISON: Add invalidate_inode_page\n  HWPOISON: Refactor truncate to allow direct truncating of page v2\n  HWPOISON: check and isolate corrupted free pages v2\n  HWPOISON: Handle hardware poisoned pages in try_to_unmap\n  HWPOISON: Use bitmask/action code for try_to_unmap behaviour\n  HWPOISON: x86: Add VM_FAULT_HWPOISON handling to x86 page fault handler v2\n  HWPOISON: Add poison check to page fault handling\n  HWPOISON: Add basic support for poisoned pages in fault handler v3\n  HWPOISON: Add new SIGBUS error codes for hardware poison signals\n  HWPOISON: Add support for poison swap entries v2\n  HWPOISON: Export some rmap vma locking to outside world\n  ...\n"
    },
    {
      "commit": "b80474b432913f73cce8db001e9fa3104f9b79ee",
      "tree": "ad39c36ce3006167d02ca176eb140012c6530a06",
      "parents": [
        "83e32d9044a4510fffdf65c2691a25c0ba84e259"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Thu Sep 10 15:28:47 2009 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed Sep 23 01:54:49 2009 -0700"
      },
      "message": "ocfs2: Use buffer IO if we are appending a file.\n\nIn ocfs2_file_aio_write, we will prevent direct io if\nwe find that we are appending(changing i_size) and call\ngeneric_file_aio_write_nolock. But actually O_DIRECT flag\nis there and this function will call generic_file_direct_write\neventually which will update i_size and leave di-\u003ei_size\nalone. The bug is\nhttp://oss.oracle.com/bugzilla/show_bug.cgi?id\u003d1173.\n\nSo this patch let ocfs2_direct_IO returns 0 directly if we\nare appending so that buffered write will be called and\ndi-\u003ei_size get updated successfully. And this is also\nwhat we want in ocfs2_file_aio_write.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@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": "6f70fa519976a379d72781d927cf8e5f5b05ec86",
      "tree": "563cdeb116f2016c3c4b7a627a51f0a85eec1566",
      "parents": [
        "bcbbb24a6a5c5b3e7b8e5284e0bfa23f45c32377"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Tue Aug 25 08:05:12 2009 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Sep 22 20:09:36 2009 -0700"
      },
      "message": "ocfs2: Add CoW support.\n\nThis patch try CoW support for a refcounted record.\n\nthe whole process will be:\n1. Calculate how many clusters we need to CoW and where we start.\n   Extents that are not completely encompassed by the write will\n   be broken on 1MB boundaries.\n2. Do CoW for the clusters with the help of page cache.\n3. Change the b-tree structure with the new allocated clusters.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "aa261f549d7652258331ebb12795f3bc4395d213",
      "tree": "0ca807db32a6e3f213fa52b5a053d2b27e5e6bac",
      "parents": [
        "6a46079cf57a7f7758e8b926980a4f852f89b34d"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "andi@firstfloor.org",
        "time": "Wed Sep 16 11:50:16 2009 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Sep 16 11:50:16 2009 +0200"
      },
      "message": "HWPOISON: Enable .remove_error_page for migration aware file systems\n\nEnable removing of corrupted pages through truncation\nfor a bunch of file systems: ext*, xfs, gfs2, ocfs2, ntfs\nThese should cover most server needs.\n\nI chose the set of migration aware file systems for this\nfor now, assuming they have been especially audited.\nBut in general it should be safe for all file systems\non the data area that support read/write and truncate.\n\nCaveat: the hardware error handler does not take i_mutex\nfor now before calling the truncate function. Is that ok?\n\nCc: tytso@mit.edu\nCc: hch@infradead.org\nCc: mfasheh@suse.com\nCc: aia21@cantab.net\nCc: hugh.dickins@tiscali.co.uk\nCc: swhiteho@redhat.com\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "5e404e9ed1b05cafb044bd46792e50197df805ed",
      "tree": "e3146e03f8a0fc12307db0cbea900728a36ffaac",
      "parents": [
        "a1cf076ba93f9fdf3eb4195f9f43d1e7cb7550f2"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Feb 13 03:54:22 2009 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Sep 04 16:08:13 2009 -0700"
      },
      "message": "ocfs2: Pass ocfs2_caching_info into ocfs_init_*_extent_tree().\n\nWith this commit, extent tree operations are divorced from inodes and\nrely on ocfs2_caching_info.  Phew!\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "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": "8379e7c46cc48f51197dd663fc6676f47f2a1e71",
      "tree": "ee6ae04dd7014bfe311ea0f48a0aea734a96c2ed",
      "parents": [
        "a1b08e75dff3dc18a88444803753e667bb1d126e"
      ],
      "author": {
        "name": "Sunil Mushran",
        "email": "sunil.mushran@oracle.com",
        "time": "Fri Sep 04 11:12:01 2009 -0700"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Sep 04 14:28:31 2009 -0700"
      },
      "message": "ocfs2: ocfs2_write_begin_nolock() should handle len\u003d0\n\nBug introduced by mainline commit e7432675f8ca868a4af365759a8d4c3779a3d922\nThe bug causes ocfs2_write_begin_nolock() to oops when len\u003d0.\n\nSigned-off-by: Sunil Mushran \u003csunil.mushran@oracle.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "e7432675f8ca868a4af365759a8d4c3779a3d922",
      "tree": "238d57e12fae632c9baeca98ddec701b3391ff29",
      "parents": [
        "ab57a40827d99e2d8e59066a56b93bf6c844c916"
      ],
      "author": {
        "name": "Sunil Mushran",
        "email": "sunil.mushran@oracle.com",
        "time": "Thu Aug 06 16:12:58 2009 -0700"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Aug 07 13:16:23 2009 -0700"
      },
      "message": "ocfs2: Initialize the cluster we\u0027re writing to in a non-sparse extend\n\nIn a non-sparse extend, we correctly allocate (and zero) the clusters between\nthe old_i_size and pos, but we don\u0027t zero the portions of the cluster we\u0027re\nwriting to outside of pos\u003c-\u003elen.\n\nIt handles clustersize \u003e pagesize and blocksize \u003c pagesize.\n\n[Cleaned up by Joel Becker.]\n\nSigned-off-by: Sunil Mushran \u003csunil.mushran@oracle.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "1f4cea3790bf44137192f441ee84af256e3bf809",
      "tree": "64c83d47e0ea24f14b0237d9d63426e7e5af9227",
      "parents": [
        "cbfa9639aea5007313b75ec43b689d5f9e0c037d"
      ],
      "author": {
        "name": "Wengang Wang",
        "email": "wen.gang.wang@oracle.com",
        "time": "Mon Jul 13 11:38:58 2009 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Mon Jul 20 17:36:07 2009 -0700"
      },
      "message": "ocfs2: Fail ocfs2_get_block() immediately when a block needs allocation\n\nocfs2_get_block() does no allocation.  Hole filling for writes should\nhave happened farther up in the call chain.  We detect this case and\nprint an error, but we then continue with the function.  We should be\nexiting immediately.\n\nSigned-off-by: Wengang Wang \u003cwen.gang.wang@oracle.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "cbfa9639aea5007313b75ec43b689d5f9e0c037d",
      "tree": "ba34b17b9bc7a248d800d3786bde73633da46756",
      "parents": [
        "44d8e4e1e9b941065eb7578669fe51eb65c73e63"
      ],
      "author": {
        "name": "Wengang Wang",
        "email": "wen.gang.wang@oracle.com",
        "time": "Mon Jul 13 11:38:23 2009 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Mon Jul 20 17:32:55 2009 -0700"
      },
      "message": "ocfs2: Fix error return in ocfs2_write_cluster()\n\nA typo caused ocfs2_write_cluster() to return 0 in some error cases.\nFix 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": "1fca3a05ef2823830925dfb66711d6d920265a8d",
      "tree": "95717db99015caf84c8c90ab94af093b3d75d731",
      "parents": [
        "6ca497a83e592d64e050c4d04b6dedb8c915f39a"
      ],
      "author": {
        "name": "Hisashi Hifumi",
        "email": "hifumi.hisashi@oss.ntt.co.jp",
        "time": "Thu Mar 05 17:22:21 2009 +0900"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Fri Apr 03 11:39:26 2009 -0700"
      },
      "message": "ocfs2: Pagecache usage optimization on ocfs2\n\nA page can have multiple buffers and even if a page is not uptodate, some buffers\ncan be uptodate on pagesize !\u003d blocksize environment.\nThis aops checks that all buffers which correspond to a part of a file\nthat we want to read are uptodate. If so, we do not have to issue actual\nread IO to HDD even if a page is not uptodate because the portion we\nwant to read are uptodate.\n\"block_is_partially_uptodate\" function is already used by ext2/3/4.\nWith the following patch random read/write mixed workloads or random read after\nrandom write workloads can be optimized and we can get performance improvement.\n\nSigned-off-by: Hisashi Hifumi \u003chifumi.hisashi@oss.ntt.co.jp\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "d9ae49d6e2b1ac9166e58ae3c9345135604beaa6",
      "tree": "e6d5bbc8160a8c810534dc699e79f2b2a7792000",
      "parents": [
        "6c9fd1dc0a597e575617a7de7086c8a3efa8f524"
      ],
      "author": {
        "name": "Tiger Yang",
        "email": "tiger.yang@oracle.com",
        "time": "Thu Mar 05 11:06:15 2009 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Thu Mar 12 16:45:46 2009 -0700"
      },
      "message": "ocfs2: tweak to get the maximum inline data size with xattr\n\nReplace max_inline_data with max_inline_data_with_xattr\nto ensure it correct when xattr inlined.\n\nSigned-off-by: Tiger Yang \u003ctiger.yang@oracle.com\u003e\nAcked-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "13723d00e374c2a6d6ccb5af6de965e89c3e1b01",
      "tree": "70dcd8f3d188bf2f62e4bf4b44a0662d8cd527ca",
      "parents": [
        "ffdd7a54631f07918b75e324d86713a08c11ec06"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Oct 17 19:25:01 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:32 2009 -0800"
      },
      "message": "ocfs2: Use metadata-specific ocfs2_journal_access_*() functions.\n\nThe per-metadata-type ocfs2_journal_access_*() functions hook up jbd2\ncommit triggers and allow us to compute metadata ecc right before the\nbuffers are written out.  This commit provides ecc for inodes, extent\nblocks, group descriptors, and quota blocks.  It is not safe to use\nextened attributes and metaecc at the same time yet.\n\nThe ocfs2_extent_tree and ocfs2_path abstractions in alloc.c both hide\nthe type of block at their root.  Before, it didn\u0027t matter, but now the\nroot block must use the appropriate ocfs2_journal_access_*() function.\nTo keep this abstract, the structures now have a pointer to the matching\njournal_access function and a wrapper call to call it.\n\nA few places use naked ocfs2_write_block() calls instead of adding the\nblocks to the journal.  We make sure to calculate their checksum and ecc\nbefore the write.\n\nSince we pass around the journal_access functions.  Let\u0027s typedef them\nin ocfs2.h.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "a90714c150e3ce677c57a9dac3ab1ec342c75a95",
      "tree": "43e3e744d86122940c0db39ac1bfed0d434b3216",
      "parents": [
        "9e33d69f553aaf11377307e8d6f82deb3385e351"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Oct 09 19:38:40 2008 +0200"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:23 2009 -0800"
      },
      "message": "ocfs2: Add quota calls for allocation and freeing of inodes and space\n\nAdd quota calls for allocation and freeing of inodes and space, also update\nestimates on number of needed credits for a transaction. Move out inode\nallocation from ocfs2_mknod_locked() because vfs_dq_init() must be called\noutside of a transaction.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "53ef99cad9878f02f27bb30bc304fc42af8bdd6e",
      "tree": "bb5dcb223666197cf737d24e4cc87506c4473a79",
      "parents": [
        "511308d90b53479b194cd067715f44dc99d39b08"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Tue Nov 18 16:53:43 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:36:55 2009 -0800"
      },
      "message": "ocfs2: Remove JBD compatibility layer\n\nJBD2 is fully backwards compatible with JBD and it\u0027s been tested enough with\nOcfs2 that we can clean this code up now.\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "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": "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": "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": "0e116227a01580acf47437adba3afadf21b6bd5f",
      "tree": "65844ab6db53a7713e258830e571ced05a8d61ae",
      "parents": [
        "adee14b2e1557d0a8559f29681732d05a89dfc35"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Wed Sep 03 01:57:14 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Wed Sep 10 01:44:08 2008 -0700"
      },
      "message": "ocfs2: Fix a bug in direct IO read.\n\nocfs2 will become read-only if we try to read the bytes which pass\nthe end of i_size. This can be easily reproduced by following steps:\n1. mkfs a ocfs2 volume with bs\u003d4k cs\u003d4k and nosparse.\n2. create a small file(say less than 100 bytes) and we will create the file\n   which is allocated 1 cluster.\n3. read 8196 bytes from the kernel using O_DIRECT which exceeds the limit.\n4. The ocfs2 volume becomes read-only and dmesg shows:\nOCFS2: ERROR (device sda13): ocfs2_direct_IO_get_blocks:\nInode 66010 has a hole at block 1\nFile system is now read-only due to the potential of on-disk corruption.\nPlease run fsck.ocfs2 once the file system is unmounted.\n\nSo suppress the ERROR message.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "961cecbee6786f4b1f1b8f695e87045b583f9f49",
      "tree": "350d8604d04c594463372e3fab0cab2e953c7770",
      "parents": [
        "539d8264093560b917ee3afe4c7f74e5da09d6a5"
      ],
      "author": {
        "name": "Sunil Mushran",
        "email": "sunil.mushran@oracle.com",
        "time": "Wed Jul 16 17:22:22 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Thu Jul 31 16:21:14 2008 -0700"
      },
      "message": "[PATCH] ocfs2: Fix oops when racing files truncates with writes into an mmap region\n\nThis patch fixes an oops that is reproduced when one races writes to a mmap-ed\nregion with another process truncating the file.\n\nSigned-off-by: Sunil Mushran \u003csunil.mushran@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "c0420ad2ca514551ca086510b0e7d17a05c70492",
      "tree": "d0c66f31d3ca100ad2bc0ac1dcd0e293865fd894",
      "parents": [
        "e75206517504461778c283b942440ef312e437d5"
      ],
      "author": {
        "name": "Coly Li",
        "email": "coyli@suse.de",
        "time": "Mon Jun 30 18:45:45 2008 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Wed Jul 16 16:13:04 2008 -0700"
      },
      "message": "[PATCH] ocfs2: fix oops in mmap_truncate testing\n\nThis patch fixes a mmap_truncate bug which was found by ocfs2 test suite.\n\nIn an ocfs2 cluster more than 1 node, run program mmap_truncate, which races\nmmap writes and truncates from multiple processes. While the test is\nrunning, a stat from another node forces writeout, causing an oops in\nocfs2_get_block() because it sees a buffer to write which isn\u0027t allocated.\n\nThis patch fixed the bug by clear dirty and uptodate bits in buffer, leave\nthe buffer unmapped and return.\n\nFix is suggested by Mark Fasheh, and I code up the patch.\n\nSigned-off-by: Coly Li \u003ccoyli@suse.de\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "58dadcdbc2584db050969f9781727fc5a3f618db",
      "tree": "40df8466e7409be77131ee6d61a66649f57f4425",
      "parents": [
        "4d0ddb2ce25db2254d468233d942276ecf40bff8"
      ],
      "author": {
        "name": "Julia Lawall",
        "email": "julia@diku.dk",
        "time": "Fri Mar 28 14:43:10 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Fri Apr 18 08:56:11 2008 -0700"
      },
      "message": "fs/ocfs2/aops.c: test for IS_ERR rather than 0\n\nThe function ocfs2_start_trans always returns either a valid pointer or a\nvalue made with ERR_PTR, so its result should be tested with IS_ERR, not\nwith a test for 0.\n\nSigned-off-by: Julia Lawall \u003cjulia@diku.dk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "86c838b03daf35e2af6555842d04fe09a89f8d93",
      "tree": "82c0df727f20d9c179cee5cbdb0e4a610c11c9ce",
      "parents": [
        "05488bbebe3deedbc5d58a1832f563ff96bc2ef6"
      ],
      "author": {
        "name": "Julia Lawall",
        "email": "julia@diku.dk",
        "time": "Tue Feb 26 21:45:56 2008 +0100"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Mon Mar 03 15:50:21 2008 -0800"
      },
      "message": "[PATCH] fs/ocfs2/aops.c: Correct use of ! and \u0026\n\nIn commit e6bafba5b4765a5a252f1b8d31cbf6d2459da337, a bug was fixed that\ninvolved converting !x \u0026 y to !(x \u0026 y).  The code below shows the same\npattern, and thus should perhaps be fixed in the same way.\n\nThis is not tested and clearly changes the semantics, so it is only\nsomething to consider.\n\nSigned-off-by: Julia Lawall \u003cjulia@diku.dk\u003e\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "eebd2aa355692afaf9906f62118620f1a1c19dbb",
      "tree": "207eead3a736963c3e50942038c463f2f611ccce",
      "parents": [
        "b98348bdd08dc4ec11828aa98a78edde15c53cfa"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Feb 04 22:28:29 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:13 2008 -0800"
      },
      "message": "Pagecache zeroing: zero_user_segment, zero_user_segments and zero_user\n\nSimplify page cache zeroing of segments of pages through 3 functions\n\nzero_user_segments(page, start1, end1, start2, end2)\n\n        Zeros two segments of the page. It takes the position where to\n        start and end the zeroing which avoids length calculations and\n\tmakes code clearer.\n\nzero_user_segment(page, start, end)\n\n        Same for a single segment.\n\nzero_user(page, start, length)\n\n        Length variant for the case where we know the length.\n\nWe remove the zero_user_page macro. Issues:\n\n1. Its a macro. Inline functions are preferable.\n\n2. The KM_USER0 macro is only defined for HIGHMEM.\n\n   Having to treat this special case everywhere makes the\n   code needlessly complex. The parameter for zeroing is always\n   KM_USER0 except in one single case that we open code.\n\nAvoiding KM_USER0 makes a lot of code not having to be dealing\nwith the special casing for HIGHMEM anymore. Dealing with\nkmap is only necessary for HIGHMEM configurations. In those\nconfigurations we use KM_USER0 like we do for a series of other\nfunctions defined in highmem.h.\n\nSince KM_USER0 is depends on HIGHMEM the existing zero_user_page\nfunction could not be a macro. zero_user_* functions introduced\nhere can be be inline because that constant is not used when these\nfunctions are called.\n\nAlso extract the flushing of the caches to be outside of the kmap.\n\n[akpm@linux-foundation.org: fix nfs and ntfs build]\n[akpm@linux-foundation.org: fix ntfs build some more]\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Steven French \u003csfrench@us.ibm.com\u003e\nCc: Michael Halcrow \u003cmhalcrow@us.ibm.com\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nCc: Anton Altaparmakov \u003caia21@cantab.net\u003e\nCc: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\nCc: David Chinner \u003cdgc@sgi.com\u003e\nCc: Michael Halcrow \u003cmhalcrow@us.ibm.com\u003e\nCc: Steven French \u003csfrench@us.ibm.com\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d2849fb294d92d6eee0a811c688f1ecb39d26800",
      "tree": "cdfab35099e97d64e47ebebd14067053ea08459e",
      "parents": [
        "5fa0613ea58a80f69852b242337121bd39dc798e"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Dec 19 15:24:09 2007 +0100"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Fri Jan 25 15:05:44 2008 -0800"
      },
      "message": "ocfs2: Safer read_inline_data()\n\nIn ocfs2_read_inline_data() we should store file size in loff_t. Although\nthe file size should fit in 32 bits we cannot be sure in case filesystem is\ncorrupted.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "628a24f5bdf31b795d596eaed71670579b96a9aa",
      "tree": "3dcd23a6cfd10e142cf0397a53e5f95ca72f5168",
      "parents": [
        "d69a3ad6a0e47b2aa9b2b2ddfd385752132a4d34"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Tue Oct 30 12:08:32 2007 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Fri Jan 25 14:48:12 2008 -0800"
      },
      "message": "ocfs2: Readpages support\n\nAdd -\u003ereadpages support to Ocfs2. This is rather trivial - all it required\nis a small update to ocfs2_get_block (for mapping full extents via b_size)\nand an ocfs2_readpages() function which partially mirrors ocfs2_readpage().\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "e63aecb651ba73dffc62f9608ee1b7ae2a0ffd4b",
      "tree": "06a4b727230120fe73421dc3149c21aaed5fe91e",
      "parents": [
        "c934a92d05b549dd2f25db72c5fc3cb9dcf1b611"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Thu Oct 18 15:30:42 2007 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Fri Jan 25 14:46:01 2008 -0800"
      },
      "message": "ocfs2: Rename ocfs2_meta_[un]lock\n\nCall this the \"inode_lock\" now, since it covers both data and meta data.\nThis patch makes no functional changes.\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "c934a92d05b549dd2f25db72c5fc3cb9dcf1b611",
      "tree": "57150c87d1d465db28fceaa14c9d5b220c7a3954",
      "parents": [
        "f1f540688eae66c274ff1c1133b5d9c687b28f58"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Thu Oct 18 15:23:46 2007 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Fri Jan 25 14:45:57 2008 -0800"
      },
      "message": "ocfs2: Remove data locks\n\nThe meta lock now covers both meta data and data, so this just removes the\nnow-redundant data lock.\n\nCombining locks saves us a round of lock mastery per inode and one less lock\nto ping between nodes during read/write.\n\nWe don\u0027t lose much - since meta locks were always held before a data lock\n(and at the same level) ordered writeout mode (the default) ensured that\nflushing for the meta data lock also pushed out data anyways.\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "0d8a4e0cd688ad0de6430ce3425c7849cfec1c2d",
      "tree": "f959aba36b640232ae9f885b8765fe0e463fde67",
      "parents": [
        "bccb9dad8949cd0df1d3d2188a1fdb4b1936d537"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Tue Nov 20 11:48:41 2007 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Tue Nov 27 16:47:03 2007 -0800"
      },
      "message": "ocfs2: Fix comparison in ocfs2_size_fits_inline_data()\n\nThis was causing us to prematurely push out inline data by one byte.\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "4e9563fd55ff4479f2b118d0757d121dd0cfc39c",
      "tree": "604066cd76db3d40896263d4a24a7fd5d9824eb2",
      "parents": [
        "9ea2d32f40434589ea0e136373f7d1545afb411f"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Thu Nov 01 11:37:48 2007 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Tue Nov 06 15:35:29 2007 -0800"
      },
      "message": "ocfs2: fix write() performance regression\n\nOn file systems which don\u0027t support sparse files, Ocfs2_map_page_blocks()\nwas reading blocks on appending writes. This caused write performance to\nsuffer dramatically. Fix this by detecting an appending write on a nonsparse\nfs and skipping the read.\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "b6af1bcd8720cb3062c8c4d4c8ba02bee10ff03f",
      "tree": "e6cb27498f649dd3addc48fb4d92ac20ae8de7cb",
      "parents": [
        "f2b6a16eb8f5b4851b01625a21e0c71207c2ce77"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Oct 16 01:25:24 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:42:58 2007 -0700"
      },
      "message": "ocfs2: convert to new aops\n\nPlug ocfs2 into the -\u003ewrite_begin and -\u003ewrite_end aops.\n\nA bunch of custom code is now gone - the iovec iteration stuff during write\nand the ocfs2 splice write actor.\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1afc32b952335f665327a1a9001ba1b44bb76fd9",
      "tree": "c914afd0ef5d32b426c3cf65820de7599e570656",
      "parents": [
        "6798d35a31c413bbb3f83bbaa844bd2598168ccc"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Fri Sep 07 14:46:51 2007 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Fri Oct 12 11:54:40 2007 -0700"
      },
      "message": "ocfs2: Write support for inline data\n\nThis fixes up write, truncate, mmap, and RESVSP/UNRESVP to understand inline\ninode data.\n\nFor the most part, the changes to the core write code can be relied on to do\nthe heavy lifting. Any code calling ocfs2_write_begin (including shared\nwriteable mmap) can count on it doing the right thing with respect to\ngrowing inline data to an extent tree.\n\nSize reducing truncates, including UNRESVP can simply zero that portion of\nthe inode block being removed. Size increasing truncatesm, including RESVP\nhave to be a little bit smarter and grow the inode to an extent tree if\nnecessary.\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\nReviewed-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "6798d35a31c413bbb3f83bbaa844bd2598168ccc",
      "tree": "ff3e2928ebdfda06f08605d9dbc7002f0413e731",
      "parents": [
        "15b1e36bdb487d67ef924a37b0967453143be53a"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Fri Sep 07 14:05:51 2007 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Fri Oct 12 11:54:39 2007 -0700"
      },
      "message": "ocfs2: Read support for inline data\n\nThis hooks up ocfs2_readpage() to populate a page with data from an inode\nblock. Direct IO reads from inline data are modified to fall back to\nbuffered I/O. Appropriate checks are also placed in the extent map code to\navoid reading an extent list when inline data might be stored.\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\nReviewed-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "1d410a6e337a0d2d5543ad1d9bccb670a7a05312",
      "tree": "696f70750482a4a49b61c79e6499659ddb3635b4",
      "parents": [
        "65ed39d6ca78f07d2958814e08440e4264b6b488"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Fri Sep 07 14:20:45 2007 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Fri Oct 12 11:54:35 2007 -0700"
      },
      "message": "ocfs2: Small refactor of truncate zeroing code\n\nWe\u0027ll want to reuse most of this when pushing inline data back out to an\nextent. Keeping this part as a seperate patch helps to keep the upcoming\nchanges for write support uncluttered.\n\nThe core portion of ocfs2_zero_cluster_pages() responsible for making sure a\npage is mapped and properly dirtied is abstracted out into it\u0027s own\nfunction, ocfs2_map_and_dirty_page(). Actual functionality doesn\u0027t change,\nthough zeroing becomes optional.\n\nWe also turn part of ocfs2_free_write_ctxt() into  a common function for\nunlocking and freeing a page array. This operation is very common (and\nuniform) for Ocfs2 cluster sizes greater than page size, so it makes sense\nto keep the code in one place.\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\nReviewed-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "65ed39d6ca78f07d2958814e08440e4264b6b488",
      "tree": "477623ef58810a6d32c8d23fbf17e5258495ddb0",
      "parents": [
        "92e91ce2a30b2af53ebf077512801dc01e75cca5"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Tue Aug 28 17:13:23 2007 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Fri Oct 12 11:54:35 2007 -0700"
      },
      "message": "ocfs2: move nonsparse hole-filling into ocfs2_write_begin()\n\nBy doing this, we can remove any higher level logic which has to have\nknowledge of btree functionality - any callers of ocfs2_write_begin() can\nnow expect it to do anything necessary to prepare the inode for new data.\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\nReviewed-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "5c26a7b70f89c36e8d9acc95cb896c3cd205fc8d",
      "tree": "83471ee744573481ffb2ffee09e0fe7fcf9643bd",
      "parents": [
        "db56246c6980e376b02d2da568d119da71f82fb9"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Tue Sep 18 17:49:29 2007 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Thu Sep 20 15:06:10 2007 -0700"
      },
      "message": "ocfs2: Don\u0027t double set write parameters\n\nThe target page offsets were being incorrectly set a second time in\nocfs2_prepare_page_for_write(), which was causing problems on a 16k page\nsize kernel. Additionally, ocfs2_write_failure() was incorrectly using those\nparameters instead of the parameters for the individual page being cleaned\nup.\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "db56246c6980e376b02d2da568d119da71f82fb9",
      "tree": "dc88e09c80d50dd77580d1d9366bac8c74c9bffa",
      "parents": [
        "415cb800375cc4e89fb5a6a454e484bd4adbffb4"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Mon Sep 17 09:06:29 2007 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Thu Sep 20 15:06:09 2007 -0700"
      },
      "message": "ocfs2: Fix pos/len passed to ocfs2_write_cluster\n\nThis was broken for file systems whose cluster size is greater than page\nsize. Pos needs to be incremented as we loop through the descriptors, and\nlen needs to be capped to the size of a single cluster.\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "30b8548f2c270c0205558fe4826a6ab8e7fe51ad",
      "tree": "7c5756dba9c62813cab4aa01b8d42305cb4d41f6",
      "parents": [
        "c0123adef626607535f3c2c93b530c36780885e0"
      ],
      "author": {
        "name": "tao.ma@oracle.com",
        "email": "tao.ma@oracle.com",
        "time": "Thu Sep 06 08:02:25 2007 +0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Tue Sep 11 11:39:05 2007 -0700"
      },
      "message": "[PATCH] ocfs2: Fix a wrong cluster calculation.\n\nIn ocfs2_alloc_write_write_ctxt, the written clusters length is calculated\nby the byte length only. This may cause some problems if we start to write\nat some position in the end of one cluster and last to a second cluster\nwhile the \"len\" is smaller than a cluster size. In that case, we have to\nwrite 2 clusters actually.\nSo we have to take the start position into consideration also.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "54cb8821de07f2ffcd28c380ce9b93d5784b40d7",
      "tree": "1de676534963d96af42863b20191bc9f80060dea",
      "parents": [
        "d00806b183152af6d24f46f0c33f14162ca1262a"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Thu Jul 19 01:46:59 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:41 2007 -0700"
      },
      "message": "mm: merge populate and nopage into fault (fixes nonlinear)\n\nNonlinear mappings are (AFAIKS) simply a virtual memory concept that encodes\nthe virtual address -\u003e file offset differently from linear mappings.\n\n-\u003epopulate is a layering violation because the filesystem/pagecache code\nshould need to know anything about the virtual memory mapping.  The hitch here\nis that the -\u003enopage handler didn\u0027t pass down enough information (ie.  pgoff).\n But it is more logical to pass pgoff rather than have the -\u003enopage function\ncalculate it itself anyway (because that\u0027s a similar layering violation).\n\nHaving the populate handler install the pte itself is likewise a nasty thing\nto be doing.\n\nThis patch introduces a new fault handler that replaces -\u003enopage and\n-\u003epopulate and (later) -\u003enopfn.  Most of the old mechanism is still in place\nso there is a lot of duplication and nice cleanups that can be removed if\neveryone switches over.\n\nThe rationale for doing this in the first place is that nonlinear mappings are\nsubject to the pagefault vs invalidate/truncate race too, and it seemed stupid\nto duplicate the synchronisation logic rather than just consolidate the two.\n\nAfter this patch, MAP_NONBLOCK no longer sets up ptes for pages present in\npagecache.  Seems like a fringe functionality anyway.\n\nNOPAGE_REFAULT is removed.  This should be implemented with -\u003efault, and no\nusers have hit mainline yet.\n\n[akpm@linux-foundation.org: cleanup]\n[randy.dunlap@oracle.com: doc. fixes for readahead]\n[akpm@linux-foundation.org: build fix]\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nCc: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "54c57dc3b6578356c0a428c767d4bf080254a2ee",
      "tree": "009484927ae335d7a6312aa5a53c0bcd90d92a9e",
      "parents": [
        "b25801038da5823bba1b5440a57ca68afc51b6bd"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Wed Jun 20 17:15:10 2007 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Tue Jul 10 17:32:10 2007 -0700"
      },
      "message": "[PATCH] ocfs2: zero_user_page conversion\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "2ae99a60374f360ba07037ebbf33d19b89ac43a6",
      "tree": "ce83db2022a28deb8c402fca7c08cf924ee8e608",
      "parents": [
        "b27b7cbcf12a1bfff1ed68a73ddd7d11edc20daf"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Fri Mar 09 16:43:28 2007 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Tue Jul 10 17:32:04 2007 -0700"
      },
      "message": "ocfs2: Support creation of unwritten extents\n\nThis can now be trivially supported with re-use of our existing extend code.\n\nocfs2_allocate_unwritten_extents() takes a start offset and a byte length\nand iterates over the inode, adding extents (marked as unwritten) until len\nis reached. Existing extents are skipped over.\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "b27b7cbcf12a1bfff1ed68a73ddd7d11edc20daf",
      "tree": "a25a8ca272e7f0ef01987db3b3795a49e0ccb51f",
      "parents": [
        "0d172baa5586071ae0ae0c07356a378fdbedecdb"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Mon Jun 18 11:22:56 2007 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Tue Jul 10 17:32:03 2007 -0700"
      },
      "message": "ocfs2: support writing of unwritten extents\n\nUpdate the write code to detect when the user is asking to write to an\nunwritten extent. Like writing to a hole, we must zero the region between\nthe write and the cluster boundaries. Most of the existing cluster zeroing\nlogic can be re-used with some additional checks for the unwritten flag on\nextent records.\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "0d172baa5586071ae0ae0c07356a378fdbedecdb",
      "tree": "8124c326700c15ceffcaf2f525fef8eb55f0fb06",
      "parents": [
        "328d5752e1259dfb29b7e65f6c2d145fddbaa750"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Mon May 14 18:09:54 2007 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Tue Jul 10 17:32:01 2007 -0700"
      },
      "message": "ocfs2: small cleanup of ocfs2_write_begin_nolock()\n\nWe can easily seperate out the write descriptor setup and manipulation\ninto helper functions.\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "59a5e416d1ab543a5248a2b34d83202c4d55d132",
      "tree": "3e97ce48774d26e8a927edd839dd54a7d68f8c7d",
      "parents": [
        "2b604351bc99b4e4504758cbac369b660b71de0b"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Fri Jun 22 15:52:36 2007 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Tue Jul 10 17:31:55 2007 -0700"
      },
      "message": "ocfs2: plug truncate into cached dealloc routines\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "bce997682fe3121516f5a20cf7bad2e6029ba018",
      "tree": "1f54d1c289b7fac2ec036f6923a27e00a6d777ae",
      "parents": [
        "7307de80510a70e5e5aa98de1e80ccbb7d90a3a8"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Mon Jun 18 11:12:36 2007 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Tue Jul 10 17:31:52 2007 -0700"
      },
      "message": "ocfs2: harden buffer check during mapping of page blocks\n\nWe don\u0027t want to submit buffer_new blocks for read i/o. This actually won\u0027t\nhappen right now because those requests during an allocating write are all nicely\naligned. It\u0027s probably a good idea to provide an explicit check though.\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "7307de80510a70e5e5aa98de1e80ccbb7d90a3a8",
      "tree": "ba45bef3e0b875feb67b97aebe8295159852ef97",
      "parents": [
        "607d44aa3fa6f40b0facaf1028886ed362b92682"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Wed May 09 15:16:19 2007 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Tue Jul 10 17:31:51 2007 -0700"
      },
      "message": "ocfs2: shared writeable mmap\n\nImplement cluster consistent shared writeable mappings using the\n-\u003epage_mkwrite() callback.\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "607d44aa3fa6f40b0facaf1028886ed362b92682",
      "tree": "cacd360252a7bfd60dde613c6cf1b4b3d3beeb8f",
      "parents": [
        "3a307ffc2730bfa1a4dfa94537be9d412338aad2"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Wed May 09 15:14:45 2007 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Tue Jul 10 17:31:49 2007 -0700"
      },
      "message": "ocfs2: factor out write aops into nolock variants\n\nocfs2_mkwrite() will want this so that it can add some mmap specific checks\nbefore asking for a write.\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "3a307ffc2730bfa1a4dfa94537be9d412338aad2",
      "tree": "3e83201eb816aec8b897afcf3920dd716ce4412c",
      "parents": [
        "2e89b2e48e1da09ed483f195968c9172aa95b5e2"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Tue May 08 17:47:32 2007 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Tue Jul 10 17:31:46 2007 -0700"
      },
      "message": "ocfs2: rework ocfs2_buffered_write_cluster()\n\nUse some ideas from the new-aops patch series and turn\nocfs2_buffered_write_cluster() into a 2 stage operation with the caller\ncopying data in between. The code now understands multiple cluster writes as\na result of having to deal with a full page write for greater than 4k pages.\n\nThis sets us up to easily call into the write path during -\u003epage_mkwrite().\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "eeb47d1234af1a9267836f680a8e114b2e88d0dc",
      "tree": "8362fcf841f204876446c952dca530cdb419899d",
      "parents": [
        "59be7dc97bacc0fd8e22f0be6e2aebb5c9b4ff47"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Wed Jun 06 16:15:24 2007 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Wed Jun 06 16:42:03 2007 -0700"
      },
      "message": "ocfs2: Fix invalid assertion during write on 64k pages\n\nThe write path code intends to bug if a math error (or unhandled case)\nresults in a write outside of the current cluster boundaries. The actual\nBUG_ON() statements however are incorrect, leading to a crash on kernels\nwith 64k page size. Fix those by checking against the right variables.\n\nAlso, move the assertions higher up within the functions so that they trip\n*before* the code starts to mark buffers.\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "5c3c6bb7709bf2bf4132750124879b3d89183e46",
      "tree": "267dc760d0dbb747989d17759fa5e49479da24c2",
      "parents": [
        "1024c902abdcbd2425aa850d7ef04e013ffb35f0"
      ],
      "author": {
        "name": "Nate Diller",
        "email": "nate.diller@gmail.com",
        "time": "Thu May 10 22:56:01 2007 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Fri May 25 11:00:39 2007 -0700"
      },
      "message": "[PATCH] ocfs2: use zero_user_page\n\nUse zero_user_page() instead of open-coding it.\n\nSigned-off-by: Nate Diller \u003cnate.diller@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "e9dfc0b2bc42761410e8db6c252c6c5889e178b8",
      "tree": "d42beb9d6b2c54bc205e48bc75cdf26ec0eeddc3",
      "parents": [
        "1c1ee4c3e7e16d23166a624a132889df3c540a18"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Mon May 14 11:38:51 2007 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Fri May 25 11:00:23 2007 -0700"
      },
      "message": "ocfs2: trylock in ocfs2_readpage()\n\nSimilarly to the page lock / cluster lock inversion in ocfs2_readpage, we\ncan deadlock on ip_alloc_sem. We can down_read_trylock() instead and just\nreturn AOP_TRUNCATED_PAGE if the operation fails.\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "9315f130e11249457f5c3a7f74ee82a7065bd854",
      "tree": "dd2a3671ec0696b52bc98c937d0465b7b8782cdb",
      "parents": [
        "5fdf1e677127cb460c38733b9586b772d657be43"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Tue May 01 17:44:20 2007 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Wed May 02 15:08:34 2007 -0700"
      },
      "message": "ocfs2: Force use of GFP_NOFS in ocfs2_write()\n\nWe can otherwise recurse into the file system.\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "1ca1a111b1e6be843c9ce5245dcd570312998d94",
      "tree": "e9f14300df896a4c7ee4f03db09cf08ddd027471",
      "parents": [
        "6e4b0d5692cd27d3c9be893a9f5939a9cafbb09f"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Fri Apr 27 16:01:25 2007 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Wed May 02 15:08:08 2007 -0700"
      },
      "message": "ocfs2: fix sparse warnings in fs/ocfs2\n\nNone of these are actually harmful, but the noise makes looking for real\nproblems difficult.\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "6cb129f5675c39944e5fe18fd2530a2eb771b754",
      "tree": "18290b53d302573632c0d5f906a0b4af8f8d4b39",
      "parents": [
        "586d232b191b776a1c6d51c10c662b8b3e238fdf"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Thu Apr 26 00:29:35 2007 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Wed May 02 15:07:27 2007 -0700"
      },
      "message": "[PATCH] fs/ocfs2/: make 3 functions static\n\nThis patch makes the following needlessly global functions static:\n- aops.c: ocfs2_write_data_page()\n- dlmglue.c: ocfs2_dump_meta_lvb_info()\n- file.c: ocfs2_set_inode_size()\n\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "7cdfc3a1c3971c9125c317cb8c2525745851798e",
      "tree": "ac0103cba9eaf0bc07b2e63893fa4e9637e6934e",
      "parents": [
        "8110b073a9135acf0a71bccfc20c0d1023f179c6"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Mon Apr 16 17:28:51 2007 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Thu Apr 26 15:07:45 2007 -0700"
      },
      "message": "ocfs2: Remember rw lock level during direct io\n\nCluster locking might have been redone because a direct write won\u0027t\ncomplete, so this needs to be reflected in the iocb.\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    },
    {
      "commit": "8110b073a9135acf0a71bccfc20c0d1023f179c6",
      "tree": "b668738e25648f3fcfd7b1063ab8d4948cebc668",
      "parents": [
        "4f902c37727bbedbc0508a1477874c58ddcc9af8"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Thu Mar 22 16:53:23 2007 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Thu Apr 26 15:07:40 2007 -0700"
      },
      "message": "ocfs2: Fix up i_blocks calculation to know about holes\n\nOlder file systems which didn\u0027t support holes did a dumb calculation of\ni_blocks based on i_size. This is no longer accurate, so fix things up to\ntake actual allocation into account.\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n"
    }
  ],
  "next": "4f902c37727bbedbc0508a1477874c58ddcc9af8"
}
