)]}'
{
  "log": [
    {
      "commit": "44fa2b4bee5b07d506a7b002b4e2eb73654db7e0",
      "tree": "5415a4988e326de7d3456d72115ac74f548ca8d1",
      "parents": [
        "0eddb519b9127c73d53db4bf3ec1d45b13f844d1",
        "be3bd2223b89d270853302ab0a5909fa875fd831"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 12 18:34:25 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 12 18:34:25 2010 -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:\n  nilfs2: fix typo \"numer\" -\u003e \"number\" in alloc.c\n  nilfs2: Remove an uninitialization warning in nilfs_btree_propagate_v()\n  nilfs2: fix a wrong type conversion in nilfs_ioctl()\n"
    },
    {
      "commit": "753234007f4ac2c96921cfb19ec1ba535ac29790",
      "tree": "c238c54daff482ba3e91153b0d13e2c646a6e1bd",
      "parents": [
        "2eaa9cfdf33b8d7fb7aff27792192e0019ae8fc6"
      ],
      "author": {
        "name": "Li Hong",
        "email": "lihong.hi@gmail.com",
        "time": "Wed Mar 31 15:41:00 2010 +0800"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Mar 31 16:55:00 2010 +0900"
      },
      "message": "nilfs2: fix a wrong type conversion in nilfs_ioctl()\n\n(void * __user *) should be (void __user *)\n\nSigned-off-by: Li Hong \u003clihong.hi@gmail.com\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "5a0e3ad6af8660be21ca98a971cd00f331318c05",
      "tree": "5bfb7be11a03176a87296a43ac6647975c00a1d1",
      "parents": [
        "ed391f4ebf8f701d3566423ce8f17e614cde9806"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 24 17:04:11 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 30 22:02:32 2010 +0900"
      },
      "message": "include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h\n\npercpu.h is included by sched.h and module.h and thus ends up being\nincluded when building most .c files.  percpu.h includes slab.h which\nin turn includes gfp.h making everything defined by the two files\nuniversally available and complicating inclusion dependencies.\n\npercpu.h -\u003e slab.h dependency is about to be removed.  Prepare for\nthis change by updating users of gfp and slab facilities include those\nheaders directly instead of assuming availability.  As this conversion\nneeds to touch large number of source files, the following script is\nused as the basis of conversion.\n\n  http://userweb.kernel.org/~tj/misc/slabh-sweep.py\n\nThe script does the followings.\n\n* Scan files for gfp and slab usages and update includes such that\n  only the necessary includes are there.  ie. if only gfp is used,\n  gfp.h, if slab is used, slab.h.\n\n* When the script inserts a new include, it looks at the include\n  blocks and try to put the new include such that its order conforms\n  to its surrounding.  It\u0027s put in the include block which contains\n  core kernel includes, in the same order that the rest are ordered -\n  alphabetical, Christmas tree, rev-Xmas-tree or at the end if there\n  doesn\u0027t seem to be any matching order.\n\n* If the script can\u0027t find a place to put a new include (mostly\n  because the file doesn\u0027t have fitting include block), it prints out\n  an error message indicating which .h file needs to be added to the\n  file.\n\nThe conversion was done in the following steps.\n\n1. The initial automatic conversion of all .c files updated slightly\n   over 4000 files, deleting around 700 includes and adding ~480 gfp.h\n   and ~3000 slab.h inclusions.  The script emitted errors for ~400\n   files.\n\n2. Each error was manually checked.  Some didn\u0027t need the inclusion,\n   some needed manual addition while adding it to implementation .h or\n   embedding .c file was more appropriate for others.  This step added\n   inclusions to around 150 files.\n\n3. The script was run again and the output was compared to the edits\n   from #2 to make sure no file was left behind.\n\n4. Several build tests were done and a couple of problems were fixed.\n   e.g. lib/decompress_*.c used malloc/free() wrappers around slab\n   APIs requiring slab.h to be added manually.\n\n5. The script was run on all .h files but without automatically\n   editing them as sprinkling gfp.h and slab.h inclusions around .h\n   files could easily lead to inclusion dependency hell.  Most gfp.h\n   inclusion directives were ignored as stuff from gfp.h was usually\n   wildly available and often used in preprocessor macros.  Each\n   slab.h inclusion directive was examined and added manually as\n   necessary.\n\n6. percpu.h was updated not to include slab.h.\n\n7. Build test were done on the following configurations and failures\n   were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my\n   distributed build env didn\u0027t work with gcov compiles) and a few\n   more options had to be turned off depending on archs to make things\n   build (like ipr on powerpc/64 which failed due to missing writeq).\n\n   * x86 and x86_64 UP and SMP allmodconfig and a custom test config.\n   * powerpc and powerpc64 SMP allmodconfig\n   * sparc and sparc64 SMP allmodconfig\n   * ia64 SMP allmodconfig\n   * s390 SMP allmodconfig\n   * alpha SMP allmodconfig\n   * um on x86_64 SMP allmodconfig\n\n8. percpu.h modifications were reverted so that it could be applied as\n   a separate patch and serve as bisection point.\n\nGiven the fact that I had only a couple of failures from tests on step\n6, I\u0027m fairly confident about the coverage of this conversion patch.\nIf there is a breakage, it\u0027s likely to be something in one of the arch\nheaders which should be easily discoverable easily on most builds of\nthe specific arch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nGuess-its-ok-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\n"
    },
    {
      "commit": "0d561f12b490dd2b993d73112d3297007688e6df",
      "tree": "3c754966cb9ec6647048ae2fd41428c9fa4b1b84",
      "parents": [
        "03f29365e84ff6d651be4e6186e0400ca59da6cd"
      ],
      "author": {
        "name": "Jiro SEKIBA",
        "email": "jir@unicus.jp",
        "time": "Sat Feb 20 19:47:49 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Feb 20 21:18:19 2010 +0900"
      },
      "message": "nilfs2: add reader\u0027s lock for cno in nilfs_ioctl_sync\n\nThis adds reader\u0027s lock for the_nilfs-\u003ecno in nilfs_ioctl_sync,\nfor the_nilfs-\u003ecno should be proctected by segctor_sem when reading.\n\nSigned-off-by: Jiro SEKIBA \u003cjir@unicus.jp\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "7512487e6d6459e4c3f9c7cedc53050a6c30e387",
      "tree": "a2f7ed0a787be5ccd3bcd92b6e9f2f3e4eb3267b",
      "parents": [
        "e902ec9906e844f4613fa6190c6fa65f162dc86e"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Tue Jan 26 13:59:40 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Feb 13 12:26:02 2010 +0900"
      },
      "message": "nilfs2: use mnt_want_write in ioctls where write access is needed\n\nA few nilfs2 ioctls need to ask for and then later release write\naccess to the mount in order to avoid potential write to read-only\nmounts.\n\nThis adds the missing mnt_want_write and mnt_drop_write in\nnilfs_ioctl_change_cpmode, nilfs_ioctl_delete_checkpoint, and\nnilfs_ioctl_clean_segments.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "33e189bd5754dead3ece130da8e62f470f526f36",
      "tree": "61898f01f76d014e5572950f696794ce92c961ee",
      "parents": [
        "5ee581483246e832ca5a9fc1ac669bba0b6ec468"
      ],
      "author": {
        "name": "Tobias Klauser",
        "email": "tklauser@distanz.ch",
        "time": "Wed Dec 23 13:57:47 2009 +0100"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Dec 25 13:01:50 2009 +0900"
      },
      "message": "nilfs2: Storage class should be before const qualifier\n\nThe C99 specification states in section 6.11.5:\n\nThe placement of a storage-class specifier other than at the beginning\nof the declaration specifiers in a declaration is an obsolescent\nfeature.\n\nSigned-off-by: Tobias Klauser \u003ctklauser@distanz.ch\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "c1ea985c710f41e97f1c72c29bbf367375370f0b",
      "tree": "7345a5041a7ea432dcdebe664b7e57066d968e9f",
      "parents": [
        "156171c71a0dc4bce12b4408bb1591f8fe32dc1a"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Thu Nov 12 00:13:32 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Fri Nov 13 10:33:24 2009 +0900"
      },
      "message": "nilfs2: fix lock order reversal in chcp operation\n\nWill fix the following lock order reversal lockdep detected:\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n[ INFO: possible circular locking dependency detected ]\n2.6.32-rc6 #7\n-------------------------------------------------------\nchcp/30157 is trying to acquire lock:\n (\u0026nilfs-\u003ens_mount_mutex){+.+.+.}, at: [\u003cfed7cfcc\u003e] nilfs_cpfile_change_cpmode+0x46/0x752 [nilfs2]\n\nbut task is already holding lock:\n (\u0026nilfs-\u003ens_segctor_sem){++++.+}, at: [\u003cfed7ca32\u003e] nilfs_transaction_begin+0xba/0x110 [nilfs2]\n\nwhich lock already depends on the new lock.\n\nthe existing dependency chain (in reverse order) is:\n\n-\u003e #2 (\u0026nilfs-\u003ens_segctor_sem){++++.+}:\n       [\u003cc105799c\u003e] __lock_acquire+0x109c/0x139d\n       [\u003cc1057d26\u003e] lock_acquire+0x89/0xa0\n       [\u003cc14151e2\u003e] down_read+0x31/0x45\n       [\u003cfed6d77b\u003e] nilfs_attach_checkpoint+0x8f/0x16b [nilfs2]\n       [\u003cfed6e393\u003e] nilfs_get_sb+0x3e7/0x653 [nilfs2]\n       [\u003cc10c0ccb\u003e] vfs_kern_mount+0x8b/0x124\n       [\u003cc10c0db2\u003e] do_kern_mount+0x37/0xc3\n       [\u003cc10d7517\u003e] do_mount+0x64d/0x69d\n       [\u003cc10d75cd\u003e] sys_mount+0x66/0x95\n       [\u003cc1002a14\u003e] sysenter_do_call+0x12/0x32\n\n-\u003e #1 (\u0026type-\u003es_umount_key#31/1){+.+.+.}:\n       [\u003cc105799c\u003e] __lock_acquire+0x109c/0x139d\n       [\u003cc1057d26\u003e] lock_acquire+0x89/0xa0\n       [\u003cc104c0f3\u003e] down_write_nested+0x34/0x52\n       [\u003cc10c08fe\u003e] sget+0x22e/0x389\n       [\u003cfed6e133\u003e] nilfs_get_sb+0x187/0x653 [nilfs2]\n       [\u003cc10c0ccb\u003e] vfs_kern_mount+0x8b/0x124\n       [\u003cc10c0db2\u003e] do_kern_mount+0x37/0xc3\n       [\u003cc10d7517\u003e] do_mount+0x64d/0x69d\n       [\u003cc10d75cd\u003e] sys_mount+0x66/0x95\n       [\u003cc1002a14\u003e] sysenter_do_call+0x12/0x32\n\n-\u003e #0 (\u0026nilfs-\u003ens_mount_mutex){+.+.+.}:\n       [\u003cc1057727\u003e] __lock_acquire+0xe27/0x139d\n       [\u003cc1057d26\u003e] lock_acquire+0x89/0xa0\n       [\u003cc1414d63\u003e] mutex_lock_nested+0x41/0x23e\n       [\u003cfed7cfcc\u003e] nilfs_cpfile_change_cpmode+0x46/0x752 [nilfs2]\n       [\u003cfed801b2\u003e] nilfs_ioctl+0x11a/0x7da [nilfs2]\n       [\u003cc10cca12\u003e] vfs_ioctl+0x27/0x6e\n       [\u003cc10ccf93\u003e] do_vfs_ioctl+0x491/0x4db\n       [\u003cc10cd022\u003e] sys_ioctl+0x45/0x5f\n       [\u003cc1002a14\u003e] sysenter_do_call+0x12/0x32\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "c083234f1592ef3fad3d8083663c5e4a357ec77c",
      "tree": "8c90897b1fa11920a4edbf043aa59a5123eaa2cb",
      "parents": [
        "5399dd1fc8f5e812db931225ef5f67d89f3b1a56"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Nov 08 12:09:24 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Nov 08 19:04:25 2009 +0900"
      },
      "message": "nilfs2: fix missing cleanup of gc cache on error cases\n\nThis fixes an -rc1 regression brought by the commit:\n1cf58fa840472ec7df6bf2312885949ebb308853 (\"nilfs2: shorten freeze\nperiod due to GC in write operation v3\").\n\nAlthough the patch moved out a function call of\nnilfs_ioctl_move_blocks() to nilfs_ioctl_clean_segments() from\nnilfs_ioctl_prepare_clean_segments(), it didn\u0027t move corresponding\ncleanup job needed for the error case.\n\nThis will move the missing cleanup job to the destination function.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nAcked-by: Jiro SEKIBA \u003cjir@unicus.jp\u003e\n"
    },
    {
      "commit": "5399dd1fc8f5e812db931225ef5f67d89f3b1a56",
      "tree": "cb75ad2f91fb2ec6ad70f3c1a055090418fc643f",
      "parents": [
        "b419148e567728f6af0c3b01965c1cc141e3e13a"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sat Nov 07 18:45:16 2009 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Nov 08 19:01:35 2009 +0900"
      },
      "message": "nilfs2: fix kernel oops in error case of nilfs_ioctl_move_blocks\n\nThis fixes a kernel oops reported by Markus Trippelsdorf in the email\ntitled \"[NILFS users] kernel Oops while running nilfs_cleanerd\".\n\nThe oops was caused by a bug of error path in\nnilfs_ioctl_move_blocks() function, which was inlined in\nnilfs_ioctl_clean_segments().\n\nnilfs_ioctl_move_blocks checks duplication of blocks which will be\nmoved in garbage collection.  But, the check should have be done\nwithin nilfs_ioctl_move_inode_block() to prevent list corruption among\nbuffers storing the target blocks.\n\nTo fix the kernel oops, this moves forward the duplication check\nbefore the list insertion.\n\nI also tested this for stable trees [2.6.30, 2.6.31].\n\nReported-by: Markus Trippelsdorf \u003cmarkus@trippelsdorf.de\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nCc: stable \u003cstable@kernel.org\u003e\n"
    },
    {
      "commit": "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": "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": "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": "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": "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": "1f5abe7e7dbcd83e73212c6cb135a6106cea6a0b",
      "tree": "f80e97297d5badebd31bbb17003d76a4ea30453a",
      "parents": [
        "2c2e52fc4fca251e68f90821c9ff5cb18be4df58"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:55 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:19 2009 -0700"
      },
      "message": "nilfs2: replace BUG_ON and BUG calls triggerable from ioctl\n\nPekka Enberg advised me:\n\u003e It would be nice if BUG(), BUG_ON(), and panic() calls would be\n\u003e converted to proper error handling using WARN_ON() calls. The BUG()\n\u003e call in nilfs_cpfile_delete_checkpoints(), for example, looks to be\n\u003e triggerable from user-space via the ioctl() system call.\n\nThis will follow the comment and keep them to a minimum.\n\nAcked-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7a9461939a46345860622ea36ff267ee4446f00f",
      "tree": "5607ba81b9580e2979bcfb806d5b04f5fbfd53d9",
      "parents": [
        "8082d36aed26c4fb6ed43e4008303682eabf839e"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:53 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:19 2009 -0700"
      },
      "message": "nilfs2: use unlocked_ioctl\n\nPekka Enberg suggested converting -\u003eioctl operations to use\n-\u003eunlocked_ioctl to avoid BKL.\n\nThe conversion was verified to be safe, so I will take it on this\noccasion.\n\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8082d36aed26c4fb6ed43e4008303682eabf839e",
      "tree": "d51eff46a3ebe29e0a445597570599b5b7c4a037",
      "parents": [
        "dc498d09be28172846cacded35ca2378222a8c7b"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:53 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:18 2009 -0700"
      },
      "message": "nilfs2: remove compat ioctl code\n\nThis removes compat code from the nilfs ioctls and applies the same\nfunction for both .ioctl and .compat_ioctl file operations.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "dc498d09be28172846cacded35ca2378222a8c7b",
      "tree": "42b31073a0fb4eb74d6c09c2f4b9711262e97d2a",
      "parents": [
        "1088dcf4c3a0a27fdad5214781d5084b11405238"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:52 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:18 2009 -0700"
      },
      "message": "nilfs2: use fixed sized types for ioctl structures\n\nNilfs ioctl had structures not having fixed sized types such as:\n\n  struct nilfs_argv {\n         void *v_base;\n         size_t v_nmembs;\n         size_t v_size;\n         int v_index;\n         int v_flags;\n  };\n\nFurther, some of them are wrongly aligned:\n\n  e.g.\n\n  struct nilfs_cpmode {\n        __u64 cm_cno;\n        int cm_mode;\n  };\n\nThe size of wrongly aligned structures varies depending on\narchitectures, and it breaks the identity of ioctl commands, which\nleads to arch dependent errors.\n\nPreviously, these are compensated by using compat_ioctl.\n\nThis fixes these problems and allows removal of compat ioctl.\n\nSince this will change sizes of those structures, binary compatibility\nfor the past utilities will once break; new utilities have to be used\ninstead.  However, it would be helpful to avoid platform dependent\nproblems in the long term.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1088dcf4c3a0a27fdad5214781d5084b11405238",
      "tree": "4d08f45ff4867d629e5ad4e94e0362e897ffa1e1",
      "parents": [
        "76068c4ff1cc03d9d24d17fd9e6a1475bc2f6730"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:51 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:18 2009 -0700"
      },
      "message": "nilfs2: remove timedwait ioctl command\n\nThis removes NILFS_IOCTL_TIMEDWAIT command from ioctl interface along\nwith the related flags and wait queue.\n\nThe command is terrible because it just sleeps in the ioctl.  I prefer\nto avoid this by devising means of event polling in userland program.\nBy reconsidering the userland GC daemon, I found this is possible\nwithout changing behaviour of the daemon and sacrificing efficiency.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8acfbf0939e98cc77dab94c24899c9930ddd1e13",
      "tree": "0f261ee58584db9a89a874f85646ab827105143f",
      "parents": [
        "7fa10d20012296300dfe645cb3e628a4e9a0d5ef"
      ],
      "author": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Mon Apr 06 19:01:49 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:17 2009 -0700"
      },
      "message": "nilfs2: clean up indirect function calling conventions\n\nThis cleans up the strange indirect function calling convention used in\nnilfs to follow the normal kernel coding style.\n\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nAcked-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b028fcfc4cd198a6aa1ffcfb872073ccc1db3459",
      "tree": "d6a89ba7cf253ab1738d5295f557b77e77ac4311",
      "parents": [
        "85ef9cea02882baedd1e65336cf3dd292841dde3"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:47 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:17 2009 -0700"
      },
      "message": "nilfs2: fix gc failure on volumes keeping numerous snapshots\n\nThis resolves the following failure of nilfs2 cleaner daemon:\n\n nilfs_cleanerd[20670]: cannot clean segments: No such file or directory\n nilfs_cleanerd[20670]: shutdown\n\nWhen creating thousands of snapshots, the cleaner daemon had rarely died\nas above due to an error returned from the kernel code.\n\nAfter applying the recent patch which fixed memory allocation problems in\nioctl (Message-Id: \u003c20081215.155840.105124170.ryusuke@osrg.net\u003e), the\nproblem gets more frequent.\n\nIt turned out to be a bug of nilfs_ioctl_wrap_copy function and one of its\ncallback routines to read out information of snapshots; if the\nnilfs_ioctl_wrap_copy function divided a large read request into multiple\nrequests, the second and later requests have failed since a restart\nposition on snapshot meta data was not properly set forward.\n\nIt\u0027s a deficiency of the callback interface that cannot pass the restart\nposition among multiple requests.  This patch fixes the issue by allowing\nnilfs_ioctl_wrap_copy and snapshot read functions to exchange a position\nargument.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "47420c799830d4676e544dbec56b2a7f787528f5",
      "tree": "dd61f6c96942b07f762129c893d9cbbbeff60735",
      "parents": [
        "a2e7d2df82cafb76f76809ddf6e2caa8afe4f75e"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:45 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:17 2009 -0700"
      },
      "message": "nilfs2: avoid double error caused by nilfs_transaction_end\n\nPekka Enberg pointed out that double error handlings found after\nnilfs_transaction_end() can be avoided by separating abort operation:\n\n OK, I don\u0027t understand this. The only way nilfs_transaction_end() can\n fail is if we have NILFS_TI_SYNC set and we fail to construct the\n segment. But why do we want to construct a segment if we don\u0027t commit?\n\n I guess what I\u0027m asking is why don\u0027t we have a separate\n nilfs_transaction_abort() function that can\u0027t fail for the erroneous\n case to avoid this double error value tracking thing?\n\nThis does the separation and renames nilfs_transaction_end() to\nnilfs_transaction_commit() for clarification.\n\nSince, some calls of these functions were used just for exclusion control\nagainst the segment constructor, they are replaced with semaphore\noperations.\n\nAcked-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3358b4aaa84fd4c1cdd64391875e92cbb8afeb29",
      "tree": "4ae252a8b06715a57a76c8a645f44c3ce0066d9c",
      "parents": [
        "0c4fb877641c5c72d4a3ce8921a256bfe44055c0"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:43 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:16 2009 -0700"
      },
      "message": "nilfs2: fix problems of memory allocation in ioctl\n\nThis is another patch for fixing the following problems of a memory\ncopy function in nilfs2 ioctl:\n\n(1) It tries to allocate 128KB size of memory even for small objects.\n\n(2) Though the function repeatedly tries large memory allocations\n    while reducing the size, GFP_NOWAIT flag is not specified.\n    This increases the possibility of system memory shortage.\n\n(3) During the retries of (2), verbose warnings are printed\n    because _GFP_NOWARN flag is not used for the kmalloc calls.\n\nThe first patch was still doing large allocations by kmalloc which are\nrepeatedly tried while reducing the size.\n\nAndi Kleen told me that using copy_from_user for large memory is not\ngood from the viewpoint of preempt latency:\n\n On Fri, 12 Dec 2008 21:24:11 +0100, Andi Kleen \u003candi@firstfloor.org\u003e wrote:\n \u003e \u003e In the current interface, each data item is copied twice: one is to\n \u003e \u003e the allocated memory from user space (via copy_from_user), and another\n \u003e\n \u003e For such large copies it is better to use multiple smaller (e.g. 4K)\n \u003e copy user, that gives better real time preempt latencies. Each cfu has a\n \u003e cond_resched(), but only one, not multiple times in the inner loop.\n\nHe also advised me that:\n\n On Sun, 14 Dec 2008 16:13:27 +0100, Andi Kleen \u003candi@firstfloor.org\u003e wrote:\n \u003e Better would be if you could go to PAGE_SIZE. order 0 allocations\n \u003e are typically the fastest / least likely to stall.\n \u003e\n \u003e Also in this case it\u0027s a good idea to use __get_free_pages()\n \u003e directly, kmalloc tends to be become less efficient at larger\n \u003e sizes.\n\nFor the function in question, the size of buffer memory can be reduced\nsince the buffer is repeatedly used for a number of small objects.  On\nthe other hand, it may incur large preempt latencies for larger buffer\nbecause a copy_from_user (and a copy_to_user) was applied only once\neach cycle.\n\nWith that, this revision uses the order 0 allocations with\n__get_free_pages() to fix the original problems.\n\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7942b919f7321f95a777d396ff7894a7a83dc9b0",
      "tree": "60c63349788f8776c3ecd9ac1e02edc2c7f8769e",
      "parents": [
        "a3d93f709e893187d301aa5458b2248db9f22bd1"
      ],
      "author": {
        "name": "Koji Sato",
        "email": "sato.koji@lab.ntt.co.jp",
        "time": "Mon Apr 06 19:01:41 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:31:16 2009 -0700"
      },
      "message": "nilfs2: ioctl operations\n\nThis adds userland interface implemented with ioctl.\n\nSigned-off-by: Koji Sato \u003csato.koji@lab.ntt.co.jp\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ]
}
