)]}'
{
  "log": [
    {
      "commit": "2b9ecd03335c7be9b8ce84f4499f4b6785a655ee",
      "tree": "85cf9b37cdbff0a92d892c54711443e425860b9c",
      "parents": [
        "60ad23400717f70b8f0ee623b50d343d45f7b135"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Mar 02 09:24:35 2008 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Oct 21 07:47:44 2008 -0400"
      },
      "message": "[PATCH] switch brd\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": "c82f2966015a2c9708fb8f20694ef7ba8567d2e1",
      "tree": "3b0234770d69a0bdbe7dfbc34ae3e5aa8f274621",
      "parents": [
        "f3944d61ddc65722539ffd7b6f5b7c7217c136cc"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Wed Aug 20 14:09:09 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 20 15:40:30 2008 -0700"
      },
      "message": "brd: fix name argument of unregister_blkdev()\n\nThe name of brd block device is \"ramdisk\", it\u0027s not \"brd\".\n(The block device is registered by register_blkdev(RAMDISK_MAJOR, \"ramdisk\")\nSo it should be unregistered by unregister_blkdev(RAMDISK_MAJOR, \"ramdisk\")\n\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nAcked-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "efedf51c866130945b5db755cb58670e60205d83",
      "tree": "c98b36ddbfe6178c73f913562ffaf324cafe1ec3",
      "parents": [
        "16104b5504fa8be130f7f127a5a1c7dd774efc44"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Wed Jun 04 17:18:42 2008 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 05 14:23:12 2008 -0700"
      },
      "message": "Add \u0027rd\u0027 alias to new brd ramdisk driver\n\nAlias brd to rd in the hope of helping legacy users. Suggested by Jan.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "53978d0a7a27eb036b9bf33c4caa06257a9dbed7",
      "tree": "3deb746ef8ee21647985c970c1130325afd90773",
      "parents": [
        "6089093e588ee3f6aed99d08b1cf5ea37c52cf97"
      ],
      "author": {
        "name": "Marcin Krol",
        "email": "hawk@pld-linux.org",
        "time": "Fri May 23 13:04:46 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 24 09:56:11 2008 -0700"
      },
      "message": "brd: don\u0027t show ramdisks in /proc/partitions\n\nIn 2.6.25, ramdisk devices show up in /proc/partitions, which is a\nbehaviour change from the old rd.c.  Add GENHD_FL_SUPPRESS_PARTITION_INFO,\nwhich was present in rd.c.\n\nAll kernels prior to 2.6.25 weren\u0027t displaying ramdisks in\n/proc/partitions.  Since there are many userspace tools using information\nfrom /proc/partitions some of them may now behave incorrectly (I didn\u0027t\ntested any though).  For example before 2.6.25 /proc/partitions was empty\nif no block devices like hard disks and such were detected by kernel.  Now\nall 16 ramdisks are always visible there.  Some software may rely on such\ninformation (I mean, on empty /proc/partitions).\n\nThere was quite similar situation back in 2004, and ramdisks were excluded\nback from displaying.  Thats why I called this a regression (maybe a bit\nunfortunate).  See this patch for info:\nhttp://kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.3-rc2/2.6.3-rc2-mm1/broken-out/nbd-proc-partitions-fix.patch\n\nI also think that someone somewhere (long time ago) excluded ramdisks from\n/proc/partitions for good reasons.  It is possible that now such new\n\"feature\" is harmless, but I think there are more chances that someone\nwill say \"hey, /proc/partitions has changed, now my software doesn\u0027t work\"\nthen \"hey where did my new 2.6.25 feature go\".  nbd devices are also\nexcluded, maybe for very same (unknown to me) reasons.\n\nSigned-off-by: Marcin Krol \u003chawk@pld-linux.org\u003e\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: \u003cstable@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": "d7853d1f8932c847a8d7b3b38e6baedf77148cfb",
      "tree": "7307493afd5fd728150c1848509942461064ea5f",
      "parents": [
        "237fc6e7a35076f584b9d0794a5204fe4bd9b9e5"
      ],
      "author": {
        "name": "Laurent Vivier",
        "email": "Laurent.Vivier@bull.net",
        "time": "Wed Apr 30 00:55:06 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:53 2008 -0700"
      },
      "message": "brd: modify ramdisk device to be able to manage partitions\n\nThis patch adds partition management for Block RAM Device (BRD).\n\nThis patch is done to keep in sync BRD and loop device drivers.\n\nThis patch adds a parameter to the module, max_part, to specify\nthe maximum number of partitions per RAM device.\n\nExample:\n\n# modprobe brd max_part\u003d63\n# ls -l /dev/ram*\nbrw-rw---- 1 root disk 1,   0 2008-04-03 13:39 /dev/ram0\nbrw-rw---- 1 root disk 1,  64 2008-04-03 13:39 /dev/ram1\nbrw-rw---- 1 root disk 1, 640 2008-04-03 13:39 /dev/ram10\nbrw-rw---- 1 root disk 1, 704 2008-04-03 13:39 /dev/ram11\nbrw-rw---- 1 root disk 1, 768 2008-04-03 13:39 /dev/ram12\nbrw-rw---- 1 root disk 1, 832 2008-04-03 13:39 /dev/ram13\nbrw-rw---- 1 root disk 1, 896 2008-04-03 13:39 /dev/ram14\nbrw-rw---- 1 root disk 1, 960 2008-04-03 13:39 /dev/ram15\nbrw-rw---- 1 root disk 1, 128 2008-04-03 13:39 /dev/ram2\nbrw-rw---- 1 root disk 1, 192 2008-04-03 13:39 /dev/ram3\nbrw-rw---- 1 root disk 1, 256 2008-04-03 13:39 /dev/ram4\nbrw-rw---- 1 root disk 1, 320 2008-04-03 13:39 /dev/ram5\nbrw-rw---- 1 root disk 1, 384 2008-04-03 13:39 /dev/ram6\nbrw-rw---- 1 root disk 1, 448 2008-04-03 13:39 /dev/ram7\nbrw-rw---- 1 root disk 1, 512 2008-04-03 13:39 /dev/ram8\nbrw-rw---- 1 root disk 1, 576 2008-04-03 13:39 /dev/ram9\n# fdisk /dev/ram0\nDevice contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel\nBuilding a new DOS disklabel. Changes will remain in memory only,\nuntil you decide to write them. After that, of course, the previous\ncontent won\u0027t be recoverable.\n\nWarning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)\n\nCommand (m for help): o\nBuilding a new DOS disklabel. Changes will remain in memory only,\nuntil you decide to write them. After that, of course, the previous\ncontent won\u0027t be recoverable.\n\nWarning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)\n\nCommand (m for help): n\nCommand action\n   e   extended\n   p   primary partition (1-4)\np\nPartition number (1-4): 1\nFirst cylinder (1-2, default 1): 1\nLast cylinder or +size or +sizeM or +sizeK (1-2, default 2): 2\n\nCommand (m for help): w\nThe partition table has been altered!\n\nCalling ioctl() to re-read partition table.\nSyncing disks.\n# ls -l /dev/ram0*\nbrw-rw---- 1 root disk 1, 0 2008-04-03 13:40 /dev/ram0\nbrw-rw---- 1 root disk 1, 1 2008-04-03 13:40 /dev/ram0p1\n# mkfs /dev/ram0p1\nmke2fs 1.40-WIP (14-Nov-2006)\nFilesystem label\u003d\nOS type: Linux\nBlock size\u003d1024 (log\u003d0)\nFragment size\u003d1024 (log\u003d0)\n4016 inodes, 16032 blocks\n801 blocks (5.00%) reserved for the super user\nFirst data block\u003d1\nMaximum filesystem blocks\u003d16515072\n2 block groups\n8192 blocks per group, 8192 fragments per group\n2008 inodes per group\nSuperblock backups stored on blocks:\n\t8193\n\nWriting inode tables: done\nWriting superblocks and filesystem accounting information: done\n\nThis filesystem will be automatically checked every 26 mounts or\n180 days, whichever comes first.  Use tune2fs -c or -i to override.\n# mount /dev/ram0p1 /mnt\ndf /mnt\nFilesystem           1K-blocks      Used Available Use% Mounted on\n/dev/ram0p1              15521       138     14582   1% /mnt\n# ls -l /mnt\ntotal 12\ndrwx------ 2 root root 12288 2008-04-03 13:41 lost+found\n# umount /mnt\n# rmmod brd\n\nSigned-off-by: Laurent Vivier \u003cLaurent.Vivier@bull.net\u003e\nAcked-by: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\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": "30afcb4bd2762fa4b87b17ada9500aa46dc10b1b",
      "tree": "0920f491a37683a8784c146270b98f82a7e0aa2c",
      "parents": [
        "423bad600443c590f34ed7ce357591f76f48f137"
      ],
      "author": {
        "name": "Jared Hulbert",
        "email": "jaredeh@gmail.com",
        "time": "Mon Apr 28 02:13:02 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:23 2008 -0700"
      },
      "message": "return pfn from direct_access, for XIP\n\nAlter the block device -\u003edirect_access() API to work with the new\nget_xip_mem() API (that requires both kaddr and pfn are returned).\n\nSome architectures will not do the right thing in their virt_to_page() for use\nby XIP (to translate from the kernel virtual address returned by\ndirect_access(), to a user mappable pfn in XIP\u0027s page fault handler.\n\nHowever, we can\u0027t switch it to just return the pfn and not the kaddr, because\nwe have no good way to get a kva from a pfn, and XIP requires the kva for its\nread(2) and write(2) handlers.  So we have to return both.\n\nSigned-off-by: Jared Hulbert \u003cjaredeh@gmail.com\u003e\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Carsten Otte \u003ccotte@de.ibm.com\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: linux-mm@kvack.org\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "26defe34e48e18b058b773f60467729c64917490",
      "tree": "e186efc0a8661110b119c18a74089788097298bb",
      "parents": [
        "807501475fce0ebe68baedf87f202c3e4ee0d12c"
      ],
      "author": {
        "name": "Petr Tesarik",
        "email": "ptesarik@suse.cz",
        "time": "Tue Apr 22 05:36:52 2008 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 22 13:38:03 2008 -0700"
      },
      "message": "fix brd allocation flags\n\nWhile looking at the implementation of the Ram backed block device\ndriver, I stumbled across a write-only local variable, which makes\nlittle sense, so I assume it should actually work like this:\n\nSigned-off-by: Petr Tesarik \u003cptesarik@suse.cz\u003e\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "75acb9cd2ef0bbb463098fdd40cbcdda79d45fa3",
      "tree": "acb8f0a63ac1249146041b06eaaa003ea24c8c7a",
      "parents": [
        "9db5579be4bb5320c3248f6acf807aedf05ae143"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Fri Feb 08 04:19:50 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 08 09:22:30 2008 -0800"
      },
      "message": "rd: support XIP\n\nSupport direct_access XIP method with brd.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9db5579be4bb5320c3248f6acf807aedf05ae143",
      "tree": "fde09bbeb427946b30d2e0fb6b00494a42488052",
      "parents": [
        "daeb51e62cacde31c8245866e1096ff79a0c83fe"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Fri Feb 08 04:19:49 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 08 09:22:30 2008 -0800"
      },
      "message": "rewrite rd\n\nThis is a rewrite of the ramdisk block device driver.\n\nThe old one is really difficult because it effectively implements a block\ndevice which serves data out of its own buffer cache.  It relies on the dirty\nbit being set, to pin its backing store in cache, however there are non\ntrivial paths which can clear the dirty bit (eg.  try_to_free_buffers()),\nwhich had recently lead to data corruption.  And in general it is completely\nwrong for a block device driver to do this.\n\nThe new one is more like a regular block device driver.  It has no idea about\nvm/vfs stuff.  It\u0027s backing store is similar to the buffer cache (a simple\nradix-tree of pages), but it doesn\u0027t know anything about page cache (the pages\nin the radix tree are not pagecache pages).\n\nThere is one slight downside -- direct block device access and filesystem\nmetadata access goes through an extra copy and gets stored in RAM twice.\nHowever, this downside is only slight, because the real buffercache of the\ndevice is now reclaimable (because we\u0027re not playing crazy games with it), so\nunder memory intensive situations, footprint should effectively be the same --\nmaybe even a slight advantage to the new driver because it can also reclaim\nbuffer heads.\n\nThe fact that it now goes through all the regular vm/fs paths makes it\nmuch more useful for testing, too.\n\n   text    data     bss     dec     hex filename\n   2837     849     384    4070     fe6 drivers/block/rd.o\n   3528     371      12    3911     f47 drivers/block/brd.o\n\nText is larger, but data and bss are smaller, making total size smaller.\n\nA few other nice things about it:\n- Similar structure and layout to the new loop device handlinag.\n- Dynamic ramdisk creation.\n- Runtime flexible buffer head size (because it is no longer part of the\n  ramdisk code).\n- Boot / load time flexible ramdisk size, which could easily be extended\n  to a per-ramdisk runtime changeable size (eg. with an ioctl).\n- Can use highmem for the backing store.\n\n[akpm@linux-foundation.org: fix build]\n[byron.bbradley@gmail.com: make rd_size non-static]\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Byron Bradley \u003cbyron.bbradley@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ]
}
