)]}'
{
  "log": [
    {
      "commit": "fdce895ea5dd4e24edf1f4d693827349a4e5b3b4",
      "tree": "77a1a4cd496ed8459813eddf68efe8b777c3c058",
      "parents": [
        "154ac5a83014cd6ea72e4ac5018bf8c10ee9a79e"
      ],
      "author": {
        "name": "Li Hong",
        "email": "lihong.hi@gmail.com",
        "time": "Sat Apr 10 23:25:39 2010 +0800"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon May 10 11:32:31 2010 +0900"
      },
      "message": "nilfs2: change sc_timer from a pointer to an embedded one in struct nilfs_sc_info\n\nIn nilfs_segctor_thread(), timer is a local variable allocated on stack. Its\naddress can\u0027t be set to sci-\u003esc_timer and passed in several procedures.\n\nIt works now by chance, just because other procedures are called by\nnilfs_segctor_thread() directly or indirectly and the stack hasn\u0027t been\ndeallocated yet.\n\nSigned-off-by: Li Hong \u003clihong.hi@gmail.com\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "41c88bd74d372db5102996a4ea6167a725c24b5e",
      "tree": "98b8e208d41f7760458e82569e297843415bbe7d",
      "parents": [
        "aaed1d5bfac459ead9aaad324e7fe3326250f50a"
      ],
      "author": {
        "name": "Li Hong",
        "email": "lihong.hi@gmail.com",
        "time": "Tue Apr 06 00:54:11 2010 +0800"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon May 10 11:32:30 2010 +0900"
      },
      "message": "nilfs2: cleanup multi kmem_cache_{create,destroy} code\n\nThis cleanup patch gives several improvements:\n\n - Moving all kmem_cache_{create_destroy} calls into one place, which removes\n some small function calls, cleans up error check code and clarify the logic.\n\n - Mark all initial code in __init section.\n\n - Remove some very obvious comments.\n\n - Adjust some declarations.\n\n - Fix some space-tab issues.\n\nSigned-off-by: Li Hong \u003clihong.hi@gmail.com\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "1e2b68bf285dce604388fcb6f85b7e612156db17",
      "tree": "5cf59247e8171edceb77a521fd2cdf865f0ec9d2",
      "parents": [
        "277a6a34175dcb0ee98dceee619e0e3190347a25"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue Mar 23 01:15:31 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon May 10 11:32:30 2010 +0900"
      },
      "message": "nilfs2: move pointer to super root block into logs\n\nThis moves a pointer to buffer storing super root block to each log\nbuffer from nilfs_sc_info struct for simplicity.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "55480a06e9ee8d05d0e580bf46611df489653c76",
      "tree": "5e84360a299051720943a3ce0a2713f4165d1ca0",
      "parents": [
        "7a65004bbaa6a21a0438aac9c64814e46084dc3f"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Mar 14 03:55:56 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Mar 14 10:29:51 2010 +0900"
      },
      "message": "nilfs2: remove spaces before tabs\n\nThis kills the following checkpatch warnings:\n\n WARNING: please, no space before tabs\n #74: FILE: segment.h:74:\n +^Iunsigned ^I^Iflags;$\n\n WARNING: please, no space before tabs\n #35: FILE: segbuf.c:35:\n +^Iint ^I^I^Istart, end; /* The region to be submitted */$\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "7a65004bbaa6a21a0438aac9c64814e46084dc3f",
      "tree": "3153527bf645a5ee5865f9059b08282ec00e99f5",
      "parents": [
        "1621562b6ac55aa69239895d90276577547a5f62"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Mar 14 03:32:40 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Mar 14 10:29:51 2010 +0900"
      },
      "message": "nilfs2: fix various typos in comments\n\nThis fixes various typos I found in comments of nilfs2.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "dcd76186955e2b595c378dbe5b9bb6c8c5374b10",
      "tree": "96efa3758e289ddaf5279b8c77f7f9e2f8a3a142",
      "parents": [
        "086d1764b22bb2d9d79bb8e2198927acf028d732"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue Jan 26 15:20:15 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Feb 13 12:26:03 2010 +0900"
      },
      "message": "nilfs2: get rid of nilfs_segctor_req struct\n\nThis will clean up nilfs_segctor_req struct and the obscure request\nargument passed among private methods of segment constructor.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "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": "654137dd46bc7e9f088a4a551a2b77a8541dfdb8",
      "tree": "2385a9871d1e8d21a5033597819fb5292cd0c0aa",
      "parents": [
        "071cb4b81987a28c7ac2702003cff3e61684a630"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun May 17 19:07:21 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Jun 10 23:41:09 2009 +0900"
      },
      "message": "nilfs2: remove header file for segment list operations\n\nThis will eliminate obsolete list operations of nilfs_segment_entry\nstructure which has been used to handle mutiple segment numbers.\n\nThe patch (\"nilfs2: remove list of freeing segments\") removed use of\nthe structure from the segment constructor code, and this patch\nsimplifies the remaining code by integrating it into recovery.c.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "071cb4b81987a28c7ac2702003cff3e61684a630",
      "tree": "41e2f5a6d0e12d4ccc49850992ce6bfee68dd00e",
      "parents": [
        "dda54f4b872512eba484c38631bd6ae5b5716f41"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat May 16 23:44:55 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Jun 10 23:41:09 2009 +0900"
      },
      "message": "nilfs2: eliminate removal list of segments\n\nThis will clean up the removal list of segments and the related\nfunctions from segment.c and ioctl.c, which have hurt code\nreadability.\n\nThis elimination is applied by using nilfs_sufile_updatev() previously\nintroduced in the patch (\"nilfs2: add sufile function that can modify\nmultiple segment usages\").\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": "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": "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"
    }
  ]
}
