)]}'
{
  "log": [
    {
      "commit": "a694291a6211537189c6080f77f63cdabfc9b63e",
      "tree": "ec23d36fc493eeaaedd72f54187652f9df3b4819",
      "parents": [
        "e29df395bc6d2d0c89b3d8a5939a24b1b43c2fb6"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Nov 29 23:03:04 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Nov 30 21:17:52 2009 +0900"
      },
      "message": "nilfs2: separate wait function from nilfs_segctor_write\n\nThis separates wait function for submitted logs from the write\nfunction nilfs_segctor_write().  A new list of segment buffers\n\"sc_write_logs\" is added to hold logs under writing, and double\nbuffering is partially applied to hide io latency.\n\nAt this point, the double buffering is disabled for blocksize \u003c\npagesize because page dirty flag is turned off during write and dirty\nbuffers are not properly collected for pages crossing over segments.\n\nTo receive full benefit of the double buffering, further refinement is\nneeded to move the io wait outside the lock section of log writer.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "e29df395bc6d2d0c89b3d8a5939a24b1b43c2fb6",
      "tree": "6d6f570d8158d7a18570492d9f5f5edf843ed28c",
      "parents": [
        "9c965bac169f786cc6cca8ff81d3b636e923c960"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Nov 29 16:51:16 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Nov 30 21:06:35 2009 +0900"
      },
      "message": "nilfs2: add iterator for segment buffers\n\nThis adds a few iterator functions for segment buffers to make it easy\nto handle multiple series of logs.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "9c965bac169f786cc6cca8ff81d3b636e923c960",
      "tree": "71c05d6e981e2b2c5c3797cbcf8b8e619b48e966",
      "parents": [
        "9284ad2a9016ad631460caf8fd01fc21d84f118c"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Nov 29 01:17:31 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Nov 30 21:06:35 2009 +0900"
      },
      "message": "nilfs2: hide nilfs_write_info struct in segment buffer code\n\nHides nilfs_write_info struct and nilfs_segbuf_prepare_write function\nin segbuf.c to simplify the interface of nilfs_segbuf_write function.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "9284ad2a9016ad631460caf8fd01fc21d84f118c",
      "tree": "6ef77d51ca75017a1632bf215703ed9ee12feade",
      "parents": [
        "5f1586d0dd8f6eeecf6c0d35cbca6291afd6f1cc"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Nov 25 01:04:21 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Nov 30 21:05:57 2009 +0900"
      },
      "message": "nilfs2: relocate io status variables to segment buffer\n\nThis moves io status variables in nilfs_write_info struct to\nnilfs_segment_buffer struct.\n\nThis is a preparation to hide nilfs_write_info in segment buffer code.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "5f1586d0dd8f6eeecf6c0d35cbca6291afd6f1cc",
      "tree": "1f38cd3b11e99b44712b8a075bf34c1cbfcc1ade",
      "parents": [
        "0935db747739782fc779eb58529610c12db88ea2"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Nov 29 19:14:17 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Nov 29 19:59:00 2009 +0900"
      },
      "message": "nilfs2: do not return io error for bio allocation failure\n\nPreviously, log writer had possibility to set an io error flag on\nsegments even in case of memory allocation failure.\n\nThis fixes the issue.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "0935db747739782fc779eb58529610c12db88ea2",
      "tree": "27df2a16a8eb06c0548ea8fd4feb28aa1cbc5e1b",
      "parents": [
        "abdb318b79d387a723af5db2aa79f812cefd0797"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Nov 29 02:39:11 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Nov 29 02:50:46 2009 +0900"
      },
      "message": "nilfs2: use list_splice_tail or list_splice_tail_init\n\nThis applies list_splice_tail (or list_splice_tail_init) operation\ninstead of list_splice (or list_splice_init, respectively) to append a\nnew list to tail of an existing list.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "abdb318b79d387a723af5db2aa79f812cefd0797",
      "tree": "7915b48a984df976ed639b7b0a99672e7dc049c6",
      "parents": [
        "3534573b58fd7576d3dc8dd66a9973592ac08b2d"
      ],
      "author": {
        "name": "Jiro SEKIBA",
        "email": "jir@unicus.jp",
        "time": "Fri Nov 27 19:41:14 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 27 20:05:16 2009 +0900"
      },
      "message": "nilfs2: replace mark_inode_dirty as nilfs_mark_inode_dirty\n\nReplace mark_inode_dirty() as nilfs_mark_inode_dirty()\nto reduce deep function calls.\n\nSigned-off-by: Jiro SEKIBA \u003cjir@unicus.jp\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "3534573b58fd7576d3dc8dd66a9973592ac08b2d",
      "tree": "336143c737901da8612baac5e0434d80ee4aade8",
      "parents": [
        "58d55471cb1911f7493aba7bf3b6b87ca91e4314"
      ],
      "author": {
        "name": "Jiro SEKIBA",
        "email": "jir@unicus.jp",
        "time": "Fri Nov 27 19:41:13 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 27 20:05:16 2009 +0900"
      },
      "message": "nilfs2: delete mark_inode_dirty in nilfs_delete_entry\n\nDelete mark_inode_dirty() in nilfs_delete_entry() to reduce duplicate\nmark_inode_dirty() calls both in nilfs_rename() and nilfs_delete_entry().\n\nSigned-off-by: Jiro SEKIBA \u003cjir@unicus.jp\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "58d55471cb1911f7493aba7bf3b6b87ca91e4314",
      "tree": "a66a97fb1f5b1bec314a471de9deaae7dd110f55",
      "parents": [
        "2093abf9cbcec3cb1409a67d8bce51854595b1d5"
      ],
      "author": {
        "name": "Jiro SEKIBA",
        "email": "jir@unicus.jp",
        "time": "Fri Nov 27 19:41:12 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 27 20:05:16 2009 +0900"
      },
      "message": "nilfs2: delete mark_inode_dirty in nilfs_commit_chunk\n\nDelete mark_inode_dirty() in nilfs_commit_chunk(), for callers of\nnilfs_commit_chunk() will call equivalent mark_inode_dirty()\nafter calling nilfs_commit_chunk().\n\nSigned-off-by: Jiro SEKIBA \u003cjir@unicus.jp\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "2093abf9cbcec3cb1409a67d8bce51854595b1d5",
      "tree": "039e2b5f9108a9285ac8f01a34ee7f4515ef1f6a",
      "parents": [
        "4cd76c3c930993cf70657775bb521cad006e37b4"
      ],
      "author": {
        "name": "Jiro SEKIBA",
        "email": "jir@unicus.jp",
        "time": "Fri Nov 27 19:41:11 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 27 20:05:15 2009 +0900"
      },
      "message": "nilfs2: change return type of nilfs_commit_chunk\n\nchange return type of nilfs_commit_chunk() as void from int,\nfor nilfs_set_file_dirty() usually does not return error.\n\nThis is an intermediate patch to reduce mark_inode_dirty() in\nnilfs_commit_chunk().\n\nSigned-off-by: Jiro SEKIBA \u003cjir@unicus.jp\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "4cd76c3c930993cf70657775bb521cad006e37b4",
      "tree": "f29b80420e2214d08785580f11e400728750d10a",
      "parents": [
        "17491472769abbf4dac694d96c65eed5a7e1c81c"
      ],
      "author": {
        "name": "Jiro SEKIBA",
        "email": "jir@unicus.jp",
        "time": "Fri Nov 27 19:41:10 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 27 20:05:15 2009 +0900"
      },
      "message": "nilfs2: split nilfs_unlink as nilfs_do_unlink and nilfs_unlink\n\nSplit nilfs_unlink() to reduce nested transaction and duplicate\nmark_inode_dirty() calls when calling nilfs_unlink() from nilfs_rmdir().\n\nnilfs_do_unlink() is an actual unlink functionality which is not\nin transaction and does not call mark_inode_dirty() for dentry argument.\n\nnilfs_unlink() is a wrapper function for do_nilfs_unlink() with\ntransaction and mark_inode_dirty() for dentry argument.\n\nSigned-off-by: Jiro SEKIBA \u003cjir@unicus.jp\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "17491472769abbf4dac694d96c65eed5a7e1c81c",
      "tree": "a811e18a9c29df370cdbf9018c1aded35d93ffa8",
      "parents": [
        "565de406e7bfa92ffec6315e89857986da657192"
      ],
      "author": {
        "name": "Jiro SEKIBA",
        "email": "jir@unicus.jp",
        "time": "Fri Nov 27 19:41:09 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 27 20:05:15 2009 +0900"
      },
      "message": "nilfs2: delete redundant mark_inode_dirty\n\ndelete redundant mark_inode_dirty() calls\n\nSigned-off-by: Jiro SEKIBA \u003cjir@unicus.jp\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "565de406e7bfa92ffec6315e89857986da657192",
      "tree": "43ac1b59a748a91e2d22505843823fbae5e63c50",
      "parents": [
        "43f8bc262fcfadc7583b2353d2708e6eb77788ff"
      ],
      "author": {
        "name": "Jiro SEKIBA",
        "email": "jir@unicus.jp",
        "time": "Fri Nov 27 19:41:08 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 27 20:05:15 2009 +0900"
      },
      "message": "nilfs2: expand inode_inc_link_count and inode_dec_link_count\n\nThis is an intermidiate patch to reduce redandunt mark_inode_dirty() calls\nby calling inode_inc_link_count() and inode_dec_link_count() functions.\n\nSigned-off-by: Jiro SEKIBA \u003cjir@unicus.jp\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "43f8bc262fcfadc7583b2353d2708e6eb77788ff",
      "tree": "1c899548d8c16d5f77e3d39eff5263fddaa6400a",
      "parents": [
        "9ca941d4b62e72571948efe5a73c563b4cacc98d"
      ],
      "author": {
        "name": "Jiro SEKIBA",
        "email": "jir@unicus.jp",
        "time": "Fri Nov 27 19:41:07 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 27 20:05:15 2009 +0900"
      },
      "message": "nilfs2: delete mark_inode_dirty from nilfs_set_link\n\nDelete mark_inode_dirty() from nilfs_set_link() to reduce redundant\nmark_inode_dirty() calls in caller of nilfs_set_link().\n\nSigned-off-by: Jiro SEKIBA \u003cjir@unicus.jp\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "9ca941d4b62e72571948efe5a73c563b4cacc98d",
      "tree": "8c4a5cde6c2e626758c0aed85fe9cd7759747890",
      "parents": [
        "0234576d041b9b2cc7043691ea61d2c2ca597aaa"
      ],
      "author": {
        "name": "Jiro SEKIBA",
        "email": "jir@unicus.jp",
        "time": "Fri Nov 27 19:41:06 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 27 20:05:15 2009 +0900"
      },
      "message": "nilfs2: delete mark_inode_dirty in nilfs_new_inode\n\nIt is redundant to call mark_inode_dirty() in nilfs_new_inode() because\nall caller of nilfs_new_inode() will call mark_inode_dirty()\nafter calling nilfs_new_inode() directly or indirectly in transaction.\n\nSigned-off-by: Jiro SEKIBA \u003cjir@unicus.jp\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "0234576d041b9b2cc7043691ea61d2c2ca597aaa",
      "tree": "1fd5f397cf0a7cb010a3e383a715438e64582b65",
      "parents": [
        "a057d2c01161444c48b12a60351ae6c7135f6e61"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 20 03:28:01 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 20 10:05:52 2009 +0900"
      },
      "message": "nilfs2: add norecovery mount option\n\nThis adds \"norecovery\" mount option which disables temporal write\naccess to read-only mounts or snapshots during mount/recovery.\nWithout this option, write access will be even performed for those\ntypes of mounts; the temporal write access is needed to mount root\nfile system read-only after an unclean shutdown.\n\nThis option will be helpful when user wants to prevent any write\naccess to the device.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nCc: Eric Sandeen \u003csandeen@redhat.com\u003e\n"
    },
    {
      "commit": "a057d2c01161444c48b12a60351ae6c7135f6e61",
      "tree": "066316a4e9a9d1d2979873c31e7855eb9c093c49",
      "parents": [
        "f50a4c8149cc135921a8a0476bff8e622f59aef9"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Thu Nov 19 19:58:46 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 20 10:05:52 2009 +0900"
      },
      "message": "nilfs2: add helper to get if volume is in a valid state\n\nThis adds a helper function, nilfs_valid_fs() which returns if nilfs\nis in a valid state or not.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "f50a4c8149cc135921a8a0476bff8e622f59aef9",
      "tree": "eba1d25b71d85daf34153ffc1b1e8eaf8b83cccc",
      "parents": [
        "050b4142c9f3cb3a213f254bd1a1fa1476800585"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Thu Nov 19 16:58:40 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 20 10:05:52 2009 +0900"
      },
      "message": "nilfs2: move recovery completion into load_nilfs function\n\nAlthough mount recovery of nilfs is integrated in load_nilfs()\nprocedure, the completion of recovery was isolated from the procedure\nand performed at the end of the fill_super routine.\n\nThis was somewhat confusing since the recovery is needed for the nilfs\nobject, not for a super block instance.\n\nTo resolve the inconsistency, this will integrate the recovery\ncompletion into load_nilfs().\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "050b4142c9f3cb3a213f254bd1a1fa1476800585",
      "tree": "e9c128ab00463ca903edf15457fd76a4df7911d7",
      "parents": [
        "f021759d74d71bacc73fc3e00d6e3d35e1f2e123"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Thu Nov 19 22:24:48 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 20 10:05:51 2009 +0900"
      },
      "message": "nilfs2: apply readahead for recovery on mount\n\nThis inserts readahead in the recovery code.  The readahead request is\nissued per segment while searching the latest super root block.\n\nThis will shorten mount time after unclean unmount.  A measurement\nshows the recovery time was reduced by more than 60 percent:\n\n e.g. real  0m11.586s -\u003e 0m3.918s  (x 2.96)\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "f021759d74d71bacc73fc3e00d6e3d35e1f2e123",
      "tree": "245b128351c6bd30f1c34c409198b42a63b77fbb",
      "parents": [
        "071ec54dd730307ee0e703a105872b9a1c6fd2aa"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Nov 18 18:37:28 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 20 10:05:51 2009 +0900"
      },
      "message": "nilfs2: clean up get/put function of a segment usage\n\nThis eliminates obsolete nilfs_get_sufile_get_segment_usage() and\nnilfs_set_sufile_segment_usage() from sufile.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "071ec54dd730307ee0e703a105872b9a1c6fd2aa",
      "tree": "fb6629e471adf24d432487e0641549fd38d20ef3",
      "parents": [
        "61a189e9c62359cd12b2aa3bd6ab9cffa6cf2745"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Nov 18 18:23:34 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 20 10:05:51 2009 +0900"
      },
      "message": "nilfs2: move routine to set segment usage into sufile\n\nThis adds nilfs_sufile_set_segment_usage() function in sufile to\nreplace direct access to the sufile metadata in log writer code.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "61a189e9c62359cd12b2aa3bd6ab9cffa6cf2745",
      "tree": "03c5cb693a5ea01474055fa26028c42d37011b1d",
      "parents": [
        "70622a2091647840013c1e982e56a8808768847e"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Nov 18 17:25:12 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 20 10:05:51 2009 +0900"
      },
      "message": "nilfs2: move routine marking segment usage dirty into sufile\n\nThis adds nilfs_sufile_mark_dirty() function in sufile to replace\nnilfs_touch_segusage() function in log writer code.  This is a\npreparation for the further cleanup which will move out low level\nsufile operations in the log writer.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "70622a2091647840013c1e982e56a8808768847e",
      "tree": "28f8bd21ddbda3d0fdbfb7eeccae6ae8052aa78e",
      "parents": [
        "49fa7a590208b439cc74f2cafdb15568abb3f8d1"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Nov 14 18:40:27 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 20 10:05:51 2009 +0900"
      },
      "message": "nilfs2: insert cache operation in palloc get block routines\n\nThis implements cache operation in get block routines of palloc code:\nnilfs_palloc_get_desc_block(), nilfs_palloc_get_bitmap_block(), and\nnilfs_palloc_get_entry_block().\n\nThis will complete the palloc cache.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "49fa7a590208b439cc74f2cafdb15568abb3f8d1",
      "tree": "2e6b235dff922a0a7529c601887ff3d47e826496",
      "parents": [
        "c3ea56c80081b826df4a0ac797432179cf5b7cd2"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Nov 14 16:44:22 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 20 10:05:50 2009 +0900"
      },
      "message": "nilfs2: add palloc cache to ifile\n\nThis adds the palloc cache to ifile.  The palloc cache is allocated on\nthe extended region of nilfs_mdt_info struct.  The struct\nnilfs_ifile_info defines the extended on memory structure of ifile.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "c3ea56c80081b826df4a0ac797432179cf5b7cd2",
      "tree": "49c80180a36bf52fe7ca5bb043412b2271829307",
      "parents": [
        "8908b2f70b795299d21706b5a97676cfe7f9056a"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Nov 15 20:13:21 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 20 10:05:50 2009 +0900"
      },
      "message": "nilfs2: flush palloc cache before manipulating data pages of GC dat\n\nData pages in gcdat metadata file (i.e. the secondary DAT for GC), are\ncleared or even moved back to the normal DAT when a shot of garbage\ncollection was done.\n\nBuffer heads held by the palloc cache of gcdat must be cleared before\nthese page cache manipulation.  This adds nilfs_palloc_clear_cache()\nto ensure this.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "8908b2f70b795299d21706b5a97676cfe7f9056a",
      "tree": "527071b03f3dfb541a6306c59e601dce5c99fabd",
      "parents": [
        "db38d5ad323362bfca118b52fe5906f97a69fb45"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Nov 14 16:35:01 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 20 10:05:50 2009 +0900"
      },
      "message": "nilfs2: add palloc cache to dat\n\nThis adds the palloc cache to DAT file.  The palloc cache is allocated\non the extended region of nilfs_mdt_info struct.  The struct\nnilfs_dat_info defines the extended on memory structure of DAT.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "db38d5ad323362bfca118b52fe5906f97a69fb45",
      "tree": "11940fedf0eb0ff80527094bd435ec89641f8adc",
      "parents": [
        "141bbdba9c2c1592d56b019277774099a5412aea"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Nov 14 15:54:27 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 20 10:05:50 2009 +0900"
      },
      "message": "nilfs2: add cache framework for persistent object allocator\n\nThis adds setup and cleanup routines of the persistent object\nallocator cache.\n\nAccording to ftrace analyses, accessing buffers of the DAT file\nsuffers indispensable overhead many times.  To mitigate the overhead,\nThis introduce cache framework for the persistent object allocator\n(palloc) which the DAT file and ifile are using.\n\nstruct nilfs_palloc_cache represents the cache object per metadata\nfile using palloc.\n\nThe cache is initialized through nilfs_palloc_setup_cache() and\ndestroyed by nilfs_palloc_destroy_cache(); callers of the former\nfunction will be added to individual allocators of DAT and ifile on\nsuccessive patches.\n\nnilfs_palloc_destroy_cache() will be called from nilfs_mdt_destroy()\nif the cache is attached to a metadata file.  A companion function\nnilfs_palloc_clear_cache() is provided to allow releasing buffer head\nreferences independently with the cleanup task.  This adjunctive\nfunction will be used before invalidating pages of metadata file with\nthe cache.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "141bbdba9c2c1592d56b019277774099a5412aea",
      "tree": "253f97f5843e5d80a42c281f474a36396823d6f7",
      "parents": [
        "1376e931b75f954057b1547ba25fcba594cef804"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Nov 14 13:48:06 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 20 10:05:50 2009 +0900"
      },
      "message": "nilfs2: unfold nilfs_palloc_block_get_bitmap function\n\nThis expands a trivial address calculation in the function into its\nevery callsite. This expansion improves readability of the callers.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "1376e931b75f954057b1547ba25fcba594cef804",
      "tree": "b8e75d8dddb705c661542b534b4a74f9e1e87aa4",
      "parents": [
        "75f65edfcc4a19d14fc8ab860846fad070c8db49"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 13 16:49:09 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 20 10:05:50 2009 +0900"
      },
      "message": "nilfs2: eliminate nilfs_btnode_get function\n\nThis removes the obsolete nilfs_btnode_get() function and makes\nnilfs_btree_get_block() directly call nilfs_btnode_submit_block().\n\nThis expansion will provide better opportunity for code optimization.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "75f65edfcc4a19d14fc8ab860846fad070c8db49",
      "tree": "e0edfb5767630f95620e5e7b670e0871e1d51e7b",
      "parents": [
        "45f4910bc0bb904bcf53aa04ee1b807abe1387a6"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 13 16:30:41 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 20 10:05:50 2009 +0900"
      },
      "message": "nilfs2: remove newblk argument from nilfs_btnode_submit_block\n\nThis removes the obsolete argument from nilfs_btnode_submit_block().\nThis will complete separating a create function of btree node.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "45f4910bc0bb904bcf53aa04ee1b807abe1387a6",
      "tree": "d40f556ef778f9d4c2b37b4978fae29835de150d",
      "parents": [
        "d501d7368937740e8d06671a4bfe4e236ed25bd0"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 13 16:25:19 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 20 10:05:49 2009 +0900"
      },
      "message": "nilfs2: use nilfs_btnode_create_block function\n\nThis displaces nilfs_btnode_get() use to create new btree node block\nwith nilfs_btnode_create_block.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "d501d7368937740e8d06671a4bfe4e236ed25bd0",
      "tree": "c0abbdc89862cfdb5e85321cbc6f2959af376cd9",
      "parents": [
        "b34a65069caa56b691ebab5ae0b8e54d16406d16"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 13 16:04:11 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 20 10:05:49 2009 +0900"
      },
      "message": "nilfs2: separate function for creating new btree node block\n\nAdds a separate routine for creating a btree node block.  This is a\npreparation to reduce the depth of function calls during submitting\nbtree node buffer.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "b34a65069caa56b691ebab5ae0b8e54d16406d16",
      "tree": "f2eacf08be4471cd1ca781c9d4c56bbb81448531",
      "parents": [
        "ef7d4757a5b7b07a3a0d30d3ba6b587e574b28b9"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Nov 14 00:09:47 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 20 10:05:49 2009 +0900"
      },
      "message": "nilfs2: avoid readahead on metadata file for create mode\n\nThis turns off readhead action of metadata file if nilfs_mdt_get_block\nfunction was called with a create flag.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "ef7d4757a5b7b07a3a0d30d3ba6b587e574b28b9",
      "tree": "5f1f1cad0c9bb755cd332017f66fe502d1286a94",
      "parents": [
        "aa474a220180d997caafcee372770d6ed6bf798a"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 13 08:45:32 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 20 10:05:49 2009 +0900"
      },
      "message": "nilfs2: simplify nilfs_sufile_get_ncleansegs function\n\nPreviously, this function took an status code to return possible error\ncodes.  The (\"nilfs2: add local variable to cache the number of clean\nsegments\") patch removed the possibility to return errors.\n\nSo, this simplifies the function definition to make it directly return\nthe number of clean segments.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "aa474a220180d997caafcee372770d6ed6bf798a",
      "tree": "f94f79d076a3abaffa80dc466d9f6d4a228f5e69",
      "parents": [
        "7b16c8a211c87d465c48ea324928f8057590b853"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 13 03:41:55 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 20 10:05:49 2009 +0900"
      },
      "message": "nilfs2: add local variable to cache the number of clean segments\n\nThis makes it possible for sufile to get the number of clean segments\nfaster.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "7b16c8a211c87d465c48ea324928f8057590b853",
      "tree": "3afd724d8d6240516d58793d8c3f373ca16e4f40",
      "parents": [
        "fd66c0d5c377ee8146909d0eb9258539e4b0f293"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 13 03:10:21 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 20 10:05:48 2009 +0900"
      },
      "message": "nilfs2: unfold nilfs_sufile_block_get_header function\n\nThis unfolds the nilfs_sufile_block_get_header() function for\nsimplicity.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "fd66c0d5c377ee8146909d0eb9258539e4b0f293",
      "tree": "7fefab4c3108aff9d18943a17cd3522a53bdc3bd",
      "parents": [
        "3961f0e2775f84a8f81b0dcddb0b356ebfe0696b"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 13 02:25:41 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 20 10:05:48 2009 +0900"
      },
      "message": "nilfs2: hide nilfs_mdt_clear calls in nilfs_mdt_destroy\n\nThis will hide a function call of nilfs_mdt_clear() in\nnilfs_mdt_destroy().\n\nThis ensures nilfs_mdt_destroy() to do cleanup jobs included in\nnilfs_mdt_clear().\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "3961f0e2775f84a8f81b0dcddb0b356ebfe0696b",
      "tree": "908bf31a9a3ae79c8f122bdcaa6102e0996a6ac1",
      "parents": [
        "8707df38478c8e0958b706f0ea1cdf99d00a9469"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 13 01:55:02 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 20 10:05:48 2009 +0900"
      },
      "message": "nilfs2: eliminate inlines to directly read/write inode of metadata files\n\nRemoves two inline functions: nilfs_mdt_read_inode_direct() and\nnilfs_mdt_write_inode_direct().\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "8707df38478c8e0958b706f0ea1cdf99d00a9469",
      "tree": "5bc882fda214b4020f65f1df217e7fae40c10145",
      "parents": [
        "79739565e15f2adbc482207a0800fc127c84d1a0"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 13 01:36:56 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 20 10:05:48 2009 +0900"
      },
      "message": "nilfs2: separate read method of meta data files on super root block\n\nWill displace nilfs_mdt_read_inode_direct function with an individual\nread method: nilfs_dat_read, nilfs_sufile_read, nilfs_cpfile_read.\n\nThis provides the opportunity to initialize local variables of each\nmetadata file after reading the inode.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "79739565e15f2adbc482207a0800fc127c84d1a0",
      "tree": "10d61f5a31e4de5c90a6c9c10f0f0bc8e68d1550",
      "parents": [
        "5731e191f254af9135ad843119804a500528ecf3"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Thu Nov 12 23:56:43 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 20 10:05:48 2009 +0900"
      },
      "message": "nilfs2: separate constructor of metadata files\n\nThis will displace nilfs_mdt_new() constructor with individual\nmetadata file constructors like nilfs_dat_new(), new_sufile_new(),\nnilfs_cpfile_new(), and nilfs_ifile_new().\n\nThis makes it possible for each metadata file to have own\nintialization code.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "5731e191f254af9135ad843119804a500528ecf3",
      "tree": "1ababce01647674af0e9c6bfb36f5ab5e96ab76c",
      "parents": [
        "9cb4e0d2b99e8b0e5e269d898ae6ab1967647c5a"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Thu Nov 12 22:42:04 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 20 10:05:48 2009 +0900"
      },
      "message": "nilfs2: add size option of private object to metadata file allocator\n\nThis adds an optional \"object size\" argument to nilfs_mdt_new_common()\nfunction; the argument specifies the size of private object attached\nto a newly allocated metadata file inode.\n\nThis will afford space to keep local variables for meta data files.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "9cb4e0d2b99e8b0e5e269d898ae6ab1967647c5a",
      "tree": "09ac1daa4985b4717afc818f89cfe2439664b44a",
      "parents": [
        "09bf4aae0a3c471b721c43e7bdb6132200d907b2"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 06 01:00:48 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 20 10:05:47 2009 +0900"
      },
      "message": "nilfs2: move out mark_inode_dirty calls from bmap routines\n\nPreviously, nilfs_bmap_add_blocks() and nilfs_bmap_sub_blocks() called\nmark_inode_dirty() after they changed the number of data blocks.\n\nThis moves these calls outside bmap outermost functions like\nnilfs_bmap_insert() or nilfs_bmap_truncate().\n\nThis will mitigate overhead for truncate or delete operation since\nthey repeatedly remove set of blocks.  Nearly 10 percent improvement\nwas observed for removal of a large file:\n\n # dd if\u003d/dev/zero of\u003d/test/aaa bs\u003d1M count\u003d512\n # time rm /test/aaa\n\n  real  2.968s -\u003e 2.705s\n\nFurther optimization may be possible by eliminating these\nmark_inode_dirty() uses though I avoid mixing separate changes here.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "09bf4aae0a3c471b721c43e7bdb6132200d907b2",
      "tree": "b2f8a8507abfd1a443a9a0965650899ce68f923f",
      "parents": [
        "30db4e6c3d51a89e4923e525303f714e6508bbd0"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Thu Nov 05 15:53:27 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 20 10:05:47 2009 +0900"
      },
      "message": "nilfs2: stop marking metadata inode dirty within btree operations\n\nSince metadata file routines mark the inode dirty after they\nsuccessfully changed bmap objects, nilfs_mdt_mark_dirty() calls in\nnilfs_bmap_add_blocks() and nilfs_bmap_sub_blocks() are redundant.\n\nThis removes these overlapping calls from the bmap routines.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "30db4e6c3d51a89e4923e525303f714e6508bbd0",
      "tree": "c1c83cff8e73b2534a391f2c89926b3badfdaa83",
      "parents": [
        "a49762fd119d191dcbb2f638a2dbc2ed53f4e2bb"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Nov 11 22:37:59 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 20 10:05:47 2009 +0900"
      },
      "message": "nilfs2: remove buffer locking from btree code\n\nlock_buffer() and unlock_buffer() uses in btree.c are eliminable\nbecause btree functions gain buffer heads through nilfs_btnode_get(),\nwhich never returns an on-the-fly buffer.\n\nAlthough nilfs_clear_dirty_page() and nilfs_copy_back_pages() in\nnilfs_commit_gcdat_inode() juggle btree node buffers of DAT, this is\nsafe because these operations are protected by a log writer lock or\nthe metadata file semaphore of DAT.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "a49762fd119d191dcbb2f638a2dbc2ed53f4e2bb",
      "tree": "5cd999854d4b156c7bcd901694998e60b479f6e8",
      "parents": [
        "e2073e78575e3690ea3cce67b11b7b1de8e85fd3"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Nov 11 01:28:48 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 20 10:05:47 2009 +0900"
      },
      "message": "nilfs2: remove buffer locking in nilfs_mark_inode_dirty\n\nThis lock is eliminable because inodes on the buffer can be updated\nindependently.  Although a log writer also fills in bmap data on the\non-disk inodes, this update is exclusively done by a log writer lock.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "e2073e78575e3690ea3cce67b11b7b1de8e85fd3",
      "tree": "46a43afec32b87abac0967bb5b19dec0a8708f3d",
      "parents": [
        "91f1953bf3243a4215b57d8e2f317a7035924de7"
      ],
      "author": {
        "name": "Jiro SEKIBA",
        "email": "jir@unicus.jp",
        "time": "Thu Nov 12 14:07:27 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 20 10:05:47 2009 +0900"
      },
      "message": "nilfs2: cleanup unused match_bool function\n\nmatch_bool function is not used anymore.\n\nSigned-off-by: Jiro SEKIBA \u003cjir@unicus.jp\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "91f1953bf3243a4215b57d8e2f317a7035924de7",
      "tree": "78bec48dc558ebd130c67a6144e2e981286a603c",
      "parents": [
        "6600b9dd8e0d4a60c610f216b78d992a598bc52a"
      ],
      "author": {
        "name": "Jiro SEKIBA",
        "email": "jir@unicus.jp",
        "time": "Thu Nov 12 14:07:26 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 20 10:05:47 2009 +0900"
      },
      "message": "nilfs2: Using nobarrier option instead of barrier\u003doff\n\nSince most of fs using nofoobar style option,\nmodified barrier\u003doff option as nobarrier.\n\nSigned-off-by: Jiro SEKIBA \u003cjir@unicus.jp\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "6600b9dd8e0d4a60c610f216b78d992a598bc52a",
      "tree": "9c1b718ab0c5d8dea2f200eaa1b8296e655e4657",
      "parents": [
        "9b945d537db86557e5b5820b4b52df94c35b3829"
      ],
      "author": {
        "name": "Jiro SEKIBA",
        "email": "jir@unicus.jp",
        "time": "Mon Nov 09 19:10:11 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 20 10:05:46 2009 +0900"
      },
      "message": "nilfs2: move definition of struct nilfs_btree_node\n\nThis is a trivial patch to expose struct nilfs_fs_btree_node.\nThe struct should be exposed outside of kernel, for it is disk format.\n\nSigned-off-by: Jiro SEKIBA \u003cjir@unicus.jp\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "9b945d537db86557e5b5820b4b52df94c35b3829",
      "tree": "84f041ec97f26d79709e93623f75371f6449d7ef",
      "parents": [
        "648f4e3e50c4793d9dbf9a09afa193631f76fa26"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Oct 10 22:58:10 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 20 10:05:46 2009 +0900"
      },
      "message": "nilfs2: get rid of BUG_ON use in btree lookup routines\n\nThe current btree lookup routines make a kernel oops when detected\ninconsistency in btree blocks.  These routines should instead return a\nproper error code because the inconsistency usually comes from\ncorruption of on-disk metadata.\n\nThis fixes the issue by converting BUG_ON calls to proper error\nhandlings.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "18dafac1a4c6c88867a50f9a82492976f20383d6",
      "tree": "27800ccab2a98cccc903ed68348de1abc9b18a7d",
      "parents": [
        "1a7af63108f07637504300671a72432c34e10021"
      ],
      "author": {
        "name": "Jiro SEKIBA",
        "email": "jir@unicus.jp",
        "time": "Sun Nov 15 13:49:45 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Nov 15 17:17:46 2009 +0900"
      },
      "message": "nilfs2: deleted inconsistent comment in nilfs_load_inode_block()\n\nThe comment says, \"Caller of this function MUST lock s_inode_lock\",\nhowever just above the comment, it locks s_inode_lock in the function.\n\nSigned-off-by: Jiro SEKIBA \u003cjir@unicus.jp\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "c1ea985c710f41e97f1c72c29bbf367375370f0b",
      "tree": "7345a5041a7ea432dcdebe664b7e57066d968e9f",
      "parents": [
        "156171c71a0dc4bce12b4408bb1591f8fe32dc1a"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Thu Nov 12 00:13:32 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 13 10:33:24 2009 +0900"
      },
      "message": "nilfs2: fix lock order reversal in chcp operation\n\nWill fix the following lock order reversal lockdep detected:\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n[ INFO: possible circular locking dependency detected ]\n2.6.32-rc6 #7\n-------------------------------------------------------\nchcp/30157 is trying to acquire lock:\n (\u0026nilfs-\u003ens_mount_mutex){+.+.+.}, at: [\u003cfed7cfcc\u003e] nilfs_cpfile_change_cpmode+0x46/0x752 [nilfs2]\n\nbut task is already holding lock:\n (\u0026nilfs-\u003ens_segctor_sem){++++.+}, at: [\u003cfed7ca32\u003e] nilfs_transaction_begin+0xba/0x110 [nilfs2]\n\nwhich lock already depends on the new lock.\n\nthe existing dependency chain (in reverse order) is:\n\n-\u003e #2 (\u0026nilfs-\u003ens_segctor_sem){++++.+}:\n       [\u003cc105799c\u003e] __lock_acquire+0x109c/0x139d\n       [\u003cc1057d26\u003e] lock_acquire+0x89/0xa0\n       [\u003cc14151e2\u003e] down_read+0x31/0x45\n       [\u003cfed6d77b\u003e] nilfs_attach_checkpoint+0x8f/0x16b [nilfs2]\n       [\u003cfed6e393\u003e] nilfs_get_sb+0x3e7/0x653 [nilfs2]\n       [\u003cc10c0ccb\u003e] vfs_kern_mount+0x8b/0x124\n       [\u003cc10c0db2\u003e] do_kern_mount+0x37/0xc3\n       [\u003cc10d7517\u003e] do_mount+0x64d/0x69d\n       [\u003cc10d75cd\u003e] sys_mount+0x66/0x95\n       [\u003cc1002a14\u003e] sysenter_do_call+0x12/0x32\n\n-\u003e #1 (\u0026type-\u003es_umount_key#31/1){+.+.+.}:\n       [\u003cc105799c\u003e] __lock_acquire+0x109c/0x139d\n       [\u003cc1057d26\u003e] lock_acquire+0x89/0xa0\n       [\u003cc104c0f3\u003e] down_write_nested+0x34/0x52\n       [\u003cc10c08fe\u003e] sget+0x22e/0x389\n       [\u003cfed6e133\u003e] nilfs_get_sb+0x187/0x653 [nilfs2]\n       [\u003cc10c0ccb\u003e] vfs_kern_mount+0x8b/0x124\n       [\u003cc10c0db2\u003e] do_kern_mount+0x37/0xc3\n       [\u003cc10d7517\u003e] do_mount+0x64d/0x69d\n       [\u003cc10d75cd\u003e] sys_mount+0x66/0x95\n       [\u003cc1002a14\u003e] sysenter_do_call+0x12/0x32\n\n-\u003e #0 (\u0026nilfs-\u003ens_mount_mutex){+.+.+.}:\n       [\u003cc1057727\u003e] __lock_acquire+0xe27/0x139d\n       [\u003cc1057d26\u003e] lock_acquire+0x89/0xa0\n       [\u003cc1414d63\u003e] mutex_lock_nested+0x41/0x23e\n       [\u003cfed7cfcc\u003e] nilfs_cpfile_change_cpmode+0x46/0x752 [nilfs2]\n       [\u003cfed801b2\u003e] nilfs_ioctl+0x11a/0x7da [nilfs2]\n       [\u003cc10cca12\u003e] vfs_ioctl+0x27/0x6e\n       [\u003cc10ccf93\u003e] do_vfs_ioctl+0x491/0x4db\n       [\u003cc10cd022\u003e] sys_ioctl+0x45/0x5f\n       [\u003cc1002a14\u003e] sysenter_do_call+0x12/0x32\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "c083234f1592ef3fad3d8083663c5e4a357ec77c",
      "tree": "8c90897b1fa11920a4edbf043aa59a5123eaa2cb",
      "parents": [
        "5399dd1fc8f5e812db931225ef5f67d89f3b1a56"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Nov 08 12:09:24 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Nov 08 19:04:25 2009 +0900"
      },
      "message": "nilfs2: fix missing cleanup of gc cache on error cases\n\nThis fixes an -rc1 regression brought by the commit:\n1cf58fa840472ec7df6bf2312885949ebb308853 (\"nilfs2: shorten freeze\nperiod due to GC in write operation v3\").\n\nAlthough the patch moved out a function call of\nnilfs_ioctl_move_blocks() to nilfs_ioctl_clean_segments() from\nnilfs_ioctl_prepare_clean_segments(), it didn\u0027t move corresponding\ncleanup job needed for the error case.\n\nThis will move the missing cleanup job to the destination function.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nAcked-by: Jiro SEKIBA \u003cjir@unicus.jp\u003e\n"
    },
    {
      "commit": "5399dd1fc8f5e812db931225ef5f67d89f3b1a56",
      "tree": "cb75ad2f91fb2ec6ad70f3c1a055090418fc643f",
      "parents": [
        "b419148e567728f6af0c3b01965c1cc141e3e13a"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Nov 07 18:45:16 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Nov 08 19:01:35 2009 +0900"
      },
      "message": "nilfs2: fix kernel oops in error case of nilfs_ioctl_move_blocks\n\nThis fixes a kernel oops reported by Markus Trippelsdorf in the email\ntitled \"[NILFS users] kernel Oops while running nilfs_cleanerd\".\n\nThe oops was caused by a bug of error path in\nnilfs_ioctl_move_blocks() function, which was inlined in\nnilfs_ioctl_clean_segments().\n\nnilfs_ioctl_move_blocks checks duplication of blocks which will be\nmoved in garbage collection.  But, the check should have be done\nwithin nilfs_ioctl_move_inode_block() to prevent list corruption among\nbuffers storing the target blocks.\n\nTo fix the kernel oops, this moves forward the duplication check\nbefore the list insertion.\n\nI also tested this for stable trees [2.6.30, 2.6.31].\n\nReported-by: Markus Trippelsdorf \u003cmarkus@trippelsdorf.de\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nCc: stable \u003cstable@kernel.org\u003e\n"
    },
    {
      "commit": "05b4358ad564d7a6a51b3717afe771d36711e9c4",
      "tree": "ad8473aadd4a8f8e25aa40bf1bef8f16f7490d83",
      "parents": [
        "aeda7f6343e6375a832e52ff5ed389c115023ca5"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Sep 14 01:20:35 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue Nov 03 12:32:03 2009 +0900"
      },
      "message": "nilfs2: add zero-fill for new btree node buffers\n\nAdds missing initialization of newly allocated b-tree node buffers.\nThis avoids garbage data to be mixed in b-tree node blocks.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "aeda7f6343e6375a832e52ff5ed389c115023ca5",
      "tree": "2543be730f7fff44e23fbe302108afa0093cc643",
      "parents": [
        "b1e19e5601277845b4f17ecd7c9ba04f73ee11aa"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Nov 02 15:08:13 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue Nov 03 12:32:03 2009 +0900"
      },
      "message": "nilfs2: fix irregular checkpoint creation due to data flush\n\nWhen nilfs flushes out dirty data to reduce memory pressure, creation\nof checkpoints is wrongly postponed.  This bug causes irregular\ncheckpoint creation especially in small footprint systems.\n\nTo correct this issue, a timer for the checkpoint creation has to be\ncontinued if a log writer does not create a checkpoint.\n\nThis will do the correction.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "b1e19e5601277845b4f17ecd7c9ba04f73ee11aa",
      "tree": "bdc23c9fcc4bfe58787b63e9c739c0692b79dc4d",
      "parents": [
        "1836d95928a0f41ada0cbb2a6c4e46b027db9491"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue Nov 03 00:25:53 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue Nov 03 12:31:36 2009 +0900"
      },
      "message": "nilfs2: fix dirty page accounting leak causing hang at write\n\nBruno Prémont and Dunphy, Bill noticed me that NILFS will certainly\nhang on ARM-based targets.\n\nI found this was caused by an underflow of dirty pages counter.  A\nb-tree cache routine was marking page dirty without adjusting page\naccount information.\n\nThis fixes the dirty page accounting leak and resolves the hang on\narm-based targets.\n\nReported-by: Bruno Prémont \u003cbonbons@linux-vserver.org\u003e\nReported-by: Dunphy, Bill \u003cWDunphy@tandbergdata.com\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nTested-by: Bruno Prémont \u003cbonbons@linux-vserver.org\u003e\nCc: stable \u003cstable@kernel.org\u003e\n"
    },
    {
      "commit": "828c09509b9695271bcbdc53e9fc9a6a737148d2",
      "tree": "072ffad6f02db7bf4095e07e2b90247cfa042998",
      "parents": [
        "1c4115e595dec42aa0e81ba47ef46e35b34ed428"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Thu Oct 01 15:43:56 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 01 16:11:11 2009 -0700"
      },
      "message": "const: constify remaining file_operations\n\n[akpm@linux-foundation.org: fix KVM]\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nAcked-by: Mike Frysinger \u003cvapier@gentoo.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3cc811bffdf35ebaf1467fbec71a49b57800fc74",
      "tree": "b00abe8ad3687faeacf9b543492f0b91c7abc600",
      "parents": [
        "1f28fcd925b2b3157411bbd08f0024b55b70d8dd"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Sep 28 13:02:46 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue Sep 29 20:32:13 2009 +0900"
      },
      "message": "nilfs2: fix missing initialization of i_dir_start_lookup member\n\nThe i_dir_start_lookup field in nilfs_inode_info objects should be\ncleared when the objects are allocated, but the the initialization was\nmissing in case of reading from disk.  This adds the initialization.\n\nSince the variable just gives a start page on directory lookups, the\nbug was nonfatal until now.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "1f28fcd925b2b3157411bbd08f0024b55b70d8dd",
      "tree": "339976516f9d8c25f4efb3ba8bbffcc395d58c83",
      "parents": [
        "17d857be649a21ca90008c6dc425d849fa83db5c"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Sep 28 01:46:11 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue Sep 29 20:12:56 2009 +0900"
      },
      "message": "nilfs2: fix missing zero-fill initialization of btree node cache\n\nThis will fix file system corruption which infrequently happens after\nmount.  The problem was reported from users with the title \"[NILFS\nusers] Fail to mount NILFS.\" (Message-ID:\n\u003c200908211918.34720.yuri@itinteg.net\u003e), and so forth.  I\u0027ve also\nexperienced the corruption multiple times on kernel 2.6.30 and 2.6.31.\n\nThe problem turned out to be caused due to discordance between\nmapping-\u003enrpages of a btree node cache and the actual number of pages\nhung on the cache; if the mapping-\u003enrpages becomes zero even as it has\npages, truncate_inode_pages() returns without doing anything.  Usually\nthis is harmless except it may cause page leak, but garbage collection\nfairly infrequently sees a stale page remained in the btree node cache\nof DAT (i.e. disk address translation file of nilfs), and induces the\ncorruption.\n\nI identified a missing initialization in btree node caches was the\nroot cause.  This corrects the bug.\n\nI\u0027ve tested this for kernel 2.6.30 and 2.6.31.\n\nReported-by: Yuri Chislov \u003cyuri@itinteg.net\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nCc: stable \u003cstable@kernel.org\u003e\n"
    },
    {
      "commit": "f0f37e2f77731b3473fa6bd5ee53255d9a9cdb40",
      "tree": "3c26d3ed1a453156e9c208ccb5567a8954dba064",
      "parents": [
        "6f5071020d5ec89b5d095aa488db604adb921aec"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Sun Sep 27 22:29:37 2009 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Sep 27 11:39:25 2009 -0700"
      },
      "message": "const: mark struct vm_struct_operations\n\n* mark struct vm_area_struct::vm_ops as const\n* mark vm_ops in AGP code\n\nBut leave TTM code alone, something is fishy there with global vm_ops\nbeing used.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6e1d5dcc2bbbe71dbf010c747e15739bef6b7218",
      "tree": "2edb0f6cc65acbae95e42df1bc763ec048e6c2e0",
      "parents": [
        "7f09410bbc4306f592cfb43812389ea1c7905a20"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Sep 21 17:01:11 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:24 2009 -0700"
      },
      "message": "const: mark remaining inode_operations as const\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7f09410bbc4306f592cfb43812389ea1c7905a20",
      "tree": "18f179435f70c4ec9231883501062d5ea0357af5",
      "parents": [
        "ac4cfdd6d141c319a7af8655f750ed504c187a74"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Sep 21 17:01:10 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:24 2009 -0700"
      },
      "message": "const: mark remaining address_space_operations const\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ac4cfdd6d141c319a7af8655f750ed504c187a74",
      "tree": "2143509e0d585667203892a5036676e955273e52",
      "parents": [
        "b87221de6a4934eda856475a0065688d12973a04"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Sep 21 17:01:10 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:24 2009 -0700"
      },
      "message": "const: mark remaining export_operations const\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b87221de6a4934eda856475a0065688d12973a04",
      "tree": "6bcf0628e106c4833538f4c23d710fbbe3d7609a",
      "parents": [
        "0d54b217a247f39605361f867fefbb9e099a5432"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Sep 21 17:01:09 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:24 2009 -0700"
      },
      "message": "const: mark remaining super_operations const\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2c96ce9f2084c1e04d02883e622f74a537a63aea",
      "tree": "cad3c6773d2886103b05f7b090b3385d23076a03",
      "parents": [
        "0cb583fd2862f19ea88b02eb307d11c09e51e2f8"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Sep 15 09:43:56 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Sep 16 15:16:18 2009 +0200"
      },
      "message": "fs: remove bdev-\u003ebd_inode_backing_dev_info\n\nIt has been unused since it was introduced in:\n\ncommit 520808bf20e90fdbdb320264ba7dd5cf9d47dcac\nAuthor: Andrew Morton \u003cakpm@osdl.org\u003e\nDate:   Fri May 21 00:46:17 2004 -0700\n\n    [PATCH] block device layer: separate backing_dev_info infrastructure\n\nSo lets just kill it.\n\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "41f4db0f48c72db3a93cc1a0b18368d9a9aca700",
      "tree": "1cf648ef55b9cfa28012268ab6b0b5c3477534f1",
      "parents": [
        "0f3fe33b398abbecfcf9f08c16959d1a9a14a49a"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Aug 08 16:09:46 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Sep 14 18:27:16 2009 +0900"
      },
      "message": "fs/Kconfig: move nilfs2 outside misc filesystems\n\nSome people asked me questions like the following:\n\nOn Wed, 15 Jul 2009 13:11:21 +0200, Leon Woestenberg wrote:\n\u003e just wondering, any reasons why NILFS2 is one of the miscellaneous\n\u003e filesystems and, for example, btrfs, is not in Kconfig?\n\nActually, nilfs is NOT a filesystem came from other operating systems,\nbut a filesystem created purely for Linux.  Nor is it a flash\nfilesystem but that for generic block devices.\n\nSo, this moves nilfs outside the misc category as I responded in LKML\n\"Re: Why does NILFS2 hide under Miscellaneous filesystems?\"\n(Message-Id: \u003c20090716.002526.93465395.ryusuke@osrg.net\u003e).\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "0f3fe33b398abbecfcf9f08c16959d1a9a14a49a",
      "tree": "a60a3e8a3b90b173a58a2ba9d86e1363598bd279",
      "parents": [
        "2e0c2c73923fed27337039ddfd69985e6c4b91fe"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Aug 15 02:29:28 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Sep 14 18:27:16 2009 +0900"
      },
      "message": "nilfs2: convert nilfs_bmap_lookup to an inline function\n\nThe nilfs_bmap_lookup() is now a wrapper function of\nnilfs_bmap_lookup_at_level().\n\nThis moves the nilfs_bmap_lookup() to a header file converting it to\nan inline function and gives an opportunity for optimization.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "2e0c2c73923fed27337039ddfd69985e6c4b91fe",
      "tree": "a6c4a318776f5804f53994acad7254c7404418f0",
      "parents": [
        "bd8169efae8bdd292675c386010f6b35f0771057"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Aug 15 15:34:33 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Sep 14 18:27:16 2009 +0900"
      },
      "message": "nilfs2: allow btree code to directly call dat operations\n\nThe current btree code is written so that btree functions call dat\noperations via wrapper functions in bmap.c when they allocate, free,\nor modify virtual block addresses.\n\nThis abstraction requires additional function calls and causes\nfrequent call of nilfs_bmap_get_dat() function since it is used in the\nevery wrapper function.\n\nThis removes the wrapper functions and makes them available from\nbtree.c and direct.c, which will increase the opportunity of\ncompiler optimization.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "bd8169efae8bdd292675c386010f6b35f0771057",
      "tree": "aea73bd670910874eb78fd1f2c8ce8b2a494dfcb",
      "parents": [
        "7a102b09232be1ad7c180dfd1f46c7aa95dff1e0"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Aug 15 17:22:13 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Sep 14 18:27:15 2009 +0900"
      },
      "message": "nilfs2: add update functions of virtual block address to dat\n\nThis is a preparation for the successive cleanup (\"nilfs2: allow btree\nto directly call dat operations\").\n\nThis adds functions bundling a few operations to change an entry of\nvirtual block address on the dat file.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "7a102b09232be1ad7c180dfd1f46c7aa95dff1e0",
      "tree": "81691c3a48e3108db1a5341c8dcf4531ac404cac",
      "parents": [
        "3218929dbd25245e0f601df1e359a3ed3f7fb03b"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Aug 15 13:47:09 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Sep 14 18:27:15 2009 +0900"
      },
      "message": "nilfs2: remove individual gfp constants for each metadata file\n\nThis gets rid of NILFS_CPFILE_GFP, NILFS_SUFILE_GFP, NILFS_DAT_GFP,\nand NILFS_IFILE_GFP.  All of these constants refer to NILFS_MDT_GFP,\nand can be removed.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "3218929dbd25245e0f601df1e359a3ed3f7fb03b",
      "tree": "4f3f0f21b9f2e6eaa255315c659c1168ad3b5c96",
      "parents": [
        "6d28f7ea43856449ed2f344cb209af3ba1c6b757"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Aug 15 01:54:59 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Sep 14 18:27:15 2009 +0900"
      },
      "message": "nilfs2: stop zero-fill of btree path just before free it\n\nThe btree path object is cleared just before it is freed.\n\nThis will remove the code doing the unnecessary clear operation.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "6d28f7ea43856449ed2f344cb209af3ba1c6b757",
      "tree": "e41a19062d0956f698eb6ec7deccb6d8ebabfced",
      "parents": [
        "9ead98637300dc7caefd904bbe1e092bf4d21f87"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Aug 15 01:14:10 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Sep 14 18:27:15 2009 +0900"
      },
      "message": "nilfs2: remove unused btree argument from btree functions\n\nEven though many btree functions take a btree object as their first\nargument, most of them are not used in their functions.\n\nThis sticky use of the btree argument is hurting code readability and\ngiving the possibility of inefficient code generation.\n\nSo, this removes the unnecessary btree arguments.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "9ead98637300dc7caefd904bbe1e092bf4d21f87",
      "tree": "e90ef82f107ae807cf5b1ef6f8e92afe7c7a8f70",
      "parents": [
        "1cf58fa840472ec7df6bf2312885949ebb308853"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Aug 14 23:39:45 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Sep 14 18:27:15 2009 +0900"
      },
      "message": "nilfs2: remove nilfs_dat_abort_start and nilfs_dat_abort_free\n\nThese functions are not called from any functions.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "1cf58fa840472ec7df6bf2312885949ebb308853",
      "tree": "2743a6ab63331703e6c9abbb714e2bf13744d009",
      "parents": [
        "43be0ec0387a5ccce2e064cb78502e7b2b4dd590"
      ],
      "author": {
        "name": "Jiro SEKIBA",
        "email": "jir@unicus.jp",
        "time": "Thu Sep 03 22:24:17 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Sep 14 18:27:15 2009 +0900"
      },
      "message": "nilfs2: shorten freeze period due to GC in write operation v3\n\nThis is a re-revised patch to shorten freeze period.\nThis version include a fix of the bug Konishi-san mentioned last time.\n\nWhen GC is runnning, GC moves live block to difference segments.\nCopying live blocks into memory is done in a transaction,\nhowever it is not necessarily to be in the transaction.\nThis patch will get the nilfs_ioctl_move_blocks() out from\ntransaction lock and put it before the transaction.\n\nI ran sysbench fileio test against nilfs partition.\nI copied some DVD/CD images and created snapshot to create live blocks\nbefore starting the benchmark.\n\nFollowings are summary of rc8 and rc8 w/ the patch of per-request\nstatistics, which is min/max and avg.  I ran each test three times and\nbellow is average of those numers.\n\nAccording to this benchmark result, average time is slightly degrated.\nHowever, worstcase (max) result is significantly improved.\nThis can address a few seconds write freeze.\n\n- random write per-request performance of rc8\n min   0.843ms\n max 680.406ms\n avg   3.050ms\n- random write per-request performance of rc8 w/ this patch\n min   0.843ms -\u003e 100.00%\n max 380.490ms -\u003e  55.90%\n avg   3.233ms -\u003e 106.00%\n\n- sequential write per-request performance of rc8\n min   0.736ms\n max 774.343ms\n avg   2.883ms\n- sequential write per-request performance of rc8 w/ this patch\n min   0.720ms -\u003e  97.80%\n max  644.280ms-\u003e  83.20%\n avg   3.130ms -\u003e 108.50%\n\n-----8\u003c-----8\u003c-----nilfs_cleanerd.conf-----8\u003c-----8\u003c-----\nprotection_period       150\nselection_policy        timestamp       # timestamp in ascend order\nnsegments_per_clean     2\ncleaning_interval       2\nretry_interval          60\nuse_mmap\nlog_priority            info\n-----8\u003c-----8\u003c-----nilfs_cleanerd.conf-----8\u003c-----8\u003c-----\n\nSigned-off-by: Jiro SEKIBA \u003cjir@unicus.jp\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "43be0ec0387a5ccce2e064cb78502e7b2b4dd590",
      "tree": "e412246fce3f999b46b960ef416f1f10653ca895",
      "parents": [
        "a4f0b9c5b4ae83636dafde8f3a0e04b5e411a0f3"
      ],
      "author": {
        "name": "Zhu Yanhai",
        "email": "zhu.yanhai@gmail.com",
        "time": "Wed Aug 12 14:17:59 2009 +0800"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Sep 14 18:27:14 2009 +0900"
      },
      "message": "nilfs2: add more check routines in mount process\n\nnilfs2: Add more safeguard routines and protections in mount process,\nwhich also makes nilfs2 report consistency error messages when\ncheckpoint number is invalid.\n\nSigned-off-by: Zhu Yanhai \u003czhu.yanhai@gmail.com\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "a4f0b9c5b4ae83636dafde8f3a0e04b5e411a0f3",
      "tree": "885111c7beec6e69680768c7fb1a8b22d53cd175",
      "parents": [
        "c1b353f04a42f1b531be920149b85343d56a6b3b"
      ],
      "author": {
        "name": "Zhang Qiang",
        "email": "zhangqiang.buaa@gmail.com",
        "time": "Sun Aug 09 19:13:10 2009 +0800"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Sep 14 18:27:14 2009 +0900"
      },
      "message": "nilfs2: An unassigned variable is assigned to a never used structure member\n\nnilfs2: In procedure \u0027nilfs_get_sb()\u0027, when a nilfs filesysttem is\nmounted for the first time, local variable \u0027nilfs-\u003ens_last_cno\u0027 is\nused before loading the latest checkpoint number from disk (in\n\u0027nilfs_fill_super\u0027). \u0027nilfs-\u003ens_last_cno\u0027 is assigned to \u0027sd.cno\u0027, but\n\u0027sd.cno\u0027 has never been used in the procedure.\n\nSigned-off-by: Zhang Qiang \u003czhangqiang.buaa@gmail.com\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "c1b353f04a42f1b531be920149b85343d56a6b3b",
      "tree": "40d81fd322b8ed70beba950ab47dbd0b90487936",
      "parents": [
        "1dfa27105a6cf4171c439fd40a004a0a17838115"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Jun 19 15:25:42 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Sep 14 18:27:14 2009 +0900"
      },
      "message": "nilfs2: use GFP_NOIO for bio_alloc instead of GFP_NOWAIT\n\nAlberto Bertogli advised me about bio_alloc() use in nilfs:\nOn Sat, 13 Jun 2009 22:52:40 -0300, Alberto Bertogli wrote:\n\u003e By the way, those bio_alloc()s are using GFP_NOWAIT but it looks\n\u003e like they could use at least GFP_NOIO or GFP_NOFS, since the caller\n\u003e can (and sometimes do) sleep. The only caller is nilfs_submit_bh(),\n\u003e which calls nilfs_submit_seg_bio() which can sleep calling\n\u003e wait_for_completion().\n\nThis takes in the comment and replaces the use of GFP_NOWAIT flag with\nGFP_NOIO.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "1dfa27105a6cf4171c439fd40a004a0a17838115",
      "tree": "7d348398a9e623324ca86eafd050b8c12abf3cea",
      "parents": [
        "79efdd94111f30c373fce05e4e5822d8ff671c2a"
      ],
      "author": {
        "name": "Jiro SEKIBA",
        "email": "jir@unicus.jp",
        "time": "Thu Jul 23 01:33:49 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Sep 14 18:27:14 2009 +0900"
      },
      "message": "nilfs2: stop using periodic write_super callback\n\nThis removes nilfs_write_super and commit super block in nilfs\ninternal thread, instead of periodic write_super callback.\n\nVFS layer calls -\u003ewrite_super callback periodically.  However,\nit looks like that calling back is ommited when disk I/O is busy.\nAnd when cleanerd (nilfs GC) is runnig, disk I/O tend to be busy thus\nnilfs superblock is not synchronized as nilfs designed.\n\nTo avoid it, syncing superblock by nilfs thread instead of pdflush.\n\nSigned-off-by: Jiro SEKIBA \u003cjir@unicus.jp\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "79efdd94111f30c373fce05e4e5822d8ff671c2a",
      "tree": "9d12c0e87146fb4fb63362f567e574d629a222a1",
      "parents": [
        "6233caa9d5b153c2190d6c1c35c1dd1010104fc1"
      ],
      "author": {
        "name": "Jiro SEKIBA",
        "email": "jir@unicus.jp",
        "time": "Thu Jul 23 01:26:34 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Sep 14 18:27:14 2009 +0900"
      },
      "message": "nilfs2: clean up nilfs_write_super\n\nSeparate conditions that check if syncing super block and alternative\nsuper block are required as inline functions to reuse the conditions.\n\nSigned-off-by: Jiro SEKIBA \u003cjir@unicus.jp\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "6233caa9d5b153c2190d6c1c35c1dd1010104fc1",
      "tree": "885fdeacf10bbbecebf94fc274bfd84ff28066f6",
      "parents": [
        "ec5d66abdb0caf8b753a138568f20770a3d64c8c"
      ],
      "author": {
        "name": "Jiro SEKIBA",
        "email": "jir@unicus.jp",
        "time": "Thu Jul 23 01:26:33 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Sep 14 18:27:14 2009 +0900"
      },
      "message": "nilfs2: fix disorder of nilfs_write_super in nilfs_sync_fs\n\nThis fixes disorder of nilfs_write_super in nilfs_sync_fs.  Commiting\nsuper block must be the end of the function so that every changes are\nreflected.\n\n-\u003esync_fs() is not called frequently so this makes nilfs_sync_fs call\nnilfs_commit_super instead of nilfs_write_super.\n\nSigned-off-by: Jiro SEKIBA \u003cjir@unicus.jp\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "ec5d66abdb0caf8b753a138568f20770a3d64c8c",
      "tree": "238dab276eab98a6aa0f560812e62adde759143a",
      "parents": [
        "b58a285ba40866e22e5876969a8f796a74311d9e"
      ],
      "author": {
        "name": "Jiro SEKIBA",
        "email": "jir@unicus.jp",
        "time": "Fri Jul 10 19:57:28 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Sep 14 18:27:13 2009 +0900"
      },
      "message": "nilfs2: remove redundant super block commit\n\nThis removes redundant super block commit.\n\nnilfs_write_super will call nilfs_commit_super to store super block\ninto block device.  However, nilfs_put_super will call\nnilfs_commit_super right after calling nilfs_write_super.  So calling\nnilfs_write_super in nilfs_put_super would be redundant.\n\nSigned-off-by: Jiro SEKIBA \u003cjir@unicus.jp\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "b58a285ba40866e22e5876969a8f796a74311d9e",
      "tree": "9a667fdb99c0429c1871da626cb7589dec54adb7",
      "parents": [
        "143511046765504d2d1be633efd710f8d84e0407"
      ],
      "author": {
        "name": "Jiro SEKIBA",
        "email": "jir@unicus.jp",
        "time": "Wed Jun 24 20:06:34 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Sep 14 18:27:13 2009 +0900"
      },
      "message": "nilfs2: implement nilfs_show_options to display mount options in /proc/mounts\n\nThis is a patch to display mount options in procfs.\nMount options will show up in the /proc/mounts as other fs does.\n\n...\n/dev/sda6 /mnt nilfs2 ro,relatime,barrier\u003doff,cp\u003d3,order\u003dstrict 0 0\n...\n\nSigned-off-by: Jiro SEKIBA \u003cjir@unicus.jp\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "143511046765504d2d1be633efd710f8d84e0407",
      "tree": "bd9b8570880cfda44a9fad7a2567b977ab53f631",
      "parents": [
        "027d6404eb4327878454db72a006adfcb8001bb8"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Sep 06 17:49:49 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Sep 14 18:27:13 2009 +0900"
      },
      "message": "nilfs2: always lookup disk block address before reading metadata block\n\nThe current metadata file code skips disk address lookup for its data\nblock if the buffer has a mapped flag.\n\nThis has a potential risk to cause read request to be performed\nagainst the stale block address that GC moved, and it may lead to meta\ndata corruption.  The mapped flag is safe if the buffer has an\nuptodate flag, otherwise it may prevent necessary update of disk\naddress in the next read.\n\nThis will avoid the potential problem by ensuring disk address lookup\nbefore reading metadata block even for buffers with the mapped flag.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "027d6404eb4327878454db72a006adfcb8001bb8",
      "tree": "671c0d84ee5fd19ef85a3ff15d99a3519c1ed8bf",
      "parents": [
        "b5696e5e0dbfb6323277d51d67d230317c18aba9"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Aug 02 22:45:33 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Sep 14 18:27:13 2009 +0900"
      },
      "message": "nilfs2: use semaphore to protect pointer to a writable FS-instance\n\nwill get rid of nilfs_get_writer() and nilfs_put_writer() pair used to\nretain a writable FS-instance for a period.\n\nThe pair functions were making up some kind of recursive lock with a\nmutex, but they became overkill since the commit\n201913ed746c7724a40d33ee5a0b6a1fd2ef3193.  Furthermore, they caused\nthe following lockdep warning because the mutex can be released by a\ntask which didn\u0027t lock it:\n\n \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n [ BUG: bad unlock balance detected! ]\n -------------------------------------\n kswapd0/422 is trying to release lock (\u0026nilfs-\u003ens_writer_mutex) at:\n [\u003cc1359ff5\u003e] mutex_unlock+0x8/0xa\n but there are no more locks to release!\n\n other info that might help us debug this:\n no locks held by kswapd0/422.\n\n stack backtrace:\n Pid: 422, comm: kswapd0 Not tainted 2.6.31-rc4-nilfs #51\n Call Trace:\n  [\u003cc1358f97\u003e] ? printk+0xf/0x18\n  [\u003cc104fea7\u003e] print_unlock_inbalance_bug+0xcc/0xd7\n  [\u003cc11578de\u003e] ? prop_put_global+0x3/0x35\n  [\u003cc1050195\u003e] lock_release+0xed/0x1dc\n  [\u003cc1359ff5\u003e] ? mutex_unlock+0x8/0xa\n  [\u003cc1359f83\u003e] __mutex_unlock_slowpath+0xaf/0x119\n  [\u003cc1359ff5\u003e] mutex_unlock+0x8/0xa\n  [\u003cd1284add\u003e] nilfs_mdt_write_page+0xd8/0xe1 [nilfs2]\n  [\u003cc1092653\u003e] shrink_page_list+0x379/0x68d\n  [\u003cc109171b\u003e] ? isolate_pages_global+0xb4/0x18c\n  [\u003cc1092bd2\u003e] shrink_list+0x26b/0x54b\n  [\u003cc10930be\u003e] shrink_zone+0x20c/0x2a2\n  [\u003cc10936b7\u003e] kswapd+0x407/0x591\n  [\u003cc1091667\u003e] ? isolate_pages_global+0x0/0x18c\n  [\u003cc1040603\u003e] ? autoremove_wake_function+0x0/0x33\n  [\u003cc10932b0\u003e] ? kswapd+0x0/0x591\n  [\u003cc104033b\u003e] kthread+0x69/0x6e\n  [\u003cc10402d2\u003e] ? kthread+0x0/0x6e\n  [\u003cc1003e33\u003e] kernel_thread_helper+0x7/0x1a\n\nThis patch uses a reader/writer semaphore instead of the own lock and\nkills this warning.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "b5696e5e0dbfb6323277d51d67d230317c18aba9",
      "tree": "e4ee23f43dad9da26ee470b54ef1afcc41971ddc",
      "parents": [
        "1b2f5a641bca91966fd91dc489238068a0ab4b69"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Thu Sep 03 17:42:48 2009 +0200"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Sep 14 18:27:13 2009 +0900"
      },
      "message": "nilfs2: fix format string compile warning (ino_t)\n\nUnlike on most other architectures ino_t is an unsigned int on s390.\nSo add an explicit cast to avoid this compile warning:\n\nfs/nilfs2/recovery.c: In function \u0027recover_dsync_blocks\u0027:\nfs/nilfs2/recovery.c:555: warning: format \u0027%lu\u0027 expects type \u0027long unsigned int\u0027, but argument 3 has type \u0027ino_t\u0027\n\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "1b2f5a641bca91966fd91dc489238068a0ab4b69",
      "tree": "85ab9020e9628d43ffabc6ab354efcf6ea1ef3d2",
      "parents": [
        "74fca6a42863ffacaf7ba6f1936a9f228950f657"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Aug 22 19:10:07 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Sep 14 18:27:12 2009 +0900"
      },
      "message": "nilfs2: fix ignored error code in __nilfs_read_inode()\n\nThe __nilfs_read_inode function is ignoring the error code returned\nfrom nilfs_read_inode_common(), and wrongly delivers a success code\n(zero) when it escapes from the function in erroneous cases.\n\nThis adds the missing error handling.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "b1f1b8ce0a1d71cbc72f7540134d52b79bd8f5ac",
      "tree": "34261c597d93a43d9adf299e657b4fd5eebd43b7",
      "parents": [
        "326ba5010a5429a5a528b268b36a5900d4ab0eba"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Aug 30 04:21:41 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Aug 31 12:03:06 2009 +0900"
      },
      "message": "nilfs2: fix preempt count underflow in nilfs_btnode_prepare_change_key\n\nThis will fix the following preempt count underflow reported from\nusers with the title \"[NILFS users] segctord problem\" (Message-ID:\n\u003c949415.6494.qm@web58808.mail.re1.yahoo.com\u003e and Message-ID:\n\u003cdebc30fc0908270825v747c1734xa59126623cfd5b05@mail.gmail.com\u003e):\n\n WARNING: at kernel/sched.c:4890 sub_preempt_count+0x95/0xa0()\n Hardware name: HP Compaq 6530b (KR980UT#ABC)\n Modules linked in: bridge stp llc bnep rfcomm l2cap xfs exportfs nilfs2 cowloop loop vboxnetadp vboxnetflt vboxdrv btusb bluetooth uvcvideo videodev v4l1_compat v4l2_compat_ioctl32 arc4 snd_hda_codec_analog ecb iwlagn iwlcore rfkill lib80211 mac80211 snd_hda_intel snd_hda_codec ehci_hcd uhci_hcd usbcore snd_hwdep snd_pcm tg3 cfg80211 psmouse snd_timer joydev libphy ohci1394 snd_page_alloc hp_accel lis3lv02d ieee1394 led_class i915 drm i2c_algo_bit video backlight output i2c_core dm_crypt dm_mod\n Pid: 4197, comm: segctord Not tainted 2.6.30-gentoo-r4-64 #7\n Call Trace:\n  [\u003cffffffff8023fa05\u003e] ? sub_preempt_count+0x95/0xa0\n  [\u003cffffffff802470f8\u003e] warn_slowpath_common+0x78/0xd0\n  [\u003cffffffff8024715f\u003e] warn_slowpath_null+0xf/0x20\n  [\u003cffffffff8023fa05\u003e] sub_preempt_count+0x95/0xa0\n  [\u003cffffffffa04ce4db\u003e] nilfs_btnode_prepare_change_key+0x11b/0x190 [nilfs2]\n  [\u003cffffffffa04d01ad\u003e] nilfs_btree_assign_p+0x19d/0x1e0 [nilfs2]\n  [\u003cffffffffa04d10ad\u003e] nilfs_btree_assign+0xbd/0x130 [nilfs2]\n  [\u003cffffffffa04cead7\u003e] nilfs_bmap_assign+0x47/0x70 [nilfs2]\n  [\u003cffffffffa04d9bc6\u003e] nilfs_segctor_do_construct+0x956/0x20f0 [nilfs2]\n  [\u003cffffffff805ac8e2\u003e] ? _spin_unlock_irqrestore+0x12/0x40\n  [\u003cffffffff803c06e0\u003e] ? __up_write+0xe0/0x150\n  [\u003cffffffff80262959\u003e] ? up_write+0x9/0x10\n  [\u003cffffffffa04ce9f3\u003e] ? nilfs_bmap_test_and_clear_dirty+0x43/0x60 [nilfs2]\n  [\u003cffffffffa04cd627\u003e] ? nilfs_mdt_fetch_dirty+0x27/0x60 [nilfs2]\n  [\u003cffffffffa04db5fc\u003e] nilfs_segctor_construct+0x8c/0xd0 [nilfs2]\n  [\u003cffffffffa04dc3dc\u003e] nilfs_segctor_thread+0x15c/0x3a0 [nilfs2]\n  [\u003cffffffffa04dbe20\u003e] ? nilfs_construction_timeout+0x0/0x10 [nilfs2]\n  [\u003cffffffff80252633\u003e] ? add_timer+0x13/0x20\n  [\u003cffffffff802370da\u003e] ? __wake_up_common+0x5a/0x90\n  [\u003cffffffff8025e960\u003e] ? autoremove_wake_function+0x0/0x40\n  [\u003cffffffffa04dc280\u003e] ? nilfs_segctor_thread+0x0/0x3a0 [nilfs2]\n  [\u003cffffffffa04dc280\u003e] ? nilfs_segctor_thread+0x0/0x3a0 [nilfs2]\n  [\u003cffffffff8025e556\u003e] kthread+0x56/0x90\n  [\u003cffffffff8020cdea\u003e] child_rip+0xa/0x20\n  [\u003cffffffff8025e500\u003e] ? kthread+0x0/0x90\n  [\u003cffffffff8020cde0\u003e] ? child_rip+0x0/0x20\n\nThis problem was caused due to a missing radix_tree_preload() call in\nthe retry path of nilfs_btnode_prepare_change_key() function.\n\nReported-by: Eric A \u003ceric225125@yahoo.com\u003e\nReported-by: Jerome Poulin \u003cjeromepoulin@gmail.com\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nTested-by: Jerome Poulin \u003cjeromepoulin@gmail.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "a924586036833086b262a371b09d1266c23bb4d1",
      "tree": "d8fb67221f6614c00e9a645eb98e79f015ec81f2",
      "parents": [
        "1154ecbd2f8298ef75609f5f8ed5aca96be599fb"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Aug 19 00:29:43 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Aug 19 02:10:13 2009 +0900"
      },
      "message": "nilfs2: fix oopses with doubly mounted snapshots\n\nwill fix kernel oopses like the following:\n\n # mount -t nilfs2 -r -o cp\u003d20 /dev/sdb1 /test1\n # mount -t nilfs2 -r -o cp\u003d20 /dev/sdb1 /test2\n # umount /test1\n # umount /test2\n\nBUG: sleeping function called from invalid context at arch/x86/mm/fault.c:1069\nin_atomic(): 0, irqs_disabled(): 1, pid: 3886, name: umount.nilfs2\n1 lock held by umount.nilfs2/3886:\n #0:  (\u0026type-\u003es_umount_key#31){+.+...}, at: [\u003cc10b398a\u003e] deactivate_super+0x52/0x6c\nirq event stamp: 1219\nhardirqs last  enabled at (1219): [\u003cc135c774\u003e] __mutex_unlock_slowpath+0xf8/0x119\nhardirqs last disabled at (1218): [\u003cc135c6d5\u003e] __mutex_unlock_slowpath+0x59/0x119\nsoftirqs last  enabled at (1214): [\u003cc1033316\u003e] __do_softirq+0x1a5/0x1ad\nsoftirqs last disabled at (1205): [\u003cc1033354\u003e] do_softirq+0x36/0x5a\nPid: 3886, comm: umount.nilfs2 Not tainted 2.6.31-rc6 #55\nCall Trace:\n [\u003cc1023549\u003e] __might_sleep+0x107/0x10e\n [\u003cc13603c0\u003e] do_page_fault+0x246/0x397\n [\u003cc136017a\u003e] ? do_page_fault+0x0/0x397\n [\u003cc135e753\u003e] error_code+0x6b/0x70\n [\u003cc136017a\u003e] ? do_page_fault+0x0/0x397\n [\u003cc104f805\u003e] ? __lock_acquire+0x91/0x12fd\n [\u003cc1050a62\u003e] ? __lock_acquire+0x12ee/0x12fd\n [\u003cc1050a62\u003e] ? __lock_acquire+0x12ee/0x12fd\n [\u003cc1050b2b\u003e] lock_acquire+0xba/0xdd\n [\u003cd0d17d3f\u003e] ? nilfs_detach_segment_constructor+0x2f/0x2fa [nilfs2]\n [\u003cc135d4fe\u003e] down_write+0x2a/0x46\n [\u003cd0d17d3f\u003e] ? nilfs_detach_segment_constructor+0x2f/0x2fa [nilfs2]\n [\u003cd0d17d3f\u003e] nilfs_detach_segment_constructor+0x2f/0x2fa [nilfs2]\n [\u003cc104ea2c\u003e] ? mark_held_locks+0x43/0x5b\n [\u003cc104ecb1\u003e] ? trace_hardirqs_on_caller+0x10b/0x133\n [\u003cc104ece4\u003e] ? trace_hardirqs_on+0xb/0xd\n [\u003cd0d09ac1\u003e] nilfs_put_super+0x2f/0xca [nilfs2]\n [\u003cc10b3352\u003e] generic_shutdown_super+0x49/0xb8\n [\u003cc10b33de\u003e] kill_block_super+0x1d/0x31\n [\u003cc10e6599\u003e] ? vfs_quota_off+0x0/0x12\n [\u003cc10b398f\u003e] deactivate_super+0x57/0x6c\n [\u003cc10c4bc3\u003e] mntput_no_expire+0x8c/0xb4\n [\u003cc10c5094\u003e] sys_umount+0x27f/0x2a4\n [\u003cc10c50c6\u003e] sys_oldumount+0xd/0xf\n [\u003cc10031a4\u003e] sysenter_do_call+0x12/0x38\n ...\n\nThis turns out to be a bug brought by an -rc1 patch (\"nilfs2: simplify\nremaining sget() use\").\n\nIn the patch, a new \"put resource\" function, nilfs_put_sbinfo()\nwas introduced to delay freeing nilfs_sb_info struct.\n\nBut the nilfs_put_sbinfo() mistakenly used atomic_dec_and_test()\nfunction to check the reference count, and it caused the nilfs_sb_info\nwas freed when user mounted a snapshot twice.\n\nThis bug also suggests there was unseen memory leak in usual mount\n/umount operations for nilfs.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "1154ecbd2f8298ef75609f5f8ed5aca96be599fb",
      "tree": "a6801fc442fecf4c0b2a1dc1d7a5350910983041",
      "parents": [
        "64f1607ffbbc772685733ea63e6f7f4183df1b16"
      ],
      "author": {
        "name": "Zhang Qiang",
        "email": "zhangqiang.buaa@gmail.com",
        "time": "Tue Aug 18 14:58:24 2009 +0800"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue Aug 18 17:32:27 2009 +0900"
      },
      "message": "nilfs2: missing a read lock for segment writer in nilfs_attach_checkpoint()\n\n\u0027ns_cno\u0027 of structure \u0027the_nilfs\u0027 must be protected from segment\nwriter, in other words, the caller of nilfs_get_checkpoint should hold\nread lock for nilfs-\u003ens_segctor_sem.  This patch adds the lock/unlock\noperations in nilfs_attach_checkpoint() when calling\nnilfs_cpfile_get_checkpoint().\n\nSigned-off-by: Zhang Qiang \u003czhangqiang.buaa@gmail.com\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "01a261e09a21e0ba342d3907a79cf5c78ee3f37a",
      "tree": "e26e8008ce2de35afe2703529d771268a256329f",
      "parents": [
        "a97778457f22181e8c38c4cd7d7e528378738a98"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Aug 02 17:45:55 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Aug 02 22:24:15 2009 +0900"
      },
      "message": "nilfs2: fix missing unlock in error path of nilfs_mdt_write_page\n\nThis adds a missing unlock of nilfs-\u003ens_writer_mutex in\nnilfs_mdt_write_page() function.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "a97778457f22181e8c38c4cd7d7e528378738a98",
      "tree": "d2ee3d9491ab2b17551f099d9a6119407700dbd2",
      "parents": [
        "ed680c4ad478d0fee9740f7d029087f181346564"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue Jul 28 17:55:29 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Aug 01 22:48:32 2009 +0900"
      },
      "message": "nilfs2: fix oops due to inconsistent state in page with discrete b-tree nodes\n\nAndrea Gelmini gave me a report that a kernel oops hit on a nilfs\nfilesystem with a 1KB block size when doing rsync.\n\nThis turned out to be caused by an inconsistency of dirty state\nbetween a page and its buffers storing b-tree node blocks.\n\nIf the page had multiple buffers split over multiple logs, and if the\nlogs were written at a time, a dirty flag remained in the page even\nevery dirty flag in the buffers was cleared.\n\nThis will fix the failure by dropping the dirty flag properly for\npages with the discrete multiple b-tree nodes.\n\nReported-by: Andrea Gelmini \u003candrea.gelmini@gmail.com\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nTested-by: Andrea Gelmini \u003candrea.gelmini@gmail.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "4fed598a49c014cbc563179b25f2a4b8565e2a50",
      "tree": "09b123e897220cf2324c43928c1e1efc08abb754",
      "parents": [
        "6847e154e3cd74fca6084124c097980a7634285a"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Jul 12 11:13:55 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue Jul 14 12:34:17 2009 +0900"
      },
      "message": "fs/Kconfig: move nilfs2 out\n\nfs/Kconfig file was split into individual fs/*/Kconfig files before\nnilfs was merged.  I\u0027ve found the current config entry of nilfs is\ntainting the work.  Sorry, I didn\u0027t notice.  This fixes the violation.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\n"
    },
    {
      "commit": "405f55712dfe464b3240d7816cc4fe4174831be2",
      "tree": "96c425ea7fa8b31058b8f83a433c5e5265c8ebc7",
      "parents": [
        "f9fabcb58a6d26d6efde842d1703ac7cfa9427b6"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Sat Jul 11 22:08:37 2009 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jul 12 12:22:34 2009 -0700"
      },
      "message": "headers: smp_lock.h redux\n\n* Remove smp_lock.h from files which don\u0027t need it (including some headers!)\n* Add smp_lock.h to files which do need it\n* Make smp_lock.h include conditional in hardirq.h\n  It\u0027s needed only for one kernel_locked() usage which is under CONFIG_PREEMPT\n\n  This will make hardirq.h inclusion cheaper for every PREEMPT\u003dn config\n  (which includes allmodconfig/allyesconfig, BTW)\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d9a0a345ab7a58a30ec38e5bb7401a28714914d2",
      "tree": "a4f6943de6fa3c2088623e56587fef4bfb7ad66b",
      "parents": [
        "ff54de363afa4583e2a6249f25fe21dfaeb11ea2"
      ],
      "author": {
        "name": "Jiro SEKIBA",
        "email": "jir@unicus.jp",
        "time": "Sat Jul 04 23:00:53 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Jul 05 10:44:20 2009 +0900"
      },
      "message": "nilfs2: fix disorder in cp count on error during deleting checkpoints\n\nThis fixes a bug that checkpoint count gets wrong on errors when\ndeleting a series of checkpoints.\n\nThe count error is persistent since the checkpoint count is stored on\ndisk.  Some userland programs refer to the count via ioctl, and this\nbugfix is needed to prevent malfunction of such programs.\n\nSigned-off-by: Jiro SEKIBA \u003cjir@unicus.jp\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "ff54de363afa4583e2a6249f25fe21dfaeb11ea2",
      "tree": "67a1553ca7f75d57678abc969a4361139b2335b2",
      "parents": [
        "4a52df779700080de4afb0436d9dd9188514a69b"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Jun 19 02:53:56 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Jul 05 10:44:20 2009 +0900"
      },
      "message": "nilfs2: fix lockdep warning between regular file and inode file\n\nThis will fix the following false positive of recursive locking which\nlockdep has detected:\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n[ INFO: possible recursive locking detected ]\n2.6.30-nilfs #42\n---------------------------------------------\nnilfs_cleanerd/10607 is trying to acquire lock:\n (\u0026bmap-\u003eb_sem){++++-.}, at: [\u003ce0d025b7\u003e] nilfs_bmap_lookup_at_level+0x1a/0x74 [nilfs2]\n\nbut task is already holding lock:\n (\u0026bmap-\u003eb_sem){++++-.}, at: [\u003ce0d024e0\u003e] nilfs_bmap_truncate+0x19/0x6a [nilfs2]\nother info that might help us debug this:\n2 locks held by nilfs_cleanerd/10607:\n #0:  (\u0026nilfs-\u003ens_segctor_sem){++++.+}, at: [\u003ce0d0d75a\u003e] nilfs_transaction_begin+0xb6/0x10c [nilfs2]\n #1:  (\u0026bmap-\u003eb_sem){++++-.}, at: [\u003ce0d024e0\u003e] nilfs_bmap_truncate+0x19/0x6a [nilfs2]\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "4a52df779700080de4afb0436d9dd9188514a69b",
      "tree": "4398267fee987598219433e348a2b4697e2d3f01",
      "parents": [
        "8227b29722fdbac72357aae155d171a5c777670c"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Thu Jun 18 23:53:25 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Jul 05 10:44:20 2009 +0900"
      },
      "message": "nilfs2: fix incorrect KERN_CRIT messages in case of write failures\n\nIn case of write-failure retries, the following KERN_CRIT level\nmessages are mistakenly output by nilfs_dat_commit_start() function:\n\nnilfs_dat_commit_start: vbn \u003d 408463, start \u003d 12506, end \u003d 18446744073709551615, pbn \u003d 530210\nnilfs_dat_commit_start: vbn \u003d 408515, start \u003d 12506, end \u003d 18446744073709551615, pbn \u003d 530211\nnilfs_dat_commit_start: vbn \u003d 408464, start \u003d 12506, end \u003d 18446744073709551615, pbn \u003d 530212\n...\n\nThis suppresses these messages.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "8227b29722fdbac72357aae155d171a5c777670c",
      "tree": "d44631f3aac26da4cdcd2abd8b0f1d8661fc59b5",
      "parents": [
        "0cfae3d8795f388f9de78adb0171520d19da77e9"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Thu Jun 18 23:52:23 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Jul 05 10:44:20 2009 +0900"
      },
      "message": "nilfs2: fix hang problem of log writer which occurs after write failures\n\nLeandro Lucarella gave me a report that nilfs gets stuck after its\nwrite function fails.\n\nThe problem turned out to be caused by bugs which leave writeback flag\non pages.  This fixes the problem by ensuring to clear the writeback\nflag in error path.\n\nReported-by: Leandro Lucarella \u003cllucax@gmail.com\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "0cfae3d8795f388f9de78adb0171520d19da77e9",
      "tree": "4f4e447edc025cb1f96ac27da030b8b36164865b",
      "parents": [
        "8e4a718ff38d8539938ec3421935904c27e00c39"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Thu Jun 18 11:42:53 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Jul 05 10:44:19 2009 +0900"
      },
      "message": "nilfs2: remove unlikely directive causing mis-conversion of error code\n\nThe following error code handling in nilfs_segctor_write() function\nwrongly converted negative error codes to a truth value (i.e. 1):\n\n   err \u003d unlikely(err) ? : res;\n\nwhich originaly meant to be\n\n   err \u003d err ? : res;\n\nThis mis-conversion caused that write or sync functions receive the\nunexpected error code.  This fixes the bug by removing the unlikely\ndirective.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "d441b1c293149212045de00f346c8ea6cd41cce4",
      "tree": "cbc7aa520feeabaa90ff4b8ff83e6e8fade216c7",
      "parents": [
        "5affd88a104af43f0063a12ad1ee4c7a587945dc"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 08 19:56:34 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jun 24 08:17:05 2009 -0400"
      },
      "message": "switch nilfs2 to inode-\u003ei_acl\n\nActually, get rid of private analog, since nothing in there is\nusing ACLs at all so far.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "9c7cb99a8202452d3e0440a5505c5c6d262771d9",
      "tree": "56d2fe83150f7bea3446b28bfa3094066c5f26b5",
      "parents": [
        "0a8eba9b7f7aa3ad0305627c99ad4d6deedd871d",
        "c3a7abf06ce719a51139e62a034590be99abbc2c"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 15 09:13:49 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 15 09:13:49 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ryusuke/nilfs2\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ryusuke/nilfs2: (22 commits)\n  nilfs2: support contiguous lookup of blocks\n  nilfs2: add sync_page method to page caches of meta data\n  nilfs2: use device\u0027s backing_dev_info for btree node caches\n  nilfs2: return EBUSY against delete request on snapshot\n  nilfs2: modify list of unsupported features in caveats\n  nilfs2: enable sync_page method\n  nilfs2: set bio unplug flag for the last bio in segment\n  nilfs2: allow future expansion of metadata read out via get info ioctl\n  NILFS2: Pagecache usage optimization on NILFS2\n  nilfs2: remove nilfs_btree_operations from btree mapping\n  nilfs2: remove nilfs_direct_operations from direct mapping\n  nilfs2: remove bmap pointer operations\n  nilfs2: remove useless b_low and b_high fields from nilfs_bmap struct\n  nilfs2: remove pointless NULL check of bpop_commit_alloc_ptr function\n  nilfs2: move get block functions in bmap.c into btree codes\n  nilfs2: remove nilfs_bmap_delete_block\n  nilfs2: remove nilfs_bmap_put_block\n  nilfs2: remove header file for segment list operations\n  nilfs2: eliminate removal list of segments\n  nilfs2: add sufile function that can modify multiple segment usages\n  ...\n"
    }
  ],
  "next": "aa7dfb8954ccf49e026ba13d12991a4eb7defb96"
}
