)]}'
{
  "log": [
    {
      "commit": "cf6e693212263d33c5882e4653df89a2fca4c0c4",
      "tree": "9774d1776e7d79aaacb2ab77d342e5e24e925462",
      "parents": [
        "41e20983fe553b39bc2b00e07c7a379f0c86a4bc"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Oct 26 16:49:55 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 29 07:39:27 2009 -0700"
      },
      "message": "loop: fix NULL dereference if mount fails\n\nCommit bb21488482bd36eae6b30b014d93619063773fd4 (\"[PATCH] switch loop\")\nstarted to pass NULL bdev to ioctl hook.\n\nSteps to reproduce:\n\n\t[boot with loop.max_part\u003d1]\n\t[mount -o loop something so mount fails]\n\nBUG: unable to handle kernel NULL pointer dereference at 00000000000000b8\nIP: [\u003cffffffff811486ee\u003e] blkdev_ioctl+0x2e/0xa30\nPGD 0\nOops: 0000 [#1] PREEMPT SMP DEBUG_PAGEALLOC\nlast sysfs file: /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:35/ACPI0003:00/power_supply/ACAD/online\nCPU 0\nModules linked in: zfs nvidia(P) [last unloaded: zfs]\nPid: 15177, comm: mount Tainted: P           2.6.32-rc4-zfs #2 Satellite X200\nRIP: 0010:[\u003cffffffff811486ee\u003e]  [\u003cffffffff811486ee\u003e] blkdev_ioctl+0x2e/0xa30\nRSP: 0018:ffff88003b3d5bb8  EFLAGS: 00010286\nRAX: 0000000000000000 RBX: 0000000000000000 RCX: 0000000000000000\nRDX: 000000000000125f RSI: 0000000000000000 RDI: 0000000000000000\nRBP: ffff88003b3d5ce8 R08: 0000000000000000 R09: 0000000000000000\nR10: 0000000000000000 R11: 0000000000000000 R12: 00007ffffffff000\nR13: 0000000000000000 R14: ffff880071cef280 R15: 00000000000200da\nFS:  00007fd77cfe7740(0000) GS:ffff880001600000(0000) knlGS:0000000000000000\nCS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b\nCR2: 00000000000000b8 CR3: 0000000001001000 CR4: 00000000000026f0\nDR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000\nDR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400\nProcess mount (pid: 15177, threadinfo ffff88003b3d4000, task ffff88007572f920)\nStack:\n ffff88003b3d5c38 ffffffff812f95f5 ffff88007eeb6600 0000000000000000\n\u003c0\u003e 0000000000000000 ffff88003b3d5c18 ffffffff811547d9 ffff88001bf11ef0\n\u003c0\u003e 7fffffffffffffff ffff88001bf11ee8 ffff88001bf11ef0 0000000000000000\nCall Trace:\n [\u003cffffffff812f95f5\u003e] ? schedule_timeout+0x1f5/0x250\n [\u003cffffffff811547d9\u003e] ? rb_insert_color+0x109/0x140\n [\u003cffffffff812fb754\u003e] ? _spin_unlock_irq+0x14/0x40\n [\u003cffffffff812f84c6\u003e] ? wait_for_common+0x66/0x170\n [\u003cffffffff8105a280\u003e] ? default_wake_function+0x0/0x10\n [\u003cffffffff810f8258\u003e] ioctl_by_bdev+0x38/0x50\n [\u003cffffffff811d2481\u003e] loop_clr_fd+0x1e1/0x210\n [\u003cffffffff811d2522\u003e] lo_release+0x72/0x80\n [\u003cffffffff810f934c\u003e] __blkdev_put+0x1ac/0x1d0\n [\u003cffffffff810f937b\u003e] blkdev_put+0xb/0x10\n [\u003cffffffff810f93b9\u003e] blkdev_close+0x39/0x60\n [\u003cffffffff810ccef3\u003e] __fput+0xd3/0x230\n [\u003cffffffff810cd06d\u003e] fput+0x1d/0x30\n [\u003cffffffff810c9680\u003e] filp_close+0x50/0x80\n [\u003cffffffff81061f11\u003e] put_files_struct+0x81/0x100\n [\u003cffffffff81061fde\u003e] exit_files+0x4e/0x60\n [\u003cffffffff81063ec5\u003e] do_exit+0x6b5/0x730\n [\u003cffffffff8107b279\u003e] ? up_read+0x9/0x10\n [\u003cffffffff8104c86e\u003e] ? do_page_fault+0x18e/0x2a0\n [\u003cffffffff81063f81\u003e] do_group_exit+0x41/0xc0\n [\u003cffffffff81064012\u003e] sys_exit_group+0x12/0x20\n [\u003cffffffff81030deb\u003e] system_call_fastpath+0x16/0x1b\nCode: f8 48 89 e5 48 81 ec 30 01 00 00 48 89 5d d8 4c 89 6d e8 4c 89 65 e0 4c 89 75 f0 4c 89 7d f8 48 89 bd e8 fe ff ff 49 89 cd 89 f3 \u003c49\u003e 8b 88 b8 00 00 00 81 fa 68 12 00 00 0f 84 57 05 00 00 0f 86\nRIP  [\u003cffffffff811486ee\u003e] blkdev_ioctl+0x2e/0xa30\n RSP \u003cffff88003b3d5bb8\u003e\nCR2: 00000000000000b8\n---[ end trace c0b4d3c3118d1427 ]---\nFixing recursive fault but reboot is needed!\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "83d5cde47dedf01b6a4a4331882cbc0a7eea3c2e",
      "tree": "f8ba5e263717d35cd444fcc65898d2ed352af1ae",
      "parents": [
        "7b021967c5e1463936042c8da72b550d3cabe9ac"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Sep 21 17:01:13 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:25 2009 -0700"
      },
      "message": "const: make block_device_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": "1f98a13f623e0ef666690a18c1250335fc6d7ef1",
      "tree": "15ca2dddffaa18a0d1844957f4f8cc707cbb8117",
      "parents": [
        "e7e503aedb1f4d165081cb8d47a58c38f80f0cb4"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Sep 11 14:32:04 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Sep 11 14:33:31 2009 +0200"
      },
      "message": "bio: first step in sanitizing the bio-\u003ebi_rw flag testing\n\nGet rid of any functions that test for these bits and make callers\nuse bio_rw_flagged() directly. Then it is at least directly apparent\nwhat variable and flag they check.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.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": "6818173bd658439b83896a2a7586f64ab51bf29c",
      "tree": "17d25ee77485af18da1a80cb7f1d8ec581c6abfc",
      "parents": [
        "7c77f0b3f9208c339a4b40737bb2cb0f0319bb8d"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Thu May 07 15:37:36 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon May 11 14:13:10 2009 +0200"
      },
      "message": "splice: implement default splice_read method\n\nIf f_op-\u003esplice_read() is not implemented, fall back to a plain read.\nUse vfs_readv() to read into previously allocated pages.\n\nThis will allow splice and functions using splice, such as the loop\ndevice, to work on all filesystems.  This includes \"direct_io\" files\nin fuse which bypass the page cache.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "e686307fdc84f249490e6c9da92fcb2424491f14",
      "tree": "d0174abe1f71a4435bf4b7a5822bfdc7dcf650aa",
      "parents": [
        "e93b9fb7d85da4fd9d5171649e5ddcac1dd572bf"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Fri Apr 17 08:41:21 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Apr 28 07:37:28 2009 +0200"
      },
      "message": "loop: use BIO list management functions\n\nNow that the bio list management stuff is generic, convert loop to use\nbio lists instead of its own private bio list implementation.\n\nCc:  Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "ffcd7dca3ab78f9f425971756e5e90024157f6be",
      "tree": "777753013a09b5de8938a9b1af1c1b6ac5147635",
      "parents": [
        "b029195dda0129b427c6e579a3bb3ae752da3a93"
      ],
      "author": {
        "name": "Alexander Beregalov",
        "email": "a.beregalov@gmail.com",
        "time": "Tue Apr 07 13:48:21 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Apr 07 13:48:21 2009 +0200"
      },
      "message": "loop: mutex already unlocked in loop_clr_fd()\n\nmount/1865 is trying to release lock (\u0026lo-\u003elo_ctl_mutex) at:\nbut there are no more locks to release!\n\nmutex is already unlocked in loop_clr_fd(), we should not\ntry to unlock it in lo_release() again.\n\nSigned-off-by: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "53d6660836f233df66490707365ab177e5fb2bb4",
      "tree": "dad7eae486c0928af039f4bb47ee3dd7bb0ff87d",
      "parents": [
        "65bd6a9bc7be3f5841dad12f77ce4b3210bd82c5"
      ],
      "author": {
        "name": "J. R. Okajima",
        "email": "hooanon05@yahoo.co.jp",
        "time": "Tue Mar 31 15:23:43 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:17 2009 -0700"
      },
      "message": "loop: add ioctl to resize a loop device\n\nAdd the ability to \u0027resize\u0027 the loop device on the fly.\n\nOne practical application is a loop file with XFS filesystem, already\nmounted: You can easily enlarge the file (append some bytes) and then call\nioctl(fd, LOOP_SET_CAPACITY, new); The loop driver will learn about the\nnew size and you can use xfs_growfs later on, which will allow you to use\nfull capacity of the loop file without the need to unmount.\n\nTest app:\n\n#include \u003clinux/fs.h\u003e\n#include \u003clinux/loop.h\u003e\n#include \u003csys/ioctl.h\u003e\n#include \u003csys/stat.h\u003e\n#include \u003csys/types.h\u003e\n#include \u003cassert.h\u003e\n#include \u003cerrno.h\u003e\n#include \u003cfcntl.h\u003e\n#include \u003cstdio.h\u003e\n#include \u003cstdlib.h\u003e\n#include \u003cunistd.h\u003e\n\n#define _GNU_SOURCE\n#include \u003cgetopt.h\u003e\n\nchar *me;\n\nvoid usage(FILE *f)\n{\n\tfprintf(f, \"%s [options] loop_dev [backend_file]\\n\"\n\t\t\"-s, --set new_size_in_bytes\\n\"\n\t\t\"\\twhen backend_file is given, \"\n\t\t\"it will be expanded too while keeping the original contents\\n\",\n\t\tme);\n}\n\nstruct option opts[] \u003d {\n\t{\n\t\t.name\t\t\u003d \"set\",\n\t\t.has_arg\t\u003d 1,\n\t\t.flag\t\t\u003d NULL,\n\t\t.val\t\t\u003d \u0027s\u0027\n\t},\n\t{\n\t\t.name\t\t\u003d \"help\",\n\t\t.has_arg\t\u003d 0,\n\t\t.flag\t\t\u003d NULL,\n\t\t.val\t\t\u003d \u0027h\u0027\n\t}\n};\n\nvoid err_size(char *name, __u64 old)\n{\n\tfprintf(stderr, \"size must be larger than current %s (%llu)\\n\",\n\t\tname, old);\n}\n\nint main(int argc, char *argv[])\n{\n\tint fd, err, c, i, bfd;\n\tssize_t ssz;\n\tsize_t sz;\n\t__u64 old, new, append;\n\tchar a[BUFSIZ];\n\tstruct stat st;\n\tFILE *out;\n\tchar *backend, *dev;\n\n\terr \u003d EINVAL;\n\tout \u003d stderr;\n\tme \u003d argv[0];\n\tnew \u003d 0;\n\twhile ((c \u003d getopt_long(argc, argv, \"s:h\", opts, \u0026i)) !\u003d -1) {\n\t\tswitch (c) {\n\t\tcase \u0027s\u0027:\n\t\t\terrno \u003d 0;\n\t\t\tnew \u003d strtoull(optarg, NULL, 0);\n\t\t\tif (errno) {\n\t\t\t\terr \u003d errno;\n\t\t\t\tperror(argv[i]);\n\t\t\t\tgoto out;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \u0027h\u0027:\n\t\t\terr \u003d 0;\n\t\t\tout \u003d stdout;\n\t\t\tgoto err;\n\n\t\tdefault:\n\t\t\tperror(argv[i]);\n\t\t\tgoto err;\n\t\t}\n\t}\n\n\tif (optind \u003c argc)\n\t\tdev \u003d argv[optind++];\n\telse\n\t\tgoto err;\n\n\tfd \u003d open(dev, O_RDONLY);\n\tif (fd \u003c 0) {\n\t\terr \u003d errno;\n\t\tperror(dev);\n\t\tgoto out;\n\t}\n\n\terr \u003d ioctl(fd, BLKGETSIZE64, \u0026old);\n\tif (err) {\n\t\terr \u003d errno;\n\t\tperror(\"ioctl BLKGETSIZE64\");\n\t\tgoto out;\n\t}\n\n\tif (!new) {\n\t\tprintf(\"%llu\\n\", old);\n\t\tgoto out;\n\t}\n\n\tif (new \u003c old) {\n\t\terr \u003d EINVAL;\n\t\terr_size(dev, old);\n\t\tgoto out;\n\t}\n\n\tif (optind \u003c argc) {\n\t\tbackend \u003d argv[optind++];\n\t\tbfd \u003d open(backend, O_WRONLY|O_APPEND);\n\t\tif (bfd \u003c 0) {\n\t\t\terr \u003d errno;\n\t\t\tperror(backend);\n\t\t\tgoto out;\n\t\t}\n\t\terr \u003d fstat(bfd, \u0026st);\n\t\tif (err) {\n\t\t\terr \u003d errno;\n\t\t\tperror(backend);\n\t\t\tgoto out;\n\t\t}\n\t\tif (new \u003c st.st_size) {\n\t\t\terr \u003d EINVAL;\n\t\t\terr_size(backend, st.st_size);\n\t\t\tgoto out;\n\t\t}\n\t\tappend \u003d new - st.st_size;\n\t\tsz \u003d sizeof(a);\n\t\twhile (append \u003e 0) {\n\t\t\tif (append \u003c sz)\n\t\t\t\tsz \u003d append;\n\t\t\tssz \u003d write(bfd, a, sz);\n\t\t\tif (ssz !\u003d sz) {\n\t\t\t\terr \u003d errno;\n\t\t\t\tperror(backend);\n\t\t\t\tgoto out;\n\t\t\t}\n\t\t\tappend -\u003d sz;\n\t\t}\n\t\terr \u003d fsync(bfd);\n\t\tif (err) {\n\t\t\terr \u003d errno;\n\t\t\tperror(backend);\n\t\t\tgoto out;\n\t\t}\n\t}\n\n\terr \u003d ioctl(fd, LOOP_SET_CAPACITY, new);\n\tif (err) {\n\t\terr \u003d errno;\n\t\tperror(\"ioctl LOOP_SET_CAPACITY\");\n\t}\n\tgoto out;\n\n err:\n\tusage(out);\n out:\n\treturn err;\n}\n\nSigned-off-by: J. R. Okajima \u003chooanon05@yahoo.co.jp\u003e\nSigned-off-by: Tomas Matejicek \u003ctomas@slax.org\u003e\nCc: \u003cutil-linux-ng@vger.kernel.org\u003e\nCc: Karel Zak \u003ckzak@redhat.com\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nCc: \u003clinux-api@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f028f3b2f987ebc61cef382ab7a5c449917b728e",
      "tree": "6006b562900361a0af3cc50f564466ffce29c2a2",
      "parents": [
        "68db1961bbf4e16c220ccec4a780e966bc1fece3"
      ],
      "author": {
        "name": "Nikanth Karthikesan",
        "email": "knikanth@suse.de",
        "time": "Tue Mar 24 12:33:41 2009 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Mar 26 11:01:19 2009 +0100"
      },
      "message": "loop: fix circular locking in loop_clr_fd()\n\nWith CONFIG_PROVE_LOCKING enabled\n\n$ losetup /dev/loop0 file\n$ losetup -o 32256 /dev/loop1 /dev/loop0\n\n$ losetup -d /dev/loop1\n$ losetup -d /dev/loop0\n\ntriggers a [ INFO: possible circular locking dependency detected ]\n\nI think this warning is a false positive.\n\nOpen/close on a loop device acquires bd_mutex of the device before\nacquiring lo_ctl_mutex of the same device. For ioctl(LOOP_CLR_FD) after\nacquiring lo_ctl_mutex, fput on the backing_file might acquire the bd_mutex of\na device, if backing file is a device and this is the last reference to the\nfile being dropped . But it is guaranteed that it is impossible to have a\ncircular list of backing devices.(say loop2-\u003eloop1-\u003eloop0-\u003eloop2 is not\npossible), which guarantees that this can never deadlock.\n\nSo this warning should be suppressed. It is very difficult to annotate lockdep\nnot to warn here in the correct way. A simple way to silence lockdep could be\nto mark the lo_ctl_mutex in ioctl to be a sub class, but this might mask some\nother real bugs.\n\n@@ -1164,7 +1164,7 @@ static int lo_ioctl(struct block_device *bdev, fmode_t mode,\n \tstruct loop_device *lo \u003d bdev-\u003ebd_disk-\u003eprivate_data;\n \tint err;\n\n-\tmutex_lock(\u0026lo-\u003elo_ctl_mutex);\n+\tmutex_lock_nested(\u0026lo-\u003elo_ctl_mutex, 1);\n \tswitch (cmd) {\n \tcase LOOP_SET_FD:\n \t\terr \u003d loop_set_fd(lo, mode, bdev, arg);\n\nOr actually marking the bd_mutex after lo_ctl_mutex as a sub class could be\na better solution.\n\nLuckily it is easy to avoid calling fput on backing file with lo_ctl_mutex\nheld, so no lockdep annotation is required.\n\nIf you do not like the special handling of the lo_ctl_mutex just for the\nLOOP_CLR_FD ioctl in lo_ioctl(), the mutex handling could be moved inside\neach of the individual ioctl handlers and I could send you another patch.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "68db1961bbf4e16c220ccec4a780e966bc1fece3",
      "tree": "8101ee12fb24abd2e794ecadfedbc0e0c6859891",
      "parents": [
        "05378940caf979a8655c18b18a17213dcfa52412"
      ],
      "author": {
        "name": "Nikanth Karthikesan",
        "email": "knikanth@suse.de",
        "time": "Tue Mar 24 12:29:54 2009 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Mar 24 12:35:18 2009 +0100"
      },
      "message": "loop: support barrier writes\n\nHonour barrier requests in the loop back block device driver.\nIn case of barrier bios, flush the backing file once before processing the\nbarrier and once after to guarantee ordering. In case of filesystems that\ndoes not support fsync, barrier bios would be failed with -EOPNOTSUPP.\n\nSigned-off-by: Nikanth Karthikesan \u003cknikanth@suse.de\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "a3941ec101a5ec54c1e929730afeb196441a171e",
      "tree": "f714362623fb68f2e8e462be854f0feff88b63f1",
      "parents": [
        "5e18cfd04feca78cc08a6b8b71a60a610de81eaa"
      ],
      "author": {
        "name": "Roel Kluin",
        "email": "roel.kluin@gmail.com",
        "time": "Thu Mar 05 08:03:53 2009 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Mar 05 12:04:57 2009 +0100"
      },
      "message": "loop: don\u0027t increment p-\u003eoffset with (size_t) -EINVAL\n\nUpon a \u0027transfer error block\u0027 size is set to -EINVAL, but this becomes positive\nsince size is unsigned: p-\u003eoffset still gets incremented.\n\nSigned-off-by: Roel Kluin \u003croel.kluin@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "8ae30b895805a6e2bb725b1d78b12daabd7eadfe",
      "tree": "3fbf7bd4bf0eb8928c7a2aaa5579c7e1205b1d2e",
      "parents": [
        "14f2793958bd7878db2dc0309ed4525d6b7f1b72"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Fri Dec 12 14:50:49 2008 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Dec 29 08:29:52 2008 +0100"
      },
      "message": "loop: Do not call loop_unplug for not configured loop device.\n\nIn loop_unplug() function is expected that mapping is set\nand lo-\u003elo_backing_file is not NULL.\n\nUnfortunately loop_set_fd() set the request queue unplug function,\nbut loop_clr_fd() doesn\u0027t clear that.\n\nLoop device allows open of non-configured loop in some situations.\nIf the unplug on request queue is called, loop module oopses because\nof missing lo_backing_file.\n\nSimple reproducer:\n\tlosetup /dev/loop0 /xxx\n\tlosetup -d /dev/loop0\n\tdmsetup create x --table \"0 1 linear /dev/loop0 0\"\n\n EIP is at loop_unplug+0x1d/0x3b\n ...\n  Call Trace:\n   blk_unplug+0x57/0x5e\n   dm_table_unplug_all+0x34/0x77 [dm_mod]\n   destroy_inode+0x27/0x38\n   generic_delete_inode+0xd5/0xd9\n   iput+0x4b/0x4e\n   dm_resume+0xca/0xfe [dm_mod]\n   dev_suspend+0x143/0x165 [dm_mod]\n   dm_ctl_ioctl+0x18e/0x1cf [dm_mod]\n   dev_suspend+0x0/0x165 [dm_mod]\n   dm_ctl_ioctl+0x0/0x1cf [dm_mod]\n   vfs_ioctl+0x22/0x69\n   do_vfs_ioctl+0x39d/0x3c7\n   trace_hardirqs_on+0xb/0xd\n   remove_vma+0x50/0x56\n   do_munmap+0x21c/0x237\n   sys_ioctl+0x2c/0x45\n   sysenter_do_call+0x12/0x31\n\nSeveral reports here\nhttp://www.kerneloops.org/search.php?search\u003dloop_unplug\n\nFix it by simply clear unplug function together with\nremoving of backing file.\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "14f2793958bd7878db2dc0309ed4525d6b7f1b72",
      "tree": "6113ae1d21963b96e10a5174d2c3365b1f0570fd",
      "parents": [
        "10e5b64415ae9a0ba81dd1f1036d14dfdae9308c"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Fri Dec 12 14:48:27 2008 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Dec 29 08:29:52 2008 +0100"
      },
      "message": "loop: Flush possible running bios when loop device is released.\n\nWhen there are still queued bios and reference count\ndrops to zero, loop device must flush all queued bios.\n\nOtherwise it can lead to situation that caller\ncloses the device, but some bios are still running\nand endio() function call later OOpses when uses\nunallocated mempool.\n\nThis happens for example when running dm-crypt over loop,\nhere is typical oops backtrace:\n\n Oops: 0000 [#1] PREEMPT SMP\n EIP is at mempool_free+0x12/0x6b\n...\n crypt_dec_pending+0x50/0x54 [dm_crypt]\n crypt_endio+0x9f/0xa7 [dm_crypt]\n crypt_endio+0x0/0xa7 [dm_crypt]\n bio_endio+0x2b/0x2e\n loop_thread+0x37a/0x3b1\n do_lo_send_aops+0x0/0x165\n autoremove_wake_function+0x0/0x33\n loop_thread+0x0/0x3b1\n kthread+0x3b/0x61\n kthread+0x0/0x61\n kernel_thread_helper+0x7/0x10\n\n(But crash is reproducible with different dm targets\nrunning over loop device too.)\n\nPatch fixes it by flushing the bios in release call,\nreusing the flush mechanism for switching backing store.\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "b0fafa816ece0080771355de6158b4dfa8531a95",
      "tree": "c26b6a2acde2692ab5018752d04c91aca34962c1",
      "parents": [
        "350b4da71f8326b9319ada7b701f2bce2e1285b7"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Nov 14 10:38:41 2008 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri Nov 14 10:38:41 2008 +1100"
      },
      "message": "CRED: Wrap task credential accesses in the block loopback driver\n\nWrap access to task credentials so that they can be separated more easily from\nthe task_struct during the introduction of COW creds.\n\nChange most current-\u003e(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id().\n\nChange some task-\u003ee?[ug]id to task_e?[ug]id().  In some places it makes more\nsense to use RCU directly rather than a convenient wrapper; these will be\naddressed by later patches.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nReviewed-by: James Morris \u003cjmorris@namei.org\u003e\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "4e02ed4b4a2fae34aae766a5bb93ae235f60adb8",
      "tree": "bddfb61b7cc4a4007ae176ccb1ace5740b61da8d",
      "parents": [
        "9b913735e53ab0da4a792bac0de8e178cc13dcfb"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Wed Oct 29 14:00:55 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 30 11:38:45 2008 -0700"
      },
      "message": "fs: remove prepare_write/commit_write\n\nNothing uses prepare_write or commit_write. Remove them from the tree\ncompletely.\n\n[akpm@linux-foundation.org: schedule simple_prepare_write() for unexporting]\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "511de73ff09034fb89c8d54bed201a10d057328c",
      "tree": "c9a6bc97ee65dd35f7370c04beebb51448ee4832",
      "parents": [
        "33c2dca4957bd0da3e1af7b96d0758d97e708ef6"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 08 12:10:13 2007 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Oct 21 07:48:56 2008 -0400"
      },
      "message": "[PATCH] kill the unused bsize on the send side of /dev/loop\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "bb21488482bd36eae6b30b014d93619063773fd4",
      "tree": "1d15cb67c966d1984349d344f18d142c293fa0f4",
      "parents": [
        "a4af9b48cb480f5016947bbd3f396c265c7cb368"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Mar 02 09:29:48 2008 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Oct 21 07:47:51 2008 -0400"
      },
      "message": "[PATCH] switch loop\n\nioctl doesn\u0027t need BKL here\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "d4430d62fa77208824a37fe6f85ab2831d274769",
      "tree": "5d4d0bca31e63eb208fbebe4f39c912b964c1e4d",
      "parents": [
        "badf8082c33d18b118d3a6f1b32d5ea6b97d3839"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Mar 02 09:09:22 2008 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Oct 21 07:47:32 2008 -0400"
      },
      "message": "[PATCH] beginning of methods conversion\n\nTo keep the size of changesets sane we split the switch by drivers;\nto keep the damn thing bisectable we do the following:\n\t1) rename the affected methods, add ones with correct\nprototypes, make (few) callers handle both.  That\u0027s this changeset.\n\t2) for each driver convert to new methods.  *ALL* drivers\nare converted in this series.\n\t3) kill the old (renamed) methods.\n\nNote that it _is_ a flagday; all in-tree drivers are converted and by the\nend of this series no trace of old methods remain.  The only reason why\nwe do that this way is to keep the damn thing bisectable and allow per-driver\ndebugging if anything goes wrong.\n\nNew methods:\n\topen(bdev, mode)\n\trelease(disk, mode)\n\tioctl(bdev, mode, cmd, arg)\t\t/* Called without BKL */\n\tcompat_ioctl(bdev, mode, cmd, arg)\n\tlocked_ioctl(bdev, mode, cmd, arg)\t/* Called with BKL, legacy */\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "75ad23bc0fcb4f992a5d06982bf0857ab1738e9e",
      "tree": "8668ef63b1f420252ae41aed9e13737d49fd8054",
      "parents": [
        "68154e90c9d1492d570671ae181d9a8f8530da55"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Apr 29 14:48:33 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Apr 29 14:48:33 2008 +0200"
      },
      "message": "block: make queue flags non-atomic\n\nWe can save some atomic ops in the IO path, if we clearly define\nthe rules of how to modify the queue flags.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "476a4813cfddf7cf159956cc0e2d3c830c1507e3",
      "tree": "11c824363b8ea789ccb3c6f3b38320bcf79b3aa4",
      "parents": [
        "22a9189fd073db3d03a4cf8b8c098aa207602de1"
      ],
      "author": {
        "name": "Laurent Vivier",
        "email": "Laurent.Vivier@bull.net",
        "time": "Wed Mar 26 12:11:53 2008 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Apr 21 09:50:08 2008 +0200"
      },
      "message": "loop: manage partitions in disk image\n\nThis patch allows to use loop device with partitionned disk image.\n\nOriginal behavior of loop is not modified.\n\nA new parameter is introduced to define how many partition we want to be\nable to manage per loop device. This parameter is \"max_part\".\n\nFor instance, to manage 63 partitions / loop device, we will do:\n# modprobe loop max_part\u003d63\n# ls -l /dev/loop?*\nbrw-rw---- 1 root disk 7,   0 2008-03-05 14:55 /dev/loop0\nbrw-rw---- 1 root disk 7,  64 2008-03-05 14:55 /dev/loop1\nbrw-rw---- 1 root disk 7, 128 2008-03-05 14:55 /dev/loop2\nbrw-rw---- 1 root disk 7, 192 2008-03-05 14:55 /dev/loop3\nbrw-rw---- 1 root disk 7, 256 2008-03-05 14:55 /dev/loop4\nbrw-rw---- 1 root disk 7, 320 2008-03-05 14:55 /dev/loop5\nbrw-rw---- 1 root disk 7, 384 2008-03-05 14:55 /dev/loop6\nbrw-rw---- 1 root disk 7, 448 2008-03-05 14:55 /dev/loop7\n\nAnd to attach a raw partitionned disk image, the original losetup is used:\n\n# losetup -f etch.img\n# ls -l /dev/loop?*\nbrw-rw---- 1 root disk 7,   0 2008-03-05 14:55 /dev/loop0\nbrw-rw---- 1 root disk 7,   1 2008-03-05 14:57 /dev/loop0p1\nbrw-rw---- 1 root disk 7,   2 2008-03-05 14:57 /dev/loop0p2\nbrw-rw---- 1 root disk 7,   5 2008-03-05 14:57 /dev/loop0p5\nbrw-rw---- 1 root disk 7,  64 2008-03-05 14:55 /dev/loop1\nbrw-rw---- 1 root disk 7, 128 2008-03-05 14:55 /dev/loop2\nbrw-rw---- 1 root disk 7, 192 2008-03-05 14:55 /dev/loop3\nbrw-rw---- 1 root disk 7, 256 2008-03-05 14:55 /dev/loop4\nbrw-rw---- 1 root disk 7, 320 2008-03-05 14:55 /dev/loop5\nbrw-rw---- 1 root disk 7, 384 2008-03-05 14:55 /dev/loop6\nbrw-rw---- 1 root disk 7, 448 2008-03-05 14:55 /dev/loop7\n# mount /dev/loop0p1 /mnt\n# ls /mnt\nbench  cdrom  home        lib         mnt   root     srv  usr\nbin    dev    initrd      lost+found  opt   sbin     sys  var\nboot   etc    initrd.img  media       proc  selinux  tmp  vmlinuz\n# umount /mnt\n# losetup -d /dev/loop0\n\nOf course, the same behavior can be done using kpartx on a loop device,\nbut modifying loop avoids to stack several layers of block device (loop +\ndevice mapper), this is a very light modification (40% of modifications\nare to manage the new parameter).\n\nSigned-off-by: Laurent Vivier \u003cLaurent.Vivier@bull.net\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "96c5865559cee0f9cbc5173f3c949f6ce3525581",
      "tree": "bbcfa89faeae5e5b1334a8f537b6bdb7caa992d8",
      "parents": [
        "a3b81113fb6658629f4ebaabf8dd3067cd341020"
      ],
      "author": {
        "name": "David Woodhouse",
        "email": "dwmw2@infradead.org",
        "time": "Wed Feb 06 01:36:27 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Feb 06 10:41:01 2008 -0800"
      },
      "message": "Allow auto-destruction of loop devices\n\nThis allows a flag to be set on loop devices so that when they are\nclosed for the last time, they\u0027ll self-destruct.\n\nIn general, so that we can automatically allocate loop devices (as with\nlosetup -f) and have them disappear when we\u0027re done with them.\n\nIn particular, right now, so that we can stop relying on the hackish\nspecial-case in umount(8) which kills off loop devices which were set up by\n\u0027mount -oloop\u0027.  That means we can stop putting crap in /etc/mtab which\ndoesn\u0027t belong there, which means it can be a symlink to /proc/mounts, which\nmeans yet another writable file on the root filesystem is eliminated and the\n\u0027stateless\u0027 folks get happier...  and OLPC trac #356 can be closed.\n\nThe mount(8) side of that is at\nhttp://marc.info/?l\u003dutil-linux-ng\u0026m\u003d119362955431694\u0026w\u003d2\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: David Woodhouse \u003cdwmw2@infradead.org\u003e\nCc: Bernardo Innocenti \u003cbernie@codewiz.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a24eab1ed506f3e0bcbcd3f619558935549d4ace",
      "tree": "9ae2445a6b21787292da1581a61ff0bee49c3637",
      "parents": [
        "b801a1e7dbca3f51d0a4b22a750ae257196002cb"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jan 11 10:14:40 2008 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jan 11 10:14:40 2008 +0100"
      },
      "message": "loop: fix bad bio_alloc() nr_iovec request\n\nDon\u0027t allocate room for an iovec when it is not needed.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "96de0e252cedffad61b3cb5e05662c591898e69a",
      "tree": "e3eb7d3e65ec27d39e1da13a17f6f0f91b28f5e9",
      "parents": [
        "3f5b98a2a0cba3351f96fcaa6d79aa1a0d93ee78"
      ],
      "author": {
        "name": "Jan Engelhardt",
        "email": "jengelh@gmx.de",
        "time": "Fri Oct 19 23:21:04 2007 +0200"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Fri Oct 19 23:21:04 2007 +0200"
      },
      "message": "Convert files to UTF-8 and some cleanups\n\n* Convert files to UTF-8.\n\n  * Also correct some people\u0027s names\n    (one example is Eißfeldt, which was found in a source file.\n    Given that the author used an ß at all in a source file\n    indicates that the real name has in fact a \u0027ß\u0027 and not an \u0027ss\u0027,\n    which is commonly used as a substitute for \u0027ß\u0027 when limited to\n    7bit.)\n\n  * Correct town names (Goettingen -\u003e Göttingen)\n\n  * Update Eberhard Mönkeberg\u0027s address (http://lkml.org/lkml/2007/1/8/313)\n\nSigned-off-by: Jan Engelhardt \u003cjengelh@gmx.de\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\n"
    },
    {
      "commit": "759d7c6c47cf1439171d057a226453e96856c5de",
      "tree": "cdc7fd5298319357f94e18d4d1608d97cfc7c788",
      "parents": [
        "966fe399cc774b00b1eed11fd884be85a5c5c489"
      ],
      "author": {
        "name": "Diego Woitasen",
        "email": "diego@woitasen.com.ar",
        "time": "Tue Oct 16 23:26:17 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:42:48 2007 -0700"
      },
      "message": "Remove unneeded lock_kernel() in driver/block/loop.c\n\nSigned-off-by: Diego Woitasen \u003cdiego@woitasen.com.ar\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8268f5a7415d914fc855a86aa2284ac819dc6b2e",
      "tree": "13628a6d3cb31f04472c4cccdc741979ecdf0ad0",
      "parents": [
        "afddba49d18f346e5cc2938b6ed7c512db18ca68"
      ],
      "author": {
        "name": "Dmitry Monakhov",
        "email": "dmonakhov@sw.ru",
        "time": "Tue Oct 16 01:25:02 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:42:55 2007 -0700"
      },
      "message": "deny partial write for loop dev fd\n\nPartial write can be easily supported by LO_CRYPT_NONE mode, but it is not\neasy in LO_CRYPT_CRYPTOAPI case, because of its block nature.  I don\u0027t know\nwho still used cryptoapi, but theoretically it is possible.  So let\u0027s leave\nthings as they are.  Loop device doesn\u0027t support partial write before\nNick\u0027s \"write_begin/write_end\" patch set, and let\u0027s it behave the same way\nafter.\n\nSigned-off-by: Dmitriy Monakhov \u003cdmonakhov@openvz.org\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "afddba49d18f346e5cc2938b6ed7c512db18ca68",
      "tree": "4726e3d3b0e9e8e5b5d3b2b0cccb36446bbdf3ca",
      "parents": [
        "637aff46f94a754207c80c8c64bf1b74f24b967d"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Oct 16 01:25:01 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:42:55 2007 -0700"
      },
      "message": "fs: introduce write_begin, write_end, and perform_write aops\n\nThese are intended to replace prepare_write and commit_write with more\nflexible alternatives that are also able to avoid the buffered write\ndeadlock problems efficiently (which prepare_write is unable to do).\n\n[mark.fasheh@oracle.com: API design contributions, code review and fixes]\n[akpm@linux-foundation.org: various fixes]\n[dmonakhov@sw.ru: new aop block_write_begin fix]\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\nSigned-off-by: Dmitriy Monakhov \u003cdmonakhov@openvz.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6712ecf8f648118c3363c142196418f89a510b90",
      "tree": "347d39a7d5a7ed96d3b1afecd28de2a0f98b98c9",
      "parents": [
        "5bb23a688b2de23d7765a1dd439d89c038378978"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Sep 27 12:47:43 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@carl.home.kernel.dk",
        "time": "Wed Oct 10 09:25:57 2007 +0200"
      },
      "message": "Drop \u0027size\u0027 argument from bio_endio and bi_end_io\n\nAs bi_end_io is only called once when the reqeust is complete,\nthe \u0027size\u0027 argument is now redundant.  Remove it.\n\nNow there is no need for bio_endio to subtract the size completed\nfrom bi_size.  So don\u0027t do that either.\n\nWhile we are at it, change bi_end_io to return void.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "165125e1e480f9510a5ffcfbfee4e3ee38c05f23",
      "tree": "8009c8a5ff09e26dc2418d42f66ecafb055c52a2",
      "parents": [
        "f695baf2df9e0413d3521661070103711545207a"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Jul 24 09:28:11 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Jul 24 09:28:11 2007 +0200"
      },
      "message": "[BLOCK] Get rid of request_queue_t typedef\n\nSome of the code has been gradually transitioned to using the proper\nstruct request_queue, but there\u0027s lots left. So do a full sweet of\nthe kernel and get rid of this typedef and replace its uses with\nthe proper type.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "00d59405cf6d7ef8932394ab5a12da1a50ce581e",
      "tree": "ccd0c170b673a17792207b2b5816978bb27da436",
      "parents": [
        "294462a5c6c4fb9a6ced9cb5a368ff335f1b656e"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Tue Jul 17 04:03:46 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jul 17 10:23:03 2007 -0700"
      },
      "message": "unregister_blkdev() delete redundant messages in callers\n\nNo need to warn unregister_blkdev() failure by the callers.  (The previous\npatch makes unregister_blkdev() print error message in error case)\n\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@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": "831441862956fffa17b9801db37e6ea1650b0f69",
      "tree": "b0334921341f8f1734bdd3243de76d676329d21c",
      "parents": [
        "787d2214c19bcc9b6ac48af0ce098277a801eded"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Tue Jul 17 04:03:35 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jul 17 10:23:02 2007 -0700"
      },
      "message": "Freezer: make kernel threads nonfreezable by default\n\nCurrently, the freezer treats all tasks as freezable, except for the kernel\nthreads that explicitly set the PF_NOFREEZE flag for themselves.  This\napproach is problematic, since it requires every kernel thread to either\nset PF_NOFREEZE explicitly, or call try_to_freeze(), even if it doesn\u0027t\ncare for the freezing of tasks at all.\n\nIt seems better to only require the kernel threads that want to or need to\nbe frozen to use some freezer-related code and to remove any\nfreezer-related code from the other (nonfreezable) kernel threads, which is\ndone in this patch.\n\nThe patch causes all kernel threads to be nonfreezable by default (ie.  to\nhave PF_NOFREEZE set by default) and introduces the set_freezable()\nfunction that should be called by the freezable kernel threads in order to\nunset PF_NOFREEZE.  It also makes all of the currently freezable kernel\nthreads call set_freezable(), so it shouldn\u0027t cause any (intentional)\nchange of behaviour to appear.  Additionally, it updates documentation to\ndescribe the freezing of tasks more accurately.\n\n[akpm@linux-foundation.org: build fixes]\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nAcked-by: Nigel Cunningham \u003cnigel@nigel.suspend2.net\u003e\nCc: Pavel Machek \u003cpavel@ucw.cz\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Gautham R Shenoy \u003cego@in.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cac36bb06efe4880234524e117e0e712b10b1f16",
      "tree": "5220c6f2185cee1c6934cf8048975beac5bc94bb",
      "parents": [
        "d96e6e71647846e0dab097efd9b8bf3a3a556dca"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Jun 14 13:10:48 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Jul 10 08:04:15 2007 +0200"
      },
      "message": "pipe: change the -\u003epin() operation to -\u003econfirm()\n\nThe name \u0027pin\u0027 was badly chosen, it doesn\u0027t pin a pipe buffer\nin the most commonly used sense in the kernel. So change the\nname to \u0027confirm\u0027, after debating this issue with Hugh\nDickins a bit.\n\nA good return from -\u003econfirm() means that the buffer is really\nthere, and that the contents are good.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "d6b29d7cee064f28ca097e906de7453541351095",
      "tree": "16775787df194cb45b4ac712da1c240f48cae96e",
      "parents": [
        "ebf9909343392c929d9943c04f421cd42e03b530"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Jun 04 09:59:47 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Jul 10 08:04:14 2007 +0200"
      },
      "message": "splice: divorce the splice structure/function definitions from the pipe header\n\nWe need to move even more stuff into the header so that folks can use\nthe splice_to_pipe() implementation instead of open-coding a lot of\npipe knowledge (see relay implementation), so move to our own header\nfile finally.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "fd5821404e6823997666d668f62c76eae228abc9",
      "tree": "6d818f0d0201d0b0553aa0e50376802318e627af",
      "parents": [
        "130610d6f681c5d970340897f5db000d04a7ef78"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Jun 12 21:20:37 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Jul 10 08:04:14 2007 +0200"
      },
      "message": "loop: convert to using splice_direct_to_actor() instead of sendfile()\n\nThis gets rid of the dependency on -\u003esendfile() for receiving data\nand converts loop to -\u003esplice_read() instead.\n\nAlso includes an IV offset fix from Hugh Dickins.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "a47653fc2643cf61bcabba8c9ff5c45517c089ba",
      "tree": "b29e9c4d4bebae15c7678c6da73fd1687d6e8d37",
      "parents": [
        "c287ef1ff9296ddf707af6f9d355e1c3ffc243dd"
      ],
      "author": {
        "name": "Ken Chen",
        "email": "kenchen@google.com",
        "time": "Fri Jun 08 13:46:44 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Jun 08 17:23:32 2007 -0700"
      },
      "message": "loop: preallocate eight loop devices\n\nThe kernel on-demand loop device instantiation breaks several user space\ntools as the tools are not ready to cope with the \"on-demand feature\".  Fix\nit by instantiate default 8 loop devices and also reinstate max_loop module\nparameter.\n\nSigned-off-by: Ken Chen \u003ckenchen@google.com\u003e\nAcked-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "705962ccc9d21a08b74b6b6e1d3cf10f98968a67",
      "tree": "c9c534aa1be76b790b0d8a4415fd7d46f920c77c",
      "parents": [
        "39403865d2e4590802553370a56c9ab93131e4ee"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun May 13 05:52:32 2007 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sun May 13 09:44:05 2007 -0700"
      },
      "message": "fix deadlock in loop.c\n\n... doh\n\nJeremy Fitzhardinge noted that the recent loop.c cleanups worked, but\ncause lockdep to complain.\n\nOuch.  OK, the deadlock is real and yes, I\u0027m an idiot.  Speaking of which,\nwe probably want to s/lock/pin/ in drivers/base/map.c to avoid such\nbrainos again.  And yes, this stuff needs clear documentation.  Will try\nto put one together once I get some sleep...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Jeremy Fitzhardinge \u003cjeremy@goop.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "07002e995638b83a6987180f43722a0eb39d4932",
      "tree": "76d09369163b040acd41c56f7c9acf2c489b40e0",
      "parents": [
        "f1d1a842d85acf34dd185027cb2c9b4fd13130ef"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat May 12 16:23:15 2007 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sat May 12 16:53:02 2007 -0700"
      },
      "message": "fix the dynamic allocation and probe in loop.c\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nAcked-by: Ken Chen \u003ckenchen@google.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "01f2705daf5a36208e69d7cf95db9c330f843af6",
      "tree": "2d2c7a042c2466ed985f6e0950450c099f02725f",
      "parents": [
        "38a23e311b6cd389b9d8af2ea6c28c8cffbe581c"
      ],
      "author": {
        "name": "Nate Diller",
        "email": "nate.diller@gmail.com",
        "time": "Wed May 09 02:35:07 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:55 2007 -0700"
      },
      "message": "fs: convert core functions to zero_user_page\n\nIt\u0027s very common for file systems to need to zero part or all of a page,\nthe simplist way is just to use kmap_atomic() and memset().  There\u0027s\nactually a library function in include/linux/highmem.h that does exactly\nthat, but it\u0027s confusingly named memclear_highpage_flush(), which is\ndescriptive of *how* it does the work rather than what the *purpose* is.\nSo this patchset renames the function to zero_user_page(), and calls it\nfrom the various places that currently open code it.\n\nThis first patch introduces the new function call, and converts all the\ncore kernel callsites, both the open-coded ones and the old\nmemclear_highpage_flush() ones.  Following this patch is a series of\nconversions for each file system individually, per AKPM, and finally a\npatch deprecating the old call.  The diffstat below shows the entire\npatchset.\n\n[akpm@linux-foundation.org: fix a few things]\nSigned-off-by: Nate Diller \u003cnate.diller@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": "73285082745045bcd64333c1fbaa88f8490f2626",
      "tree": "bb45362b563332ff1e712b5f2b3b16a47b019691",
      "parents": [
        "4f911d64e04a44c47985be30f978fb3c2efcee0c"
      ],
      "author": {
        "name": "Ken Chen",
        "email": "kenchen@google.com",
        "time": "Tue May 08 00:28:20 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:07 2007 -0700"
      },
      "message": "remove artificial software max_loop limit\n\nRemove artificial maximum 256 loop device that can be created due to a\nlegacy device number limit.  Searching through lkml archive, there are\nseveral instances where users complained about the artificial limit that\nthe loop driver impose.  There is no reason to have such limit.\n\nThis patch rid the limit entirely and make loop device and associated block\nqueue instantiation on demand.  With on-demand instantiation, it also gives\nthe benefit of not wasting memory if these devices are not in use (compare\nto current implementation that always create 8 loop devices), a net\nimprovement in both areas.  This version is both tested with creation of\nlarge number of loop devices and is compatible with existing losetup/mount\nuser land tools.\n\nThere are a number of people who worked on this and provided valuable\nsuggestions, in no particular order, by:\n\nJens Axboe\nJan Engelhardt\nChristoph Hellwig\nThomas M\n\nSigned-off-by: Ken Chen \u003ckenchen@google.com\u003e\nCc: Jan Engelhardt \u003cjengelh@linux01.gwdg.de\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f98393a64ca1392130724c3acb4e3f325801d2b6",
      "tree": "b02838bdf84156ac923bb37b6cf5f5ed6aaa3d48",
      "parents": [
        "0a27a14a62921b438bb6f33772690d345a089be6"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Sun May 06 14:49:54 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:55 2007 -0700"
      },
      "message": "mm: remove destroy_dirty_buffers from invalidate_bdev()\n\nRemove the destroy_dirty_buffers argument from invalidate_bdev(), it hasn\u0027t\nbeen used in 6 years (so akpm says).\n\nfind * -name \\*.[ch] | xargs grep -l invalidate_bdev |\nwhile read file; do\n\tquilt add $file;\n\tsed -ie \u0027s/invalidate_bdev(\\([^,]*\\),[^)]*)/invalidate_bdev(\\1)/g\u0027 $file;\ndone\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6c648be6f4183775679c1f2cc4d094128f104fb2",
      "tree": "e07bf394a8737050574f67bb8afc000c79d91d9d",
      "parents": [
        "c5a20b6c26efb58c2ba2ebebcc65748f5b92f662"
      ],
      "author": {
        "name": "Josef Sipek",
        "email": "jsipek@fsl.cs.sunysb.edu",
        "time": "Fri Dec 08 02:36:55 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Dec 08 08:28:44 2006 -0800"
      },
      "message": "[PATCH] struct path: convert block_drivers\n\nSigned-off-by: Josef Sipek \u003cjsipek@fsl.cs.sunysb.edu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "ba674cfcbdb93cb560a4ae4d2c8b53cfbddc2d22",
      "tree": "11188c54255760bf509d7e58aaa1d5da8d1d69ba",
      "parents": [
        "a6ded1b0605376e18a17cb01977819bcf2677cdc"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ftp.linux.org.uk",
        "time": "Tue Oct 10 22:48:27 2006 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Oct 10 15:37:23 2006 -0700"
      },
      "message": "[PATCH] __user annotations: loop.c\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "98ae6ccd8e15aeac1c624615c044deecf46a359a",
      "tree": "206d1861baeb951e4a2994621afc3118d58f052d",
      "parents": [
        "aa7677d40072a97a861390f0ed1a8c25ce312201"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ftp.linux.org.uk",
        "time": "Tue Oct 10 22:45:07 2006 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Oct 10 15:37:21 2006 -0700"
      },
      "message": "[PATCH] fix misannotations in loop.c\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "863d5b822c02d0e7215fb84ca79e9f8c3e35f04e",
      "tree": "86e2fd2507a78a1adc6a7126f26c38ebf2ee4d1d",
      "parents": [
        "b71e8a4ce03b3098c7801ee5e6e08d1a39a226c2"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Tue Aug 29 19:06:14 2006 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Sat Sep 30 20:52:27 2006 +0200"
      },
      "message": "[PATCH] BLOCK: Move the loop device ioctl compat stuff to the loop driver [try #6]\n\nMove the loop device ioctl compat stuff from fs/compat_ioctl.c to the loop\ndriver so that the loop header file doesn\u0027t need to be included.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "a7422bf8a6feee6ec0c130fab7080df0cea86ebc",
      "tree": "2b624eed131e8ceafb0a711827144c817ff7bf2e",
      "parents": [
        "cdae9695870895dd6be4c7d6d31d8704ea27f064"
      ],
      "author": {
        "name": "Serge E. Hallyn",
        "email": "serue@us.ibm.com",
        "time": "Fri Sep 29 02:01:18 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Sep 29 09:18:22 2006 -0700"
      },
      "message": "[PATCH] loop: forward-port resource leak checks from Solar\n\nForward port of the patch by Solar and ported by Julio.\n\nCompiles, boots, and passes my looptorturetest.sh.\n\nSigned-off-by: Serge E. Hallyn \u003cserue@us.ibm.com\u003e\nCc: Julio Auto \u003cmindvortex@gmail.com\u003e\nCc: Solar Designer \u003csolar@openwall.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "6c9979185c7ef4feeb7f8d29be032b8f032a1838",
      "tree": "dd6d45dc21adf280164ba840ae0c954dd0c94233",
      "parents": [
        "5b217fa75c3aea381f1f5fa7ff09e7b4019ea374"
      ],
      "author": {
        "name": "Serge E. Hallyn",
        "email": "serue@us.ibm.com",
        "time": "Fri Sep 29 01:59:11 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Sep 29 09:18:06 2006 -0700"
      },
      "message": "[PATCH] kthread: convert loop.c to kthread\n\nConvert loop.c from the deprecated kernel_thread to kthread.  This patch\nsimplifies the code quite a bit and passes similar testing to the previous\nsubmission on both emulated x86 and s390.\n\nChanges since last submission:\n\tswitched to using a rather simple loop based on\n\twait_event_interruptible.\n\nSigned-off-by: Serge E. Hallyn \u003cserue@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "ba52de123d454b57369f291348266d86f4b35070",
      "tree": "3973f3f3c853b5857b6b64a027cadd4fe954e3b9",
      "parents": [
        "577c4eb09d1034d0739e3135fd2cff50588024be"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Sep 27 01:50:49 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 27 08:26:18 2006 -0700"
      },
      "message": "[PATCH] inode-diet: Eliminate i_blksize from the inode structure\n\nThis eliminates the i_blksize field from struct inode.  Filesystems that want\nto provide a per-inode st_blksize can do so by providing their own getattr\nroutine instead of using the generic_fillattr() function.\n\nNote that some filesystems were providing pretty much random (and incorrect)\nvalues for i_blksize.\n\n[bunk@stusta.de: cleanup]\n[akpm@osdl.org: generic_fillattr() fix]\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "6ab3d5624e172c553004ecc862bfeac16d9d68b7",
      "tree": "6d98881fe91fd9583c109208d5c27131b93fa248",
      "parents": [
        "e02169b682bc448ccdc819dc8639ed34a23cedd8"
      ],
      "author": {
        "name": "Jörn Engel",
        "email": "joern@wohnheim.fh-wedel.de",
        "time": "Fri Jun 30 19:25:36 2006 +0200"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Fri Jun 30 19:25:36 2006 +0200"
      },
      "message": "Remove obsolete #include \u003clinux/config.h\u003e\n\nSigned-off-by: Jörn Engel \u003cjoern@wohnheim.fh-wedel.de\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\n"
    },
    {
      "commit": "602cada851b28c5792339786efe872fbdc1f5d41",
      "tree": "233d474b74d6038b5bb54a07ad91dd1bb10b0218",
      "parents": [
        "82991c6f2c361acc17279b8124d9bf1878973435",
        "fee68d1cc0d9bd863e51c16cdcd707737b16bb38"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Thu Jun 29 14:19:21 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Thu Jun 29 14:19:21 2006 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/devfs-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/devfs-2.6: (22 commits)\n  [PATCH] devfs: Remove it from the feature_removal.txt file\n  [PATCH] devfs: Last little devfs cleanups throughout the kernel tree.\n  [PATCH] devfs: Rename TTY_DRIVER_NO_DEVFS to TTY_DRIVER_DYNAMIC_DEV\n  [PATCH] devfs: Remove the tty_driver devfs_name field as it\u0027s no longer needed\n  [PATCH] devfs: Remove the line_driver devfs_name field as it\u0027s no longer needed\n  [PATCH] devfs: Remove the videodevice devfs_name field as it\u0027s no longer needed\n  [PATCH] devfs: Remove the gendisk devfs_name field as it\u0027s no longer needed\n  [PATCH] devfs: Remove the miscdevice devfs_name field as it\u0027s no longer needed\n  [PATCH] devfs: Remove the devfs_fs_kernel.h file from the tree\n  [PATCH] devfs: Remove devfs_remove() function from the kernel tree\n  [PATCH] devfs: Remove devfs_mk_cdev() function from the kernel tree\n  [PATCH] devfs: Remove devfs_mk_bdev() function from the kernel tree\n  [PATCH] devfs: Remove devfs_mk_symlink() function from the kernel tree\n  [PATCH] devfs: Remove devfs_mk_dir() function from the kernel tree\n  [PATCH] devfs: Remove devfs_*_tape() functions from the kernel tree\n  [PATCH] devfs: Remove devfs support from the sound subsystem\n  [PATCH] devfs: Remove devfs support from the ide subsystem.\n  [PATCH] devfs: Remove devfs support from the serial subsystem\n  [PATCH] devfs: Remove devfs from the init code\n  [PATCH] devfs: Remove devfs from the partition code\n  ...\n"
    },
    {
      "commit": "f5e54d6e53a20cef45af7499e86164f0e0d16bb2",
      "tree": "cb92acbb89b84796261bf5563182261ec5654127",
      "parents": [
        "a052b68b1e7a31f1e6a721290035e9deb0f6fed9"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Wed Jun 28 04:26:44 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Jun 28 14:59:04 2006 -0700"
      },
      "message": "[PATCH] mark address_space_operations const\n\nSame as with already do with the file operations: keep them in .rodata and\nprevents people from doing runtime patching.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Steven French \u003csfrench@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "ce7b0f46bbf4bff8daab2dd3d878b9e72a623d09",
      "tree": "7a860cf52fbf1ff768197702af60a8329d296dff",
      "parents": [
        "96192ff1a9d0c6ef365d21667080259d83ea2f5b"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Jun 20 21:15:16 2005 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Jun 26 12:25:08 2006 -0700"
      },
      "message": "[PATCH] devfs: Remove the gendisk devfs_name field as it\u0027s no longer needed\n\nAnd remove the now unneeded number field.\nAlso fixes all drivers that set these fields.\n\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "ff23eca3e8f613034e0d20ff86f6a89b62f5a14e",
      "tree": "826285f5daa660001d38cac6baaf34411fd40131",
      "parents": [
        "8ab5e4c15b53e147c08031a959d9f776823dbe73"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Jun 20 21:15:16 2005 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Jun 26 12:25:08 2006 -0700"
      },
      "message": "[PATCH] devfs: Remove the devfs_fs_kernel.h file from the tree\n\nAlso fixes up all files that #include it.\n\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "8ab5e4c15b53e147c08031a959d9f776823dbe73",
      "tree": "b851d4c1fdbd396379279e4475f7f778a667a208",
      "parents": [
        "7c69ef79741910883d5543caafa06aca3ebadbd1"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Jun 20 21:15:16 2005 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Jun 26 12:25:07 2006 -0700"
      },
      "message": "[PATCH] devfs: Remove devfs_remove() function from the kernel tree\n\nRemoves the devfs_remove() function and all callers of it.\n\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "95dc112a5770dc670a1b45a3d9ee346fdd2b2697",
      "tree": "899cd99bdc928ade94ddc7b003b0de7d275cac48",
      "parents": [
        "0e6c62da7cd929b0389fc4a7e41464bb738647dc"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Jun 20 21:15:16 2005 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Jun 26 12:25:06 2006 -0700"
      },
      "message": "[PATCH] devfs: Remove devfs_mk_dir() function from the kernel tree\n\nRemoves the devfs_mk_dir() function and all callers of it.\n\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "09c0dc68625c06f5b1e786aad0d5369b592179e6",
      "tree": "19fd06de08792a4c07ee8b61e5615ee35e8ccec0",
      "parents": [
        "2a2ed2db353d949c06b6ef8b6913f65b39111eab"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jun 26 11:55:42 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jun 26 11:55:42 2006 -0700"
      },
      "message": "Revert \"[PATCH] kthread: update loop.c to use kthread\"\n\nThis reverts commit c7b2eff059fcc2d1b7085ee3d84b79fd657a537b.\n\nHugh Dickins explains:\n\n \"It seems too little tested: \"losetup -d /dev/loop0\" fails with\n  EINVAL because nothing sets lo_thread; but even when you patch\n  loop_thread() to set lo-\u003elo_thread \u003d current, it can\u0027t survive\n  more than a few dozen iterations of the loop below (with a tmpfs\n  mounted on /tst):\n\n\tj\u003d0\n\tcp /dev/zero /tst\n\twhile :\n\tdo\n\t    let j\u003dj+1\n\t    echo \"Doing pass $j\"\n\t    losetup /dev/loop0 /tst/zero\n\t    mkfs -t ext2 -b 1024 /dev/loop0 \u003e/dev/null 2\u003e\u00261\n\t    mount -t ext2 /dev/loop0 /mnt\n\t    umount /mnt\n\t    losetup -d /dev/loop0\n\tdone\n\n  it collapses with failed ioctl then BUG_ON(!bio).\n\n  I think the original lo_done completion was more subtle and safe\n  than the kthread conversion has allowed for.\"\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "c7b2eff059fcc2d1b7085ee3d84b79fd657a537b",
      "tree": "72d357c3975f27b5c8e5cfd77464e7823a9d6b1d",
      "parents": [
        "2f72100c01dd31d769097c58874e8ab1e70b2518"
      ],
      "author": {
        "name": "Serge E. Hallyn",
        "email": "serue@us.ibm.com",
        "time": "Sun Jun 25 05:48:59 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Jun 25 10:01:20 2006 -0700"
      },
      "message": "[PATCH] kthread: update loop.c to use kthread\n\nUpdate loop.c to use a kthread instead of a deprecated kernel_thread for\nloop devices.\n\n[akpm@osdl.org: don\u0027t change the thread\u0027s name]\nSigned-off-by: Serge E. Hallyn \u003cserue@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "eefe85ee350ece1bdf3e9a61e941d3394a528660",
      "tree": "7ed531a7946a6d715622a7d39be9042c03de961d",
      "parents": [
        "98bd34eaf1a7d1f2ed9c4e5d3a9664d3dcdd2159"
      ],
      "author": {
        "name": "Constantine Sapuntzakis",
        "email": "csapuntz@gmail.com",
        "time": "Fri Jun 23 02:06:08 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 23 07:43:09 2006 -0700"
      },
      "message": "[PATCH] drivers/block/loop.c: don\u0027t return garbage if LOOP_SET_STATUS not called\n\nWhile writing a version of losetup, I ran into the problem that the loop\ndevice was returning total garbage.\n\nIt turns out the problem was that this losetup was only issuing the\nLOOP_SET_FD ioctl and not issuing a subsequent LOOP_SET_STATUS ioctl.  This\nlosetup didn\u0027t have any special status to set, so it left out the call.\n\nThe deeper cause is that loop_set_fd sets the transfer function to NULL,\nwhich causes no transfer to happen lo_do_transfer.\n\nThis patch fixes the problem by setting transfer to transfer_none in\nloop_set_fd.\n\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "3e88c17d404c5787afd5bd1763380317f5ccbf84",
      "tree": "913f04bd00842b2b45ec2ead7ab93d16c037465b",
      "parents": [
        "22e6c1b39c648850438decd491f62d311800c7db"
      ],
      "author": {
        "name": "Herbert Poetzl",
        "email": "herbert@13thfloor.at",
        "time": "Sun Mar 26 01:37:30 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Mar 26 08:56:57 2006 -0800"
      },
      "message": "[PATCH] loop: potential kernel hang waiting for kthread\n\nCheck that kernel_thread() succeeded, so we don\u0027t wait for something which\ncannot happen.\n\nSigned-off-by: Herbert Poetzl \u003cherbert@13thfloor.at\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f85221dd74f2708b78a2aa54de59944e44206d0e",
      "tree": "f9e9710f78bf56515b04101bb40087b50e4bfeb6",
      "parents": [
        "0ac1759abc69fb62438c30a7e422f628a1120d67"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Mar 23 03:00:38 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Thu Mar 23 07:38:12 2006 -0800"
      },
      "message": "[PATCH] sem2mutex: drivers/block/loop.c\n\nSemaphore to mutex conversion.\n\nThe conversion was generated via scripts, and the result was validated\nautomatically via a script as well.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Jens Axboe \u003caxboe@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1312f40e11c57edb5c3250f1b782cef8e3efea82",
      "tree": "0aae9e7fe6211d83212991e84789fcd7e9908ced",
      "parents": [
        "6f325a13442d4e4a6c93d06d8e6deff79b6540b1"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Mar 12 11:02:03 2006 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Mar 18 18:34:20 2006 -0500"
      },
      "message": "[PATCH] regularize blk_cleanup_queue() use\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "858119e159384308a5dde67776691a2ebf70df0f",
      "tree": "f360768f999d51edc0863917ce0bf79e88c0ec4c",
      "parents": [
        "b0a9499c3dd50d333e2aedb7e894873c58da3785"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@infradead.org",
        "time": "Sat Jan 14 13:20:43 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Jan 14 18:27:06 2006 -0800"
      },
      "message": "[PATCH] Unlinline a bunch of other functions\n\nRemove the \"inline\" keyword from a bunch of big functions in the kernel with\nthe goal of shrinking it by 30kb to 40kb\n\nSigned-off-by: Arjan van de Ven \u003carjan@infradead.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nAcked-by: Jeff Garzik \u003cjgarzik@pobox.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "11b751ae8c8ca3fa24c85bd5a3e51dd9f95cda17",
      "tree": "7da3ef8bc6db62d76569ae709d7a2b8357719b0c",
      "parents": [
        "f36d4024caa3790606e43228a574157c45b73b22"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jan 09 15:59:27 2006 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@hera.kernel.org",
        "time": "Mon Jan 09 15:59:27 2006 -0800"
      },
      "message": "[PATCH] mutex subsystem, semaphore to completion: drivers/block/loop.c\n\nconvert the block loop device from semaphores to completions.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "1b1dcc1b57a49136f118a0f16367256ff9994a69",
      "tree": "b0b36d4f41d28c9d6514fb309d33c1a084d6309b",
      "parents": [
        "794ee1baee1c26be40410233e6c20bceb2b03c08"
      ],
      "author": {
        "name": "Jes Sorensen",
        "email": "jes@sgi.com",
        "time": "Mon Jan 09 15:59:24 2006 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@hera.kernel.org",
        "time": "Mon Jan 09 15:59:24 2006 -0800"
      },
      "message": "[PATCH] mutex subsystem, semaphore to mutex: VFS, -\u003ei_sem\n\nThis patch converts the inode semaphore to a mutex. I have tested it on\nXFS and compiled as much as one can consider on an ia64. Anyway your\nluck with it might be different.\n\nModified-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n\n(finished the conversion)\n\nSigned-off-by: Jes Sorensen \u003cjes@sgi.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "994fc28c7b1e697ac56befe4aecabf23f0689f46",
      "tree": "da36d162e9bd077e9b5be385b28e2db90475c263",
      "parents": [
        "7063fbf2261194f72ee75afca67b3b38b554b5fa"
      ],
      "author": {
        "name": "Zach Brown",
        "email": "zach.brown@oracle.com",
        "time": "Thu Dec 15 14:28:17 2005 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Jan 03 11:45:42 2006 -0800"
      },
      "message": "[PATCH] add AOP_TRUNCATED_PAGE, prepend AOP_ to WRITEPAGE_ACTIVATE\n\nreadpage(), prepare_write(), and commit_write() callers are updated to\nunderstand the special return code AOP_TRUNCATED_PAGE in the style of\nwritepage() and WRITEPAGE_ACTIVATE.  AOP_TRUNCATED_PAGE tells the caller that\nthe callee has unlocked the page and that the operation should be tried again\nwith a new page.  OCFS2 uses this to detect and work around a lock inversion in\nits aop methods.  There should be no change in behaviour for methods that don\u0027t\nreturn AOP_TRUNCATED_PAGE.\n\nWRITEPAGE_ACTIVATE is also prepended with AOP_ for consistency and they are\nmade enums so that kerneldoc can be used to document their semantics.\n\nSigned-off-by: Zach Brown \u003czach.brown@oracle.com\u003e\n"
    },
    {
      "commit": "b4e3ca1ab1ae9ae86134126dcdc88da1caaa32ca",
      "tree": "51c609f9a954cd5d4732c4b512f9ff2e19546d47",
      "parents": [
        "9e24974db6b01ec067c24de09588282b6a1407f0"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Oct 21 03:22:34 2005 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Oct 28 08:16:51 2005 -0700"
      },
      "message": "[PATCH] gfp_t: remaining bits of drivers/*\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "35a82d1a53e1a9ad54efafcc940f9335beaed5c3",
      "tree": "776d5b01970c5ce3e2c9fd4a2c4cf2168a0afa3c",
      "parents": [
        "ab4af03a4054bd78bcabfb2214c9597201beae35"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "nickpiggin@yahoo.com.au",
        "time": "Thu Jun 23 00:09:06 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:18 2005 -0700"
      },
      "message": "[PATCH] optimise loop driver a bit\n\nLooks like locking can be optimised quite a lot.  Increase lock widths\nslightly so lo_lock is taken fewer times per request.  Also it was quite\ntrivial to cover lo_pending with that lock, and remove the atomic\nrequirement.  This also makes memory ordering explicitly correct, which is\nnice (not that I particularly saw any mem ordering bugs).\n\nTest was reading 4 250MB files in parallel on ext2-on-tmpfs filesystem (1K\nblock size, 4K page size).  System is 2 socket Xeon with HT (4 thread).\n\nintel:/home/npiggin# umount /dev/loop0 ; mount /dev/loop0 /mnt/loop ; /usr/bin/time ./mtloop.sh\n\nBefore:\n0.24user 5.51system 0:02.84elapsed 202%CPU (0avgtext+0avgdata 0maxresident)k\n0.19user 5.52system 0:02.88elapsed 198%CPU (0avgtext+0avgdata 0maxresident)k\n0.19user 5.57system 0:02.89elapsed 198%CPU (0avgtext+0avgdata 0maxresident)k\n0.22user 5.51system 0:02.90elapsed 197%CPU (0avgtext+0avgdata 0maxresident)k\n0.19user 5.44system 0:02.91elapsed 193%CPU (0avgtext+0avgdata 0maxresident)k\n\nAfter:\n0.07user 2.34system 0:01.68elapsed 143%CPU (0avgtext+0avgdata 0maxresident)k\n0.06user 2.37system 0:01.68elapsed 144%CPU (0avgtext+0avgdata 0maxresident)k\n0.06user 2.39system 0:01.68elapsed 145%CPU (0avgtext+0avgdata 0maxresident)k\n0.06user 2.36system 0:01.68elapsed 144%CPU (0avgtext+0avgdata 0maxresident)k\n0.06user 2.42system 0:01.68elapsed 147%CPU (0avgtext+0avgdata 0maxresident)k\n\nSigned-off-by: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
      "tree": "0bba044c4ce775e45a88a51686b5d9f90697ea9d",
      "parents": [],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "message": "Linux-2.6.12-rc2\n\nInitial git repository build. I\u0027m not bothering with the full history,\neven though we have it. We can create a separate \"historical\" git\narchive of that later if we want to, and in the meantime it\u0027s about\n3.2GB when imported into git - space that would just make the early\ngit days unnecessarily complicated, when we don\u0027t have a lot of good\ninfrastructure for it.\n\nLet it rip!\n"
    }
  ]
}
