)]}'
{
  "log": [
    {
      "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"
    }
  ]
}
