)]}'
{
  "log": [
    {
      "commit": "c083234f1592ef3fad3d8083663c5e4a357ec77c",
      "tree": "8c90897b1fa11920a4edbf043aa59a5123eaa2cb",
      "parents": [
        "5399dd1fc8f5e812db931225ef5f67d89f3b1a56"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Nov 08 12:09:24 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Nov 08 19:04:25 2009 +0900"
      },
      "message": "nilfs2: fix missing cleanup of gc cache on error cases\n\nThis fixes an -rc1 regression brought by the commit:\n1cf58fa840472ec7df6bf2312885949ebb308853 (\"nilfs2: shorten freeze\nperiod due to GC in write operation v3\").\n\nAlthough the patch moved out a function call of\nnilfs_ioctl_move_blocks() to nilfs_ioctl_clean_segments() from\nnilfs_ioctl_prepare_clean_segments(), it didn\u0027t move corresponding\ncleanup job needed for the error case.\n\nThis will move the missing cleanup job to the destination function.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nAcked-by: Jiro SEKIBA \u003cjir@unicus.jp\u003e\n"
    },
    {
      "commit": "5399dd1fc8f5e812db931225ef5f67d89f3b1a56",
      "tree": "cb75ad2f91fb2ec6ad70f3c1a055090418fc643f",
      "parents": [
        "b419148e567728f6af0c3b01965c1cc141e3e13a"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Nov 07 18:45:16 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Nov 08 19:01:35 2009 +0900"
      },
      "message": "nilfs2: fix kernel oops in error case of nilfs_ioctl_move_blocks\n\nThis fixes a kernel oops reported by Markus Trippelsdorf in the email\ntitled \"[NILFS users] kernel Oops while running nilfs_cleanerd\".\n\nThe oops was caused by a bug of error path in\nnilfs_ioctl_move_blocks() function, which was inlined in\nnilfs_ioctl_clean_segments().\n\nnilfs_ioctl_move_blocks checks duplication of blocks which will be\nmoved in garbage collection.  But, the check should have be done\nwithin nilfs_ioctl_move_inode_block() to prevent list corruption among\nbuffers storing the target blocks.\n\nTo fix the kernel oops, this moves forward the duplication check\nbefore the list insertion.\n\nI also tested this for stable trees [2.6.30, 2.6.31].\n\nReported-by: Markus Trippelsdorf \u003cmarkus@trippelsdorf.de\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nCc: stable \u003cstable@kernel.org\u003e\n"
    },
    {
      "commit": "05b4358ad564d7a6a51b3717afe771d36711e9c4",
      "tree": "ad8473aadd4a8f8e25aa40bf1bef8f16f7490d83",
      "parents": [
        "aeda7f6343e6375a832e52ff5ed389c115023ca5"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Sep 14 01:20:35 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue Nov 03 12:32:03 2009 +0900"
      },
      "message": "nilfs2: add zero-fill for new btree node buffers\n\nAdds missing initialization of newly allocated b-tree node buffers.\nThis avoids garbage data to be mixed in b-tree node blocks.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "aeda7f6343e6375a832e52ff5ed389c115023ca5",
      "tree": "2543be730f7fff44e23fbe302108afa0093cc643",
      "parents": [
        "b1e19e5601277845b4f17ecd7c9ba04f73ee11aa"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Nov 02 15:08:13 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue Nov 03 12:32:03 2009 +0900"
      },
      "message": "nilfs2: fix irregular checkpoint creation due to data flush\n\nWhen nilfs flushes out dirty data to reduce memory pressure, creation\nof checkpoints is wrongly postponed.  This bug causes irregular\ncheckpoint creation especially in small footprint systems.\n\nTo correct this issue, a timer for the checkpoint creation has to be\ncontinued if a log writer does not create a checkpoint.\n\nThis will do the correction.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "b1e19e5601277845b4f17ecd7c9ba04f73ee11aa",
      "tree": "bdc23c9fcc4bfe58787b63e9c739c0692b79dc4d",
      "parents": [
        "1836d95928a0f41ada0cbb2a6c4e46b027db9491"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue Nov 03 00:25:53 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue Nov 03 12:31:36 2009 +0900"
      },
      "message": "nilfs2: fix dirty page accounting leak causing hang at write\n\nBruno Prémont and Dunphy, Bill noticed me that NILFS will certainly\nhang on ARM-based targets.\n\nI found this was caused by an underflow of dirty pages counter.  A\nb-tree cache routine was marking page dirty without adjusting page\naccount information.\n\nThis fixes the dirty page accounting leak and resolves the hang on\narm-based targets.\n\nReported-by: Bruno Prémont \u003cbonbons@linux-vserver.org\u003e\nReported-by: Dunphy, Bill \u003cWDunphy@tandbergdata.com\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nTested-by: Bruno Prémont \u003cbonbons@linux-vserver.org\u003e\nCc: stable \u003cstable@kernel.org\u003e\n"
    },
    {
      "commit": "828c09509b9695271bcbdc53e9fc9a6a737148d2",
      "tree": "072ffad6f02db7bf4095e07e2b90247cfa042998",
      "parents": [
        "1c4115e595dec42aa0e81ba47ef46e35b34ed428"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Thu Oct 01 15:43:56 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 01 16:11:11 2009 -0700"
      },
      "message": "const: constify remaining file_operations\n\n[akpm@linux-foundation.org: fix KVM]\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nAcked-by: Mike Frysinger \u003cvapier@gentoo.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3cc811bffdf35ebaf1467fbec71a49b57800fc74",
      "tree": "b00abe8ad3687faeacf9b543492f0b91c7abc600",
      "parents": [
        "1f28fcd925b2b3157411bbd08f0024b55b70d8dd"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Sep 28 13:02:46 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue Sep 29 20:32:13 2009 +0900"
      },
      "message": "nilfs2: fix missing initialization of i_dir_start_lookup member\n\nThe i_dir_start_lookup field in nilfs_inode_info objects should be\ncleared when the objects are allocated, but the the initialization was\nmissing in case of reading from disk.  This adds the initialization.\n\nSince the variable just gives a start page on directory lookups, the\nbug was nonfatal until now.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "1f28fcd925b2b3157411bbd08f0024b55b70d8dd",
      "tree": "339976516f9d8c25f4efb3ba8bbffcc395d58c83",
      "parents": [
        "17d857be649a21ca90008c6dc425d849fa83db5c"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Sep 28 01:46:11 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue Sep 29 20:12:56 2009 +0900"
      },
      "message": "nilfs2: fix missing zero-fill initialization of btree node cache\n\nThis will fix file system corruption which infrequently happens after\nmount.  The problem was reported from users with the title \"[NILFS\nusers] Fail to mount NILFS.\" (Message-ID:\n\u003c200908211918.34720.yuri@itinteg.net\u003e), and so forth.  I\u0027ve also\nexperienced the corruption multiple times on kernel 2.6.30 and 2.6.31.\n\nThe problem turned out to be caused due to discordance between\nmapping-\u003enrpages of a btree node cache and the actual number of pages\nhung on the cache; if the mapping-\u003enrpages becomes zero even as it has\npages, truncate_inode_pages() returns without doing anything.  Usually\nthis is harmless except it may cause page leak, but garbage collection\nfairly infrequently sees a stale page remained in the btree node cache\nof DAT (i.e. disk address translation file of nilfs), and induces the\ncorruption.\n\nI identified a missing initialization in btree node caches was the\nroot cause.  This corrects the bug.\n\nI\u0027ve tested this for kernel 2.6.30 and 2.6.31.\n\nReported-by: Yuri Chislov \u003cyuri@itinteg.net\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nCc: stable \u003cstable@kernel.org\u003e\n"
    },
    {
      "commit": "f0f37e2f77731b3473fa6bd5ee53255d9a9cdb40",
      "tree": "3c26d3ed1a453156e9c208ccb5567a8954dba064",
      "parents": [
        "6f5071020d5ec89b5d095aa488db604adb921aec"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Sun Sep 27 22:29:37 2009 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Sep 27 11:39:25 2009 -0700"
      },
      "message": "const: mark struct vm_struct_operations\n\n* mark struct vm_area_struct::vm_ops as const\n* mark vm_ops in AGP code\n\nBut leave TTM code alone, something is fishy there with global vm_ops\nbeing used.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6e1d5dcc2bbbe71dbf010c747e15739bef6b7218",
      "tree": "2edb0f6cc65acbae95e42df1bc763ec048e6c2e0",
      "parents": [
        "7f09410bbc4306f592cfb43812389ea1c7905a20"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Sep 21 17:01:11 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:24 2009 -0700"
      },
      "message": "const: mark remaining inode_operations as const\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7f09410bbc4306f592cfb43812389ea1c7905a20",
      "tree": "18f179435f70c4ec9231883501062d5ea0357af5",
      "parents": [
        "ac4cfdd6d141c319a7af8655f750ed504c187a74"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Sep 21 17:01:10 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:24 2009 -0700"
      },
      "message": "const: mark remaining address_space_operations const\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ac4cfdd6d141c319a7af8655f750ed504c187a74",
      "tree": "2143509e0d585667203892a5036676e955273e52",
      "parents": [
        "b87221de6a4934eda856475a0065688d12973a04"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Sep 21 17:01:10 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:24 2009 -0700"
      },
      "message": "const: mark remaining export_operations const\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b87221de6a4934eda856475a0065688d12973a04",
      "tree": "6bcf0628e106c4833538f4c23d710fbbe3d7609a",
      "parents": [
        "0d54b217a247f39605361f867fefbb9e099a5432"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Sep 21 17:01:09 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:24 2009 -0700"
      },
      "message": "const: mark remaining super_operations const\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2c96ce9f2084c1e04d02883e622f74a537a63aea",
      "tree": "cad3c6773d2886103b05f7b090b3385d23076a03",
      "parents": [
        "0cb583fd2862f19ea88b02eb307d11c09e51e2f8"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Sep 15 09:43:56 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Sep 16 15:16:18 2009 +0200"
      },
      "message": "fs: remove bdev-\u003ebd_inode_backing_dev_info\n\nIt has been unused since it was introduced in:\n\ncommit 520808bf20e90fdbdb320264ba7dd5cf9d47dcac\nAuthor: Andrew Morton \u003cakpm@osdl.org\u003e\nDate:   Fri May 21 00:46:17 2004 -0700\n\n    [PATCH] block device layer: separate backing_dev_info infrastructure\n\nSo lets just kill it.\n\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "41f4db0f48c72db3a93cc1a0b18368d9a9aca700",
      "tree": "1cf648ef55b9cfa28012268ab6b0b5c3477534f1",
      "parents": [
        "0f3fe33b398abbecfcf9f08c16959d1a9a14a49a"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Aug 08 16:09:46 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Sep 14 18:27:16 2009 +0900"
      },
      "message": "fs/Kconfig: move nilfs2 outside misc filesystems\n\nSome people asked me questions like the following:\n\nOn Wed, 15 Jul 2009 13:11:21 +0200, Leon Woestenberg wrote:\n\u003e just wondering, any reasons why NILFS2 is one of the miscellaneous\n\u003e filesystems and, for example, btrfs, is not in Kconfig?\n\nActually, nilfs is NOT a filesystem came from other operating systems,\nbut a filesystem created purely for Linux.  Nor is it a flash\nfilesystem but that for generic block devices.\n\nSo, this moves nilfs outside the misc category as I responded in LKML\n\"Re: Why does NILFS2 hide under Miscellaneous filesystems?\"\n(Message-Id: \u003c20090716.002526.93465395.ryusuke@osrg.net\u003e).\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "0f3fe33b398abbecfcf9f08c16959d1a9a14a49a",
      "tree": "a60a3e8a3b90b173a58a2ba9d86e1363598bd279",
      "parents": [
        "2e0c2c73923fed27337039ddfd69985e6c4b91fe"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Aug 15 02:29:28 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Sep 14 18:27:16 2009 +0900"
      },
      "message": "nilfs2: convert nilfs_bmap_lookup to an inline function\n\nThe nilfs_bmap_lookup() is now a wrapper function of\nnilfs_bmap_lookup_at_level().\n\nThis moves the nilfs_bmap_lookup() to a header file converting it to\nan inline function and gives an opportunity for optimization.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "2e0c2c73923fed27337039ddfd69985e6c4b91fe",
      "tree": "a6c4a318776f5804f53994acad7254c7404418f0",
      "parents": [
        "bd8169efae8bdd292675c386010f6b35f0771057"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Aug 15 15:34:33 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Sep 14 18:27:16 2009 +0900"
      },
      "message": "nilfs2: allow btree code to directly call dat operations\n\nThe current btree code is written so that btree functions call dat\noperations via wrapper functions in bmap.c when they allocate, free,\nor modify virtual block addresses.\n\nThis abstraction requires additional function calls and causes\nfrequent call of nilfs_bmap_get_dat() function since it is used in the\nevery wrapper function.\n\nThis removes the wrapper functions and makes them available from\nbtree.c and direct.c, which will increase the opportunity of\ncompiler optimization.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "bd8169efae8bdd292675c386010f6b35f0771057",
      "tree": "aea73bd670910874eb78fd1f2c8ce8b2a494dfcb",
      "parents": [
        "7a102b09232be1ad7c180dfd1f46c7aa95dff1e0"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Aug 15 17:22:13 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Sep 14 18:27:15 2009 +0900"
      },
      "message": "nilfs2: add update functions of virtual block address to dat\n\nThis is a preparation for the successive cleanup (\"nilfs2: allow btree\nto directly call dat operations\").\n\nThis adds functions bundling a few operations to change an entry of\nvirtual block address on the dat file.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "7a102b09232be1ad7c180dfd1f46c7aa95dff1e0",
      "tree": "81691c3a48e3108db1a5341c8dcf4531ac404cac",
      "parents": [
        "3218929dbd25245e0f601df1e359a3ed3f7fb03b"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Aug 15 13:47:09 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Sep 14 18:27:15 2009 +0900"
      },
      "message": "nilfs2: remove individual gfp constants for each metadata file\n\nThis gets rid of NILFS_CPFILE_GFP, NILFS_SUFILE_GFP, NILFS_DAT_GFP,\nand NILFS_IFILE_GFP.  All of these constants refer to NILFS_MDT_GFP,\nand can be removed.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "3218929dbd25245e0f601df1e359a3ed3f7fb03b",
      "tree": "4f3f0f21b9f2e6eaa255315c659c1168ad3b5c96",
      "parents": [
        "6d28f7ea43856449ed2f344cb209af3ba1c6b757"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Aug 15 01:54:59 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Sep 14 18:27:15 2009 +0900"
      },
      "message": "nilfs2: stop zero-fill of btree path just before free it\n\nThe btree path object is cleared just before it is freed.\n\nThis will remove the code doing the unnecessary clear operation.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "6d28f7ea43856449ed2f344cb209af3ba1c6b757",
      "tree": "e41a19062d0956f698eb6ec7deccb6d8ebabfced",
      "parents": [
        "9ead98637300dc7caefd904bbe1e092bf4d21f87"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Aug 15 01:14:10 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Sep 14 18:27:15 2009 +0900"
      },
      "message": "nilfs2: remove unused btree argument from btree functions\n\nEven though many btree functions take a btree object as their first\nargument, most of them are not used in their functions.\n\nThis sticky use of the btree argument is hurting code readability and\ngiving the possibility of inefficient code generation.\n\nSo, this removes the unnecessary btree arguments.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "9ead98637300dc7caefd904bbe1e092bf4d21f87",
      "tree": "e90ef82f107ae807cf5b1ef6f8e92afe7c7a8f70",
      "parents": [
        "1cf58fa840472ec7df6bf2312885949ebb308853"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Aug 14 23:39:45 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Sep 14 18:27:15 2009 +0900"
      },
      "message": "nilfs2: remove nilfs_dat_abort_start and nilfs_dat_abort_free\n\nThese functions are not called from any functions.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "1cf58fa840472ec7df6bf2312885949ebb308853",
      "tree": "2743a6ab63331703e6c9abbb714e2bf13744d009",
      "parents": [
        "43be0ec0387a5ccce2e064cb78502e7b2b4dd590"
      ],
      "author": {
        "name": "Jiro SEKIBA",
        "email": "jir@unicus.jp",
        "time": "Thu Sep 03 22:24:17 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Sep 14 18:27:15 2009 +0900"
      },
      "message": "nilfs2: shorten freeze period due to GC in write operation v3\n\nThis is a re-revised patch to shorten freeze period.\nThis version include a fix of the bug Konishi-san mentioned last time.\n\nWhen GC is runnning, GC moves live block to difference segments.\nCopying live blocks into memory is done in a transaction,\nhowever it is not necessarily to be in the transaction.\nThis patch will get the nilfs_ioctl_move_blocks() out from\ntransaction lock and put it before the transaction.\n\nI ran sysbench fileio test against nilfs partition.\nI copied some DVD/CD images and created snapshot to create live blocks\nbefore starting the benchmark.\n\nFollowings are summary of rc8 and rc8 w/ the patch of per-request\nstatistics, which is min/max and avg.  I ran each test three times and\nbellow is average of those numers.\n\nAccording to this benchmark result, average time is slightly degrated.\nHowever, worstcase (max) result is significantly improved.\nThis can address a few seconds write freeze.\n\n- random write per-request performance of rc8\n min   0.843ms\n max 680.406ms\n avg   3.050ms\n- random write per-request performance of rc8 w/ this patch\n min   0.843ms -\u003e 100.00%\n max 380.490ms -\u003e  55.90%\n avg   3.233ms -\u003e 106.00%\n\n- sequential write per-request performance of rc8\n min   0.736ms\n max 774.343ms\n avg   2.883ms\n- sequential write per-request performance of rc8 w/ this patch\n min   0.720ms -\u003e  97.80%\n max  644.280ms-\u003e  83.20%\n avg   3.130ms -\u003e 108.50%\n\n-----8\u003c-----8\u003c-----nilfs_cleanerd.conf-----8\u003c-----8\u003c-----\nprotection_period       150\nselection_policy        timestamp       # timestamp in ascend order\nnsegments_per_clean     2\ncleaning_interval       2\nretry_interval          60\nuse_mmap\nlog_priority            info\n-----8\u003c-----8\u003c-----nilfs_cleanerd.conf-----8\u003c-----8\u003c-----\n\nSigned-off-by: Jiro SEKIBA \u003cjir@unicus.jp\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "43be0ec0387a5ccce2e064cb78502e7b2b4dd590",
      "tree": "e412246fce3f999b46b960ef416f1f10653ca895",
      "parents": [
        "a4f0b9c5b4ae83636dafde8f3a0e04b5e411a0f3"
      ],
      "author": {
        "name": "Zhu Yanhai",
        "email": "zhu.yanhai@gmail.com",
        "time": "Wed Aug 12 14:17:59 2009 +0800"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Sep 14 18:27:14 2009 +0900"
      },
      "message": "nilfs2: add more check routines in mount process\n\nnilfs2: Add more safeguard routines and protections in mount process,\nwhich also makes nilfs2 report consistency error messages when\ncheckpoint number is invalid.\n\nSigned-off-by: Zhu Yanhai \u003czhu.yanhai@gmail.com\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "a4f0b9c5b4ae83636dafde8f3a0e04b5e411a0f3",
      "tree": "885111c7beec6e69680768c7fb1a8b22d53cd175",
      "parents": [
        "c1b353f04a42f1b531be920149b85343d56a6b3b"
      ],
      "author": {
        "name": "Zhang Qiang",
        "email": "zhangqiang.buaa@gmail.com",
        "time": "Sun Aug 09 19:13:10 2009 +0800"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Sep 14 18:27:14 2009 +0900"
      },
      "message": "nilfs2: An unassigned variable is assigned to a never used structure member\n\nnilfs2: In procedure \u0027nilfs_get_sb()\u0027, when a nilfs filesysttem is\nmounted for the first time, local variable \u0027nilfs-\u003ens_last_cno\u0027 is\nused before loading the latest checkpoint number from disk (in\n\u0027nilfs_fill_super\u0027). \u0027nilfs-\u003ens_last_cno\u0027 is assigned to \u0027sd.cno\u0027, but\n\u0027sd.cno\u0027 has never been used in the procedure.\n\nSigned-off-by: Zhang Qiang \u003czhangqiang.buaa@gmail.com\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "c1b353f04a42f1b531be920149b85343d56a6b3b",
      "tree": "40d81fd322b8ed70beba950ab47dbd0b90487936",
      "parents": [
        "1dfa27105a6cf4171c439fd40a004a0a17838115"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Jun 19 15:25:42 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Sep 14 18:27:14 2009 +0900"
      },
      "message": "nilfs2: use GFP_NOIO for bio_alloc instead of GFP_NOWAIT\n\nAlberto Bertogli advised me about bio_alloc() use in nilfs:\nOn Sat, 13 Jun 2009 22:52:40 -0300, Alberto Bertogli wrote:\n\u003e By the way, those bio_alloc()s are using GFP_NOWAIT but it looks\n\u003e like they could use at least GFP_NOIO or GFP_NOFS, since the caller\n\u003e can (and sometimes do) sleep. The only caller is nilfs_submit_bh(),\n\u003e which calls nilfs_submit_seg_bio() which can sleep calling\n\u003e wait_for_completion().\n\nThis takes in the comment and replaces the use of GFP_NOWAIT flag with\nGFP_NOIO.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "1dfa27105a6cf4171c439fd40a004a0a17838115",
      "tree": "7d348398a9e623324ca86eafd050b8c12abf3cea",
      "parents": [
        "79efdd94111f30c373fce05e4e5822d8ff671c2a"
      ],
      "author": {
        "name": "Jiro SEKIBA",
        "email": "jir@unicus.jp",
        "time": "Thu Jul 23 01:33:49 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Sep 14 18:27:14 2009 +0900"
      },
      "message": "nilfs2: stop using periodic write_super callback\n\nThis removes nilfs_write_super and commit super block in nilfs\ninternal thread, instead of periodic write_super callback.\n\nVFS layer calls -\u003ewrite_super callback periodically.  However,\nit looks like that calling back is ommited when disk I/O is busy.\nAnd when cleanerd (nilfs GC) is runnig, disk I/O tend to be busy thus\nnilfs superblock is not synchronized as nilfs designed.\n\nTo avoid it, syncing superblock by nilfs thread instead of pdflush.\n\nSigned-off-by: Jiro SEKIBA \u003cjir@unicus.jp\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "79efdd94111f30c373fce05e4e5822d8ff671c2a",
      "tree": "9d12c0e87146fb4fb63362f567e574d629a222a1",
      "parents": [
        "6233caa9d5b153c2190d6c1c35c1dd1010104fc1"
      ],
      "author": {
        "name": "Jiro SEKIBA",
        "email": "jir@unicus.jp",
        "time": "Thu Jul 23 01:26:34 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Sep 14 18:27:14 2009 +0900"
      },
      "message": "nilfs2: clean up nilfs_write_super\n\nSeparate conditions that check if syncing super block and alternative\nsuper block are required as inline functions to reuse the conditions.\n\nSigned-off-by: Jiro SEKIBA \u003cjir@unicus.jp\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "6233caa9d5b153c2190d6c1c35c1dd1010104fc1",
      "tree": "885fdeacf10bbbecebf94fc274bfd84ff28066f6",
      "parents": [
        "ec5d66abdb0caf8b753a138568f20770a3d64c8c"
      ],
      "author": {
        "name": "Jiro SEKIBA",
        "email": "jir@unicus.jp",
        "time": "Thu Jul 23 01:26:33 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Sep 14 18:27:14 2009 +0900"
      },
      "message": "nilfs2: fix disorder of nilfs_write_super in nilfs_sync_fs\n\nThis fixes disorder of nilfs_write_super in nilfs_sync_fs.  Commiting\nsuper block must be the end of the function so that every changes are\nreflected.\n\n-\u003esync_fs() is not called frequently so this makes nilfs_sync_fs call\nnilfs_commit_super instead of nilfs_write_super.\n\nSigned-off-by: Jiro SEKIBA \u003cjir@unicus.jp\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "ec5d66abdb0caf8b753a138568f20770a3d64c8c",
      "tree": "238dab276eab98a6aa0f560812e62adde759143a",
      "parents": [
        "b58a285ba40866e22e5876969a8f796a74311d9e"
      ],
      "author": {
        "name": "Jiro SEKIBA",
        "email": "jir@unicus.jp",
        "time": "Fri Jul 10 19:57:28 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Sep 14 18:27:13 2009 +0900"
      },
      "message": "nilfs2: remove redundant super block commit\n\nThis removes redundant super block commit.\n\nnilfs_write_super will call nilfs_commit_super to store super block\ninto block device.  However, nilfs_put_super will call\nnilfs_commit_super right after calling nilfs_write_super.  So calling\nnilfs_write_super in nilfs_put_super would be redundant.\n\nSigned-off-by: Jiro SEKIBA \u003cjir@unicus.jp\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "b58a285ba40866e22e5876969a8f796a74311d9e",
      "tree": "9a667fdb99c0429c1871da626cb7589dec54adb7",
      "parents": [
        "143511046765504d2d1be633efd710f8d84e0407"
      ],
      "author": {
        "name": "Jiro SEKIBA",
        "email": "jir@unicus.jp",
        "time": "Wed Jun 24 20:06:34 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Sep 14 18:27:13 2009 +0900"
      },
      "message": "nilfs2: implement nilfs_show_options to display mount options in /proc/mounts\n\nThis is a patch to display mount options in procfs.\nMount options will show up in the /proc/mounts as other fs does.\n\n...\n/dev/sda6 /mnt nilfs2 ro,relatime,barrier\u003doff,cp\u003d3,order\u003dstrict 0 0\n...\n\nSigned-off-by: Jiro SEKIBA \u003cjir@unicus.jp\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "143511046765504d2d1be633efd710f8d84e0407",
      "tree": "bd9b8570880cfda44a9fad7a2567b977ab53f631",
      "parents": [
        "027d6404eb4327878454db72a006adfcb8001bb8"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Sep 06 17:49:49 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Sep 14 18:27:13 2009 +0900"
      },
      "message": "nilfs2: always lookup disk block address before reading metadata block\n\nThe current metadata file code skips disk address lookup for its data\nblock if the buffer has a mapped flag.\n\nThis has a potential risk to cause read request to be performed\nagainst the stale block address that GC moved, and it may lead to meta\ndata corruption.  The mapped flag is safe if the buffer has an\nuptodate flag, otherwise it may prevent necessary update of disk\naddress in the next read.\n\nThis will avoid the potential problem by ensuring disk address lookup\nbefore reading metadata block even for buffers with the mapped flag.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "027d6404eb4327878454db72a006adfcb8001bb8",
      "tree": "671c0d84ee5fd19ef85a3ff15d99a3519c1ed8bf",
      "parents": [
        "b5696e5e0dbfb6323277d51d67d230317c18aba9"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Aug 02 22:45:33 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Sep 14 18:27:13 2009 +0900"
      },
      "message": "nilfs2: use semaphore to protect pointer to a writable FS-instance\n\nwill get rid of nilfs_get_writer() and nilfs_put_writer() pair used to\nretain a writable FS-instance for a period.\n\nThe pair functions were making up some kind of recursive lock with a\nmutex, but they became overkill since the commit\n201913ed746c7724a40d33ee5a0b6a1fd2ef3193.  Furthermore, they caused\nthe following lockdep warning because the mutex can be released by a\ntask which didn\u0027t lock it:\n\n \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n [ BUG: bad unlock balance detected! ]\n -------------------------------------\n kswapd0/422 is trying to release lock (\u0026nilfs-\u003ens_writer_mutex) at:\n [\u003cc1359ff5\u003e] mutex_unlock+0x8/0xa\n but there are no more locks to release!\n\n other info that might help us debug this:\n no locks held by kswapd0/422.\n\n stack backtrace:\n Pid: 422, comm: kswapd0 Not tainted 2.6.31-rc4-nilfs #51\n Call Trace:\n  [\u003cc1358f97\u003e] ? printk+0xf/0x18\n  [\u003cc104fea7\u003e] print_unlock_inbalance_bug+0xcc/0xd7\n  [\u003cc11578de\u003e] ? prop_put_global+0x3/0x35\n  [\u003cc1050195\u003e] lock_release+0xed/0x1dc\n  [\u003cc1359ff5\u003e] ? mutex_unlock+0x8/0xa\n  [\u003cc1359f83\u003e] __mutex_unlock_slowpath+0xaf/0x119\n  [\u003cc1359ff5\u003e] mutex_unlock+0x8/0xa\n  [\u003cd1284add\u003e] nilfs_mdt_write_page+0xd8/0xe1 [nilfs2]\n  [\u003cc1092653\u003e] shrink_page_list+0x379/0x68d\n  [\u003cc109171b\u003e] ? isolate_pages_global+0xb4/0x18c\n  [\u003cc1092bd2\u003e] shrink_list+0x26b/0x54b\n  [\u003cc10930be\u003e] shrink_zone+0x20c/0x2a2\n  [\u003cc10936b7\u003e] kswapd+0x407/0x591\n  [\u003cc1091667\u003e] ? isolate_pages_global+0x0/0x18c\n  [\u003cc1040603\u003e] ? autoremove_wake_function+0x0/0x33\n  [\u003cc10932b0\u003e] ? kswapd+0x0/0x591\n  [\u003cc104033b\u003e] kthread+0x69/0x6e\n  [\u003cc10402d2\u003e] ? kthread+0x0/0x6e\n  [\u003cc1003e33\u003e] kernel_thread_helper+0x7/0x1a\n\nThis patch uses a reader/writer semaphore instead of the own lock and\nkills this warning.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "b5696e5e0dbfb6323277d51d67d230317c18aba9",
      "tree": "e4ee23f43dad9da26ee470b54ef1afcc41971ddc",
      "parents": [
        "1b2f5a641bca91966fd91dc489238068a0ab4b69"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Thu Sep 03 17:42:48 2009 +0200"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Sep 14 18:27:13 2009 +0900"
      },
      "message": "nilfs2: fix format string compile warning (ino_t)\n\nUnlike on most other architectures ino_t is an unsigned int on s390.\nSo add an explicit cast to avoid this compile warning:\n\nfs/nilfs2/recovery.c: In function \u0027recover_dsync_blocks\u0027:\nfs/nilfs2/recovery.c:555: warning: format \u0027%lu\u0027 expects type \u0027long unsigned int\u0027, but argument 3 has type \u0027ino_t\u0027\n\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "1b2f5a641bca91966fd91dc489238068a0ab4b69",
      "tree": "85ab9020e9628d43ffabc6ab354efcf6ea1ef3d2",
      "parents": [
        "74fca6a42863ffacaf7ba6f1936a9f228950f657"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Aug 22 19:10:07 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Sep 14 18:27:12 2009 +0900"
      },
      "message": "nilfs2: fix ignored error code in __nilfs_read_inode()\n\nThe __nilfs_read_inode function is ignoring the error code returned\nfrom nilfs_read_inode_common(), and wrongly delivers a success code\n(zero) when it escapes from the function in erroneous cases.\n\nThis adds the missing error handling.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "b1f1b8ce0a1d71cbc72f7540134d52b79bd8f5ac",
      "tree": "34261c597d93a43d9adf299e657b4fd5eebd43b7",
      "parents": [
        "326ba5010a5429a5a528b268b36a5900d4ab0eba"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Aug 30 04:21:41 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Aug 31 12:03:06 2009 +0900"
      },
      "message": "nilfs2: fix preempt count underflow in nilfs_btnode_prepare_change_key\n\nThis will fix the following preempt count underflow reported from\nusers with the title \"[NILFS users] segctord problem\" (Message-ID:\n\u003c949415.6494.qm@web58808.mail.re1.yahoo.com\u003e and Message-ID:\n\u003cdebc30fc0908270825v747c1734xa59126623cfd5b05@mail.gmail.com\u003e):\n\n WARNING: at kernel/sched.c:4890 sub_preempt_count+0x95/0xa0()\n Hardware name: HP Compaq 6530b (KR980UT#ABC)\n Modules linked in: bridge stp llc bnep rfcomm l2cap xfs exportfs nilfs2 cowloop loop vboxnetadp vboxnetflt vboxdrv btusb bluetooth uvcvideo videodev v4l1_compat v4l2_compat_ioctl32 arc4 snd_hda_codec_analog ecb iwlagn iwlcore rfkill lib80211 mac80211 snd_hda_intel snd_hda_codec ehci_hcd uhci_hcd usbcore snd_hwdep snd_pcm tg3 cfg80211 psmouse snd_timer joydev libphy ohci1394 snd_page_alloc hp_accel lis3lv02d ieee1394 led_class i915 drm i2c_algo_bit video backlight output i2c_core dm_crypt dm_mod\n Pid: 4197, comm: segctord Not tainted 2.6.30-gentoo-r4-64 #7\n Call Trace:\n  [\u003cffffffff8023fa05\u003e] ? sub_preempt_count+0x95/0xa0\n  [\u003cffffffff802470f8\u003e] warn_slowpath_common+0x78/0xd0\n  [\u003cffffffff8024715f\u003e] warn_slowpath_null+0xf/0x20\n  [\u003cffffffff8023fa05\u003e] sub_preempt_count+0x95/0xa0\n  [\u003cffffffffa04ce4db\u003e] nilfs_btnode_prepare_change_key+0x11b/0x190 [nilfs2]\n  [\u003cffffffffa04d01ad\u003e] nilfs_btree_assign_p+0x19d/0x1e0 [nilfs2]\n  [\u003cffffffffa04d10ad\u003e] nilfs_btree_assign+0xbd/0x130 [nilfs2]\n  [\u003cffffffffa04cead7\u003e] nilfs_bmap_assign+0x47/0x70 [nilfs2]\n  [\u003cffffffffa04d9bc6\u003e] nilfs_segctor_do_construct+0x956/0x20f0 [nilfs2]\n  [\u003cffffffff805ac8e2\u003e] ? _spin_unlock_irqrestore+0x12/0x40\n  [\u003cffffffff803c06e0\u003e] ? __up_write+0xe0/0x150\n  [\u003cffffffff80262959\u003e] ? up_write+0x9/0x10\n  [\u003cffffffffa04ce9f3\u003e] ? nilfs_bmap_test_and_clear_dirty+0x43/0x60 [nilfs2]\n  [\u003cffffffffa04cd627\u003e] ? nilfs_mdt_fetch_dirty+0x27/0x60 [nilfs2]\n  [\u003cffffffffa04db5fc\u003e] nilfs_segctor_construct+0x8c/0xd0 [nilfs2]\n  [\u003cffffffffa04dc3dc\u003e] nilfs_segctor_thread+0x15c/0x3a0 [nilfs2]\n  [\u003cffffffffa04dbe20\u003e] ? nilfs_construction_timeout+0x0/0x10 [nilfs2]\n  [\u003cffffffff80252633\u003e] ? add_timer+0x13/0x20\n  [\u003cffffffff802370da\u003e] ? __wake_up_common+0x5a/0x90\n  [\u003cffffffff8025e960\u003e] ? autoremove_wake_function+0x0/0x40\n  [\u003cffffffffa04dc280\u003e] ? nilfs_segctor_thread+0x0/0x3a0 [nilfs2]\n  [\u003cffffffffa04dc280\u003e] ? nilfs_segctor_thread+0x0/0x3a0 [nilfs2]\n  [\u003cffffffff8025e556\u003e] kthread+0x56/0x90\n  [\u003cffffffff8020cdea\u003e] child_rip+0xa/0x20\n  [\u003cffffffff8025e500\u003e] ? kthread+0x0/0x90\n  [\u003cffffffff8020cde0\u003e] ? child_rip+0x0/0x20\n\nThis problem was caused due to a missing radix_tree_preload() call in\nthe retry path of nilfs_btnode_prepare_change_key() function.\n\nReported-by: Eric A \u003ceric225125@yahoo.com\u003e\nReported-by: Jerome Poulin \u003cjeromepoulin@gmail.com\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nTested-by: Jerome Poulin \u003cjeromepoulin@gmail.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "a924586036833086b262a371b09d1266c23bb4d1",
      "tree": "d8fb67221f6614c00e9a645eb98e79f015ec81f2",
      "parents": [
        "1154ecbd2f8298ef75609f5f8ed5aca96be599fb"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Aug 19 00:29:43 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Aug 19 02:10:13 2009 +0900"
      },
      "message": "nilfs2: fix oopses with doubly mounted snapshots\n\nwill fix kernel oopses like the following:\n\n # mount -t nilfs2 -r -o cp\u003d20 /dev/sdb1 /test1\n # mount -t nilfs2 -r -o cp\u003d20 /dev/sdb1 /test2\n # umount /test1\n # umount /test2\n\nBUG: sleeping function called from invalid context at arch/x86/mm/fault.c:1069\nin_atomic(): 0, irqs_disabled(): 1, pid: 3886, name: umount.nilfs2\n1 lock held by umount.nilfs2/3886:\n #0:  (\u0026type-\u003es_umount_key#31){+.+...}, at: [\u003cc10b398a\u003e] deactivate_super+0x52/0x6c\nirq event stamp: 1219\nhardirqs last  enabled at (1219): [\u003cc135c774\u003e] __mutex_unlock_slowpath+0xf8/0x119\nhardirqs last disabled at (1218): [\u003cc135c6d5\u003e] __mutex_unlock_slowpath+0x59/0x119\nsoftirqs last  enabled at (1214): [\u003cc1033316\u003e] __do_softirq+0x1a5/0x1ad\nsoftirqs last disabled at (1205): [\u003cc1033354\u003e] do_softirq+0x36/0x5a\nPid: 3886, comm: umount.nilfs2 Not tainted 2.6.31-rc6 #55\nCall Trace:\n [\u003cc1023549\u003e] __might_sleep+0x107/0x10e\n [\u003cc13603c0\u003e] do_page_fault+0x246/0x397\n [\u003cc136017a\u003e] ? do_page_fault+0x0/0x397\n [\u003cc135e753\u003e] error_code+0x6b/0x70\n [\u003cc136017a\u003e] ? do_page_fault+0x0/0x397\n [\u003cc104f805\u003e] ? __lock_acquire+0x91/0x12fd\n [\u003cc1050a62\u003e] ? __lock_acquire+0x12ee/0x12fd\n [\u003cc1050a62\u003e] ? __lock_acquire+0x12ee/0x12fd\n [\u003cc1050b2b\u003e] lock_acquire+0xba/0xdd\n [\u003cd0d17d3f\u003e] ? nilfs_detach_segment_constructor+0x2f/0x2fa [nilfs2]\n [\u003cc135d4fe\u003e] down_write+0x2a/0x46\n [\u003cd0d17d3f\u003e] ? nilfs_detach_segment_constructor+0x2f/0x2fa [nilfs2]\n [\u003cd0d17d3f\u003e] nilfs_detach_segment_constructor+0x2f/0x2fa [nilfs2]\n [\u003cc104ea2c\u003e] ? mark_held_locks+0x43/0x5b\n [\u003cc104ecb1\u003e] ? trace_hardirqs_on_caller+0x10b/0x133\n [\u003cc104ece4\u003e] ? trace_hardirqs_on+0xb/0xd\n [\u003cd0d09ac1\u003e] nilfs_put_super+0x2f/0xca [nilfs2]\n [\u003cc10b3352\u003e] generic_shutdown_super+0x49/0xb8\n [\u003cc10b33de\u003e] kill_block_super+0x1d/0x31\n [\u003cc10e6599\u003e] ? vfs_quota_off+0x0/0x12\n [\u003cc10b398f\u003e] deactivate_super+0x57/0x6c\n [\u003cc10c4bc3\u003e] mntput_no_expire+0x8c/0xb4\n [\u003cc10c5094\u003e] sys_umount+0x27f/0x2a4\n [\u003cc10c50c6\u003e] sys_oldumount+0xd/0xf\n [\u003cc10031a4\u003e] sysenter_do_call+0x12/0x38\n ...\n\nThis turns out to be a bug brought by an -rc1 patch (\"nilfs2: simplify\nremaining sget() use\").\n\nIn the patch, a new \"put resource\" function, nilfs_put_sbinfo()\nwas introduced to delay freeing nilfs_sb_info struct.\n\nBut the nilfs_put_sbinfo() mistakenly used atomic_dec_and_test()\nfunction to check the reference count, and it caused the nilfs_sb_info\nwas freed when user mounted a snapshot twice.\n\nThis bug also suggests there was unseen memory leak in usual mount\n/umount operations for nilfs.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "1154ecbd2f8298ef75609f5f8ed5aca96be599fb",
      "tree": "a6801fc442fecf4c0b2a1dc1d7a5350910983041",
      "parents": [
        "64f1607ffbbc772685733ea63e6f7f4183df1b16"
      ],
      "author": {
        "name": "Zhang Qiang",
        "email": "zhangqiang.buaa@gmail.com",
        "time": "Tue Aug 18 14:58:24 2009 +0800"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue Aug 18 17:32:27 2009 +0900"
      },
      "message": "nilfs2: missing a read lock for segment writer in nilfs_attach_checkpoint()\n\n\u0027ns_cno\u0027 of structure \u0027the_nilfs\u0027 must be protected from segment\nwriter, in other words, the caller of nilfs_get_checkpoint should hold\nread lock for nilfs-\u003ens_segctor_sem.  This patch adds the lock/unlock\noperations in nilfs_attach_checkpoint() when calling\nnilfs_cpfile_get_checkpoint().\n\nSigned-off-by: Zhang Qiang \u003czhangqiang.buaa@gmail.com\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "01a261e09a21e0ba342d3907a79cf5c78ee3f37a",
      "tree": "e26e8008ce2de35afe2703529d771268a256329f",
      "parents": [
        "a97778457f22181e8c38c4cd7d7e528378738a98"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Aug 02 17:45:55 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Aug 02 22:24:15 2009 +0900"
      },
      "message": "nilfs2: fix missing unlock in error path of nilfs_mdt_write_page\n\nThis adds a missing unlock of nilfs-\u003ens_writer_mutex in\nnilfs_mdt_write_page() function.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "a97778457f22181e8c38c4cd7d7e528378738a98",
      "tree": "d2ee3d9491ab2b17551f099d9a6119407700dbd2",
      "parents": [
        "ed680c4ad478d0fee9740f7d029087f181346564"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue Jul 28 17:55:29 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Aug 01 22:48:32 2009 +0900"
      },
      "message": "nilfs2: fix oops due to inconsistent state in page with discrete b-tree nodes\n\nAndrea Gelmini gave me a report that a kernel oops hit on a nilfs\nfilesystem with a 1KB block size when doing rsync.\n\nThis turned out to be caused by an inconsistency of dirty state\nbetween a page and its buffers storing b-tree node blocks.\n\nIf the page had multiple buffers split over multiple logs, and if the\nlogs were written at a time, a dirty flag remained in the page even\nevery dirty flag in the buffers was cleared.\n\nThis will fix the failure by dropping the dirty flag properly for\npages with the discrete multiple b-tree nodes.\n\nReported-by: Andrea Gelmini \u003candrea.gelmini@gmail.com\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nTested-by: Andrea Gelmini \u003candrea.gelmini@gmail.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "4fed598a49c014cbc563179b25f2a4b8565e2a50",
      "tree": "09b123e897220cf2324c43928c1e1efc08abb754",
      "parents": [
        "6847e154e3cd74fca6084124c097980a7634285a"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Jul 12 11:13:55 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue Jul 14 12:34:17 2009 +0900"
      },
      "message": "fs/Kconfig: move nilfs2 out\n\nfs/Kconfig file was split into individual fs/*/Kconfig files before\nnilfs was merged.  I\u0027ve found the current config entry of nilfs is\ntainting the work.  Sorry, I didn\u0027t notice.  This fixes the violation.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\n"
    },
    {
      "commit": "405f55712dfe464b3240d7816cc4fe4174831be2",
      "tree": "96c425ea7fa8b31058b8f83a433c5e5265c8ebc7",
      "parents": [
        "f9fabcb58a6d26d6efde842d1703ac7cfa9427b6"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Sat Jul 11 22:08:37 2009 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jul 12 12:22:34 2009 -0700"
      },
      "message": "headers: smp_lock.h redux\n\n* Remove smp_lock.h from files which don\u0027t need it (including some headers!)\n* Add smp_lock.h to files which do need it\n* Make smp_lock.h include conditional in hardirq.h\n  It\u0027s needed only for one kernel_locked() usage which is under CONFIG_PREEMPT\n\n  This will make hardirq.h inclusion cheaper for every PREEMPT\u003dn config\n  (which includes allmodconfig/allyesconfig, BTW)\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d9a0a345ab7a58a30ec38e5bb7401a28714914d2",
      "tree": "a4f6943de6fa3c2088623e56587fef4bfb7ad66b",
      "parents": [
        "ff54de363afa4583e2a6249f25fe21dfaeb11ea2"
      ],
      "author": {
        "name": "Jiro SEKIBA",
        "email": "jir@unicus.jp",
        "time": "Sat Jul 04 23:00:53 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Jul 05 10:44:20 2009 +0900"
      },
      "message": "nilfs2: fix disorder in cp count on error during deleting checkpoints\n\nThis fixes a bug that checkpoint count gets wrong on errors when\ndeleting a series of checkpoints.\n\nThe count error is persistent since the checkpoint count is stored on\ndisk.  Some userland programs refer to the count via ioctl, and this\nbugfix is needed to prevent malfunction of such programs.\n\nSigned-off-by: Jiro SEKIBA \u003cjir@unicus.jp\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "ff54de363afa4583e2a6249f25fe21dfaeb11ea2",
      "tree": "67a1553ca7f75d57678abc969a4361139b2335b2",
      "parents": [
        "4a52df779700080de4afb0436d9dd9188514a69b"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Jun 19 02:53:56 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Jul 05 10:44:20 2009 +0900"
      },
      "message": "nilfs2: fix lockdep warning between regular file and inode file\n\nThis will fix the following false positive of recursive locking which\nlockdep has detected:\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n[ INFO: possible recursive locking detected ]\n2.6.30-nilfs #42\n---------------------------------------------\nnilfs_cleanerd/10607 is trying to acquire lock:\n (\u0026bmap-\u003eb_sem){++++-.}, at: [\u003ce0d025b7\u003e] nilfs_bmap_lookup_at_level+0x1a/0x74 [nilfs2]\n\nbut task is already holding lock:\n (\u0026bmap-\u003eb_sem){++++-.}, at: [\u003ce0d024e0\u003e] nilfs_bmap_truncate+0x19/0x6a [nilfs2]\nother info that might help us debug this:\n2 locks held by nilfs_cleanerd/10607:\n #0:  (\u0026nilfs-\u003ens_segctor_sem){++++.+}, at: [\u003ce0d0d75a\u003e] nilfs_transaction_begin+0xb6/0x10c [nilfs2]\n #1:  (\u0026bmap-\u003eb_sem){++++-.}, at: [\u003ce0d024e0\u003e] nilfs_bmap_truncate+0x19/0x6a [nilfs2]\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "4a52df779700080de4afb0436d9dd9188514a69b",
      "tree": "4398267fee987598219433e348a2b4697e2d3f01",
      "parents": [
        "8227b29722fdbac72357aae155d171a5c777670c"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Thu Jun 18 23:53:25 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Jul 05 10:44:20 2009 +0900"
      },
      "message": "nilfs2: fix incorrect KERN_CRIT messages in case of write failures\n\nIn case of write-failure retries, the following KERN_CRIT level\nmessages are mistakenly output by nilfs_dat_commit_start() function:\n\nnilfs_dat_commit_start: vbn \u003d 408463, start \u003d 12506, end \u003d 18446744073709551615, pbn \u003d 530210\nnilfs_dat_commit_start: vbn \u003d 408515, start \u003d 12506, end \u003d 18446744073709551615, pbn \u003d 530211\nnilfs_dat_commit_start: vbn \u003d 408464, start \u003d 12506, end \u003d 18446744073709551615, pbn \u003d 530212\n...\n\nThis suppresses these messages.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "8227b29722fdbac72357aae155d171a5c777670c",
      "tree": "d44631f3aac26da4cdcd2abd8b0f1d8661fc59b5",
      "parents": [
        "0cfae3d8795f388f9de78adb0171520d19da77e9"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Thu Jun 18 23:52:23 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Jul 05 10:44:20 2009 +0900"
      },
      "message": "nilfs2: fix hang problem of log writer which occurs after write failures\n\nLeandro Lucarella gave me a report that nilfs gets stuck after its\nwrite function fails.\n\nThe problem turned out to be caused by bugs which leave writeback flag\non pages.  This fixes the problem by ensuring to clear the writeback\nflag in error path.\n\nReported-by: Leandro Lucarella \u003cllucax@gmail.com\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "0cfae3d8795f388f9de78adb0171520d19da77e9",
      "tree": "4f4e447edc025cb1f96ac27da030b8b36164865b",
      "parents": [
        "8e4a718ff38d8539938ec3421935904c27e00c39"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Thu Jun 18 11:42:53 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Jul 05 10:44:19 2009 +0900"
      },
      "message": "nilfs2: remove unlikely directive causing mis-conversion of error code\n\nThe following error code handling in nilfs_segctor_write() function\nwrongly converted negative error codes to a truth value (i.e. 1):\n\n   err \u003d unlikely(err) ? : res;\n\nwhich originaly meant to be\n\n   err \u003d err ? : res;\n\nThis mis-conversion caused that write or sync functions receive the\nunexpected error code.  This fixes the bug by removing the unlikely\ndirective.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "d441b1c293149212045de00f346c8ea6cd41cce4",
      "tree": "cbc7aa520feeabaa90ff4b8ff83e6e8fade216c7",
      "parents": [
        "5affd88a104af43f0063a12ad1ee4c7a587945dc"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 08 19:56:34 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jun 24 08:17:05 2009 -0400"
      },
      "message": "switch nilfs2 to inode-\u003ei_acl\n\nActually, get rid of private analog, since nothing in there is\nusing ACLs at all so far.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "9c7cb99a8202452d3e0440a5505c5c6d262771d9",
      "tree": "56d2fe83150f7bea3446b28bfa3094066c5f26b5",
      "parents": [
        "0a8eba9b7f7aa3ad0305627c99ad4d6deedd871d",
        "c3a7abf06ce719a51139e62a034590be99abbc2c"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 15 09:13:49 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 15 09:13:49 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ryusuke/nilfs2\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ryusuke/nilfs2: (22 commits)\n  nilfs2: support contiguous lookup of blocks\n  nilfs2: add sync_page method to page caches of meta data\n  nilfs2: use device\u0027s backing_dev_info for btree node caches\n  nilfs2: return EBUSY against delete request on snapshot\n  nilfs2: modify list of unsupported features in caveats\n  nilfs2: enable sync_page method\n  nilfs2: set bio unplug flag for the last bio in segment\n  nilfs2: allow future expansion of metadata read out via get info ioctl\n  NILFS2: Pagecache usage optimization on NILFS2\n  nilfs2: remove nilfs_btree_operations from btree mapping\n  nilfs2: remove nilfs_direct_operations from direct mapping\n  nilfs2: remove bmap pointer operations\n  nilfs2: remove useless b_low and b_high fields from nilfs_bmap struct\n  nilfs2: remove pointless NULL check of bpop_commit_alloc_ptr function\n  nilfs2: move get block functions in bmap.c into btree codes\n  nilfs2: remove nilfs_bmap_delete_block\n  nilfs2: remove nilfs_bmap_put_block\n  nilfs2: remove header file for segment list operations\n  nilfs2: eliminate removal list of segments\n  nilfs2: add sufile function that can modify multiple segment usages\n  ...\n"
    },
    {
      "commit": "aa7dfb8954ccf49e026ba13d12991a4eb7defb96",
      "tree": "ff2d6cf81629322906bd0cea1423e9efe516ffee",
      "parents": [
        "e59399d0102c1813cec48db5cebe1750313f88a0"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Jun 08 01:39:33 2009 +0900"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jun 11 21:36:18 2009 -0400"
      },
      "message": "nilfs2: get rid of bd_mount_sem use from nilfs\n\nThis will remove every bd_mount_sem use in nilfs.\n\nThe intended exclusion control was replaced by the previous patch\n(\"nilfs2: correct exclusion control in nilfs_remount function\") for\nnilfs_remount(), and this patch will replace remains with a new mutex\nthat this inserts in nilfs object.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e59399d0102c1813cec48db5cebe1750313f88a0",
      "tree": "cd4fde6b5c442ede5d00b9640d3a545f847aeb8c",
      "parents": [
        "6dd4740662405a68bb229ac2b9e0aeaaf2188bf2"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Jun 08 01:39:32 2009 +0900"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jun 11 21:36:18 2009 -0400"
      },
      "message": "nilfs2: correct exclusion control in nilfs_remount function\n\nnilfs_remount() changes mount state of a superblock instance.  Even\nthough nilfs accesses other superblock instances during mount or\nremount, the mount state was not properly protected in\nnilfs_remount().\n\nMoreover, nilfs_remount() has a lock order reversal problem;\nnilfs_get_sb() holds:\n\n  1. bdev-\u003ebd_mount_sem\n  2. sb-\u003es_umount  (sget acquires)\n\nand nilfs_remount() holds:\n\n  1. sb-\u003es_umount  (locked by the caller in vfs)\n  2. bdev-\u003ebd_mount_sem\n\nTo avoid these problems, this patch divides a semaphore protecting\nsuper block instances from nilfs-\u003ens_sem, and applies it to the mount\nstate protection in nilfs_remount().\n\nWith this change, bd_mount_sem use is removed from nilfs_remount() and\nthe lock order reversal will be resolved.  And the new rw-semaphore,\nnilfs-\u003ens_super_sem will properly protect the mount state except the\nmodification from nilfs_error function.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "6dd4740662405a68bb229ac2b9e0aeaaf2188bf2",
      "tree": "36e6ae2a095613be1c36e8828ee9471e60c09de6",
      "parents": [
        "3f82ff55168e92859119bf348e9e0bd6714d2fea"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Jun 08 01:39:31 2009 +0900"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jun 11 21:36:18 2009 -0400"
      },
      "message": "nilfs2: simplify remaining sget() use\n\nThis simplifies the test function passed on the remaining sget()\ncallsite in nilfs.\n\nInstead of checking mount type (i.e. ro-mount/rw-mount/snapshot mount)\nin the test function passed to sget(), this patch first looks up the\nnilfs_sb_info struct which the given mount type matches, and then\nacquires the super block instance holding the nilfs_sb_info.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "3f82ff55168e92859119bf348e9e0bd6714d2fea",
      "tree": "f35bf723b02d6fe8c101252aa4a2c0e0172fd4aa",
      "parents": [
        "33c8e57c86d1bd1548c12a4f7c4bceb94b862cca"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Jun 08 01:39:30 2009 +0900"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jun 11 21:36:17 2009 -0400"
      },
      "message": "nilfs2: get rid of sget use for checking if current mount is present\n\nThis stops using sget() for checking if an r/w-mount or an r/o-mount\nexists on the device.  This elimination uses a back pointer to the\ncurrent mount added to nilfs object.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "33c8e57c86d1bd1548c12a4f7c4bceb94b862cca",
      "tree": "8e2052a81dc1036e64d78da1082ab6af01ae4bbd",
      "parents": [
        "81fc20bd0e75ba6357bce2403767d7c2585d8f28"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Jun 08 01:39:29 2009 +0900"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jun 11 21:36:17 2009 -0400"
      },
      "message": "nilfs2: get rid of sget use for acquiring nilfs object\n\nThis will change the way to obtain nilfs object in nilfs_get_sb()\nfunction.\n\nPreviously, a preliminary sget() call was performed, and the nilfs\nobject was acquired from a super block instance found by the sget()\ncall.\n\nThis patch, instead, instroduces a new dedicated function\nfind_or_create_nilfs(); as the name implies, the function finds an\nexistent nilfs object from a global list or creates a new one if no\nobject is found on the device.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "81fc20bd0e75ba6357bce2403767d7c2585d8f28",
      "tree": "e3680d7c8184da3cbb4b7efe83fe99626d08cd68",
      "parents": [
        "0c95ee190e1dea60c55c834d14695341085c9b7b"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Jun 08 01:39:28 2009 +0900"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jun 11 21:36:17 2009 -0400"
      },
      "message": "nilfs2: remove meaningless EBUSY case from nilfs_get_sb function\n\nThe following EBUSY case in nilfs_get_sb() is meaningless.  Indeed,\nthis error code is never returned to the caller.\n\n    if (!s-\u003es_root) {\n          ...\n    } else if (!(s-\u003es_flags \u0026 MS_RDONLY)) {\n        err \u003d -EBUSY;\n    }\n\nThis simply removes the else case.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "d731e06323cb705003e4172ec209e469be4c18e1",
      "tree": "636b1b2f7aaea08fa7be27b3d908fe6dbe6ec70b",
      "parents": [
        "d579ed00aa96a7f7486978540a0d7cecaff742ae"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Mon Jun 08 10:08:36 2009 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jun 11 21:36:17 2009 -0400"
      },
      "message": "nilfs2: call nilfs2_write_super from nilfs2_sync_fs\n\nThe call to -\u003ewrite_super from __sync_filesystem will go away, so make\nsure nilfs2 performs the same actions from inside -\u003esync_fs.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "337eb00a2c3a421999c39c94ce7e33545ee8baa7",
      "tree": "d9b780d095b638b1d8fa23841ff70347cf5daa08",
      "parents": [
        "4195f73d1329e49727bcceb028e58cb38376c2b0"
      ],
      "author": {
        "name": "Alessio Igor Bogani",
        "email": "abogani@texware.it",
        "time": "Tue May 12 15:10:54 2009 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jun 11 21:36:11 2009 -0400"
      },
      "message": "Push BKL down into -\u003eremount_fs()\n\n[xfs, btrfs, capifs, shmem don\u0027t need BKL, exempt]\n\nSigned-off-by: Alessio Igor Bogani \u003cabogani@texware.it\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "6cfd0148425e528b859b26e436b01f23f6926224",
      "tree": "60e3257053554ff198fe5825e6f12a00c3b4422a",
      "parents": [
        "a9e220f8322e2b0e0b8903fe00265461cffad3f0"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Tue May 05 15:40:36 2009 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jun 11 21:36:07 2009 -0400"
      },
      "message": "push BKL down into -\u003eput_super\n\nMove BKL into -\u003eput_super from the only caller.  A couple of\nfilesystems had trivial enough -\u003eput_super (only kfree and NULLing of\ns_fs_info + stuff in there) to not get any locking: coda, cramfs, efs,\nhugetlbfs, omfs, qnx4, shmem, all others got the full treatment.  Most\nof them probably don\u0027t need it, but I\u0027d rather sort that out individually.\nPreferably after all the other BKL pushdowns in that area.\n\n[AV: original used to move lock_super() down as well; these changes are\nremoved since we don\u0027t do lock_super() at all in generic_shutdown_super()\nnow]\n[AV: fuse, btrfs and xfs are known to need no damn BKL, exempt]\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "8c85e125124a473d6f3e9bb187b0b84207f81d91",
      "tree": "d883424a156c00c55193e46567efdffddb6ef6b9",
      "parents": [
        "517bfae28353e996160518add4d00033d3886e61"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Tue Apr 28 18:00:26 2009 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jun 11 21:36:06 2009 -0400"
      },
      "message": "remove -\u003ewrite_super call in generic_shutdown_super\n\nWe just did a full fs writeout using sync_filesystem before, and if\nthat\u0027s not enough for the filesystem it can perform it\u0027s own writeout\nin -\u003eput_super, which many filesystems already do.\n\nMove a call to foofs_write_super into every foofs_put_super for now to\nguarantee identical behaviour until it\u0027s cleaned up by the individual\nfilesystem maintainers.\n\nExceptions:\n\n - affs already has identical copy \u0026 pasted code at the beginning of\n   affs_put_super so no need to do it twice.\n - xfs does the right thing without it and I have changes pending for\n   the xfs tree touching this are so I don\u0027t really need conflicts\n   here..\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "c9059598ea8981d02356eead3188bf7fa4d717b8",
      "tree": "03e73b20a30e988da7c6a3e0ad93b2dc5843274d",
      "parents": [
        "0a33f80a8373eca7f4bea3961d1346c3815fa5ed",
        "b0fd271d5fba0b2d00888363f3869e3f9b26caa9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 11 10:52:27 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 11 11:10:35 2009 -0700"
      },
      "message": "Merge branch \u0027for-2.6.31\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.31\u0027 of git://git.kernel.dk/linux-2.6-block: (153 commits)\n  block: add request clone interface (v2)\n  floppy: fix hibernation\n  ramdisk: remove long-deprecated \"ramdisk\u003d\" boot-time parameter\n  fs/bio.c: add missing __user annotation\n  block: prevent possible io_context-\u003erefcount overflow\n  Add serial number support for virtio_blk, V4a\n  block: Add missing bounce_pfn stacking and fix comments\n  Revert \"block: Fix bounce limit setting in DM\"\n  cciss: decode unit attention in SCSI error handling code\n  cciss: Remove no longer needed sendcmd reject processing code\n  cciss: change SCSI error handling routines to work with interrupts enabled.\n  cciss: separate error processing and command retrying code in sendcmd_withirq_core()\n  cciss: factor out fix target status processing code from sendcmd functions\n  cciss: simplify interface of sendcmd() and sendcmd_withirq()\n  cciss: factor out core of sendcmd_withirq() for use by SCSI error handling code\n  cciss: Use schedule_timeout_uninterruptible in SCSI error handling code\n  block: needs to set the residual length of a bidi request\n  Revert \"block: implement blkdev_readpages\"\n  block: Fix bounce limit setting in DM\n  Removed reference to non-existing file Documentation/PCI/PCI-DMA-mapping.txt\n  ...\n\nManually fix conflicts with tracing updates in:\n\tblock/blk-sysfs.c\n\tdrivers/ide/ide-atapi.c\n\tdrivers/ide/ide-cd.c\n\tdrivers/ide/ide-floppy.c\n\tdrivers/ide/ide-tape.c\n\tinclude/trace/events/block.h\n\tkernel/trace/blktrace.c\n"
    },
    {
      "commit": "c3a7abf06ce719a51139e62a034590be99abbc2c",
      "tree": "14d61bbd8c34d1b1c7997c9afad79158b7af2914",
      "parents": [
        "fa032744ad41de1b0a1807e7c379c6196e72ad80"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon May 25 02:47:14 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Jun 10 23:41:12 2009 +0900"
      },
      "message": "nilfs2: support contiguous lookup of blocks\n\nAlthough get_block() callback function can return extent of contiguous\nblocks with bh-\u003eb_size, nilfs_get_block() function did not support\nthis feature.\n\nThis adds contiguous lookup feature to the block mapping codes of\nnilfs, and allows the nilfs_get_blocks() function to return the extent\ninformation by applying the feature.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "fa032744ad41de1b0a1807e7c379c6196e72ad80",
      "tree": "b88d335fd367ffee7e22403037e637da44a6ab68",
      "parents": [
        "a53b4751ae92adb372017222887f3ec625cba60b"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed May 27 22:44:34 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Jun 10 23:41:12 2009 +0900"
      },
      "message": "nilfs2: add sync_page method to page caches of meta data\n\nThis applies block_sync_page() function to the sync_page method of\npage caches for meta data files, gc page caches, and btree node\nbuffers.  This is a companion patch of (\"nilfs2: enable sync_page\nmothod\") which applied the function for data pages.\n\nThis allows lock_page() for those meta data to unplug pending bio\nrequests.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "a53b4751ae92adb372017222887f3ec625cba60b",
      "tree": "454c0876bb532ee44ad07485e6d40c60e157ca34",
      "parents": [
        "30c25be71fcbd87fd33518045cc014e69bff3d6f"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed May 27 22:11:46 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Jun 10 23:41:12 2009 +0900"
      },
      "message": "nilfs2: use device\u0027s backing_dev_info for btree node caches\n\nPreviously, default_backing_dev_info was used for the mapping of btree\nnode caches.  This uses device dependent backing_dev_info to allow\ndetailed control of the device for the btree node pages.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "30c25be71fcbd87fd33518045cc014e69bff3d6f",
      "tree": "89b9ea993834f57b7390a24fdfacf6099b854b54",
      "parents": [
        "fb6e7113ae3ba6c7d0de77c6ccbcfa659899ff0f"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat May 30 19:08:09 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Jun 10 23:41:12 2009 +0900"
      },
      "message": "nilfs2: return EBUSY against delete request on snapshot\n\nThis helps userland programs like the rmcp command to distinguish\nerror codes returned against a checkpoint removal request.\n\nPreviously -EPERM was returned, and not discriminable from real\npermission errors.  This also allows removal of the latest checkpoint\nbecause the deletion leads to create a new checkpoint, and thus it\u0027s\nharmless for the filesystem.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "e85dc1d5295779d2e6d973b7ed524d6bd3825a3f",
      "tree": "8f13c049839deb9f6cde4deb440b2a3758f10f64",
      "parents": [
        "30bda0b8ae470997dc681d6fd82108bac5caebf8"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed May 27 07:27:12 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Jun 10 23:41:11 2009 +0900"
      },
      "message": "nilfs2: enable sync_page method\n\nThis adds a missing sync_page method which unplugs bio requests when\nwaiting for page locks. This will improve read performance of nilfs.\n\nHere is a measurement result using dd command.\n\nWithout this patch:\n\n # mount -t nilfs2 /dev/sde1 /test\n # dd if\u003d/test/aaa of\u003d/dev/null bs\u003d512k\n 1024+0 records in\n 1024+0 records out\n 536870912 bytes (537 MB) copied, 6.00688 seconds, 89.4 MB/s\n\nWith this patch:\n\n # mount -t nilfs2 /dev/sde1 /test\n # dd if\u003d/test/aaa of\u003d/dev/null bs\u003d512k\n 1024+0 records in\n 1024+0 records out\n 536870912 bytes (537 MB) copied, 3.54998 seconds, 151 MB/s\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "30bda0b8ae470997dc681d6fd82108bac5caebf8",
      "tree": "6c420f48a10c0cfbeed23243e2fc89df274cb5a2",
      "parents": [
        "003ff182fddde09ddfb8d079bbdb02f9d2122082"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun May 17 10:57:43 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Jun 10 23:41:11 2009 +0900"
      },
      "message": "nilfs2: set bio unplug flag for the last bio in segment\n\nThis sets BIO_RW_UNPLUG flag on the last bio of each segment during\nwrite.  The last bio should be unplugged immediately because the\ncaller waits for the completion after the submission.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "003ff182fddde09ddfb8d079bbdb02f9d2122082",
      "tree": "d949fa673353767d8854355987e49d82821935f6",
      "parents": [
        "258ef67e246fd548e7ad91c23004ad157c03cce5"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue May 12 03:58:47 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Jun 10 23:41:11 2009 +0900"
      },
      "message": "nilfs2: allow future expansion of metadata read out via get info ioctl\n\nNilfs has some ioctl commands to read out metadata from meta data\nfiles:\n\n - NILFS_IOCTL_GET_CPINFO for checkpoint file,\n - NILFS_IOCTL_GET_SUINFO for segment usage file, and\n - NILFS_IOCTL_GET_VINFO for Disk Address Transalation (DAT) file,\n   respectively.\n\nEvery routine on these metadata files is implemented so that it allows\nfuture expansion of on-disk format.  But, the above ioctl commands do\nnot support expansion even though nilfs_argv structure can handle\narbitrary size for data exchanged via ioctl.\n\nThis allows future expansion of the following structures which give\nbasic format of the \"get information\" ioctls:\n\n - struct nilfs_cpinfo\n - struct nilfs_suinfo\n - struct nilfs_vinfo\n\nSo, this introduces forward compatility of such ioctl commands.\n\nIn this patch, a sanity check in nilfs_ioctl_get_info() function is\nchanged to accept larger data structure [1], and metadata read\nroutines are rewritten so that they become compatible for larger\nstructures; the routines will just ignore the remaining fields which\nthe current version of nilfs doesn\u0027t know.\n\n[1] The ioctl function already has another upper limit (PAGE_SIZE\n    against a structure, which appears in nilfs_ioctl_wrap_copy\n    function), and this will not cause security problem.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "258ef67e246fd548e7ad91c23004ad157c03cce5",
      "tree": "a956d6acdd0c5e8c29f1a0993ef8a426ca834523",
      "parents": [
        "7cde31d7d6959b2c608aa6b200eb68892d3a6063"
      ],
      "author": {
        "name": "Hisashi Hifumi",
        "email": "hifumi.hisashi@oss.ntt.co.jp",
        "time": "Wed May 13 11:19:40 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Jun 10 23:41:11 2009 +0900"
      },
      "message": "NILFS2: Pagecache usage optimization on NILFS2\n\nHi,\n\nI introduced \"is_partially_uptodate\" aops for NILFS2.\n\nA page can have multiple buffers and even if a page is not uptodate, some buffers\ncan be uptodate on pagesize !\u003d blocksize environment.\nThis aops checks that all buffers which correspond to a part of a file\nthat we want to read are uptodate. If so, we do not have to issue actual\nread IO to HDD even if a page is not uptodate because the portion we\nwant to read are uptodate.\n\"block_is_partially_uptodate\" function is already used by ext2/3/4.\nWith the following patch random read/write mixed workloads or random read after\nrandom write workloads can be optimized and we can get performance improvement.\n\nI did a performance test using the sysbench.\n\n1 --file-block-size\u003d8K --file-total-size\u003d2G --file-test-mode\u003drndrw --file-fsync-freq\u003d0 --fil\ne-rw-ratio\u003d1 run\n\n-2.6.30-rc5\n\nTest execution summary:\n    total time:                          151.2907s\n    total number of events:              200000\n    total time taken by event execution: 2409.8387\n    per-request statistics:\n         min:                            0.0000s\n         avg:                            0.0120s\n         max:                            0.9306s\n         approx.  95 percentile:         0.0439s\n\nThreads fairness:\n    events (avg/stddev):           12500.0000/238.52\n    execution time (avg/stddev):   150.6149/0.01\n\n-2.6.30-rc5-patched\n\nTest execution summary:\n    total time:                          140.8828s\n    total number of events:              200000\n    total time taken by event execution: 2240.8577\n    per-request statistics:\n         min:                            0.0000s\n         avg:                            0.0112s\n         max:                            0.8750s\n         approx.  95 percentile:         0.0418s\n\nThreads fairness:\n    events (avg/stddev):           12500.0000/218.43\n    execution time (avg/stddev):   140.0536/0.01\n\narch: ia64\npagesize: 16k\n\nThanks.\n\nSigned-off-by: Hisashi Hifumi \u003chifumi.hisashi@oss.ntt.co.jp\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "7cde31d7d6959b2c608aa6b200eb68892d3a6063",
      "tree": "778190ae45040009a629ac3c5f6db670b2546d99",
      "parents": [
        "355c6b61034a571565dcd28801588671255d2329"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun May 24 18:07:59 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Jun 10 23:41:11 2009 +0900"
      },
      "message": "nilfs2: remove nilfs_btree_operations from btree mapping\n\nwill remove indirect function calls using nilfs_btree_operations\ntable.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "355c6b61034a571565dcd28801588671255d2329",
      "tree": "6596de80c43757ea87a5cc3dc973f5d2537f0812",
      "parents": [
        "d4b961576df2769b936bd967b01e8c607c3c9ad8"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun May 24 16:46:37 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Jun 10 23:41:11 2009 +0900"
      },
      "message": "nilfs2: remove nilfs_direct_operations from direct mapping\n\nwill remove indirect function calls using nilfs_direct_operations\ntable.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "d4b961576df2769b936bd967b01e8c607c3c9ad8",
      "tree": "3d5d31cb7b4ba31a5b8232d0cd0edac2cf368fae",
      "parents": [
        "3033342a0b76048e32ce1faebfa85cf8f1aa93b5"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun May 24 03:25:44 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Jun 10 23:41:10 2009 +0900"
      },
      "message": "nilfs2: remove bmap pointer operations\n\nPreviously, the bmap codes of nilfs used three types of function\ntables.  The abuse of indirect function calls decreased source\nreadability and suffered many indirect jumps which would confuse\nbranch prediction of processors.\n\nThis eliminates one type of the function tables,\nnilfs_bmap_ptr_operations, which was used to dispatch low level\npointer operations of the nilfs bmap.\n\nThis adds a new integer variable \"b_ptr_type\" to nilfs_bmap struct,\nand uses the value to select the pointer operations.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "3033342a0b76048e32ce1faebfa85cf8f1aa93b5",
      "tree": "9bffaa21381c58e476f26d12352d471748550993",
      "parents": [
        "e473c1f265f429427e09531435ceaf0fdbb86d15"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun May 24 00:09:44 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Jun 10 23:41:10 2009 +0900"
      },
      "message": "nilfs2: remove useless b_low and b_high fields from nilfs_bmap struct\n\nThis will cut off 16 bytes from the nilfs_bmap struct which is\nembedded in the on-memory inode of nilfs.\n\nThe b_high field was never used, and the b_low field stores a constant\nvalue which can be determined by whether the inode uses btree for\nblock mapping or not.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "e473c1f265f429427e09531435ceaf0fdbb86d15",
      "tree": "2256e57a923beb7c570f67026b1fd177edb3b9db",
      "parents": [
        "f198dbb9cf580c09644ebdf46846115c6daff14e"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri May 22 02:18:36 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Jun 10 23:41:10 2009 +0900"
      },
      "message": "nilfs2: remove pointless NULL check of bpop_commit_alloc_ptr function\n\nThis indirect function is set to NULL only for gc cache inodes, but\nthe gc cache inodes never call this function.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "f198dbb9cf580c09644ebdf46846115c6daff14e",
      "tree": "0792f2044153e35bea1c2b93d69ba8045cd86551",
      "parents": [
        "9f098900ad34edfe3bcc2498cfa372f588b96c62"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri May 22 01:07:13 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Jun 10 23:41:10 2009 +0900"
      },
      "message": "nilfs2: move get block functions in bmap.c into btree codes\n\nTwo get block function for btree nodes, nilfs_bmap_get_block() and\nnilfs_bmap_get_new_block(), are called only from the btree codes.\nThis relocation will increase opportunities of compiler optimization.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "9f098900ad34edfe3bcc2498cfa372f588b96c62",
      "tree": "87622fa169eb988319637f0ce1cca02242006fee",
      "parents": [
        "087d01b4253b611773ca81ad894486e7e17e74f6"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri May 22 00:38:56 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Jun 10 23:41:10 2009 +0900"
      },
      "message": "nilfs2: remove nilfs_bmap_delete_block\n\nnilfs_bmap_delete_block() is a wrapper function calling\nnilfs_btnode_delete().  This removes it for simplicity.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "087d01b4253b611773ca81ad894486e7e17e74f6",
      "tree": "b7705eef195bbd3d2bb2bb2e1bf35f05ca05af42",
      "parents": [
        "654137dd46bc7e9f088a4a551a2b77a8541dfdb8"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri May 22 00:33:13 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Jun 10 23:41:10 2009 +0900"
      },
      "message": "nilfs2: remove nilfs_bmap_put_block\n\nnilfs_bmap_put_block() is a wrapper function calling brelse().  This\neliminates the wrapper for simplicity.\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": "dda54f4b872512eba484c38631bd6ae5b5716f41",
      "tree": "bf9bf0b18c9cf232fa34a6f3de08e90a658259f2",
      "parents": [
        "d97a51a7e3c298d9899ea91165dfa0783fa5cc5c"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat May 16 21:49:10 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Jun 10 23:41:09 2009 +0900"
      },
      "message": "nilfs2: add sufile function that can modify multiple segment usages\n\nThis is a preparation for the later cleanup patch (\"nilfs2: remove\nlist of freeing segments\").\n\nThis adds nilfs_sufile_updatev() to sufile, which can modify multiple\nsegment usages at a time.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "d97a51a7e3c298d9899ea91165dfa0783fa5cc5c",
      "tree": "31c3b082565cd3004c2036fe79657297a29a5824",
      "parents": [
        "65822070646ed7f2cf520439006dd863529be16e"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun May 03 21:43:01 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Jun 10 23:41:09 2009 +0900"
      },
      "message": "nilfs2: unify bmap operations starting use of indirect block address\n\nThis simplifies some low level functions of bmap.\n\nThree bmap pointer operations, nilfs_bmap_start_v(),\nnilfs_bmap_commit_v(), and nilfs_bmap_abort_v(), are unified into one\nnilfs_bmap_start_v() function. And the related indirect function calls\nare replaced with it.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "65822070646ed7f2cf520439006dd863529be16e",
      "tree": "20f2271d69a58e0c57d2158ba63913a3bd8fb12e",
      "parents": [
        "07a2039b8eb0af4ff464efd3dfd95de5c02648c6"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Apr 29 00:53:14 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 nilfs_dat_prepare_free function\n\nThis function is unused.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "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": "e1defc4ff0cf57aca6c5e3ff99fa503f5943c1f1",
      "tree": "d60d15a082171c58ac811d547d51a9c3119f23e3",
      "parents": [
        "9bd7de51ee8537094656149eaf45338cadb7d7d4"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Fri May 22 17:17:49 2009 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri May 22 23:22:54 2009 +0200"
      },
      "message": "block: Do away with the notion of hardsect_size\n\nUntil now we have had a 1:1 mapping between storage device physical\nblock size and the logical block sized used when addressing the device.\nWith SATA 4KB drives coming out that will no longer be the case.  The\nsector size will be 4KB but the logical block size will remain\n512-bytes.  Hence we need to distinguish between the physical block size\nand the logical ditto.\n\nThis patch renames hardsect_size to logical_block_size.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\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"
    }
  ],
  "next": "cece552074c591970353ad48308d65f110aeaf28"
}
