)]}'
{
  "log": [
    {
      "commit": "7035b5df3c071ccaf2f1694b96bd8958b0eb37ca",
      "tree": "146e916bce5b11232afac2319c012b1fccba54d0",
      "parents": [
        "0c614e2d3e6ee6ff13c6181f380787cea1d82d1d"
      ],
      "author": {
        "name": "Dmitry Monakhov",
        "email": "dmonakhov@openvz.org",
        "time": "Wed Nov 16 09:21:49 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Nov 16 09:21:49 2011 +0100"
      },
      "message": "loop: cleanup set_status interface\n\n1) Anyone who has read access to loopdev has permission to call set_status\n   and may change important parameters such as lo_offset, lo_sizelimit and\n   so on, which contradicts to read access pattern and definitely equals\n   to write access pattern.\n2) Add lo_offset over i_size check to prevent blkdev_size overflow.\n   ##Testcase_bagin\n   #dd if\u003d/dev/zero of\u003d./file bs\u003d1k count\u003d1\n   #losetup /dev/loop0 ./file\n   /* userspace_application */\n   struct loop_info64 loinf;\n   fd \u003d open(\"/dev/loop0\", O_RDONLY);\n   ioctl(fd, LOOP_GET_STATUS64, \u0026loinf);\n   /* Set offset to any value which is bigger than i_size, and sizelimit\n    * to nonzero value*/\n   loinf.lo_offset \u003d 4096*1024;\n   loinf.lo_sizelimit \u003d 1024;\n   ioctl(fd, LOOP_SET_STATUS64, \u0026loinf);\n   /* After this loop device will have size similar to 0x7fffffffffxxxx */\n   #blockdev --getsz /dev/loop0\n   ##OUTPUT: 36028797018955968\n   ##Testcase_end\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Dmitry Monakhov \u003cdmonakhov@openvz.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "3bb9068278ea524581237abadd41377a14717e7d",
      "tree": "6e360ae87c4b393e862b6bb2ab18e8f2cea22797",
      "parents": [
        "6b76106d8ef31111d6fc469564b83b5f5542794f"
      ],
      "author": {
        "name": "Dmitry Monakhov",
        "email": "dmonakhov@openvz.org",
        "time": "Wed Nov 16 09:21:48 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Nov 16 09:21:48 2011 +0100"
      },
      "message": "loop: prevent information leak after failed read\n\nIf read was not fully successful we have to fail whole bio to prevent\ninformation leak of old pages\n\n##Testcase_begin\ndd if\u003d/dev/zero of\u003d./file bs\u003d1M count\u003d1\nlosetup /dev/loop0 ./file -o 4096\ntruncate -s 0 ./file\n# OOps loop offset is now beyond i_size, so read will silently fail.\n# So bio\u0027s pages would not be cleared, may which result in information leak.\nhexdump -C /dev/loop0\n##testcase_end\n\nSigned-off-by: Dmitry Monakhov \u003cdmonakhov@openvz.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "3d0a8d10cfb4cc3d1877c29a866ee7d8a46aa2fa",
      "tree": "11a85044d1472f5972ae47ce10a2f446ad981e9f",
      "parents": [
        "b4fdcb02f1e39c27058a885905bd0277370ba441",
        "a0eda62552eba4e1f92d5354bb65c68fb6b45f87"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Nov 04 17:22:14 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Nov 04 17:22:14 2011 -0700"
      },
      "message": "Merge branch \u0027for-3.2/drivers\u0027 of git://git.kernel.dk/linux-block\n\n* \u0027for-3.2/drivers\u0027 of git://git.kernel.dk/linux-block: (30 commits)\n  virtio-blk: use ida to allocate disk index\n  hpsa: add small delay when using PCI Power Management to reset for kump\n  cciss: add small delay when using PCI Power Management to reset for kump\n  xen/blkback: Fix two races in the handling of barrier requests.\n  xen/blkback: Check for proper operation.\n  xen/blkback: Fix the inhibition to map pages when discarding sector ranges.\n  xen/blkback: Report VBD_WSECT (wr_sect) properly.\n  xen/blkback: Support \u0027feature-barrier\u0027 aka old-style BARRIER requests.\n  xen-blkfront: plug device number leak in xlblk_init() error path\n  xen-blkfront: If no barrier or flush is supported, use invalid operation.\n  xen-blkback: use kzalloc() in favor of kmalloc()+memset()\n  xen-blkback: fixed indentation and comments\n  xen-blkfront: fix a deadlock while handling discard response\n  xen-blkfront: Handle discard requests.\n  xen-blkback: Implement discard requests (\u0027feature-discard\u0027)\n  xen-blkfront: add BLKIF_OP_DISCARD and discard request struct\n  drivers/block/loop.c: remove unnecessary bdev argument from loop_clr_fd()\n  drivers/block/loop.c: emit uevent on auto release\n  drivers/block/cpqarray.c: use pci_dev-\u003erevision\n  loop: always allow userspace partitions and optionally support automatic scanning\n  ...\n\nFic up trivial header file includsion conflict in drivers/block/loop.c\n"
    },
    {
      "commit": "83157223defe3be490cfea048e83451b6f254216",
      "tree": "fa484185d27765a13036bb43ae68d8cdb63f585b",
      "parents": [
        "9562ad9ab36df7ccef920d119f3b5100025db95f",
        "f992ae801a7dec34a4ed99a6598bbbbfb82af4fb"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Mon Oct 24 16:24:38 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Mon Oct 24 16:24:38 2011 +0200"
      },
      "message": "Merge branch \u0027for-linus\u0027 into for-3.2/core\n"
    },
    {
      "commit": "5c04b426f2e8b46cfc7969a35b2631063a3c646c",
      "tree": "2d27d9f5d2fe5d5e8fbc01a467ec58bcb50235c1",
      "parents": [
        "499337bb6511e665a236a6a947f819d98ea340c6",
        "899e3ee404961a90b828ad527573aaaac39f0ab1"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Oct 19 14:30:42 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Oct 19 14:30:42 2011 +0200"
      },
      "message": "Merge branch \u0027v3.1-rc10\u0027 into for-3.2/core\n\nConflicts:\n\tblock/blk-core.c\n\tinclude/linux/blkdev.h\n\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "456be1484ffc72a24bdb4200b5847c4fa90139d9",
      "tree": "570f0818bd6cfa245ab23d0121853b7b1e5a649b",
      "parents": [
        "8bc03e8f3a334e09e89a7dffb486ee97a5ce84ae"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Mon Oct 17 12:57:20 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Mon Oct 17 12:57:20 2011 +0200"
      },
      "message": "loop: remove the incorrect write_begin/write_end shortcut\n\nCurrently the loop device tries to call directly into write_begin/write_end\ninstead of going through -\u003ewrite if it can.  This is a fairly nasty shortcut\nas write_begin and write_end are only callbacks for the generic write code\nand expect to be called with filesystem specific locks held.\n\nThis code currently causes various issues for clustered filesystems as it\ndoesn\u0027t take the required cluster locks, and it also causes issues for XFS\nas it doesn\u0027t properly lock against the swapext ioctl as called by the\ndefragmentation tools.  This in case causes data corruption if\ndefragmentation hits a busy loop device in the wrong time window, as\nreported by RH QA.\n\nThe reason why we have this shortcut is that it saves a data copy when\ndoing a transformation on the loop device, which is the technical term\nfor using cryptoloop (or an XOR transformation).  Given that cryptoloop\nhas been deprecated in favour of dm-crypt my opinion is that we should\nsimply drop this shortcut instead of finding complicated ways to to\nintroduce a formal interface for this shortcut.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "4c823cc3d568277aa6340d8df6981e34f4c4dee5",
      "tree": "69d160a2baf1c6d346b1e4978cb294a2af9ad66f",
      "parents": [
        "8a9c594422ecad912d6470888acdee9a1236ad68"
      ],
      "author": {
        "name": "Ayan George",
        "email": "ayan@ayan.net",
        "time": "Wed Sep 21 10:02:13 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Sep 21 10:02:13 2011 +0200"
      },
      "message": "drivers/block/loop.c: remove unnecessary bdev argument from loop_clr_fd()\n\nIf the loop device is associated (lo-\u003elo_state \u003d\u003d Lo_bound), it will have\na valid bdev pointed to by lo-\u003elo_device.  There is no reason to ever pass\nan additional block_device pointer.\n\nSigned-off-by: Ayan George \u003cayan.george@canonical.com\u003e\nCc: Phillip Susi \u003cpsusi@cfl.rr.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@google.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "8a9c594422ecad912d6470888acdee9a1236ad68",
      "tree": "6f8da22845a400ec63f7f623ac26206a93812bb8",
      "parents": [
        "5a3a76e6c35fa236fc234d17a98edeb41d49130f"
      ],
      "author": {
        "name": "Phillip Susi",
        "email": "psusi@cfl.rr.com",
        "time": "Wed Sep 21 10:02:13 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Sep 21 10:02:13 2011 +0200"
      },
      "message": "drivers/block/loop.c: emit uevent on auto release\n\nThe loopback driver failed to emit the change uevent when auto releasing\nthe device.  Fixed lo_release() to pass the bdev to loop_clr_fd() so it\ncan emit the event.\n\nSigned-off-by: Phillip Susi \u003cpsusi@cfl.rr.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Ayan George \u003cayan@ayan.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@google.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "5a7bbad27a410350e64a2d7f5ec18fc73836c14f",
      "tree": "3447cd62dbcbd77b4071e2eb7576f1d7632ef2d3",
      "parents": [
        "c20e8de27fef9f59869c81c288ad6cf28200e00c"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Mon Sep 12 12:12:01 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Sep 12 12:12:01 2011 +0200"
      },
      "message": "block: remove support for bio remapping from -\u003emake_request\n\nThere is very little benefit in allowing to let a -\u003emake_request\ninstance update the bios device and sector and loop around it in\n__generic_make_request when we can archive the same through calling\ngeneric_make_request from the driver and letting the loop in\ngeneric_make_request handle it.\n\nNote that various drivers got the return value from -\u003emake_request and\nreturned non-zero values for errors.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nAcked-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "e03c8dd14915fabc101aa495828d58598dc5af98",
      "tree": "8aba1d519848c3f7684ac5673c95f56aa6ff1d57",
      "parents": [
        "e8b177cedc39b092e423b8cbc687dbf096a1de47"
      ],
      "author": {
        "name": "Kay Sievers",
        "email": "kay.sievers@vrfy.org",
        "time": "Tue Aug 23 20:12:04 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Aug 23 20:12:04 2011 +0200"
      },
      "message": "loop: always allow userspace partitions and optionally support automatic scanning\n\nAutomatic partition scanning can be requested individually per loop\ndevice during its setup by setting LO_FLAGS_PARTSCAN. By default, no\npartition tables are scanned.\n\nUserspace can now always add and remove partitions from all loop\ndevices, regardless if the in-kernel partition scanner is enabled or\nnot.\n\nThe needed partition minor numbers are allocated from the extended\nminors space, the main loop device numbers will continue to match the\nloop minors, regardless of the number of partitions used.\n\n  # grep . /sys/class/block/loop1/loop/*\n  /sys/block/loop1/loop/autoclear:0\n  /sys/block/loop1/loop/backing_file:/home/kay/data/stuff/part.img\n  /sys/block/loop1/loop/offset:0\n  /sys/block/loop1/loop/partscan:1\n  /sys/block/loop1/loop/sizelimit:0\n\n  # ls -l /dev/loop*\n  brw-rw---- 1 root disk   7,   0 Aug 14 20:22 /dev/loop0\n  brw-rw---- 1 root disk   7,   1 Aug 14 20:23 /dev/loop1\n  brw-rw---- 1 root disk 259,   0 Aug 14 20:23 /dev/loop1p1\n  brw-rw---- 1 root disk 259,   1 Aug 14 20:23 /dev/loop1p2\n  brw-rw---- 1 root disk   7,  99 Aug 14 20:23 /dev/loop99\n  brw-rw---- 1 root disk 259,   2 Aug 14 20:23 /dev/loop99p1\n  brw-rw---- 1 root disk 259,   3 Aug 14 20:23 /dev/loop99p2\n  crw------T 1 root root  10, 237 Aug 14 20:22 /dev/loop-control\n\nCc: Karel Zak  \u003ckzak@redhat.com\u003e\nCc: Davidlohr Bueso \u003cdave@gnu.org\u003e\nAcked-By: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "dfaa2ef68e80c378e610e3c8c536f1c239e8d3ef",
      "tree": "1b827fb8b3785dfca6c5e19d7dbbb0a9d59a3d2c",
      "parents": [
        "548ef6cc26ca1c81f19855d57d3fb0f9a7ce3385"
      ],
      "author": {
        "name": "Lukas Czerner",
        "email": "lczerner@redhat.com",
        "time": "Fri Aug 19 14:50:46 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Aug 19 14:50:46 2011 +0200"
      },
      "message": "loop: add discard support for loop devices\n\nThis commit adds discard support for loop devices. Discard is usually\nsupported by SSD and thinly provisioned devices as a method for\nreclaiming unused space. This is no different than trying to reclaim\nback space which is not used by the file system on the image, but it\nstill occupies space on the host file system.\n\nWe can do the reclamation on file system which does support hole\npunching. So when discard request gets to the loop driver we can\ntranslate that to punch a hole to the underlying file, hence reclaim\nthe free space.\n\nThis is very useful for trimming down the size of the image to only what\nis really used by the file system on that image. Fstrim may be used for\nthat purpose.\n\nIt has been tested on ext4, xfs and btrfs with the image file systems\next4, ext3, xfs and btrfs. ext4, or ext6 image on ext4 file system has\nsome problems but it seems that ext4 punch hole implementation is\nsomewhat flawed and it is unrelated to this commit.\n\nAlso this is a very good method of validating file systems punch hole\nimplementation.\n\nNote that when encryption is used, discard support is disabled, because\nusing it might leak some information useful for possible attacker.\n\nSigned-off-by: Lukas Czerner \u003clczerner@redhat.com\u003e\nReviewed-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "05eb0f252b04aa94ace0794f73d56c6a02351d80",
      "tree": "51c86862b31a5d2361b54658d0b6e14ed03c9afc",
      "parents": [
        "d134b00b9acca3fb054d7c88a5f5d562ecbb42d1"
      ],
      "author": {
        "name": "Kay Sievers",
        "email": "kay.sievers@vrfy.org",
        "time": "Sun Jul 31 22:21:35 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sun Jul 31 22:21:35 2011 +0200"
      },
      "message": "loop: fix deadlock when sysfs and LOOP_CLR_FD race against each other\n\nLOOP_CLR_FD takes lo-\u003elo_ctl_mutex and tries to remove the loop sysfs\nfiles. Sysfs calls show() and waits for lo-\u003elo_ctl_mutex. LOOP_CLR_FD\nwaits for show() to finish to remove the sysfs file.\n\n  cat /sys/class/block/loop0/loop/backing_file\n    mutex_lock_nested+0x176/0x350\n    ? loop_attr_do_show_backing_file+0x2f/0xd0 [loop]\n    ? loop_attr_do_show_backing_file+0x2f/0xd0 [loop]\n    loop_attr_do_show_backing_file+0x2f/0xd0 [loop]\n    dev_attr_show+0x1b/0x60\n    ? sysfs_read_file+0x86/0x1a0\n    ? __get_free_pages+0x12/0x50\n    sysfs_read_file+0xaf/0x1a0\n\n  ioctl(LOOP_CLR_FD):\n    wait_for_common+0x12c/0x180\n    ? try_to_wake_up+0x2a0/0x2a0\n    wait_for_completion+0x18/0x20\n    sysfs_deactivate+0x178/0x180\n    ? sysfs_addrm_finish+0x43/0x70\n    ? sysfs_addrm_start+0x1d/0x20\n    sysfs_addrm_finish+0x43/0x70\n    sysfs_hash_and_remove+0x85/0xa0\n    sysfs_remove_group+0x59/0x100\n    loop_clr_fd+0x1dc/0x3f0 [loop]\n    lo_ioctl+0x223/0x7a0 [loop]\n\nInstead of taking the lo_ctl_mutex from sysfs code, take the inner\nlo-\u003elo_lock, to protect the access to the backing_file data.\n\nThanks to Tejun for help debugging and finding a solution.\n\nCc: Milan Broz \u003cmbroz@redhat.com\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nCc: stable@kernel.org\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "d134b00b9acca3fb054d7c88a5f5d562ecbb42d1",
      "tree": "ccc63647ec8a551289f26866ec86091e44266bad",
      "parents": [
        "770fe30a46a12b6fb6b63fbe1737654d28e84844"
      ],
      "author": {
        "name": "Kay Sievers",
        "email": "kay.sievers@vrfy.org",
        "time": "Sun Jul 31 22:08:04 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sun Jul 31 22:08:04 2011 +0200"
      },
      "message": "loop: add BLK_DEV_LOOP_MIN_COUNT\u003d%i to allow distros 0 pre-allocated loop devices\n\nInstead of unconditionally creating a fixed number of dead loop\ndevices which need to be investigated by storage handling services,\neven when they are never used, we allow distros start with 0\nloop devices and have losetup(8) and similar switch to the dynamic\n/dev/loop-control interface instead of searching /dev/loop%i for free\ndevices.\n\nSigned-off-by: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "770fe30a46a12b6fb6b63fbe1737654d28e84844",
      "tree": "e8a35712602ca086c41f94d191579ac2dc365cf5",
      "parents": [
        "34dd82afd27da2537199d7f71f1542501c6f96e7"
      ],
      "author": {
        "name": "Kay Sievers",
        "email": "kay.sievers@vrfy.org",
        "time": "Sun Jul 31 22:08:04 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sun Jul 31 22:08:04 2011 +0200"
      },
      "message": "loop: add management interface for on-demand device allocation\n\nLoop devices today have a fixed pre-allocated number of usually 8.\nThe number can only be changed at module init time. To find a free\ndevice to use, /dev/loop%i needs to be scanned, and all devices need\nto be opened until a free one is possibly found.\n\nThis adds a new /dev/loop-control device node, that allows to\ndynamically find or allocate a free device, and to add and remove loop\ndevices from the running system:\n LOOP_CTL_ADD adds a specific device. Arg is the number\n of the device. It returns the device i or a negative\n error code.\n\n LOOP_CTL_REMOVE removes a specific device, Arg is the\n number the device. It returns the device i or a negative\n error code.\n\n LOOP_CTL_GET_FREE finds the next unbound device or allocates\n a new one. No arg is given. It returns the device i or a\n negative error code.\n\nThe loop kernel module gets automatically loaded when\n/dev/loop-control is accessed the first time. The alias\nspecified in the module, instructs udev to create this\n\u0027dead\u0027 device node, even when the module is not loaded.\n\nExample:\n cfd \u003d open(\"/dev/loop-control\", O_RDWR);\n\n # add a new specific loop device\n err \u003d ioctl(cfd, LOOP_CTL_ADD, devnr);\n\n # remove a specific loop device\n err \u003d ioctl(cfd, LOOP_CTL_REMOVE, devnr);\n\n # find or allocate a free loop device to use\n devnr \u003d ioctl(cfd, LOOP_CTL_GET_FREE);\n\n sprintf(loopname, \"/dev/loop%i\", devnr);\n ffd \u003d open(\"backing-file\", O_RDWR);\n lfd \u003d open(loopname, O_RDWR);\n err \u003d ioctl(lfd, LOOP_SET_FD, ffd);\n\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Karel Zak  \u003ckzak@redhat.com\u003e\nSigned-off-by: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "34dd82afd27da2537199d7f71f1542501c6f96e7",
      "tree": "35688ccd99d99e16f3c82829eb824703e7460822",
      "parents": [
        "aa387cc895672b00f807ad7c734a2defaf677712"
      ],
      "author": {
        "name": "Kay Sievers",
        "email": "kay.sievers@vrfy.org",
        "time": "Sun Jul 31 22:08:04 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sun Jul 31 22:08:04 2011 +0200"
      },
      "message": "loop: replace linked list of allocated devices with an idr index\n\nReplace the linked list, that keeps track of allocated devices, with an\nidr index to allow a more efficient lookup of devices.\n\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "ac04fee0b5c55bbac0858727a4154110b55d3f5a",
      "tree": "5277380fe275b447ebe5f8d26762c34dea503cf5",
      "parents": [
        "d86e0e83b32bc84600adb0b6ea1fce389b266682"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Fri May 27 07:59:25 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri May 27 07:59:25 2011 +0200"
      },
      "message": "loop: export module parameters\n\nExport \u0027max_loop\u0027 and \u0027max_part\u0027 parameters to sysfs so user can know\nthat how many devices are allowed and how many partitions are supported.\n\nIf \u0027max_loop\u0027 is 0, there is no restriction on the number of loop devices.\nUser can create/use the devices as many as minor numbers available. If\n\u0027max_part\u0027 is 0, it means simply the device doesn\u0027t support partitioning.\n\nAlso note that \u0027max_part\u0027 can be adjusted to power of 2 minus 1 form if\nneeded. User should check this value after the module loading if he/she\nwant to use that number correctly (i.e. fdisk, mknod, etc.).\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nCc: Laurent Vivier \u003cLaurent.Vivier@bull.net\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "a1c15c59feee36267c43142a41152fbf7402afb6",
      "tree": "39f6db8cd34379207c1d5666e009ec2131774111",
      "parents": [
        "78f4bb367fd147a0e7e3998ba6e47109999d8814"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Tue May 24 16:48:55 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue May 24 16:48:55 2011 +0200"
      },
      "message": "loop: handle on-demand devices correctly\n\nWhen finding or allocating a loop device, loop_probe() did not take\npartition numbers into account so that it can result to a different\ndevice. Consider following example:\n\n$ sudo modprobe loop max_part\u003d15\n$ ls -l /dev/loop*\nbrw-rw---- 1 root disk 7,   0 2011-05-24 22:16 /dev/loop0\nbrw-rw---- 1 root disk 7,  16 2011-05-24 22:16 /dev/loop1\nbrw-rw---- 1 root disk 7,  32 2011-05-24 22:16 /dev/loop2\nbrw-rw---- 1 root disk 7,  48 2011-05-24 22:16 /dev/loop3\nbrw-rw---- 1 root disk 7,  64 2011-05-24 22:16 /dev/loop4\nbrw-rw---- 1 root disk 7,  80 2011-05-24 22:16 /dev/loop5\nbrw-rw---- 1 root disk 7,  96 2011-05-24 22:16 /dev/loop6\nbrw-rw---- 1 root disk 7, 112 2011-05-24 22:16 /dev/loop7\n$ sudo mknod /dev/loop8 b 7 128\n$ sudo losetup /dev/loop8 ~/temp/disk-with-3-parts.img\n$ sudo losetup -a\n/dev/loop128: [0805]:278201 (/home/namhyung/temp/disk-with-3-parts.img)\n$ ls -l /dev/loop*\nbrw-rw---- 1 root disk 7,    0 2011-05-24 22:16 /dev/loop0\nbrw-rw---- 1 root disk 7,   16 2011-05-24 22:16 /dev/loop1\nbrw-rw---- 1 root disk 7, 2048 2011-05-24 22:18 /dev/loop128\nbrw-rw---- 1 root disk 7, 2049 2011-05-24 22:18 /dev/loop128p1\nbrw-rw---- 1 root disk 7, 2050 2011-05-24 22:18 /dev/loop128p2\nbrw-rw---- 1 root disk 7, 2051 2011-05-24 22:18 /dev/loop128p3\nbrw-rw---- 1 root disk 7,   32 2011-05-24 22:16 /dev/loop2\nbrw-rw---- 1 root disk 7,   48 2011-05-24 22:16 /dev/loop3\nbrw-rw---- 1 root disk 7,   64 2011-05-24 22:16 /dev/loop4\nbrw-rw---- 1 root disk 7,   80 2011-05-24 22:16 /dev/loop5\nbrw-rw---- 1 root disk 7,   96 2011-05-24 22:16 /dev/loop6\nbrw-rw---- 1 root disk 7,  112 2011-05-24 22:16 /dev/loop7\nbrw-r--r-- 1 root root 7,  128 2011-05-24 22:17 /dev/loop8\n\nAfter this patch, /dev/loop8 - instead of /dev/loop128 - was\naccessed correctly.\n\nIn addition, \u0027range\u0027 passed to blk_register_region() should\ninclude all range of dev_t that LOOP_MAJOR can address. It does\nnot need to be limited by partition numbers unless \u0027max_loop\u0027\nparam was specified.\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nCc: Laurent Vivier \u003cLaurent.Vivier@bull.net\u003e\nCc: stable@kernel.org\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "78f4bb367fd147a0e7e3998ba6e47109999d8814",
      "tree": "883f8fab87aa62b04730fa62631c97b5bb32eae4",
      "parents": [
        "0ddf72be4edbd7640b57c13161f71416df16ec11"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Tue May 24 16:48:54 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue May 24 16:48:54 2011 +0200"
      },
      "message": "loop: limit \u0027max_part\u0027 module param to DISK_MAX_PARTS\n\nThe \u0027max_part\u0027 parameter controls the number of maximum partition\na loop block device can have. However if a user specifies very\nlarge value it would exceed the limitation of device minor number\nand can cause a kernel panic (or, at least, produce invalid\ndevice nodes in some cases).\n\nOn my desktop system, following command kills the kernel. On qemu,\nit triggers similar oops but the kernel was alive:\n\n$ sudo modprobe loop max_part0000\n ------------[ cut here ]------------\n kernel BUG at /media/Linux_Data/project/linux/fs/sysfs/group.c:65!\n invalid opcode: 0000 [#1] SMP\n last sysfs file:\n CPU 0\n Modules linked in: loop(+)\n\n Pid: 43, comm: insmod Tainted: G        W   2.6.39-qemu+ #155 Bochs Bochs\n RIP: 0010:[\u003cffffffff8113ce61\u003e]  [\u003cffffffff8113ce61\u003e] internal_create_group\u003d\n+0x2a/0x170\n RSP: 0018:ffff880007b3fde8  EFLAGS: 00000246\n RAX: 00000000ffffffef RBX: ffff880007b3d878 RCX: 00000000000007b4\n RDX: ffffffff8152da50 RSI: 0000000000000000 RDI: ffff880007b3d878\n RBP: ffff880007b3fe38 R08: ffff880007b3fde8 R09: 0000000000000000\n R10: ffff88000783b4a8 R11: ffff880007b3d878 R12: ffffffff8152da50\n R13: ffff880007b3d868 R14: 0000000000000000 R15: ffff880007b3d800\n FS:  0000000002137880(0063) GS:ffff880007c00000(0000) knlGS:00000000000000\u003d\n00\n CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033\n CR2: 0000000000422680 CR3: 0000000007b50000 CR4: 00000000000006b0\n DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000\n DR3: 0000000000000000 DR6: 0000000000000000 DR7: 0000000000000000\n Process insmod (pid: 43, threadinfo ffff880007b3e000, task ffff880007afb9c\u003d\n0)\n Stack:\n  ffff880007b3fe58 ffffffff811e66dd ffff880007b3fe58 ffffffff811e570b\n  0000000000000010 ffff880007b3d800 ffff880007a7b390 ffff880007b3d868\n  0000000000400920 ffff880007b3d800 ffff880007b3fe48 ffffffff8113cfc8\n Call Trace:\n  [\u003cffffffff811e66dd\u003e] ? device_add+0x4bc/0x5af\n  [\u003cffffffff811e570b\u003e] ? dev_set_name+0x3c/0x3e\n  [\u003cffffffff8113cfc8\u003e] sysfs_create_group+0xe/0x12\n  [\u003cffffffff810b420e\u003e] blk_trace_init_sysfs+0x14/0x16\n  [\u003cffffffff8116a090\u003e] blk_register_queue+0x47/0xf7\n  [\u003cffffffff8116f527\u003e] add_disk+0xdf/0x290\n  [\u003cffffffffa00060eb\u003e] loop_init+0xeb/0x1b8 [loop]\n  [\u003cffffffffa0006000\u003e] ? 0xffffffffa0005fff\n  [\u003cffffffff8100020a\u003e] do_one_initcall+0x7a/0x12e\n  [\u003cffffffff81096804\u003e] sys_init_module+0x9c/0x1e0\n  [\u003cffffffff813329bb\u003e] system_call_fastpath+0x16/0x1b\n Code: c3 55 48 89 e5 41 57 41 56 41 89 f6 41 55 41 54 49 89 d4 53 48 89 fb\u003d\n 48 83 ec 28 48 85 ff 74 0b 85 f6 75 0b 48 83 7f 30 00 75 14 \u003c0f\u003e 0b eb fe \u003d\n48 83 7f 30 00 b9 ea ff ff ff 0f 84 18 01 00 00 49\n RIP  [\u003cffffffff8113ce61\u003e] internal_create_group+0x2a/0x170\n  RSP \u003cffff880007b3fde8\u003e\n ---[ end trace a123eb592043acad ]---\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nCc: Laurent Vivier \u003cLaurent.Vivier@bull.net\u003e\nCc: stable@kernel.org\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "4c63f5646e405b5010cc9499419060bf2e838f5b",
      "tree": "df91ba315032c8ec4aafeb3ab96fdfa7c6c656e1",
      "parents": [
        "cafb0bfca1a73efd6d8a4a6a6a716e6134b96c24",
        "69d60eb96ae8a73cf9b79cf28051caf973006011"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 10 08:58:35 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 10 08:58:35 2011 +0100"
      },
      "message": "Merge branch \u0027for-2.6.39/stack-plug\u0027 into for-2.6.39/core\n\nConflicts:\n\tblock/blk-core.c\n\tblock/blk-flush.c\n\tdrivers/md/raid1.c\n\tdrivers/md/raid10.c\n\tdrivers/md/raid5.c\n\tfs/nilfs2/btnode.c\n\tfs/nilfs2/mdt.c\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "7eaceaccab5f40bbfda044629a6298616aeaed50",
      "tree": "33954d12f63e25a47eb6d86ef3d3d0a5e62bf752",
      "parents": [
        "73c101011926c5832e6e141682180c4debe2cf45"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 10 08:52:07 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 10 08:52:07 2011 +0100"
      },
      "message": "block: remove per-queue plugging\n\nCode has been converted over to the new explicit on-stack plugging,\nand delay users have been converted to use the new API for that.\nSo lets kill off the old plugging along with aops-\u003esync_page().\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "e83a46bbb1d4c03defd733a64b727632a40059ad",
      "tree": "c4bc4822b2d3af1bf38095f531adc0a2aac054a5",
      "parents": [
        "da527770007fce8e4541947d47918248286da875",
        "fd51469fb68b987032e46297e0a4fe9020063c20"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Mar 04 19:09:02 2011 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Mar 04 19:09:02 2011 +0100"
      },
      "message": "Merge branch \u0027for-linus\u0027 of ../linux-2.6-block into block-for-2.6.39/core\n\nThis merge creates two set of conflicts.  One is simple context\nconflicts caused by removal of throtl_scheduled_delayed_work() in\nfor-linus and removal of throtl_shutdown_timer_wq() in\nfor-2.6.39/core.\n\nThe other is caused by commit 255bb490c8 (block: blk-flush shouldn\u0027t\ncall directly into q-\u003erequest_fn() __blk_run_queue()) in for-linus\ncrashing with FLUSH reimplementation in for-2.6.39/core.  The conflict\nisn\u0027t trivial but the resolution is straight-forward.\n\n* __blk_run_queue() calls in flush_end_io() and flush_data_end_io()\n  should be called with @force_kblockd set to %true.\n\n* elv_insert() in blk_kick_flush() should use\n  %ELEVATOR_INSERT_REQUEUE.\n\nBoth changes are to avoid invoking -\u003erequest_fn() directly from\nrequest completion path and closely match the changes in the commit\n255bb490c8.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "fd51469fb68b987032e46297e0a4fe9020063c20",
      "tree": "a108634afe0a0b2113f5df6ef5c00be2087f51c3",
      "parents": [
        "2d3a8497f8cc5aca14b722cd37d51f6c15ff9f74"
      ],
      "author": {
        "name": "Petr Uzel",
        "email": "petr.uzel@suse.cz",
        "time": "Thu Mar 03 11:48:50 2011 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 03 11:53:25 2011 -0500"
      },
      "message": "block: kill loop_mutex\n\nFollowing steps lead to deadlock in kernel:\n\ndd if\u003d/dev/zero of\u003dimg bs\u003d512 count\u003d1000\nlosetup -f img\nmkfs.ext2 /dev/loop0\nmount -t ext2 -o loop /dev/loop0 mnt\numount mnt/\n\nStacktrace:\n[\u003cc102ec04\u003e] irq_exit+0x36/0x59\n[\u003cc101502c\u003e] smp_apic_timer_interrupt+0x6b/0x75\n[\u003cc127f639\u003e] apic_timer_interrupt+0x31/0x38\n[\u003cc101df88\u003e] mutex_spin_on_owner+0x54/0x5b\n[\u003cfe2250e9\u003e] lo_release+0x12/0x67 [loop]\n[\u003cc10c4eae\u003e] __blkdev_put+0x7c/0x10c\n[\u003cc10a4da5\u003e] fput+0xd5/0x1aa\n[\u003cfe2250cf\u003e] loop_clr_fd+0x1a9/0x1b1 [loop]\n[\u003cfe225110\u003e] lo_release+0x39/0x67 [loop]\n[\u003cc10c4eae\u003e] __blkdev_put+0x7c/0x10c\n[\u003cc10a59d9\u003e] deactivate_locked_super+0x17/0x36\n[\u003cc10b6f37\u003e] sys_umount+0x27e/0x2a5\n[\u003cc10b6f69\u003e] sys_oldumount+0xb/0xe\n[\u003cc1002897\u003e] sysenter_do_call+0x12/0x26\n[\u003cffffffff\u003e] 0xffffffff\n\nRegression since 2a48fc0ab24241755dc9, which introduced the private\nloop_mutex as part of the BKL removal process.\n\nAs per [1], the mutex can be safely removed.\n\n[1] http://www.gossamer-threads.com/lists/linux/kernel/1341930\n\nAddresses: https://bugzilla.novell.com/show_bug.cgi?id\u003d669394\nAddresses: https://bugzilla.kernel.org/show_bug.cgi?id\u003d29172\n\nSigned-off-by: Petr Uzel \u003cpetr.uzel@suse.cz\u003e\nCc: stable@kernel.org\nReviewed-by: Nikanth Karthikesan \u003cknikanth@suse.de\u003e\nAcked-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "cd25f54961273c2e4cbd47441e04832468382a5e",
      "tree": "1c0e0442ce87000c2f24d13892aea3371b056153",
      "parents": [
        "c94a96ac93b4f5b8d1ff8430b1afa1a25610cf53"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Wed Mar 02 19:04:50 2011 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Wed Mar 02 19:06:49 2011 -0500"
      },
      "message": "loop: No need to initialize -\u003equeue_lock explicitly before calling blk_cleanup_queue()\n\nNow we initialize -\u003equeue_lock at queue allocation time so driver does\nnot have to worry about initializing it before calling\nblk_cleanup_queue().\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "ee71a968672a9951aee6014c55511007596425bc",
      "tree": "eb80f98cdc1baf08d9d4863dcdaa5e91864c22a7",
      "parents": [
        "04de96c9c6981c5957aa5db39bbdc4d958d07efa"
      ],
      "author": {
        "name": "Sergey Senozhatsky",
        "email": "sergey.senozhatsky@gmail.com",
        "time": "Wed Jan 19 08:25:02 2011 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Wed Jan 19 08:25:02 2011 -0700"
      },
      "message": "loop: queue_lock NULL pointer derefence in blk_throtl_exit\n\nPerforming\n$ sudo mount -o loop -o umask\u003d0 /dev/sdb1 /mnt/\nmount: wrong fs type, bad option, bad superblock on /dev/loop0,\n       missing codepage or helper program, or other error\n       In some cases useful info is found in syslog - try\n       dmesg | tail  or so\n\n$ sudo modprobe -r loop\n\nresults in oops:\n\n BUG: unable to handle kernel NULL pointer dereference at 0000000000000004\n IP: [\u003cffffffff812479d4\u003e] do_raw_spin_lock+0x14/0x122\n Process modprobe (pid: 6189, threadinfo ffff88009a898000, task ffff880154a88000)\n Call Trace:\n  [\u003cffffffff81486788\u003e] _raw_spin_lock_irq+0x4a/0x51\n  [\u003cffffffff8123404b\u003e] ? blk_throtl_exit+0x3b/0xa0\n  [\u003cffffffff8105b120\u003e] ? cancel_delayed_work_sync+0xd/0xf\n  [\u003cffffffff8123404b\u003e] blk_throtl_exit+0x3b/0xa0\n  [\u003cffffffff81229bc8\u003e] blk_release_queue+0x21/0x65\n  [\u003cffffffff8123bb06\u003e] kobject_release+0x51/0x66\n  [\u003cffffffff8123bab5\u003e] ? kobject_release+0x0/0x66\n  [\u003cffffffff8123ce1e\u003e] kref_put+0x43/0x4d\n  [\u003cffffffff8123ba27\u003e] kobject_put+0x47/0x4b\n  [\u003cffffffff8122717c\u003e] blk_cleanup_queue+0x56/0x5b\n  [\u003cffffffffa01c3824\u003e] loop_exit+0x68/0x844 [loop]\n  [\u003cffffffff8107cccc\u003e] sys_delete_module+0x1e8/0x25b\n  [\u003cffffffff814864c9\u003e] ? trace_hardirqs_on_thunk+0x3a/0x3f\n  [\u003cffffffff81002112\u003e] system_call_fastpath+0x16/0x1b\n\nbecause of an attempt to acquire NULL queue_lock.\nI added the same lines as in blk_queue_make_request -\nindex 44e18c0..49e6a54 100644`fall back to embedded per-queue lock\u0027.\n\nSigned-off-by: Sergey Senozhatsky \u003csergey.senozhatsky@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "3603b8eaccc8e41d3f355b3cadd662a3dd6699fd",
      "tree": "7aaf66e8b6dceddd96ade80e451f09982fb2c977",
      "parents": [
        "e61eb2e93fe86931d46831752a82dab25a5335ca"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Dec 20 09:15:19 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Dec 20 09:15:19 2010 +0100"
      },
      "message": "Fix compile warnings due to missing removal of a \u0027ret\u0027 variable\n\nCommit a8adbe3 forgot to remove the return variable, kill it.\n\ndrivers/block/loop.c: In function \u0027lo_splice_actor\u0027:\ndrivers/block/loop.c:398: warning: unused variable \u0027ret\u0027\n[...]\nfs/nfsd/vfs.c: In function \u0027nfsd_splice_actor\u0027:\nfs/nfsd/vfs.c:848: warning: unused variable \u0027ret\u0027\n\nReported-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "a8adbe378b56acd5945df70753c7e8f6fe223304",
      "tree": "afbaae1cb71be95f342f6638bfe2d3f1e22dd9a4",
      "parents": [
        "e4ea0c16a85d221ebcc3a21f32e321440459e0fc"
      ],
      "author": {
        "name": "Michał Mirosław",
        "email": "mirq-linux@rere.qmqm.pl",
        "time": "Fri Dec 17 08:56:44 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Dec 17 08:56:44 2010 +0100"
      },
      "message": "fs/splice: Pull buf-\u003eops-\u003econfirm() from splice_from_pipe actors\n\nThis patch pulls calls to buf-\u003eops-\u003econfirm() from all actors passed\n(also indirectly) to splice_from_pipe_feed().\n\nIs avoiding the call to buf-\u003eops-\u003econfirm() while splice()ing to\n/dev/null is an intentional optimization? No other user does that\nand this will remove this special case.\n\nAgainst current linux.git 6313e3c21743cc88bb5bd8aa72948ee1e83937b6.\n\nSigned-off-by: Michał Mirosław \u003cmirq-linux@rere.qmqm.pl\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "02e031cbc843b010e72fcc05c76113c688b2860f",
      "tree": "9f68559ec3acc39bcc4ce2ff87043a094eaa2e8f",
      "parents": [
        "00e375e7e962f938f6b3c93e4cd097a5e26cc788"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Wed Nov 10 14:54:09 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Wed Nov 10 14:54:09 2010 +0100"
      },
      "message": "block: remove REQ_HARDBARRIER\n\nREQ_HARDBARRIER is dead now, so remove the leftovers.  What\u0027s left\nat this point is:\n\n - various checks inside the block layer.\n - sanity checks in bio based drivers.\n - now unused bio_empty_barrier helper.\n - Xen blockfront use of BLKIF_OP_WRITE_BARRIER - it\u0027s dead for a while,\n   but Xen really needs to sort out it\u0027s barrier situaton.\n - setting of ordered tags in uas - dead code copied from old scsi\n   drivers.\n - scsi different retry for barriers - it\u0027s dead and should have been\n   removed when flushes were converted to FS requests.\n - blktrace handling of barriers - removed.  Someone who knows blktrace\n   better should add support for REQ_FLUSH and REQ_FUA, though.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "51a0bb0c2e614659132fce272c8a1815a12c5c2a",
      "tree": "93554b329e8e6cd9378641422dea4245c05a98dd",
      "parents": [
        "12ba8d1e9262ce81a695795410bd9ee5c9407ba1"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Wed Oct 27 19:51:30 2010 -0600"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Wed Oct 27 19:51:30 2010 -0600"
      },
      "message": "loop: Properly clear sysfs in autoclear mode\n\nIn autoclear mode bdev is NULL but the sysfs\nentry should be destroyed otherwise this warning appears:\n\nWARNING: at fs/sysfs/dir.c:451 sysfs_add_one+0x82/0x95()\nsysfs: cannot create duplicate filename \u0027/devices/virtual/block/loop0/loop\u0027\n\nFixes commit ee86273062cbb310665fe49e1f1937d2cf85b0b9\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "61ecdb801ef2cd28e32442383106d7837d76deac",
      "tree": "3ec4f04e09cc4a9b76dafaaa0c4dfd07e825e632",
      "parents": [
        "2e30244a7cc1ff09013a1238d415b4076406388e"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Tue Oct 26 14:21:47 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:08 2010 -0700"
      },
      "message": "mm: strictly nested kmap_atomic()\n\nEnsure kmap_atomic() usage is strictly nested\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Chris Metcalf \u003ccmetcalf@tilera.com\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Russell King \u003crmk@arm.linux.org.uk\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a2887097f25cd38cadfc11d10769e2b349fb5eca",
      "tree": "cd4adcb305365d6ba9acd2c02d4eb9d0125c6f8d",
      "parents": [
        "8abfc6e7a45eb74e51904bbae676fae008b11366",
        "005a1d15f5a6b2bb4ada80349513effbf22b4588"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 17:07:18 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 17:07:18 2010 -0700"
      },
      "message": "Merge branch \u0027for-2.6.37/barrier\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.37/barrier\u0027 of git://git.kernel.dk/linux-2.6-block: (46 commits)\n  xen-blkfront: disable barrier/flush write support\n  Added blk-lib.c and blk-barrier.c was renamed to blk-flush.c\n  block: remove BLKDEV_IFL_WAIT\n  aic7xxx_old: removed unused \u0027req\u0027 variable\n  block: remove the BH_Eopnotsupp flag\n  block: remove the BLKDEV_IFL_BARRIER flag\n  block: remove the WRITE_BARRIER flag\n  swap: do not send discards as barriers\n  fat: do not send discards as barriers\n  ext4: do not send discards as barriers\n  jbd2: replace barriers with explicit flush / FUA usage\n  jbd2: Modify ASYNC_COMMIT code to not rely on queue draining on barrier\n  jbd: replace barriers with explicit flush / FUA usage\n  nilfs2: replace barriers with explicit flush / FUA usage\n  reiserfs: replace barriers with explicit flush / FUA usage\n  gfs2: replace barriers with explicit flush / FUA usage\n  btrfs: replace barriers with explicit flush / FUA usage\n  xfs: replace barriers with explicit flush / FUA usage\n  block: pass gfp_mask and flags to sb_issue_discard\n  dm: convey that all flushes are processed as empty\n  ...\n"
    },
    {
      "commit": "8abfc6e7a45eb74e51904bbae676fae008b11366",
      "tree": "57d0a24558c0693e3a52e8e756616f6c72def1e9",
      "parents": [
        "e9dd2b6837e26fe202708cce5ea4bb4ee3e3482e",
        "6362beea8914cbd4630ccde3617d944aeca2d48f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 17:03:12 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 17:03:12 2010 -0700"
      },
      "message": "Merge branch \u0027for-2.6.37/drivers\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.37/drivers\u0027 of git://git.kernel.dk/linux-2.6-block: (95 commits)\n  cciss: fix PCI IDs for new Smart Array controllers\n  drbd: add race-breaker to drbd_go_diskless\n  drbd: use dynamic_dev_dbg to optionally log uuid changes\n  dynamic_debug.h: Fix dynamic_dev_dbg() macro if CONFIG_DYNAMIC_DEBUG not set\n  drbd: cleanup: change \"\u003c\u003d 0\" to \"\u003d\u003d 0\"\n  drbd: relax the grace period of the md_sync timer again\n  drbd: add some more explicit drbd_md_sync\n  drbd: drop wrong debug asserts, fix recently introduced race\n  drbd: cleanup useless leftover warn/error printk\u0027s\n  drbd: add explicit drbd_md_sync to drbd_resync_finished\n  drbd: Do not log an ASSERT for P_OV_REQUEST packets while C_CONNECTED\n  drbd: fix for possible deadlock on IO error during resync\n  drbd: fix unlikely access after free and list corruption\n  drbd: fix for spurious fullsync (uuids rotated too fast)\n  drbd: allow for explicit resync-finished notifications\n  drbd: preparation commit, using full state in receive_state()\n  drbd: drbd_send_ack_dp must not rely on header information\n  drbd: Fix regression in recv_bm_rle_bits (compressed bitmap)\n  drbd: Fixed a stupid copy and paste error\n  drbd: Allow larger values for c-fill-target.\n  ...\n\nFix up trivial conflict in drivers/block/ataflop.c due to BKL removal\n"
    },
    {
      "commit": "2a48fc0ab24241755dc93bfd4f01d68efab47f5a",
      "tree": "fa9ae10ce89b26b7d8ae9ce24bdfda5e3007b763",
      "parents": [
        "613655fa39ff6957754fa8ceb8559980920eb8ee"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Wed Jun 02 14:28:52 2010 +0200"
      },
      "committer": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Tue Oct 05 15:01:10 2010 +0200"
      },
      "message": "block: autoconvert trivial BKL users to private mutex\n\nThe block device drivers have all gained new lock_kernel\ncalls from a recent pushdown, and some of the drivers\nwere already using the BKL before.\n\nThis turns the BKL into a set of per-driver mutexes.\nStill need to check whether this is safe to do.\n\nfile\u003d$1\nname\u003d$2\nif grep -q lock_kernel ${file} ; then\n    if grep -q \u0027include.*linux.mutex.h\u0027 ${file} ; then\n            sed -i \u0027/include.*\u003clinux\\/smp_lock.h\u003e/d\u0027 ${file}\n    else\n            sed -i \u0027s/include.*\u003clinux\\/smp_lock.h\u003e.*$/include \u003clinux\\/mutex.h\u003e/g\u0027 ${file}\n    fi\n    sed -i ${file} \\\n        -e \"/^#include.*linux.mutex.h/,$ {\n                1,/^\\(static\\|int\\|long\\)/ {\n                     /^\\(static\\|int\\|long\\)/istatic DEFINE_MUTEX(${name}_mutex);\n\n} }\"  \\\n    -e \"s/\\(un\\)*lock_kernel\\\u003e[ ]*()/mutex_\\1lock(\\\u0026${name}_mutex)/g\" \\\n    -e \u0027/[      ]*cycle_kernel_lock();/d\u0027\nelse\n    sed -i -e \u0027/include.*\\\u003csmp_lock.h\\\u003e/d\u0027 ${file}  \\\n                -e \u0027/cycle_kernel_lock()/d\u0027\nfi\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\n"
    },
    {
      "commit": "6259f28459a9de820f47a9ece4ffa22d4596a9af",
      "tree": "bff61125a1b8298ce870c7ed3e53b9622a56b13f",
      "parents": [
        "d391a2dda2f1c993f094bdb3a8a342c5e0546553"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Sep 03 11:56:17 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Sep 10 12:35:37 2010 +0200"
      },
      "message": "block/loop: implement REQ_FLUSH/FUA support\n\nDeprecate REQ_HARDBARRIER and implement REQ_FLUSH/FUA instead.  Also,\ninstead of checking file-\u003ef_op-\u003efsync() directly, look at the value of\nvfs_fsync() and ignore -EINVAL return.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "4913efe456c987057e5d36a3f0a55422a9072cae",
      "tree": "295f04a7214e1933df3301dd42c12ff3f282a22c",
      "parents": [
        "6958f145459ca7ad9715024de97445addacb8510"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Sep 03 11:56:16 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Sep 10 12:35:36 2010 +0200"
      },
      "message": "block: deprecate barrier and replace blk_queue_ordered() with blk_queue_flush()\n\nBarrier is deemed too heavy and will soon be replaced by FLUSH/FUA\nrequests.  Deprecate barrier.  All REQ_HARDBARRIERs are failed with\n-EOPNOTSUPP and blk_queue_ordered() is replaced with simpler\nblk_queue_flush().\n\nblk_queue_flush() takes combinations of REQ_FLUSH and FUA.  If a\ndevice has write cache and can flush it, it should set REQ_FLUSH.  If\nthe device can handle FUA writes, it should also set REQ_FUA.\n\nAll blk_queue_ordered() users are converted.\n\n* ORDERED_DRAIN is mapped to 0 which is the default value.\n* ORDERED_DRAIN_FLUSH is mapped to REQ_FLUSH.\n* ORDERED_DRAIN_FLUSH_FUA is mapped to REQ_FLUSH | REQ_FUA.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Boaz Harrosh \u003cbharrosh@panasas.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Nick Piggin \u003cnpiggin@kernel.dk\u003e\nCc: Michael S. Tsirkin \u003cmst@redhat.com\u003e\nCc: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nCc: Chris Wright \u003cchrisw@sous-sol.org\u003e\nCc: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nCc: Geert Uytterhoeven \u003cGeert.Uytterhoeven@sonycom.com\u003e\nCc: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Alasdair G Kergon \u003cagk@redhat.com\u003e\nCc: Pierre Ossman \u003cdrzeus@drzeus.cx\u003e\nCc: Stefan Weinhuber \u003cwein@de.ibm.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "589d7ed02ade0d06a3510da2e15a7edfdb2ef3d8",
      "tree": "30b5f242f44d168be44da37878ea3ba3bd5f659a",
      "parents": [
        "0da2f50944976e890ccc9436ab88c0da87788d02"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Sep 03 11:56:16 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Sep 10 12:35:36 2010 +0200"
      },
      "message": "block/loop: queue ordered mode should be DRAIN_FLUSH\n\nloop implements FLUSH using fsync but was incorrectly setting its\nordered mode to DRAIN.  Change it to DRAIN_FLUSH.  In practice, this\ndoesn\u0027t change anything as loop doesn\u0027t make use of the block layer\nordered implementation.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "ee86273062cbb310665fe49e1f1937d2cf85b0b9",
      "tree": "cca87f85feafedb52bcc0687b6daa6b15895b199",
      "parents": [
        "9ee47476d6734c9deb9ae9ab05d963302f6b6150"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Mon Aug 23 15:16:00 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Aug 23 15:18:10 2010 +0200"
      },
      "message": "loop: add some basic read-only sysfs attributes\n\nCreate /sys/block/loopX/loop directory and provide these attributes:\n - backing_file\n - autoclear\n - offset\n - sizelimit\n\nThis loop directory is present only if loop device is configured.\n\nTo be used in util-linux-ng (and possibly elsewhere like udev rules)\nwhere code need to get loop attributes from kernel (and not store\nduplicate info in userspace).\n\nMoreover loop ioctls are not even able to provide full backing\nfile info because of buffer limits.\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "5e00d1b5b4c10fb839afd5ce61db8e24339454b0",
      "tree": "150de7f5b3e887a75013796542897ef2e1e4775a",
      "parents": [
        "c87ffbb812cf6150097a5095b031f4013a8f78a5"
      ],
      "author": {
        "name": "Jiri Slaby",
        "email": "jslaby@suse.cz",
        "time": "Thu Aug 12 14:31:06 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Aug 23 12:33:10 2010 +0200"
      },
      "message": "BLOCK: fix bio.bi_rw handling\n\nReturn of the bi_rw tests is no longer bool after commit 74450be1. But\nresults of such tests are stored in bools. This doesn\u0027t fit in there\nfor some compilers (gcc 4.5 here), so either use !! magic to get real\nbools or use ulong where the result is assigned somewhere.\n\nSigned-off-by: Jiri Slaby \u003cjslaby@suse.cz\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "6e9624b8caec290d28b4c6d9ec75749df6372b87",
      "tree": "47225b544e1da82742795553dc4e8aa70c17afdc",
      "parents": [
        "8a6cfeb6deca3a8fefd639d898b0d163c0b5d368"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Sat Aug 07 18:25:34 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:25:34 2010 +0200"
      },
      "message": "block: push down BKL into .open and .release\n\nThe open and release block_device_operations are currently\ncalled with the BKL held. In order to change that, we must\nfirst make sure that all drivers that currently rely\non this have no regressions.\n\nThis blindly pushes the BKL into all .open and .release\noperations for all block drivers to prepare for the\nnext step. The drivers can subsequently replace the BKL\nwith their own locks or remove it completely when it can\nbe shown that it is not needed.\n\nThe functions blkdev_get and blkdev_put are the only\nremaining users of the big kernel lock in the block\nlayer, besides a few uses in the ioctl code, none\nof which need to serialize with blkdev_{get,put}.\n\nMost of these two functions is also under the protection\nof bdev-\u003ebd_mutex, including the actual calls to\n-\u003eopen and -\u003erelease, and the common code does not\naccess any global data structures that need the BKL.\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nAcked-by: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "00fff26539bfe3fad21c164fc4002d9ede056fb0",
      "tree": "4909c8eed03133b1d46f689e465ed1f579b8e282",
      "parents": [
        "afc23068103ccfbf1917eb2a007bc15ab5418cc9"
      ],
      "author": {
        "name": "FUJITA Tomonori",
        "email": "fujita.tomonori@lab.ntt.co.jp",
        "time": "Sat Jul 03 17:45:40 2010 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:24:15 2010 +0200"
      },
      "message": "block: remove q-\u003eprepare_flush_fn completely\n\nThis removes q-\u003eprepare_flush_fn completely (changes the\nblk_queue_ordered API).\n\nSigned-off-by: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "7b6d91daee5cac6402186ff224c3af39d79f4a0e",
      "tree": "b1518cf0b6c301178e0a320f80610cd5b3aa7625",
      "parents": [
        "33659ebbae262228eef4e0fe990f393d1f0ed941"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Sat Aug 07 18:20:39 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:20:39 2010 +0200"
      },
      "message": "block: unify flags for struct bio and struct request\n\nRemove the current bio flags and reuse the request flags for the bio, too.\nThis allows to more easily trace the type of I/O from the filesystem\ndown to the block driver.  There were two flags in the bio that were\nmissing in the requests:  BIO_RW_UNPLUG and BIO_RW_AHEAD.  Also I\u0027ve\nrenamed two request flags that had a superflous RW in them.\n\nNote that the flags are in bio.h despite having the REQ_ name - as\nblkdev.h includes bio.h that is the only way to go for now.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "8018ab057480974e7f26a387bf4ce040e9a5f6f1",
      "tree": "98298180bf60797a028eca4f24234dc67d38a9d4",
      "parents": [
        "e970a573ce30a3976234dcfb67906c164b0df9ee"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Mon Mar 22 17:32:25 2010 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri May 21 18:31:21 2010 -0400"
      },
      "message": "sanitize vfs_fsync calling conventions\n\nNow that the last user passing a NULL file pointer is gone we can remove\nthe redundant dentry argument and associated hacks inside vfs_fsynmc_range.\n\nThe next step will be removig the dentry argument from -\u003efsync, but given\nthe luck with the last round of method prototype changes I\u0027d rather\ndefer this until after the main merge window.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "c3473c63542d53740f175f3a515257ae159e998b",
      "tree": "20832b70ba6f89aacaa377d41b7427d74be647b1",
      "parents": [
        "6245838fe4d2ce4aab52f543224f7d1212d9155c"
      ],
      "author": {
        "name": "David Zeuthen",
        "email": "davidz@redhat.com",
        "time": "Mon May 03 14:08:59 2010 +0200"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Fri May 21 09:37:30 2010 -0700"
      },
      "message": "generate \"change\" uevent for loop device\n\nRecent udev versions probe loop devices for filesystems meaning that\nthe /dev/disk hierarchy may contain useful entries such as\n\n $ ls -l /dev/disk/by-label/Fedora-12-x86_64-Live\n lrwxrwxrwx 1 root root 11 Mar 11 13:41 /dev/disk/by-label/Fedora-12-x86_64-Live -\u003e ../../loop0\n\nUnfortunately, no \"change\" uevent is generated when the loop device is\ndetached so the symlink persists. Additionally, no \"change\" uevent is\nguaranteed to be generated when attaching an fd or changing capacity.\nFor example,  user space could open the loop device O_RDONLY (in fact,\nrecent util-linux-ng does this) so udev\u0027s OPTIONS+\u003d\"watch\" machinery may\nnot trigger the \"change\" uevent.\n\nThis patch ensures that the \"change\" uevent is generated in all of\nthese cases. As a result, the /dev/disk hierarchy works as expected\nfor loop devices.\n\nSigned-off-by: David Zeuthen \u003cdavidz@redhat.com\u003e\nAcked-by: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "2f4084209adc77f9a1c9f38db3019a509e167882",
      "tree": "775657114c885505ecc46605e29ea1470e986f76",
      "parents": [
        "2f10ffcfb28beb35137d9e86992c771b4a6c5f2a",
        "3440c49f5c5ecb4f29b0544aa87da71888404f8f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 09 11:50:29 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 09 11:50:29 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-linus\u0027 of git://git.kernel.dk/linux-2.6-block: (34 commits)\n  cfq-iosched: Fix the incorrect timeslice accounting with forced_dispatch\n  loop: Update mtime when writing using aops\n  block: expose the statistics in blkio.time and blkio.sectors for the root cgroup\n  backing-dev: Handle class_create() failure\n  Block: Fix block/elevator.c elevator_get() off-by-one error\n  drbd: lc_element_by_index() never returns NULL\n  cciss: unlock on error path\n  cfq-iosched: Do not merge queues of BE and IDLE classes\n  cfq-iosched: Add additional blktrace log messages in CFQ for easier debugging\n  i2o: Remove the dangerous kobj_to_i2o_device macro\n  block: remove 16 bytes of padding from struct request on 64bits\n  cfq-iosched: fix a kbuild regression\n  block: make CONFIG_BLK_CGROUP visible\n  Remove GENHD_FL_DRIVERFS\n  block: Export max number of segments and max segment size in sysfs\n  block: Finalize conversion of block limits functions\n  block: Fix overrun in lcm() and move it to lib\n  vfs: improve writeback_inodes_wb()\n  paride: fix off-by-one test\n  drbd: fix al-to-on-disk-bitmap for 4k logical_block_size\n  ...\n"
    },
    {
      "commit": "02246c41171097ceab3246f6dc251ac89de6004b",
      "tree": "f50a2cc750b730ebf71f30e7badc723d25876155",
      "parents": [
        "a74b2adae06265b8cfa335d7d40d4a5abd11e977"
      ],
      "author": {
        "name": "Nikanth Karthikesan",
        "email": "knikanth@suse.de",
        "time": "Thu Apr 08 21:39:31 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Apr 08 21:39:31 2010 +0200"
      },
      "message": "loop: Update mtime when writing using aops\n\nUpdate mtime when writing to backing filesystem using the address space\noperations write_begin and write_end.\n\nSigned-off-by: Nikanth Karthikesan \u003cknikanth@suse.de\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "5a0e3ad6af8660be21ca98a971cd00f331318c05",
      "tree": "5bfb7be11a03176a87296a43ac6647975c00a1d1",
      "parents": [
        "ed391f4ebf8f701d3566423ce8f17e614cde9806"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 24 17:04:11 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 30 22:02:32 2010 +0900"
      },
      "message": "include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h\n\npercpu.h is included by sched.h and module.h and thus ends up being\nincluded when building most .c files.  percpu.h includes slab.h which\nin turn includes gfp.h making everything defined by the two files\nuniversally available and complicating inclusion dependencies.\n\npercpu.h -\u003e slab.h dependency is about to be removed.  Prepare for\nthis change by updating users of gfp and slab facilities include those\nheaders directly instead of assuming availability.  As this conversion\nneeds to touch large number of source files, the following script is\nused as the basis of conversion.\n\n  http://userweb.kernel.org/~tj/misc/slabh-sweep.py\n\nThe script does the followings.\n\n* Scan files for gfp and slab usages and update includes such that\n  only the necessary includes are there.  ie. if only gfp is used,\n  gfp.h, if slab is used, slab.h.\n\n* When the script inserts a new include, it looks at the include\n  blocks and try to put the new include such that its order conforms\n  to its surrounding.  It\u0027s put in the include block which contains\n  core kernel includes, in the same order that the rest are ordered -\n  alphabetical, Christmas tree, rev-Xmas-tree or at the end if there\n  doesn\u0027t seem to be any matching order.\n\n* If the script can\u0027t find a place to put a new include (mostly\n  because the file doesn\u0027t have fitting include block), it prints out\n  an error message indicating which .h file needs to be added to the\n  file.\n\nThe conversion was done in the following steps.\n\n1. The initial automatic conversion of all .c files updated slightly\n   over 4000 files, deleting around 700 includes and adding ~480 gfp.h\n   and ~3000 slab.h inclusions.  The script emitted errors for ~400\n   files.\n\n2. Each error was manually checked.  Some didn\u0027t need the inclusion,\n   some needed manual addition while adding it to implementation .h or\n   embedding .c file was more appropriate for others.  This step added\n   inclusions to around 150 files.\n\n3. The script was run again and the output was compared to the edits\n   from #2 to make sure no file was left behind.\n\n4. Several build tests were done and a couple of problems were fixed.\n   e.g. lib/decompress_*.c used malloc/free() wrappers around slab\n   APIs requiring slab.h to be added manually.\n\n5. The script was run on all .h files but without automatically\n   editing them as sprinkling gfp.h and slab.h inclusions around .h\n   files could easily lead to inclusion dependency hell.  Most gfp.h\n   inclusion directives were ignored as stuff from gfp.h was usually\n   wildly available and often used in preprocessor macros.  Each\n   slab.h inclusion directive was examined and added manually as\n   necessary.\n\n6. percpu.h was updated not to include slab.h.\n\n7. Build test were done on the following configurations and failures\n   were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my\n   distributed build env didn\u0027t work with gcov compiles) and a few\n   more options had to be turned off depending on archs to make things\n   build (like ipr on powerpc/64 which failed due to missing writeq).\n\n   * x86 and x86_64 UP and SMP allmodconfig and a custom test config.\n   * powerpc and powerpc64 SMP allmodconfig\n   * sparc and sparc64 SMP allmodconfig\n   * ia64 SMP allmodconfig\n   * s390 SMP allmodconfig\n   * alpha SMP allmodconfig\n   * um on x86_64 SMP allmodconfig\n\n8. percpu.h modifications were reverted so that it could be applied as\n   a separate patch and serve as bisection point.\n\nGiven the fact that I had only a couple of failures from tests on step\n6, I\u0027m fairly confident about the coverage of this conversion patch.\nIf there is a breakage, it\u0027s likely to be something in one of the arch\nheaders which should be easily discoverable easily on most builds of\nthe specific arch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nGuess-its-ok-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\n"
    },
    {
      "commit": "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"
    }
  ],
  "next": "eefe85ee350ece1bdf3e9a61e941d3394a528660"
}
