)]}'
{
  "log": [
    {
      "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": "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": "00bfddaf7f68a6551319b536f052040c370756b0",
      "tree": "353061720b9558708ae513fd71673a4c50bc1c3f",
      "parents": [
        "068b38c1fa7a9210608f27ac521897ccc5f9b726"
      ],
      "author": {
        "name": "Jaswinder Singh Rajput",
        "email": "jaswinder@infradead.org",
        "time": "Thu Jan 15 13:51:26 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 15 16:39:41 2009 -0800"
      },
      "message": "include of \u003clinux/types.h\u003e is preferred over \u003casm/types.h\u003e\n\nImpact: fix 15 make headers_check warnings:\n\ninclude of \u003clinux/types.h\u003e is preferred over \u003casm/types.h\u003e\n\nSigned-off-by: Jaswinder Singh Rajput \u003cjaswinderrajput@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Sam Ravnborg \u003csam@ravnborg.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\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": "01e457cfcd5b6b6f18d0bb8cec0c5d43df56557e",
      "tree": "d60b181ea1d6535e757d0696a76d30acf6360cdf",
      "parents": [
        "5ab3ee7b1cd5c91eb2272764f9d7d1fe4749681e"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Mon Jul 23 18:44:00 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jul 24 12:24:59 2007 -0700"
      },
      "message": "loop.h build fix\n\ninclude/linux/loop.h:66: error: expected specifier-qualifier-list before \u0027request_queue_t\u0027\n\nCc: Sebastian Siewior \u003csebastian@breakpoint.cc\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.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": "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": "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": "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": "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": "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"
    }
  ]
}
