)]}'
{
  "log": [
    {
      "commit": "62013ab5d5df297a01ae5863b5c26d758ec0af7f",
      "tree": "61b8e9b9b0d8e57c0de0f4c87f23a671282bc862",
      "parents": [
        "59a3759d0fe8d969888c741bb33f4946e4d3750d"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat May 30 21:50:58 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat May 30 22:07:50 2009 +0900"
      },
      "message": "nilfs2: fix bh leak in nilfs_cpfile_delete_checkpoints function\n\nThe nilfs_cpfile_delete_checkpoints() wrongly skips brelse() for the\nheader block of checkpoint file in case of errors.  This fixes the\nleak bug.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "d5046853634a8d73f28bad3cf68d182c4a99035d",
      "tree": "c294fce63b57763df341ab31189cd3c89529d879",
      "parents": [
        "1406de8e11eb043681297adf86d6892ff8efc27a"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri May 22 20:36:21 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri May 22 20:49:04 2009 +0900"
      },
      "message": "nilfs2: fix memory leak in nilfs_ioctl_clean_segments\n\nThis fixes a new memory leak problem in garbage collection.  The\nproblem was brought by the bugfix patch (\"nilfs2: fix lock order\nreversal in nilfs_clean_segments ioctl\").\n\nThanks to Kentaro Suzuki for finding this problem.\n\nReported-by: Kentaro Suzuki \u003ck_suzuki@ms.sylc.co.jp\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "83aca8f480fcd2d9748301a5d060cf947dc75b94",
      "tree": "008c96d1017b835e3d54344c0a2c77d780086979",
      "parents": [
        "4f6b828837b4e3836f2c9ac2f0eab9773b6c1327"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon May 11 23:24:47 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue May 12 01:48:54 2009 +0900"
      },
      "message": "nilfs2: check size of array structured data exchanged via ioctls\n\nAlthough some ioctls of nilfs2 exchange data in the form of indirectly\nreferenced array, some of them lack size check on the array elements.\n\nThis inserts the missing checks and rejects requests if data of ioctl\ndoes not have a valid format.\n\nWe usually don\u0027t have to check size of structures that we associated\nwith ioctl commands because the size is tested implicitly for\nidentifying ioctl command; the checks this patch adds are for the\ncases where the implicit check is not applied.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "4f6b828837b4e3836f2c9ac2f0eab9773b6c1327",
      "tree": "9baa69b0ef44a0c604be831300fd5215c0355be0",
      "parents": [
        "47eb6b9c8fa963c9f49967ad1d9d7ec947d15b68"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun May 10 22:41:43 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon May 11 14:54:41 2009 +0900"
      },
      "message": "nilfs2: fix lock order reversal in nilfs_clean_segments ioctl\n\nThis is a companion patch to (\"nilfs2: fix possible circular locking\nfor get information ioctls\").\n\nThis corrects lock order reversal between mm-\u003emmap_sem and\nnilfs-\u003ens_segctor_sem in nilfs_clean_segments() which was detected by\nlockdep check:\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 ]\n 2.6.30-rc3-nilfs-00003-g360bdc1 #7\n -------------------------------------------------------\n mmap/5294 is trying to acquire lock:\n  (\u0026nilfs-\u003ens_segctor_sem){++++.+}, at: [\u003cd0d0e846\u003e] nilfs_transaction_begin+0xb6/0x10c [nilfs2]\n\n but task is already holding lock:\n  (\u0026mm-\u003emmap_sem){++++++}, at: [\u003cc043700a\u003e] do_page_fault+0x1d8/0x30a\n\n which lock already depends on the new lock.\n\n the existing dependency chain (in reverse order) is:\n\n -\u003e #1 (\u0026mm-\u003emmap_sem){++++++}:\n        [\u003cc01470a5\u003e] __lock_acquire+0x1066/0x13b0\n        [\u003cc01474a9\u003e] lock_acquire+0xba/0xdd\n        [\u003cc01836bc\u003e] might_fault+0x68/0x88\n        [\u003cc023c61d\u003e] copy_from_user+0x2a/0x111\n        [\u003cd0d120d0\u003e] nilfs_ioctl_prepare_clean_segments+0x1d/0xf1 [nilfs2]\n        [\u003cd0d0e2aa\u003e] nilfs_clean_segments+0x6d/0x1b9 [nilfs2]\n        [\u003cd0d11f68\u003e] nilfs_ioctl+0x2ad/0x318 [nilfs2]\n        [\u003cc01a3be7\u003e] vfs_ioctl+0x22/0x69\n        [\u003cc01a408e\u003e] do_vfs_ioctl+0x460/0x499\n        [\u003cc01a4107\u003e] sys_ioctl+0x40/0x5a\n        [\u003cc01031a4\u003e] sysenter_do_call+0x12/0x38\n        [\u003cffffffff\u003e] 0xffffffff\n\n -\u003e #0 (\u0026nilfs-\u003ens_segctor_sem){++++.+}:\n        [\u003cc0146e0b\u003e] __lock_acquire+0xdcc/0x13b0\n        [\u003cc01474a9\u003e] lock_acquire+0xba/0xdd\n        [\u003cc0433f1d\u003e] down_read+0x2a/0x3e\n        [\u003cd0d0e846\u003e] nilfs_transaction_begin+0xb6/0x10c [nilfs2]\n        [\u003cd0cfe0e5\u003e] nilfs_page_mkwrite+0xe7/0x154 [nilfs2]\n        [\u003cc0183b0b\u003e] __do_fault+0x165/0x376\n        [\u003cc01855cd\u003e] handle_mm_fault+0x287/0x5d1\n        [\u003cc043712d\u003e] do_page_fault+0x2fb/0x30a\n        [\u003cc0435462\u003e] error_code+0x72/0x78\n        [\u003cffffffff\u003e] 0xffffffff\n\nwhere nilfs_clean_segments() holds:\n\n  nilfs-\u003ens_segctor_sem -\u003e copy_from_user()\n                             --\u003e page fault -\u003e mm-\u003emmap_sem\n\nAnd, page fault path may hold:\n\n  page fault -\u003e mm-\u003emmap_sem\n         --\u003e nilfs_page_mkwrite() -\u003e nilfs-\u003ens_segctor_sem\n\nEven though nilfs_clean_segments() does not perform write access on\ngiven user pages, it may cause deadlock because nilfs-\u003ens_segctor_sem\nis shared per device and mm-\u003emmap_sem can be shared with other tasks.\n\nTo avoid this problem, this patch moves all calls of copy_from_user()\noutside the nilfs-\u003ens_segctor_sem lock in the ioctl.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "47eb6b9c8fa963c9f49967ad1d9d7ec947d15b68",
      "tree": "f69916e4135bd4550b11a8faa631eacd78fddded",
      "parents": [
        "843382370ec614768ac13582405f93635cf3637c"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Thu Apr 30 02:21:00 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon May 11 12:57:46 2009 +0900"
      },
      "message": "nilfs2: fix possible circular locking for get information ioctls\n\nThis is one of two patches which are to correct possible circular\nlocking between mm-\u003emmap_sem and nilfs-\u003ens_segctor_sem.\n\nThe problem was detected by lockdep check as follows:\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 ]\n 2.6.30-rc3-nilfs-00002-g3552613 #6\n -------------------------------------------------------\n mmap/5418 is trying to acquire lock:\n (\u0026nilfs-\u003ens_segctor_sem){++++.+}, at: [\u003cd0d0e852\u003e] nilfs_transaction_begin+0xb6/0x10c [nilfs2]\n\n but task is already holding lock:\n (\u0026mm-\u003emmap_sem){++++++}, at: [\u003cc043700a\u003e] do_page_fault+0x1d8/0x30a\n\n which lock already depends on the new lock.\n\n the existing dependency chain (in reverse order) is:\n\n -\u003e #1 (\u0026mm-\u003emmap_sem){++++++}:\n [\u003cc01470a5\u003e] __lock_acquire+0x1066/0x13b0\n [\u003cc01474a9\u003e] lock_acquire+0xba/0xdd\n [\u003cc01836bc\u003e] might_fault+0x68/0x88\n [\u003cc023c730\u003e] copy_to_user+0x2c/0xfc\n [\u003cd0d11b4f\u003e] nilfs_ioctl_wrap_copy+0x103/0x160 [nilfs2]\n [\u003cd0d11fa9\u003e] nilfs_ioctl+0x30a/0x3b0 [nilfs2]\n [\u003cc01a3be7\u003e] vfs_ioctl+0x22/0x69\n [\u003cc01a408e\u003e] do_vfs_ioctl+0x460/0x499\n [\u003cc01a4107\u003e] sys_ioctl+0x40/0x5a\n [\u003cc01031a4\u003e] sysenter_do_call+0x12/0x38\n [\u003cffffffff\u003e] 0xffffffff\n\n -\u003e #0 (\u0026nilfs-\u003ens_segctor_sem){++++.+}:\n [\u003cc0146e0b\u003e] __lock_acquire+0xdcc/0x13b0\n [\u003cc01474a9\u003e] lock_acquire+0xba/0xdd\n [\u003cc0433f1d\u003e] down_read+0x2a/0x3e\n [\u003cd0d0e852\u003e] nilfs_transaction_begin+0xb6/0x10c [nilfs2]\n [\u003cd0cfe0e5\u003e] nilfs_page_mkwrite+0xe7/0x154 [nilfs2]\n [\u003cc0183b0b\u003e] __do_fault+0x165/0x376\n [\u003cc01855cd\u003e] handle_mm_fault+0x287/0x5d1\n [\u003cc043712d\u003e] do_page_fault+0x2fb/0x30a\n [\u003cc0435462\u003e] error_code+0x72/0x78\n [\u003cffffffff\u003e] 0xffffffff\n\n other info that might help us debug this:\n\n 1 lock held by mmap/5418:\n #0:  (\u0026mm-\u003emmap_sem){++++++}, at: [\u003cc043700a\u003e] do_page_fault+0x1d8/0x30a\n\n stack backtrace:\n Pid: 5418, comm: mmap Not tainted 2.6.30-rc3-nilfs-00002-g3552613 #6\n Call Trace:\n [\u003cc0432145\u003e] ? printk+0xf/0x12\n [\u003cc0145c48\u003e] print_circular_bug_tail+0xaa/0xb5\n [\u003cc0146e0b\u003e] __lock_acquire+0xdcc/0x13b0\n [\u003cd0d10149\u003e] ? nilfs_sufile_get_stat+0x1e/0x105 [nilfs2]\n [\u003cc013b59a\u003e] ? up_read+0x16/0x2c\n [\u003cd0d10225\u003e] ? nilfs_sufile_get_stat+0xfa/0x105 [nilfs2]\n [\u003cc01474a9\u003e] lock_acquire+0xba/0xdd\n [\u003cd0d0e852\u003e] ? nilfs_transaction_begin+0xb6/0x10c [nilfs2]\n [\u003cc0433f1d\u003e] down_read+0x2a/0x3e\n [\u003cd0d0e852\u003e] ? nilfs_transaction_begin+0xb6/0x10c [nilfs2]\n [\u003cd0d0e852\u003e] nilfs_transaction_begin+0xb6/0x10c [nilfs2]\n [\u003cd0cfe0e5\u003e] nilfs_page_mkwrite+0xe7/0x154 [nilfs2]\n [\u003cc0183b0b\u003e] __do_fault+0x165/0x376\n [\u003cc01855cd\u003e] handle_mm_fault+0x287/0x5d1\n [\u003cc043700a\u003e] ? do_page_fault+0x1d8/0x30a\n [\u003cc013b54f\u003e] ? down_read_trylock+0x39/0x43\n [\u003cc043712d\u003e] do_page_fault+0x2fb/0x30a\n [\u003cc0436e32\u003e] ? do_page_fault+0x0/0x30a\n [\u003cc0435462\u003e] error_code+0x72/0x78\n [\u003cc0436e32\u003e] ? do_page_fault+0x0/0x30a\n\nThis makes the lock granularity of nilfs-\u003ens_segctor_sem finer than\nthat of the mmap semaphore for ioctl commands except\nnilfs_clean_segments().\n\nThe successive patch (\"nilfs2: fix lock order reversal in\nnilfs_clean_segments ioctl\") is required to fully resolve the problem.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "843382370ec614768ac13582405f93635cf3637c",
      "tree": "6447e8318d2c2a22bebfd0c7e70f825fbdeeebdb",
      "parents": [
        "201913ed746c7724a40d33ee5a0b6a1fd2ef3193"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue May 05 21:52:06 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun May 10 17:04:42 2009 +0900"
      },
      "message": "nilfs2: ensure to clear dirty state when deleting metadata file block\n\nThis would fix the following failure during GC:\n\n nilfs_cpfile_delete_checkpoints: cannot delete block\n NILFS: GC failed during preparation: cannot delete checkpoints: err\u003d-2\n\nThe problem was caused by a break in state consistency between page\ncache and btree; the above block was removed from the btree but the\npage buffering the block was remaining in the page cache in dirty\nstate.\n\nThis resolves the inconsistency by ensuring to clear dirty state of\nthe page buffering the deleted block.\n\nReported-by: David Arendt \u003cadmin@prnet.org\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "201913ed746c7724a40d33ee5a0b6a1fd2ef3193",
      "tree": "149cd7552a854055a2ed278234649a77914aaf96",
      "parents": [
        "85c2a74fabadfc561b75fbd7decc6bcbfe873d57"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue Apr 28 21:04:59 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat May 09 13:36:57 2009 +0900"
      },
      "message": "nilfs2: fix circular locking dependency of writer mutex\n\nThis fixes the following circular locking dependency problem:\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 ]\n 2.6.30-rc3 #5\n -------------------------------------------------------\n segctord/3895 is trying to acquire lock:\n  (\u0026nilfs-\u003ens_writer_mutex){+.+...}, at: [\u003cd0d02172\u003e]\n   nilfs_mdt_get_block+0x89/0x20f [nilfs2]\n\n but task is already holding lock:\n  (\u0026bmap-\u003eb_sem){++++..}, at: [\u003cd0d02d99\u003e]\n   nilfs_bmap_propagate+0x14/0x2e [nilfs2]\n\n which lock already depends on the new lock.\n\nThe bugfix is done by replacing call sites of nilfs_get_writer() which\nare never called from read-only context with direct dereferencing of\npointer to a writable FS-instance.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "85c2a74fabadfc561b75fbd7decc6bcbfe873d57",
      "tree": "ad0adcd8377412184a9a5bac9fea3191cbea29ca",
      "parents": [
        "091bf7624d1c90cec9e578a18529f615213ff847"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue Apr 28 23:38:46 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat May 09 13:36:56 2009 +0900"
      },
      "message": "nilfs2: fix possible recovery failure due to block creation without writer\n\nSome function calls in nilfs_prepare_segment_for_recovery() may fail\nbecause they can create blocks on meta data files without configuring\na writable FS-instance.  Concretely, nilfs_mdt_create_block() routine\nof meta data files will fail in that case.\n\nThis fixes the problem by temporarily attaching a writable FS-instace\nduring the function is called.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "c85399c2da8b86de8f6877980294fa1a4a88a5a4",
      "tree": "0319b8ab4d8b7da4d614e46949755b8a9ba4eab0",
      "parents": [
        "a703018f7bbec8109419318f5d51f235fdce5155"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Apr 05 18:30:58 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 13 09:53:52 2009 +0900"
      },
      "message": "nilfs2: fix possible mismatch of sufile counters on recovery\n\nOn-disk counters ndirtysegs and ncleansegs of sufile, can go wrong\nafter roll-forward recovery because\nnilfs_prepare_segment_for_recovery() function marks segments dirty\nwithout adjusting value of these counters.\n\nThis fixes the problem by adding a function to sufile which does the\noperation adjusting the counters, and by letting the recovery function\nuse it.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "a703018f7bbec8109419318f5d51f235fdce5155",
      "tree": "6bad3f70892ba54b95b6eb0e994542beddde6840",
      "parents": [
        "88072faf9a32c92f37c15065496bb6eb309aebe3"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Apr 05 18:24:11 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 13 09:53:51 2009 +0900"
      },
      "message": "nilfs2: segment usage file cleanups\n\nThis will simplify sufile.c by sharing common code which repeatedly\nappears in routines updating a segment usage entry; a wrapper function\nnilfs_sufile_update() is introduced for the purpose, and counter\nmodifications are integrated to a new function\nnilfs_sufile_mod_counter().\n\nThis is a preparation for the successive bugfix patch (\"nilfs2: fix\npossible mismatch of sufile counters on recovery\").\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "88072faf9a32c92f37c15065496bb6eb309aebe3",
      "tree": "a99478df82c69a97b7e4644dbbd4b9d5df8f5949",
      "parents": [
        "3efb55b496952e0d29a9ec66d0ceaab175c4e8ca"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Apr 05 15:03:16 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 13 09:53:51 2009 +0900"
      },
      "message": "nilfs2: fix wrong accounting and duplicate brelse in nilfs_sufile_set_error\n\nThe nilfs_sufile_set_error() function wrongly adjusts the number of\ndirty segments instead of the number of clean segments.  In addition,\nthe function calls brelse() twice for the same buffer head.\n\nThis fixes these bugs.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "3efb55b496952e0d29a9ec66d0ceaab175c4e8ca",
      "tree": "d53771031086e9801343a1a990af7d1eb80f1827",
      "parents": [
        "e7a7402c0d392dcadc74cae8922f8fae4667605a"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Mar 30 00:50:19 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 13 09:53:51 2009 +0900"
      },
      "message": "nilfs2: simplify handling of active state of segments fix\n\nThis fixes a bug of (\"nilfs2: simplify handling of active state of\nsegments\") patch.  The patch did not take account that a base index is\nincreased in nilfs_sufile_get_suinfo() function if requested entries\ngo across block boundary on sufile.\n\nDue to this bug, the active flag sometimes appears on wrong segments\nand has induced malfunction of garbage collection.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "e7a7402c0d392dcadc74cae8922f8fae4667605a",
      "tree": "cb0023291a09eb7689fb47a3d8cc1ead46465605",
      "parents": [
        "c2698e50e304cd29a7836f05452359a3306a405e"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Mar 27 10:49:11 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 13 09:53:50 2009 +0900"
      },
      "message": "nilfs2: remove module version\n\nA MODULE_VERSION() macro has been used in out-of-tree nilfs modules,\nbut it\u0027s needless and not updated in tree.  So, this removes it along\nwith the version declaration.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "c2698e50e304cd29a7836f05452359a3306a405e",
      "tree": "5d376538eb2937a7481c1303152e3b450049a7df",
      "parents": [
        "bcb48891b05b4179edc86298d3dccb2ce90d5413"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Mar 27 02:53:12 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 13 09:53:50 2009 +0900"
      },
      "message": "nilfs2: fix lockdep recursive locking warning on meta data files\n\nThis fixes the following false detection of lockdep against nilfs meta\ndata files:\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.29 #26\n---------------------------------------------\nmount.nilfs2/4185 is trying to acquire lock:\n (\u0026mi-\u003emi_sem){----}, at: [\u003cd0c7925b\u003e] nilfs_sufile_get_stat+0x1e/0x105 [nilfs2]\n but task is already holding lock:\n  (\u0026mi-\u003emi_sem){----}, at: [\u003cd0c72026\u003e] nilfs_count_free_blocks+0x48/0x84 [nilfs2]\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "bcb48891b05b4179edc86298d3dccb2ce90d5413",
      "tree": "c7cd9e37ca46e4f7241be2faa5f5c6e7625d7520",
      "parents": [
        "c306af23e19d3c94c9229263c39fe487e915e774"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Mar 27 02:51:39 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 13 09:53:49 2009 +0900"
      },
      "message": "nilfs2: fix lockdep recursive locking warning on bmap\n\nThe bmap semaphore of DAT file can be held while a bmap of other files\nis locked.  This has caused the following false detection of lockdep\ncheck:\n\nmount.nilfs2/4667 is trying to acquire lock:\n (\u0026bmap-\u003eb_sem){..--}, at: [\u003cd0c6c4b4\u003e] nilfs_bmap_lookup_at_level+0x1a/0x74 [nilfs2]\n\nbut task is already holding lock:\n (\u0026bmap-\u003eb_sem){..--}, at: [\u003cd0c6c4b4\u003e] nilfs_bmap_lookup_at_level+0x1a/0x74 [nilfs2]\n\nThis will fix the false detection by distinguishing semaphores of the\nDAT and other files.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "c306af23e19d3c94c9229263c39fe487e915e774",
      "tree": "019a87429a8a27d336d3b433866a5e7eaaa3f0ff",
      "parents": [
        "b0cbc861a3c05e634520b049b5cc27ad6febb51f"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Thu Mar 26 10:16:57 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 13 09:53:49 2009 +0900"
      },
      "message": "nilfs2: return f_fsid for statfs2\n\nThis follows the change of Coly Li\u0027s series (\"fs: return f_fsid for\nstatfs(2)\"), and make nilfs2 return f_fsid info for statfs(2).\n\nAcked-by: Coly Li \u003ccoly.li@suse.de\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "612392307cb09e49051225092cbbd7049bd8db93",
      "tree": "401a227d0fae219aae7b682bb613bb388b4a7682",
      "parents": [
        "e339ad31f59925b48a92ee3947692fdf9758b8c7"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:02:00 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:20 2009 -0700"
      },
      "message": "nilfs2: support nanosecond timestamp\n\nAfter a review of user\u0027s feedback for finding out other compatibility\nissues, I found nilfs improperly initializes timestamps in inode;\nCURRENT_TIME was used there instead of CURRENT_TIME_SEC even though nilfs\ndidn\u0027t have nanosecond timestamps on disk.  A few users gave us the report\nthat the tar program sometimes failed to expand symbolic links on nilfs,\nand it turned out to be the cause.\n\nInstead of applying the above displacement, I\u0027ve decided to support\nnanosecond timestamps on this occation.  Fortunetaly, a needless 64-bit\nfield was in the nilfs_inode struct, and I found it\u0027s available for this\npurpose without impact for the users.\n\nSo, this will do the enhancement and resolve the tar problem.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e339ad31f59925b48a92ee3947692fdf9758b8c7",
      "tree": "6bb85c43bfd100b0a220c788c654f2f74ca553e4",
      "parents": [
        "cece552074c591970353ad48308d65f110aeaf28"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:59 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:20 2009 -0700"
      },
      "message": "nilfs2: introduce secondary super block\n\nThe former versions didn\u0027t have extra super blocks.  This improves the\nweak point by introducing another super block at unused region in tail of\nthe partition.\n\nThis doesn\u0027t break disk format compatibility; older versions just ingore\nthe secondary super block, and new versions just recover it if it doesn\u0027t\nexist.  The partition created by an old mkfs may not have unused region,\nbut in that case, the secondary super block will not be added.\n\nThis doesn\u0027t make more redundant copies of the super block; it is a future\nwork.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cece552074c591970353ad48308d65f110aeaf28",
      "tree": "2dcca7913d38df89711504f5daeecccfedb5a3eb",
      "parents": [
        "c96fa464a567a2a8796009af0e79bc68af73f485"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:58 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:20 2009 -0700"
      },
      "message": "nilfs2: simplify handling of active state of segments\n\nwill reduce some lines of segment constructor.  Previously, the state was\ncomplexly controlled through a list of segments in order to keep\nconsistency in meta data of usage state of segments.  Instead, this\npresents ``calculated\u0027\u0027 active flags to userland cleaner program and stop\nmaintaining its real flag on disk.\n\nOnly by this fake flag, the cleaner cannot exactly know if each segment is\nreclaimable or not.  However, the recent extension of nilfs_sustat ioctl\nstruct (nilfs2-extend-nilfs_sustat-ioctl-struct.patch) can prevent the\ncleaner from reclaiming in-use segment wrongly.\n\nSo, now I can apply this for simplification.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c96fa464a567a2a8796009af0e79bc68af73f485",
      "tree": "5467fcdc2a4a64dfad3c5cb627451b6f7e76809b",
      "parents": [
        "458c5b0822a669d170fdb7bb16c9145f652ebe06"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:57 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:19 2009 -0700"
      },
      "message": "nilfs2: mark minor flag for checkpoint created by internal operation\n\nNilfs creates checkpoints even for garbage collection or metadata updates\nsuch as checkpoint mode change.  So, user often sees checkpoints created\nonly by such internal operations.\n\nThis is inconvenient in some situations.  For example, application that\nmonitors checkpoints and changes them to snapshots, will fall into an\ninfinite loop because it cannot distinguish internally created\ncheckpoints.\n\nThis patch solves this sort of problem by adding a flag to checkpoint for\nidentification.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "458c5b0822a669d170fdb7bb16c9145f652ebe06",
      "tree": "f2c53998492306a8aaf6d20ded229b69cba17348",
      "parents": [
        "e62687468588f47c32256e3c8c36157c40111b6e"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:56 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:19 2009 -0700"
      },
      "message": "nilfs2: clean up sketch file\n\nThe sketch file is a file to mark checkpoints with user data.  It was\nexperimentally introduced in the original implementation, and now\nobsolete.  The file was handled differently with regular files; the file\nsize got truncated when a checkpoint was created.\n\nThis stops the special treatment and will treat it as a regular file.\nMost users are not affected because mkfs.nilfs2 no longer makes this file.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e62687468588f47c32256e3c8c36157c40111b6e",
      "tree": "00b9532341e606868567c03b8c3a631d0bf19b46",
      "parents": [
        "1f5abe7e7dbcd83e73212c6cb135a6106cea6a0b"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:55 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:19 2009 -0700"
      },
      "message": "nilfs2: super block operations fix endian bug\n\nThis adds a missing endian conversion of checksum field in the super\nblock.  This fixes compatibility issue on big endian machines which will\ncome to surface after supporting recovery of super block.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1f5abe7e7dbcd83e73212c6cb135a6106cea6a0b",
      "tree": "f80e97297d5badebd31bbb17003d76a4ea30453a",
      "parents": [
        "2c2e52fc4fca251e68f90821c9ff5cb18be4df58"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:55 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:19 2009 -0700"
      },
      "message": "nilfs2: replace BUG_ON and BUG calls triggerable from ioctl\n\nPekka Enberg advised me:\n\u003e It would be nice if BUG(), BUG_ON(), and panic() calls would be\n\u003e converted to proper error handling using WARN_ON() calls. The BUG()\n\u003e call in nilfs_cpfile_delete_checkpoints(), for example, looks to be\n\u003e triggerable from user-space via the ioctl() system call.\n\nThis will follow the comment and keep them to a minimum.\n\nAcked-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2c2e52fc4fca251e68f90821c9ff5cb18be4df58",
      "tree": "fb0b86203bb5f4dda4d5907e29bd2b1b6cc0be90",
      "parents": [
        "7a9461939a46345860622ea36ff267ee4446f00f"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:54 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:19 2009 -0700"
      },
      "message": "nilfs2: extend nilfs_sustat ioctl struct\n\nThis adds a new argument to the nilfs_sustat structure.\n\nThe extended field allows to delete volatile active state of segments,\nwhich was needed to protect freshly-created segments from garbage\ncollection but has confused code dealing with segments.  This\nextension alleviates the mess and gives room for further\nsimplifications.\n\nThe volatile active flag is not persistent, so it\u0027s eliminable on this\noccasion without affecting compatibility other than the ioctl change.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7a9461939a46345860622ea36ff267ee4446f00f",
      "tree": "5607ba81b9580e2979bcfb806d5b04f5fbfd53d9",
      "parents": [
        "8082d36aed26c4fb6ed43e4008303682eabf839e"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:53 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:19 2009 -0700"
      },
      "message": "nilfs2: use unlocked_ioctl\n\nPekka Enberg suggested converting -\u003eioctl operations to use\n-\u003eunlocked_ioctl to avoid BKL.\n\nThe conversion was verified to be safe, so I will take it on this\noccasion.\n\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8082d36aed26c4fb6ed43e4008303682eabf839e",
      "tree": "d51eff46a3ebe29e0a445597570599b5b7c4a037",
      "parents": [
        "dc498d09be28172846cacded35ca2378222a8c7b"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:53 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:18 2009 -0700"
      },
      "message": "nilfs2: remove compat ioctl code\n\nThis removes compat code from the nilfs ioctls and applies the same\nfunction for both .ioctl and .compat_ioctl file operations.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "dc498d09be28172846cacded35ca2378222a8c7b",
      "tree": "42b31073a0fb4eb74d6c09c2f4b9711262e97d2a",
      "parents": [
        "1088dcf4c3a0a27fdad5214781d5084b11405238"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:52 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:18 2009 -0700"
      },
      "message": "nilfs2: use fixed sized types for ioctl structures\n\nNilfs ioctl had structures not having fixed sized types such as:\n\n  struct nilfs_argv {\n         void *v_base;\n         size_t v_nmembs;\n         size_t v_size;\n         int v_index;\n         int v_flags;\n  };\n\nFurther, some of them are wrongly aligned:\n\n  e.g.\n\n  struct nilfs_cpmode {\n        __u64 cm_cno;\n        int cm_mode;\n  };\n\nThe size of wrongly aligned structures varies depending on\narchitectures, and it breaks the identity of ioctl commands, which\nleads to arch dependent errors.\n\nPreviously, these are compensated by using compat_ioctl.\n\nThis fixes these problems and allows removal of compat ioctl.\n\nSince this will change sizes of those structures, binary compatibility\nfor the past utilities will once break; new utilities have to be used\ninstead.  However, it would be helpful to avoid platform dependent\nproblems in the long term.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1088dcf4c3a0a27fdad5214781d5084b11405238",
      "tree": "4d08f45ff4867d629e5ad4e94e0362e897ffa1e1",
      "parents": [
        "76068c4ff1cc03d9d24d17fd9e6a1475bc2f6730"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:51 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:18 2009 -0700"
      },
      "message": "nilfs2: remove timedwait ioctl command\n\nThis removes NILFS_IOCTL_TIMEDWAIT command from ioctl interface along\nwith the related flags and wait queue.\n\nThe command is terrible because it just sleeps in the ioctl.  I prefer\nto avoid this by devising means of event polling in userland program.\nBy reconsidering the userland GC daemon, I found this is possible\nwithout changing behaviour of the daemon and sacrificing efficiency.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "76068c4ff1cc03d9d24d17fd9e6a1475bc2f6730",
      "tree": "b2f56fbca8e7680135da5c610bd13283d8377a7f",
      "parents": [
        "8acfbf0939e98cc77dab94c24899c9930ddd1e13"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:50 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:18 2009 -0700"
      },
      "message": "nilfs2: fix buggy behavior seen in enumerating checkpoints\n\nThis will fix the weird behavior of lscp command in listing continuously\ncreated checkpoints; the output of lscp is rewinded regularly for the\nrecent nilfs.  As a result of debugging, a defect was found in\nnilfs_cpfile_do_get_cpinfo() function.\n\nThough the function can be repeatedly called to enumerate checkpoints and\nit can skip invalid checkpoint entries, the index value was not carried\nbetween successive calls.\n\nThe bug has long been present, and came to surface after applying a bugfix\nnilfs2-fix-problems-of-memory-allocation-in-ioctl.patch, which increased\nfrequency of calling the function.  The similar bugfix was already applied\nfor ``snapshots\u0027\u0027 by\nnilfs2-fix-gc-failure-on-volumes-keeping-numerous-snapshots.patch.\n\nThis fixes the problem by making the index argument bidirectional on the\nfunction.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8acfbf0939e98cc77dab94c24899c9930ddd1e13",
      "tree": "0f261ee58584db9a89a874f85646ab827105143f",
      "parents": [
        "7fa10d20012296300dfe645cb3e628a4e9a0d5ef"
      ],
      "author": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Mon Apr 06 19:01:49 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:17 2009 -0700"
      },
      "message": "nilfs2: clean up indirect function calling conventions\n\nThis cleans up the strange indirect function calling convention used in\nnilfs to follow the normal kernel coding style.\n\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nAcked-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7fa10d20012296300dfe645cb3e628a4e9a0d5ef",
      "tree": "d3678ad2cbfb41624af0058b7de1ee2d48b7334c",
      "parents": [
        "b028fcfc4cd198a6aa1ffcfb872073ccc1db3459"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:48 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:17 2009 -0700"
      },
      "message": "nilfs2: fix improper return values of nilfs_get_cpinfo ioctl\n\nA few tool developers gave me requests for fixing inconvenient return\nvalue of nilfs_get_cpinfo() ioctl; if the requested mode is NILFS_SNAPSHOT\nand the specified start entry is not a snapshot, the ioctl unnaturally\nreturns one as the number of acquired snapshot item.\n\nIn addition, the ioctl function returns an ENOENT error for checkpoints\nwithin blocks deleted by garbage collection.\n\nThese behaviors require corrections for programs which enumerate\nsnapshots.  This resolves the inconvenience by changing the return values\nto zero for the above cases.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b028fcfc4cd198a6aa1ffcfb872073ccc1db3459",
      "tree": "d6a89ba7cf253ab1738d5295f557b77e77ac4311",
      "parents": [
        "85ef9cea02882baedd1e65336cf3dd292841dde3"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:47 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:17 2009 -0700"
      },
      "message": "nilfs2: fix gc failure on volumes keeping numerous snapshots\n\nThis resolves the following failure of nilfs2 cleaner daemon:\n\n nilfs_cleanerd[20670]: cannot clean segments: No such file or directory\n nilfs_cleanerd[20670]: shutdown\n\nWhen creating thousands of snapshots, the cleaner daemon had rarely died\nas above due to an error returned from the kernel code.\n\nAfter applying the recent patch which fixed memory allocation problems in\nioctl (Message-Id: \u003c20081215.155840.105124170.ryusuke@osrg.net\u003e), the\nproblem gets more frequent.\n\nIt turned out to be a bug of nilfs_ioctl_wrap_copy function and one of its\ncallback routines to read out information of snapshots; if the\nnilfs_ioctl_wrap_copy function divided a large read request into multiple\nrequests, the second and later requests have failed since a restart\nposition on snapshot meta data was not properly set forward.\n\nIt\u0027s a deficiency of the callback interface that cannot pass the restart\nposition among multiple requests.  This patch fixes the issue by allowing\nnilfs_ioctl_wrap_copy and snapshot read functions to exchange a position\nargument.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "047180f2d7bf95ff5699ca04da639a7556e23435",
      "tree": "28f66f0880426ffae01892df531e820064ff7f6f",
      "parents": [
        "47420c799830d4676e544dbec56b2a7f787528f5"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:45 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:17 2009 -0700"
      },
      "message": "nilfs2: insert explanations in gcinode file\n\nThe file gcinode.c gives buffer cache functions for on-disk blocks\nmoved in garbage collection.  Joern Engel has suggested inserting its\nexplanations in the source file (Message-ID:\n\u003c20080917144146.GD8750@logfs.org\u003e and\n\u003c20080917224953.GB14644@logfs.org\u003e).\n\nThis follows the comment.\n\nCc: Joern Engel \u003cjoern@logfs.org\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "47420c799830d4676e544dbec56b2a7f787528f5",
      "tree": "dd61f6c96942b07f762129c893d9cbbbeff60735",
      "parents": [
        "a2e7d2df82cafb76f76809ddf6e2caa8afe4f75e"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:45 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:17 2009 -0700"
      },
      "message": "nilfs2: avoid double error caused by nilfs_transaction_end\n\nPekka Enberg pointed out that double error handlings found after\nnilfs_transaction_end() can be avoided by separating abort operation:\n\n OK, I don\u0027t understand this. The only way nilfs_transaction_end() can\n fail is if we have NILFS_TI_SYNC set and we fail to construct the\n segment. But why do we want to construct a segment if we don\u0027t commit?\n\n I guess what I\u0027m asking is why don\u0027t we have a separate\n nilfs_transaction_abort() function that can\u0027t fail for the erroneous\n case to avoid this double error value tracking thing?\n\nThis does the separation and renames nilfs_transaction_end() to\nnilfs_transaction_commit() for clarification.\n\nSince, some calls of these functions were used just for exclusion control\nagainst the segment constructor, they are replaced with semaphore\noperations.\n\nAcked-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a2e7d2df82cafb76f76809ddf6e2caa8afe4f75e",
      "tree": "ac16ef25c4d3e4eaf55090b57035d292ec5bc9fb",
      "parents": [
        "3358b4aaa84fd4c1cdd64391875e92cbb8afeb29"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:44 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:17 2009 -0700"
      },
      "message": "nilfs2: cleanup nilfs_clear_inode\n\nThis will remove the following unnecessary locks and cleanup code in\nnilfs_clear_inode():\n\n- unnecessary protection using nilfs_transaction_begin() and\n  nilfs_transaction_end().\n\n- cleanup code of i_dirty list field which is never chained\n  when this function is called.\n\n- spinlock used when releasing i_bh field.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3358b4aaa84fd4c1cdd64391875e92cbb8afeb29",
      "tree": "4ae252a8b06715a57a76c8a645f44c3ce0066d9c",
      "parents": [
        "0c4fb877641c5c72d4a3ce8921a256bfe44055c0"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:43 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:16 2009 -0700"
      },
      "message": "nilfs2: fix problems of memory allocation in ioctl\n\nThis is another patch for fixing the following problems of a memory\ncopy function in nilfs2 ioctl:\n\n(1) It tries to allocate 128KB size of memory even for small objects.\n\n(2) Though the function repeatedly tries large memory allocations\n    while reducing the size, GFP_NOWAIT flag is not specified.\n    This increases the possibility of system memory shortage.\n\n(3) During the retries of (2), verbose warnings are printed\n    because _GFP_NOWARN flag is not used for the kmalloc calls.\n\nThe first patch was still doing large allocations by kmalloc which are\nrepeatedly tried while reducing the size.\n\nAndi Kleen told me that using copy_from_user for large memory is not\ngood from the viewpoint of preempt latency:\n\n On Fri, 12 Dec 2008 21:24:11 +0100, Andi Kleen \u003candi@firstfloor.org\u003e wrote:\n \u003e \u003e In the current interface, each data item is copied twice: one is to\n \u003e \u003e the allocated memory from user space (via copy_from_user), and another\n \u003e\n \u003e For such large copies it is better to use multiple smaller (e.g. 4K)\n \u003e copy user, that gives better real time preempt latencies. Each cfu has a\n \u003e cond_resched(), but only one, not multiple times in the inner loop.\n\nHe also advised me that:\n\n On Sun, 14 Dec 2008 16:13:27 +0100, Andi Kleen \u003candi@firstfloor.org\u003e wrote:\n \u003e Better would be if you could go to PAGE_SIZE. order 0 allocations\n \u003e are typically the fastest / least likely to stall.\n \u003e\n \u003e Also in this case it\u0027s a good idea to use __get_free_pages()\n \u003e directly, kmalloc tends to be become less efficient at larger\n \u003e sizes.\n\nFor the function in question, the size of buffer memory can be reduced\nsince the buffer is repeatedly used for a number of small objects.  On\nthe other hand, it may incur large preempt latencies for larger buffer\nbecause a copy_from_user (and a copy_to_user) was applied only once\neach cycle.\n\nWith that, this revision uses the order 0 allocations with\n__get_free_pages() to fix the original problems.\n\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0c4fb877641c5c72d4a3ce8921a256bfe44055c0",
      "tree": "496ab331abe225266beabac80f1172b866ef2a15",
      "parents": [
        "7942b919f7321f95a777d396ff7894a7a83dc9b0"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:41 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:16 2009 -0700"
      },
      "message": "nilfs2: update makefile and Kconfig\n\nThis adds a Makefile for the nilfs2 file system, and updates the\nmakefile and Kconfig file in the file system directory.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7942b919f7321f95a777d396ff7894a7a83dc9b0",
      "tree": "60c63349788f8776c3ecd9ac1e02edc2c7f8769e",
      "parents": [
        "a3d93f709e893187d301aa5458b2248db9f22bd1"
      ],
      "author": {
        "name": "Koji Sato",
        "email": "sato.koji@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:41 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:16 2009 -0700"
      },
      "message": "nilfs2: ioctl operations\n\nThis adds userland interface implemented with ioctl.\n\nSigned-off-by: Koji Sato \u003csato.koji@lab.ntt.co.jp\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a3d93f709e893187d301aa5458b2248db9f22bd1",
      "tree": "9097bf495de11ebac7853c0007a2f3a67fab876b",
      "parents": [
        "84ef1ecfdea2f9f1e740a4bee0fa9cd629bdda70"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:40 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:16 2009 -0700"
      },
      "message": "nilfs2: block cache for garbage collection\n\nThis adds the cache of on-disk blocks to be moved in garbage\ncollection.  The disk blocks are held with dummy inodes (called\ngcinodes), and this file provides lookup function of the dummy inodes,\nand their buffer read function.\n\nSigned-off-by: Seiji Kihara \u003ckihara.seiji@lab.ntt.co.jp\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Yoshiji Amagai \u003camagai.yoshiji@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "84ef1ecfdea2f9f1e740a4bee0fa9cd629bdda70",
      "tree": "80535e6fab2d3033eeb16f32ba6a0a1f614564db",
      "parents": [
        "0f3e1c7f23f8a6f8224fa1d275381f6d9279ad4b"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:39 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:16 2009 -0700"
      },
      "message": "nilfs2: another dat for garbage collection\n\nNILFS2 uses another DAT inode during garbage collection to ensure\natomicity and consistency of the DAT in the transient state.  This\ntwin inode is called GCDAT.\n\nThis adds functions to initialize the GCDAT and to switch page caches\nand B-tree node caches between these two inodes.\n\nSigned-off-by: Seiji Kihara \u003ckihara.seiji@lab.ntt.co.jp\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Yoshiji Amagai \u003camagai.yoshiji@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0f3e1c7f23f8a6f8224fa1d275381f6d9279ad4b",
      "tree": "b46181f8caa65d3b829acadd644b44afd465cd63",
      "parents": [
        "f30bf3e40f80ef50c17f55271deae3abc03e793e"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:38 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:16 2009 -0700"
      },
      "message": "nilfs2: recovery functions\n\nThis adds recovery function on mount.\n\nUsually the recovery is achieved by just finding the latest super\nroot.  When logs without checkpoints were appended for data sync\noperations after the latest super root, the recovery function will\nperform roll forwarding and reconstruct new log(s) with a super root.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f30bf3e40f80ef50c17f55271deae3abc03e793e",
      "tree": "2e6d69611d1443688c1a79c5e5aed60cf38672e7",
      "parents": [
        "9ff05123e3bfbb1d2b68ba1d9bf1f7d1dffc1453"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:38 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:15 2009 -0700"
      },
      "message": "nilfs2: fix missed-sync issue for do_sync_mapping_range()\n\nChris Mason pointed out that there is a missed sync issue in\nnilfs_writepages():\n\nOn Wed, 17 Dec 2008 21:52:55 -0500, Chris Mason wrote:\n\u003e It looks like nilfs_writepage ignores WB_SYNC_NONE, which is used by\n\u003e do_sync_mapping_range().\n\nwhere WB_SYNC_NONE in do_sync_mapping_range() was replaced with\nWB_SYNC_ALL by Nick\u0027s patch (commit:\nee53a891f47444c53318b98dac947ede963db400).\n\nThis fixes the problem by letting nilfs_writepages() write out the log of\nfile data within the range if sync_mode is WB_SYNC_ALL.\n\nThis involves removal of nilfs_file_aio_write() which was previously\nneeded to ensure O_SYNC sync writes.\n\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9ff05123e3bfbb1d2b68ba1d9bf1f7d1dffc1453",
      "tree": "056c7bdc2395c8baf77bc63a54a1f747cbf5b650",
      "parents": [
        "64b5a32e0b3680a9655b3f2e668a646068e71d33"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:37 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:15 2009 -0700"
      },
      "message": "nilfs2: segment constructor\n\nThis adds the segment constructor (also called log writer).\n\nThe segment constructor collects dirty buffers for every dirty inode,\nmakes summaries of the buffers, assigns disk block addresses to the\nbuffers, and then submits BIOs for the buffers.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "64b5a32e0b3680a9655b3f2e668a646068e71d33",
      "tree": "f4b97cde4f593a55fef4f754ea1e16a28cdf9f38",
      "parents": [
        "783f61843e9d14724f5f79ae955a28c27e300467"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:36 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:15 2009 -0700"
      },
      "message": "nilfs2: segment buffer\n\nThis adds the segment buffer which is used to constuct logs.\n\n[akpm@linux-foundation.org: BIO_RW_SYNC got removed]\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "783f61843e9d14724f5f79ae955a28c27e300467",
      "tree": "7b424994eb39f238a93cafc805372a322f80cb9e",
      "parents": [
        "8a9d2191e9f43bbcd256a9a6871bd73434c83f2f"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:35 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:15 2009 -0700"
      },
      "message": "nilfs2: super block operations\n\nThis adds super block operations for the nilfs2 file system.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8a9d2191e9f43bbcd256a9a6871bd73434c83f2f",
      "tree": "e2c8967703c3f2bf15dcfbe78eafdfe0c328c3c4",
      "parents": [
        "d25006523d0b9e49fd097b2e974e7c8c05bd7f54"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:35 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:15 2009 -0700"
      },
      "message": "nilfs2: operations for the_nilfs core object\n\nThis adds functions on the_nilfs object, which keeps shared resources and\nstates among a read/write mount and snapshots mounts going individually.\n\nthe_nilfs is allocated per block device; it is created when user first\nmount a snapshot or a read/write mount on the device, then it is reused\nfor successive mounts.  It will be freed when all mount instances on the\ndevice are detached.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d25006523d0b9e49fd097b2e974e7c8c05bd7f54",
      "tree": "ff251f5854012ba8b6000745a24d50eda7e3dbd8",
      "parents": [
        "2ba466d74ed74f073257f86e61519cb8f8f46184"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:34 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:15 2009 -0700"
      },
      "message": "nilfs2: pathname operations\n\nThis adds pathname operations, most of which comes from the ext2 file\nsystem.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2ba466d74ed74f073257f86e61519cb8f8f46184",
      "tree": "716b990b7ae70198eef9ba6f54dfb0e9fd8547be",
      "parents": [
        "f183ff4f05317b7929337455b233496f68217c1a"
      ],
      "author": {
        "name": "Yoshiji Amagai",
        "email": "amagai.yoshiji@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:34 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:15 2009 -0700"
      },
      "message": "nilfs2: directory entry operations\n\nThis adds directory handling functions, most of which comes from the ext2\nfile system.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Yoshiji Amagai \u003camagai.yoshiji@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f183ff4f05317b7929337455b233496f68217c1a",
      "tree": "46db0219720683f00f0566f50bafe0da1143d02e",
      "parents": [
        "05fe58fdc10df9ebea04c0eaed57adc47af5c184"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:33 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:14 2009 -0700"
      },
      "message": "nilfs2: file operations\n\nThis adds primitives for regular file handling.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "05fe58fdc10df9ebea04c0eaed57adc47af5c184",
      "tree": "04fbeb7b48e6362ec11e14631b1f42eb74b9c865",
      "parents": [
        "6c98cd4ecb0ae35f0368c5c2190712689c2064aa"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:32 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:14 2009 -0700"
      },
      "message": "nilfs2: inode operations\n\nThis adds inode level operations of the nilfs2 file system.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6c98cd4ecb0ae35f0368c5c2190712689c2064aa",
      "tree": "5d8fae2ce980cae3a97e0e88068527ce5937a8df",
      "parents": [
        "29619809727a4e524e26dbd7bfdc93ff7f50aa74"
      ],
      "author": {
        "name": "Koji Sato",
        "email": "sato.koji@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:32 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:14 2009 -0700"
      },
      "message": "nilfs2: segment usage file\n\nThis adds a meta data file which stores the allocation state of segments.\n\n[konishi.ryusuke@lab.ntt.co.jp: fix wrong counting of checkpoints and dirty segments]\nSigned-off-by: Koji Sato \u003csato.koji@lab.ntt.co.jp\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "29619809727a4e524e26dbd7bfdc93ff7f50aa74",
      "tree": "2c765d9a5d122bc66c5d01079eeadae4edf61a24",
      "parents": [
        "43bfb45ed4feace26157778889be55e4046b7a4b"
      ],
      "author": {
        "name": "Koji Sato",
        "email": "sato.koji@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:31 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:14 2009 -0700"
      },
      "message": "nilfs2: checkpoint file\n\nThis adds a meta data file which holds checkpoint entries in its data\nblocks.\n\nSigned-off-by: Koji Sato \u003csato.koji@lab.ntt.co.jp\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "43bfb45ed4feace26157778889be55e4046b7a4b",
      "tree": "248958c79a8ed0ff5057c8aeffb1ebd39a6abbcf",
      "parents": [
        "a17564f58b11476c011d623fa1f268602a81c27c"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:30 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:14 2009 -0700"
      },
      "message": "nilfs2: inode map file\n\nThis adds a meta data file which stores on-disk inodes in its data blocks.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Yoshiji Amagai \u003camagai.yoshiji@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a17564f58b11476c011d623fa1f268602a81c27c",
      "tree": "c0122f0db61a20783ac32121dc549b1a17d0e4e5",
      "parents": [
        "5442680fd23abc01f29af585cc1a2f793bd74565"
      ],
      "author": {
        "name": "Koji Sato",
        "email": "sato.koji@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:30 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:14 2009 -0700"
      },
      "message": "nilfs2: disk address translator\n\nThis adds the disk address translation file (DAT) whose primary function\nis to convert virtual disk block numbers to actual disk block numbers.\n\nThe virtual block numbers of NILFS are associated with checkpoint\ngeneration numbers, and this file also provides functions to manage the\nlifetime information of each virtual block number.\n\nSigned-off-by: Koji Sato \u003csato.koji@lab.ntt.co.jp\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5442680fd23abc01f29af585cc1a2f793bd74565",
      "tree": "ecc3231149c4f0d422443cab2f4df60ba3a3ca03",
      "parents": [
        "5eb563f5f299a2ed488d9eb52acede45ccb14c7b"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:29 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:13 2009 -0700"
      },
      "message": "nilfs2: persistent object allocator\n\nThis adds common functions to allocate or deallocate entries with bitmaps\non a meta data file.  This feature is used by the DAT and ifile.\n\nSigned-off-by: Koji Sato \u003csato.koji@lab.ntt.co.jp\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Yoshiji Amagai \u003camagai.yoshiji@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5eb563f5f299a2ed488d9eb52acede45ccb14c7b",
      "tree": "965243b138a7beb5f8e2700160903a051e0510de",
      "parents": [
        "0bd49f9446130a6a3914eb07b54db489e3222b34"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:28 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:13 2009 -0700"
      },
      "message": "nilfs2: meta data file\n\nThis adds the meta data file, which serves common buffer functions to the\nDAT, sufile, cpfile, ifile, and so forth.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0bd49f9446130a6a3914eb07b54db489e3222b34",
      "tree": "5122a227c9cb1cfe92a74c53baf1bb7ca7053435",
      "parents": [
        "a60be987d45dd510aeb54389526f9957cfab106c"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:27 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:13 2009 -0700"
      },
      "message": "nilfs2: buffer and page operations\n\nThis adds common routines for buffer/page operations used in B-tree\nnode caches, meta data files, or segment constructor (log writer).\n\nNILFS uses copy functions for buffers and pages due to the following\nreasons:\n\n 1) Relocation required for COW\n    Since NILFS changes address of on-disk blocks, moving buffers\n    in page cache is needed for the buffers which are not addressed\n    by a file offset.  If buffer size is smaller than page size,\n    this involves partial copy of pages.\n\n 2) Freezing mmapped pages\n    NILFS calculates checksums for each log to ensure its validity.\n    If page data changes after the checksum calculation, this validity\n    check will not work correctly.  To avoid this failure for mmaped\n    pages, NILFS freezes their data by copying.\n\n 3) Copy-on-write for DAT pages\n    NILFS makes clones of DAT page caches in a copy-on-write manner\n    during GC processes, and this ensures atomicity and consistency\n    of the DAT in the transient state.\n\nIn addition, NILFS uses two obsolete functions, nilfs_mark_buffer_dirty()\nand nilfs_clear_page_dirty() respectively.\n\n* nilfs_mark_buffer_dirty() was required to avoid NULL pointer\n  dereference faults:\n\n  Since the page cache of B-tree node pages or data page cache of pseudo\n  inodes does not have a valid mapping-\u003ehost, calling mark_buffer_dirty()\n  for their buffers causes the fault; it calls __mark_inode_dirty(NULL)\n  through __set_page_dirty().\n\n* nilfs_clear_page_dirty() was needed in the two cases:\n\n 1) For B-tree node pages and data pages of the dat/gcdat, NILFS2 clears\n    page dirty flags when it copies back pages from the cloned cache\n    (gcdat-\u003e{i_mapping,i_btnode_cache}) to its original cache\n    (dat-\u003e{i_mapping,i_btnode_cache}).\n\n 2) Some B-tree operations like insertion or deletion may dispose buffers\n    in dirty state, and this needs to cancel the dirty state of their\n    pages.  clear_page_dirty_for_io() caused faults because it does not\n    clear the dirty tag on the page cache.\n\nSigned-off-by: Seiji Kihara \u003ckihara.seiji@lab.ntt.co.jp\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a60be987d45dd510aeb54389526f9957cfab106c",
      "tree": "ffe680785f1f7d4e4096cd211e37bcfeaccafc63",
      "parents": [
        "36a580eb489f54d81a0534974962e732a314b999"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:25 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:13 2009 -0700"
      },
      "message": "nilfs2: B-tree node cache\n\nThis adds routines for B-tree node buffers.\n\nSigned-off-by: Seiji Kihara \u003ckihara.seiji@lab.ntt.co.jp\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "36a580eb489f54d81a0534974962e732a314b999",
      "tree": "bf28d0b13c4187b11c58822bc49a87453d83f877",
      "parents": [
        "17c76b0104e4a6513983777e1a17e0297a12b0c4"
      ],
      "author": {
        "name": "Koji Sato",
        "email": "sato.koji@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:25 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:13 2009 -0700"
      },
      "message": "nilfs2: direct block mapping\n\nThis adds block mappings using direct pointers which are stored in the\ni_bmap array of inode.\n\nSigned-off-by: Koji Sato \u003csato.koji@lab.ntt.co.jp\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "17c76b0104e4a6513983777e1a17e0297a12b0c4",
      "tree": "49b145378f5004401f71a7aa8d8cb3f149e77f0f",
      "parents": [
        "bdb265eae08db578e7cf5739be16f389d495fc75"
      ],
      "author": {
        "name": "Koji Sato",
        "email": "sato.koji@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:24 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:13 2009 -0700"
      },
      "message": "nilfs2: B-tree based block mapping\n\nThis adds declarations and functions of NILFS2 B-tree.\n\nTwo variants are integrated in the NILFS2 B-tree.  The B-tree for the most\nfiles points to the child nodes or data blocks with virtual block\naddresses, whereas the B-tree of the DAT uses actual block addresses.\n\nSigned-off-by: Koji Sato \u003csato.koji@lab.ntt.co.jp\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bdb265eae08db578e7cf5739be16f389d495fc75",
      "tree": "34f3b37b067504b945e851ef2a8ead07347a27df",
      "parents": [
        "65b4643d3babeb203fa9571d12fd5e1bf74d27b0"
      ],
      "author": {
        "name": "Koji Sato",
        "email": "sato.koji@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:23 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:13 2009 -0700"
      },
      "message": "nilfs2: integrated block mapping\n\nThis adds structures and operations for the block mapping (bmap for\nshort).  NILFS2 uses direct mappings for short files or B-tree based\nmappings for longer files.\n\nEvery on-disk data block is held with inodes and managed through this\nblock mapping.  The nilfs_bmap structure and a set of functions here\nprovide this capability to the NILFS2 inode.\n\n[penberg@cs.helsinki.fi: remove a bunch of bmap wrapper macros]\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Koji Sato \u003csato.koji@lab.ntt.co.jp\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "65b4643d3babeb203fa9571d12fd5e1bf74d27b0",
      "tree": "b9371b765ca1f52c8c7ba046f7cffea92e2bc722",
      "parents": [
        "eed10e39b142eb4d284c8e4c751c0eaaa0bcd707"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:23 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:12 2009 -0700"
      },
      "message": "nilfs2: add inode and other major structures\n\nThis adds the following common structures of the NILFS2 file system.\n\n* nilfs_inode_info structure:\n  gives on-memory inode.\n\n* nilfs_sb_info structure:\n  keeps per-mount state and a special inode for the ifile.\n  This structure is attached to the super_block structure.\n\n* the_nilfs structure:\n  keeps shared state and locks among a read/write mount and snapshot\n  mounts.  This keeps special inodes for the sufile, cpfile, dat, and\n  another dat inode used during GC (gcdat).  This also has a hash table\n  of dummy inodes to cache disk blocks during GC (gcinodes).\n\n* nilfs_transaction_info structure:\n  keeps per task state while nilfs is writing logs or doing indivisible\n  inode or namespace operations.  This structure is used to identify\n  context during log making and store nest level of the lock which\n  ensures atomicity of file system operations.\n\nSigned-off-by: Koji Sato \u003csato.koji@lab.ntt.co.jp\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ]
}
