)]}'
{
  "log": [
    {
      "commit": "11a3122f6cf2d988a77eb8883d0fc49cd013a6d5",
      "tree": "ded8ea8a2982754ff0c58448a7ed2e59487104cb",
      "parents": [
        "822bfa51ce44f2c63c300fdb76dc99c4d5a5ca9f"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 07 07:51:30 2012 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Tue Feb 07 07:51:30 2012 +0100"
      },
      "message": "block: strip out locking optimization in put_io_context()\n\nput_io_context() performed a complex trylock dancing to avoid\ndeferring ioc release to workqueue.  It was also broken on UP because\ntrylock was always assumed to succeed which resulted in unbalanced\npreemption count.\n\nWhile there are ways to fix the UP breakage, even the most\npathological microbench (forced ioc allocation and tight fork/exit\nloop) fails to show any appreciable performance benefit of the\noptimization.  Strip it out.  If there turns out to be workloads which\nare affected by this change, simpler optimization from the discussion\nthread can be applied later.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nLKML-Reference: \u003c1328514611.21268.66.camel@sli10-conroe\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "f429ee3b808118591d1f3cdf3c0d0793911a5677",
      "tree": "96d848f5f677d96758ecd2aee5eb6931b75bf218",
      "parents": [
        "22b4eb5e3174efb49791c62823d0cccc35394c36",
        "c158a35c8a681cf68d36f22f058f9f5466386c71"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 17 16:06:51 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 17 16:41:31 2012 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/audit\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/audit: (29 commits)\n  audit: no leading space in audit_log_d_path prefix\n  audit: treat s_id as an untrusted string\n  audit: fix signedness bug in audit_log_execve_info()\n  audit: comparison on interprocess fields\n  audit: implement all object interfield comparisons\n  audit: allow interfield comparison between gid and ogid\n  audit: complex interfield comparison helper\n  audit: allow interfield comparison in audit rules\n  Kernel: Audit Support For The ARM Platform\n  audit: do not call audit_getname on error\n  audit: only allow tasks to set their loginuid if it is -1\n  audit: remove task argument to audit_set_loginuid\n  audit: allow audit matching on inode gid\n  audit: allow matching on obj_uid\n  audit: remove audit_finish_fork as it can\u0027t be called\n  audit: reject entry,always rules\n  audit: inline audit_free to simplify the look of generic code\n  audit: drop audit_set_macxattr as it doesn\u0027t do anything\n  audit: inline checks for not needing to collect aux records\n  audit: drop some potentially inadvisable likely notations\n  ...\n\nUse evil merge to fix up grammar mistakes in Kconfig file.\n\nBad speling and horrible grammar (and copious swearing) is to be\nexpected, but let\u0027s keep it to commit messages and comments, rather than\nexpose it to users in config help texts or printouts.\n"
    },
    {
      "commit": "22b4eb5e3174efb49791c62823d0cccc35394c36",
      "tree": "7324d6b53ad3c18c244094ad5d51b500716d7304",
      "parents": [
        "d65773b22b749252b2805dcf96bdeb951a9481d8",
        "d060646436233912178e6b9e3a7f30a41214220f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 17 15:54:56 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 17 15:54:56 2012 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://oss.sgi.com/xfs/xfs\n\n* \u0027for-linus\u0027 of git://oss.sgi.com/xfs/xfs:\n  xfs: cleanup xfs_file_aio_write\n  xfs: always return with the iolock held from xfs_file_aio_write_checks\n  xfs: remove the i_new_size field in struct xfs_inode\n  xfs: remove the i_size field in struct xfs_inode\n  xfs: replace i_pin_wait with a bit waitqueue\n  xfs: replace i_flock with a sleeping bitlock\n  xfs: make i_flags an unsigned long\n  xfs: remove the if_ext_max field in struct xfs_ifork\n  xfs: remove the unused dm_attrs structure\n  xfs: cleanup xfs_iomap_eof_align_last_fsb\n  xfs: remove xfs_itruncate_data\n"
    },
    {
      "commit": "d65773b22b749252b2805dcf96bdeb951a9481d8",
      "tree": "1839656e894933267e7466e32ba6ad73b24fa60a",
      "parents": [
        "f9156c7288e2d11501ded4d7fe6d9a3a41ee4057",
        "f84a8bd60e3ee49eacc9ba824babf149ba3dad7e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 17 15:52:51 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 17 15:52:51 2012 -0800"
      },
      "message": "Merge branch \u0027btrfs\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs\n\n* \u0027btrfs\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:\n  btrfs: take allocation of -\u003etree_root into open_ctree()\n  btrfs: let -\u003es_fs_info point to fs_info, not root...\n  btrfs: consolidate failure exits in btrfs_mount() a bit\n  btrfs: make free_fs_info() call -\u003ekill_sb() unconditional\n  btrfs: merge free_fs_info() calls on fill_super failures\n  btrfs: kill pointless reassignment of -\u003es_fs_info in btrfs_fill_super()\n  btrfs: make open_ctree() return int\n  btrfs: sanitizing -\u003efs_info, part 5\n  btrfs: sanitizing -\u003efs_info, part 4\n  btrfs: sanitizing -\u003efs_info, part 3\n  btrfs: sanitizing -\u003efs_info, part 2\n  btrfs: sanitizing -\u003efs_info, part 1\n  btrfs: fix a deadlock in btrfs_scan_one_device()\n  btrfs: fix mount/umount race\n  btrfs: get -\u003ekill_sb() of its own\n  btrfs: preparation to fixing mount/umount race\n"
    },
    {
      "commit": "f9156c7288e2d11501ded4d7fe6d9a3a41ee4057",
      "tree": "7bd26fc9a111c6af1601ecd2d1b0ab60da32f3f0",
      "parents": [
        "67175b855bfd6ed95ffeff95532173c07de6432d",
        "96bdc7dc61fb1b1e8e858dafb13abee8482ba064"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 17 15:49:54 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 17 15:49:54 2012 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs: (62 commits)\n  Btrfs: use larger system chunks\n  Btrfs: add a delalloc mutex to inodes for delalloc reservations\n  Btrfs: space leak tracepoints\n  Btrfs: protect orphan block rsv with spin_lock\n  Btrfs: add allocator tracepoints\n  Btrfs: don\u0027t call btrfs_throttle in file write\n  Btrfs: release space on error in page_mkwrite\n  Btrfs: fix btrfsck error 400 when truncating a compressed\n  Btrfs: do not use btrfs_end_transaction_throttle everywhere\n  Btrfs: add balance progress reporting\n  Btrfs: allow for resuming restriper after it was paused\n  Btrfs: allow for canceling restriper\n  Btrfs: allow for pausing restriper\n  Btrfs: add skip_balance mount option\n  Btrfs: recover balance on mount\n  Btrfs: save balance parameters to disk\n  Btrfs: soft profile changing mode (aka soft convert)\n  Btrfs: implement online profile changing\n  Btrfs: do not reduce profile in do_chunk_alloc()\n  Btrfs: virtual address space subset filter\n  ...\n\nFix up trivial conflict in fs/btrfs/ioctl.c due to the use of the new\nmnt_drop_write_file() helper.\n"
    },
    {
      "commit": "e268337dfe26dfc7efd422a804dbb27977a3cccc",
      "tree": "59b9e22b0de119f0d85f329fa481d965cf7aec42",
      "parents": [
        "5e5997849a8eae7a895a88699a1999b637f87303"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 17 15:21:19 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 17 15:21:19 2012 -0800"
      },
      "message": "proc: clean up and fix /proc/\u003cpid\u003e/mem handling\n\nJüri Aedla reported that the /proc/\u003cpid\u003e/mem handling really isn\u0027t very\nrobust, and it also doesn\u0027t match the permission checking of any of the\nother related files.\n\nThis changes it to do the permission checks at open time, and instead of\ntracking the process, it tracks the VM at the time of the open.  That\nsimplifies the code a lot, but does mean that if you hold the file\ndescriptor open over an execve(), you\u0027ll continue to read from the _old_\nVM.\n\nThat is different from our previous behavior, but much simpler.  If\nsomebody actually finds a load where this matters, we\u0027ll need to revert\nthis commit.\n\nI suspect that nobody will ever notice - because the process mapping\naddresses will also have changed as part of the execve.  So you cannot\nactually usefully access the fd across a VM change simply because all\nthe offsets for IO would have changed too.\n\nReported-by: Jüri Aedla \u003casd@ut.ee\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4043cde8ecf7f7d880eb1133c201a3d392fd68c3",
      "tree": "d740c60e6b56565a7e996c3d0308e66f7c8651f8",
      "parents": [
        "633b45454503489209b0d9a45f9e3cd1b852c614"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Tue Jan 03 14:23:08 2012 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 17 16:17:01 2012 -0500"
      },
      "message": "audit: do not call audit_getname on error\n\nJust a code cleanup really.  We don\u0027t need to make a function call just for\nit to return on error.  This also makes the VFS function even easier to follow\nand removes a conditional on a hot path.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "633b45454503489209b0d9a45f9e3cd1b852c614",
      "tree": "591363d3be6b773f872b979727d4ac1a9691ec82",
      "parents": [
        "0a300be6d5be8f66cd96609334710c268d0bfdce"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Tue Jan 03 14:23:08 2012 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 17 16:17:00 2012 -0500"
      },
      "message": "audit: only allow tasks to set their loginuid if it is -1\n\nAt the moment we allow tasks to set their loginuid if they have\nCAP_AUDIT_CONTROL.  In reality we want tasks to set the loginuid when they\nlog in and it be impossible to ever reset.  We had to make it mutable even\nafter it was once set (with the CAP) because on update and admin might have\nto restart sshd.  Now sshd would get his loginuid and the next user which\nlogged in using ssh would not be able to set his loginuid.\n\nSystemd has changed how userspace works and allowed us to make the kernel\nwork the way it should.  With systemd users (even admins) are not supposed\nto restart services directly.  The system will restart the service for\nthem.  Thus since systemd is going to loginuid\u003d\u003d-1, sshd would get -1, and\nsshd would be allowed to set a new loginuid without special permissions.\n\nIf an admin in this system were to manually start an sshd he is inserting\nhimself into the system chain of trust and thus, logically, it\u0027s his\nloginuid that should be used!  Since we have old systems I make this a\nKconfig option.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "0a300be6d5be8f66cd96609334710c268d0bfdce",
      "tree": "253d0d1e0aa28a6bdf883bb92e4b62fafe263563",
      "parents": [
        "54d3218b31aee5bc9c859ae60fbde933d922448b"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Tue Jan 03 14:23:08 2012 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 17 16:17:00 2012 -0500"
      },
      "message": "audit: remove task argument to audit_set_loginuid\n\nThe function always deals with current.  Don\u0027t expose an option\npretending one can use it for something.  You can\u0027t.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "d060646436233912178e6b9e3a7f30a41214220f",
      "tree": "a460c8e2d89cdcf08d574f497c421decf36fe018",
      "parents": [
        "5bf1f26227a59b9634e95eb3c7c012b766e5e6a0"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Sun Dec 18 20:00:14 2011 +0000"
      },
      "committer": {
        "name": "Ben Myers",
        "email": "bpm@sgi.com",
        "time": "Tue Jan 17 15:12:33 2012 -0600"
      },
      "message": "xfs: cleanup xfs_file_aio_write\n\nWith all the size field updates out of the way xfs_file_aio_write can\nbe further simplified by pushing all iolock handling into\nxfs_file_dio_aio_write and xfs_file_buffered_aio_write and using\nthe generic generic_write_sync helper for synchronous writes.\n\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n\n"
    },
    {
      "commit": "5bf1f26227a59b9634e95eb3c7c012b766e5e6a0",
      "tree": "940a58e03256bd70787d1341c90027ef334f5fac",
      "parents": [
        "2813d682e8e6a278f94817429afd46b30875bb6e"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Sun Dec 18 20:00:13 2011 +0000"
      },
      "committer": {
        "name": "Ben Myers",
        "email": "bpm@sgi.com",
        "time": "Tue Jan 17 15:11:07 2012 -0600"
      },
      "message": "xfs: always return with the iolock held from xfs_file_aio_write_checks\n\nWhile xfs_iunlock is fine with 0 lockflags the calling conventions are much\ncleaner if xfs_file_aio_write_checks never returns without the iolock held.\n\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n\n"
    },
    {
      "commit": "2813d682e8e6a278f94817429afd46b30875bb6e",
      "tree": "d865b04ec89076b692a922b7f5fced9be0458f47",
      "parents": [
        "ce7ae151ddada3dbf67301464343c154903166b3"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Sun Dec 18 20:00:12 2011 +0000"
      },
      "committer": {
        "name": "Ben Myers",
        "email": "bpm@sgi.com",
        "time": "Tue Jan 17 15:10:19 2012 -0600"
      },
      "message": "xfs: remove the i_new_size field in struct xfs_inode\n\nNow that we use the VFS i_size field throughout XFS there is no need for the\ni_new_size field any more given that the VFS i_size field gets updated\nin -\u003ewrite_end before unlocking the page, and thus is always uptodate when\nwriteback could see a page.  Removing i_new_size also has the advantage that\nwe will never have to trim back di_size during a failed buffered write,\ngiven that it never gets updated past i_size.\n\nNote that currently the generic direct I/O code only updates i_size after\ncalling our end_io handler, which requires a small workaround to make\nsure di_size actually makes it to disk.  I hope to fix this properly in\nthe generic code.\n\nA downside is that we lose the support for parallel non-overlapping O_DIRECT\nappending writes that recently was added.  I don\u0027t think keeping the complex\nand fragile i_new_size infrastructure for this is a good tradeoff - if we\nreally care about parallel appending writers we should investigate turning\nthe iolock into a range lock, which would also allow for parallel\nnon-overlapping buffered writers.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n\n"
    },
    {
      "commit": "ce7ae151ddada3dbf67301464343c154903166b3",
      "tree": "db56a153e7ae07aa5103d001a7d7252dc0891c7e",
      "parents": [
        "f392e6319a4e9a028b0c8b48f000bb01d660ad53"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Sun Dec 18 20:00:11 2011 +0000"
      },
      "committer": {
        "name": "Ben Myers",
        "email": "bpm@sgi.com",
        "time": "Tue Jan 17 15:08:53 2012 -0600"
      },
      "message": "xfs: remove the i_size field in struct xfs_inode\n\nThere is no fundamental need to keep an in-memory inode size copy in the XFS\ninode.  We already have the on-disk value in the dinode, and the separate\nin-memory copy that we need for regular files only in the XFS inode.\n\nRemove the xfs_inode i_size field and change the XFS_ISIZE macro to use the\nVFS inode i_size field for regular files.  Switch code that was directly\naccessing the i_size field in the xfs_inode to XFS_ISIZE, or in cases where\nwe are limited to regular files direct access of the VFS inode i_size field.\n\nThis also allows dropping some fairly complicated code in the write path\nwhich dealt with keeping the xfs_inode i_size uptodate with the VFS i_size\nthat is getting updated inside -\u003ewrite_end.\n\nNote that we do not bother resetting the VFS i_size when truncating a file\nthat gets freed to zero as there is no point in doing so because the VFS inode\nis no longer in use at this point.  Just relax the assert in xfs_ifree to\nonly check the on-disk size instead.\n\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n\n"
    },
    {
      "commit": "f392e6319a4e9a028b0c8b48f000bb01d660ad53",
      "tree": "6cf97bebb841da303056b60da087e76cc087af9b",
      "parents": [
        "474fce067521a40dbacc722e8ba119e81c2d31bf"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Sun Dec 18 20:00:10 2011 +0000"
      },
      "committer": {
        "name": "Ben Myers",
        "email": "bpm@sgi.com",
        "time": "Tue Jan 17 15:07:54 2012 -0600"
      },
      "message": "xfs: replace i_pin_wait with a bit waitqueue\n\nReplace i_pin_wait, which is only used during synchronous inode flushing\nwith a bit waitqueue.  This trades off a much smaller inode against\nslightly slower wakeup performance, and saves 12 (32-bit) or 20 (64-bit)\nbytes in the XFS inode.\n\nReviewed-by: Alex Elder \u003caelder@sgi.com\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n\n"
    },
    {
      "commit": "474fce067521a40dbacc722e8ba119e81c2d31bf",
      "tree": "fd923aa42a5304182e8a8c64ca5d130f9afef286",
      "parents": [
        "49e4c70e52a2bc2090e5a4e003e2888af21d6a2b"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Sun Dec 18 20:00:09 2011 +0000"
      },
      "committer": {
        "name": "Ben Myers",
        "email": "bpm@sgi.com",
        "time": "Tue Jan 17 15:06:45 2012 -0600"
      },
      "message": "xfs: replace i_flock with a sleeping bitlock\n\nWe almost never block on i_flock, the exception is synchronous inode\nflushing.  Instead of bloating the inode with a 16/24-byte completion\nthat we abuse as a semaphore just implement it as a bitlock that uses\na bit waitqueue for the rare sleeping path.  This primarily is a\ntradeoff between a much smaller inode and a faster non-blocking\npath vs faster wakeups, and we are much better off with the former.\n\nA small downside is that we will lose lockdep checking for i_flock, but\ngiven that it\u0027s always taken inside the ilock that should be acceptable.\n\nNote that for example the inode writeback locking is implemented in a\nvery similar way.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Alex Elder \u003caelder@sgi.com\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n\n"
    },
    {
      "commit": "49e4c70e52a2bc2090e5a4e003e2888af21d6a2b",
      "tree": "9d9ecf18b5a78d187f622a769cc1464150ad7740",
      "parents": [
        "8096b1ebb59b94b3bc6abb6b7d121419e83447ba"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Sun Dec 18 20:00:08 2011 +0000"
      },
      "committer": {
        "name": "Ben Myers",
        "email": "bpm@sgi.com",
        "time": "Tue Jan 17 15:03:50 2012 -0600"
      },
      "message": "xfs: make i_flags an unsigned long\n\nTo be used for bit wakeup i_flags needs to be an unsigned long or we\u0027ll\nrun into trouble on big endian systems.  Because of the 1-byte i_update\nfield right after it this actually causes a fairly large size increase\non its own (4 or 8 bytes), but that increase will be more than offset\nby the next two patches.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Alex Elder \u003caelder@sgi.com\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n\n"
    },
    {
      "commit": "8096b1ebb59b94b3bc6abb6b7d121419e83447ba",
      "tree": "3d01d19459cbb973dc8698b7fa44e1bee260303d",
      "parents": [
        "3d2b3129c2c48cf0153e0f2058cf87e4b45ca3ac"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Sun Dec 18 20:00:07 2011 +0000"
      },
      "committer": {
        "name": "Ben Myers",
        "email": "bpm@sgi.com",
        "time": "Tue Jan 17 15:02:28 2012 -0600"
      },
      "message": "xfs: remove the if_ext_max field in struct xfs_ifork\n\nWe spent a lot of effort to maintain this field, but it always equals to the\nfork size divided by the constant size of an extent.  The prime use of it is\nto assert that the two stay in sync.  Just divide the fork size by the extent\nsize in the few places that we actually use it and remove the overhead\nof maintaining it.  Also introduce a few helpers to consolidate the places\nwhere we actually care about the value.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n\n"
    },
    {
      "commit": "a12587b00388d1694933252e97abca237bc3a6b8",
      "tree": "56ba7ec24ed84f81ce41fc327c3722ab2fb9f3eb",
      "parents": [
        "adfeb6e9f46ded31b46fe406ad0dd6a9b4e0f7fe",
        "7c5465d6ccd759caa959828e2add5603518dafc4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 16 15:08:13 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 16 15:08:13 2012 -0800"
      },
      "message": "Merge tag \u0027nfs-for-3.3-2\u0027 of git://git.linux-nfs.org/projects/trondmy/linux-nfs\n\nNFS client bugfixes and cleanups for Linux 3.3 (pull 2)\n\n* tag \u0027nfs-for-3.3-2\u0027 of git://git.linux-nfs.org/projects/trondmy/linux-nfs:\n  pnfsblock: alloc short extent before submit bio\n  pnfsblock: remove rpc_call_ops from struct parallel_io\n  pnfsblock: move find lock page logic out of bl_write_pagelist\n  pnfsblock: cleanup bl_mark_sectors_init\n  pnfsblock: limit bio page count\n  pnfsblock: don\u0027t spinlock when freeing block_dev\n  pnfsblock: clean up _add_entry\n  pnfsblock: set read/write tk_status to pnfs_error\n  pnfsblock: acquire im_lock in _preload_range\n  NFS4: fix compile warnings in nfs4proc.c\n  nfs: check for integer overflow in decode_devicenotify_args()\n  NFS: cleanup endian type in decode_ds_addr()\n  NFS: add an endian notation\n"
    },
    {
      "commit": "96bdc7dc61fb1b1e8e858dafb13abee8482ba064",
      "tree": "eddbfc7a931c7063ded4505c99d11d1702117064",
      "parents": [
        "f248679e86fead40cc78e724c7181d6bec1a2046"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 08:13:11 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:38:24 2012 -0500"
      },
      "message": "Btrfs: use larger system chunks\n\nsystem chunks by default are very small.  This makes them slightly\nlarger and also fixes the conditional checks to make sure we don\u0027t\nallocate a billion of them at once.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f248679e86fead40cc78e724c7181d6bec1a2046",
      "tree": "88abeee0b2a87c0f0377509525c92d3c9ec15a15",
      "parents": [
        "8c2a3ca20f6233677ac3222c6506174010eb414f"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Jan 13 12:09:22 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:29:43 2012 -0500"
      },
      "message": "Btrfs: add a delalloc mutex to inodes for delalloc reservations\n\nI was using i_mutex for this, but we\u0027re getting bogus lockdep warnings by doing\nthat and theres no real way to get rid of those, so just stop using i_mutex to\nprotect delalloc metadata reservations and use a delalloc mutex instead.  This\nshouldn\u0027t be contended often at all, only if you are writing and mmap writing to\nthe file at the same time.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "8c2a3ca20f6233677ac3222c6506174010eb414f",
      "tree": "88d1105c665d355b363929557ed0c5489795e348",
      "parents": [
        "90290e19820e3323ce6b9c2888eeb68bf29c278b"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Jan 10 10:31:31 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:29:43 2012 -0500"
      },
      "message": "Btrfs: space leak tracepoints\n\nThis in addition to a script in my btrfs-tracing tree will help track down space\nleaks when we\u0027re getting space left over in block groups on umount.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "90290e19820e3323ce6b9c2888eeb68bf29c278b",
      "tree": "cdac13a9718d326cdcd9f4b215a5739906a2325a",
      "parents": [
        "3f7de037fb3727b20bc27332cdcf2488b702394c"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Dec 02 15:44:12 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:29:42 2012 -0500"
      },
      "message": "Btrfs: protect orphan block rsv with spin_lock\n\nWe\u0027ve been seeing warnings coming out of the orphan commit stuff forever from\nceph.  Turns out it\u0027s because we\u0027re racing with checking if the orphan block\nreserve is set, because we clear it outside of the spin_lock.  So leave the\nnormal fastpath checks where they are, but take the spin_lock and _recheck_ to\nmake sure we haven\u0027t had an orphan block rsv added in the meantime.  Then clear\nthe root\u0027s orphan block rsv and release the lock.  With this patch a user said\nthe warnings went away and they usually showed up pretty soon after he started\nceph.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "3f7de037fb3727b20bc27332cdcf2488b702394c",
      "tree": "7e355b7e60b584ca7aaaf7c8abfa1f2408c15ff2",
      "parents": [
        "45a8090e626ab470c91142954431a93846030b0d"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Nov 10 08:29:20 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:29:42 2012 -0500"
      },
      "message": "Btrfs: add allocator tracepoints\n\nI used these tracepoints when figuring out what the cluster stuff was doing, so\nadd them to mainline in case we need to profile this stuff again.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "45a8090e626ab470c91142954431a93846030b0d",
      "tree": "2a13259734f99cbc8f176ed395a2d1f35e36ad27",
      "parents": [
        "ec39e180fd3188c983c94603634bfcd019f42ae7"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Jan 12 19:10:12 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:28:55 2012 -0500"
      },
      "message": "Btrfs: don\u0027t call btrfs_throttle in file write\n\nBtrfs_throttle will make us wait if there is a currently committing transaction\nuntil we can open new transactions, which is ridiculous since we don\u0027t actually\nstart any transactions within the file write path anyway, so all this does is\nintroduce big latencies if we have a sync/fsync heavy workload going on while\nsomebody else is trying to do work.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "ec39e180fd3188c983c94603634bfcd019f42ae7",
      "tree": "baf6a56fb98735cc533b6a5bb9c29a364a6c0cf3",
      "parents": [
        "f70a9a6b94af86fca069a7552ab672c31b457786"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Jan 12 19:10:12 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:28:54 2012 -0500"
      },
      "message": "Btrfs: release space on error in page_mkwrite\n\nIf updating the inode gave us an ENOSPC we were just returning in page_mkwrite,\nwhich is a problem since we make our reservation right before trying to update\nthe inode, so fix the out label so that we actually free our reservation.\nThanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f70a9a6b94af86fca069a7552ab672c31b457786",
      "tree": "0a62930b2540e11b877a1ead4050c55638bbd874",
      "parents": [
        "7ad85bb76a61801362701b77c5cee5aa09f35369"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Thu Jan 12 19:10:12 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:28:54 2012 -0500"
      },
      "message": "Btrfs: fix btrfsck error 400 when truncating a compressed\n\nReproduce steps:\n # mkfs.btrfs /dev/sdb5\n # mount /dev/sdb5 -o compress\u003dlzo /mnt\n # dd if\u003d/dev/zero of\u003d/mnt/tmpfile bs\u003d128K count\u003d1\n # sync\n # truncate -s 64K /mnt/tmpfile\n root 5 inode 257 errors 400\n\nThis is because of the wrong if condition, which is used to check if we should\nsubtract the bytes of the dropped range from i_blocks/i_bytes of i-node or not.\nWhen we truncate a compressed extent, btrfs substracts the bytes of the whole\nextent, it\u0027s wrong. We should substract the real size that we truncate, no\nmatter it is a compressed extent or not. Fix it.\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "7ad85bb76a61801362701b77c5cee5aa09f35369",
      "tree": "e03f4ced4f7c84e9828e4f4a4cbe894369300800",
      "parents": [
        "c126dea771be1b3c370c0ffc4a09e6a82d492a49"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Jan 12 19:10:12 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:28:54 2012 -0500"
      },
      "message": "Btrfs: do not use btrfs_end_transaction_throttle everywhere\n\nA user reported a problem where things like open with O_CREAT would take up to\n30 seconds when he had nfs activity on the same mount.  This is because all of\nour quick metadata operations, like create, symlink etc all do\nbtrfs_end_transaction_throttle, which if the transaction is blocked will wait\nfor the commit to complete before it returns.  This adds a ridiculous amount of\nlatency and isn\u0027t really needed.  The normal btrfs_end_transaction will mark the\ntransaction as blocked and wake the transaction kthread up if it thinks the\ntransaction needs to end (this being in the running out of global reserve space\nscenario), and this is all that is really needed since we\u0027ve already done\neverything we\u0027re going to do, we just need to return.  This should help people\nwith the latency they were seeing when using synchronous heavy workloads.\nThanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "c126dea771be1b3c370c0ffc4a09e6a82d492a49",
      "tree": "99fc723ba2e89d767e260244cf8d19467bc68c8b",
      "parents": [
        "9785dbdf265ddc47d5c88267d89a97648c0dc14b",
        "21adbd5cbb5344a3fca6bb7ddb2ab6cb03c44546"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:27:58 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:27:58 2012 -0500"
      },
      "message": "Merge branch \u0027integrity-check-patch-v2\u0027 of git://btrfs.giantdisaster.de/git/btrfs into integration\n\nConflicts:\n\tfs/btrfs/ctree.h\n\tfs/btrfs/super.c\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "9785dbdf265ddc47d5c88267d89a97648c0dc14b",
      "tree": "3a97a48d6f282f9e06c5446beeb886fcd86c4798",
      "parents": [
        "d756bd2d9339447c29bde950910586df8f8941ec",
        "6bf7e080d5bcb0d399ee38ce3dabbfad64448192"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:26:31 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:26:31 2012 -0500"
      },
      "message": "Merge branch \u0027for-chris\u0027 of git://git.jan-o-sch.net/btrfs-unstable into integration\n"
    },
    {
      "commit": "d756bd2d9339447c29bde950910586df8f8941ec",
      "tree": "f96aeb682bcc4fdcf75d080f260c809b9fbc4a1a",
      "parents": [
        "27263e28321db438bc43dc0c0be432ce91526224",
        "b367e47fb3a70f5d24ebd6faf7d42436d485fb2d"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:26:17 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:26:17 2012 -0500"
      },
      "message": "Merge branch \u0027for-chris\u0027 of git://repo.or.cz/linux-btrfs-devel into integration\n\nConflicts:\n\tfs/btrfs/volumes.c\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "27263e28321db438bc43dc0c0be432ce91526224",
      "tree": "b7571dd52d6c1d48528e383d273b330da94439bd",
      "parents": [
        "64e05503ab5c73b2ffb8d55d2f7aab74f34fc691",
        "19a39dce3b9bf0244d19a446718ad6f7605ff099"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:26:02 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:26:02 2012 -0500"
      },
      "message": "Merge branch \u0027restriper\u0027 of git://github.com/idryomov/btrfs-unstable into integration\n"
    },
    {
      "commit": "64e05503ab5c73b2ffb8d55d2f7aab74f34fc691",
      "tree": "a754d3790b8dd59ecaed54095c6e09e04f0d1dd2",
      "parents": [
        "805a6af8dba5dfdd35ec35dc52ec0122400b2610",
        "1bb91902dc90e25449893e693ad45605cb08fbe5"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:25:42 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:25:42 2012 -0500"
      },
      "message": "Merge branch \u0027allocation-fixes\u0027 into integration\n"
    },
    {
      "commit": "19a39dce3b9bf0244d19a446718ad6f7605ff099",
      "tree": "4834e177b8b64405aa858bfdcfbabd890277102b",
      "parents": [
        "de322263d3a6d4ffd4ed7c4d0c6536e9497aec9b"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:49 2012 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:49 2012 +0200"
      },
      "message": "Btrfs: add balance progress reporting\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "de322263d3a6d4ffd4ed7c4d0c6536e9497aec9b",
      "tree": "26761c92c8d135aa62702562bae3337ccad9f74d",
      "parents": [
        "a7e99c691af553fc15ac46a51f130b7c59a65f76"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:49 2012 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:49 2012 +0200"
      },
      "message": "Btrfs: allow for resuming restriper after it was paused\n\nRecognize BTRFS_BALANCE_RESUME flag passed from userspace.  We use the\nsame heuristics used when recovering balance after a crash to try to\nstart where we left off last time.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "a7e99c691af553fc15ac46a51f130b7c59a65f76",
      "tree": "55491f285683951d509819a66e614ac6f12659dd",
      "parents": [
        "837d5b6e46d1a4af5b6cc8f2fe83cb5de79a2961"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:49 2012 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:49 2012 +0200"
      },
      "message": "Btrfs: allow for canceling restriper\n\nImplement an ioctl for canceling restriper.  Currently we wait until\nrelocation of the current block group is finished, in future this can be\ndone by triggering a commit.  Balance item is deleted and no memory\nabout the interrupted balance is kept.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "837d5b6e46d1a4af5b6cc8f2fe83cb5de79a2961",
      "tree": "4ef87d05240e90480749c345274a83094caf66f0",
      "parents": [
        "9555c6c180600b40f6e86bd4dc53bf47e06ed663"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:49 2012 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:49 2012 +0200"
      },
      "message": "Btrfs: allow for pausing restriper\n\nImplement an ioctl for pausing restriper.  This pauses the relocation,\nbut balance is still considered to be \"in progress\": balance item is\nnot deleted, other volume operations cannot be started, etc.  If paused\nin the middle of profile changing operation we will continue making\nallocations with the target profile.\n\nAdd a hook to close_ctree() to pause restriper and free its data\nstructures on unmount.  (It\u0027s safe to unmount when restriper is in\n\"paused\" state, we will resume with the same parameters on the next\nmount)\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "9555c6c180600b40f6e86bd4dc53bf47e06ed663",
      "tree": "74f95edee2368e183a2a054c24725d2940632a8f",
      "parents": [
        "596410151ed71819b9e8a8018c6c9992796b256d"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:48 2012 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:48 2012 +0200"
      },
      "message": "Btrfs: add skip_balance mount option\n\nSince restriper kthread starts involuntarily on mount and can suck cpu\nand memory bandwidth add a mount option to forcefully skip it.  The\nrestriper in that case hangs around in paused state and can be resumed\nfrom userspace when it\u0027s convenient.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "596410151ed71819b9e8a8018c6c9992796b256d",
      "tree": "ff697d01a6dd8cf50b37b3855e40764335be044d",
      "parents": [
        "0940ebf6b92ea10a6f30ae5ac3993a3b75745da6"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:48 2012 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:48 2012 +0200"
      },
      "message": "Btrfs: recover balance on mount\n\nOn mount, if balance item is found, resume balance in a separate\nkernel thread.\n\nTry to be smart to continue roughly where previous balance (or convert)\nwas interrupted.  For chunk types that were being converted to some\nprofile we turn on soft convert, in case of a simple balance we turn on\nusage filter and relocate only less-than-90%-full chunks of that type.\nThese are just heuristics but they help quite a bit, and can be improved\nin future.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "0940ebf6b92ea10a6f30ae5ac3993a3b75745da6",
      "tree": "30942cd4eaa259951b549abf7c5c972abc8ab289",
      "parents": [
        "cfa4c961cc69ffb7bda450972320a25cbd413e19"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:48 2012 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:48 2012 +0200"
      },
      "message": "Btrfs: save balance parameters to disk\n\nIntroduce a new btree objectid for storing balance item.  The reason is\nto be able to resume restriper after a crash with the same parameters.\nBalance item has a very high objectid and goes into tree of tree roots.\n\nThe key for the new item is as follows:\n\n\t[ BTRFS_BALANCE_OBJECTID ; BTRFS_BALANCE_ITEM_KEY ; 0 ]\n\nOlder kernels simply ignore it so it\u0027s safe to mount with an older\nkernel and then go back to the newer one.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "cfa4c961cc69ffb7bda450972320a25cbd413e19",
      "tree": "68ed15b8303d8aa7385df5383aebbef47debea4f",
      "parents": [
        "e4d8ec0f65b91bfb4984a4927632ded95f9825ad"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:48 2012 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:48 2012 +0200"
      },
      "message": "Btrfs: soft profile changing mode (aka soft convert)\n\nWhen doing convert from one profile to another if soft mode is on\nrestriper won\u0027t touch chunks that already have the profile we are\nconverting to.  This is useful if e.g. half of the FS was converted\nearlier.\n\nThe soft mode switch is (like every other filter) per-type.  This means\nthat we can convert for example meta chunks the \"hard\" way while\nconverting data chunks selectively with soft switch.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "e4d8ec0f65b91bfb4984a4927632ded95f9825ad",
      "tree": "4727c977803093ec5cdf93da4fcab34cc8de8ecf",
      "parents": [
        "70922617b0099f420deceb53d5dc7f4fb30d08d0"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:48 2012 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:48 2012 +0200"
      },
      "message": "Btrfs: implement online profile changing\n\nProfile changing is done by launching a balance with\nBTRFS_BALANCE_CONVERT bits set and target fields of respective\nbtrfs_balance_args structs initialized.  Profile reducing code in this\ncase will pick restriper\u0027s target profile if it\u0027s available instead of\ndoing a blind reduce.  If target profile is not yet available it goes\nback to a plain reduce.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "70922617b0099f420deceb53d5dc7f4fb30d08d0",
      "tree": "6353dff7355863b92b48001e76c3f00bf180916b",
      "parents": [
        "ea67176ae8c024f64d85ec33873e5eadf1af7247"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:48 2012 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:48 2012 +0200"
      },
      "message": "Btrfs: do not reduce profile in do_chunk_alloc()\n\nEvery caller of do_chunk_alloc() feeds it the reduced allocation\nprofile, so stop trying to reduce it one more time.  Instead check the\nvalidity of the passed profile.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "ea67176ae8c024f64d85ec33873e5eadf1af7247",
      "tree": "d3674d6a4807074dbaadfdd260e2aaa3011eab5e",
      "parents": [
        "94e60d5a5c4b98a32b1077dec88df09ada712376"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:48 2012 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:48 2012 +0200"
      },
      "message": "Btrfs: virtual address space subset filter\n\nSelect chunks which have at least one byte located inside a given\n[vstart, vend) virtual address space range.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "94e60d5a5c4b98a32b1077dec88df09ada712376",
      "tree": "149b9c9f68b64c7aa6e4b07bf12940a6e27591ca",
      "parents": [
        "409d404b461afa9738619f249fd7f62a366b68c2"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:48 2012 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:48 2012 +0200"
      },
      "message": "Btrfs: devid subset filter\n\nSelect chunks which have at least one byte of at least one stripe\nlocated on a device with devid X in a given [pstart,pend) physical\naddress range.\n\nThis filter only works when devid filter is turned on.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "409d404b461afa9738619f249fd7f62a366b68c2",
      "tree": "38092a3be26e6bcedc5202c04c5915e12b1d64a8",
      "parents": [
        "5ce5b3c0916ba3a2e34cf648b94044adc5ef9e76"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:47 2012 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:47 2012 +0200"
      },
      "message": "Btrfs: devid filter\n\nRelocate chunks which have at least one stripe located on a device with\ndevid X.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "5ce5b3c0916ba3a2e34cf648b94044adc5ef9e76",
      "tree": "0cfbc8eeea18b9491275c59b8a7eed1471a2abd3",
      "parents": [
        "ed25e9b26f898d8d63ae4a836489f1923534143b"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:47 2012 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:47 2012 +0200"
      },
      "message": "Btrfs: usage filter\n\nSelect chunks that are less than X percent full.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "ed25e9b26f898d8d63ae4a836489f1923534143b",
      "tree": "89ee253d15ef46b430de0435c068b66267ce829b",
      "parents": [
        "f43ffb60fd94e98be02780944e182ade6653b916"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:47 2012 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:47 2012 +0200"
      },
      "message": "Btrfs: profiles filter\n\nSelect chunks based on a given profile mask.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "f43ffb60fd94e98be02780944e182ade6653b916",
      "tree": "50cab47a03c223d0641d8fe62805e71f5cffef1a",
      "parents": [
        "c9e9f97bdfb64d06e9520f8e4f37674ac21cc9bc"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:47 2012 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:47 2012 +0200"
      },
      "message": "Btrfs: add basic infrastructure for selective balancing\n\nThis allows to have a separate set of filters for each chunk type\n(data,meta,sys).  The code however is generic and switch on chunk type\nis only done once.\n\nThis commit also adds a type filter: it allows to balance for example\nmeta and system chunks w/o touching data ones.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "c9e9f97bdfb64d06e9520f8e4f37674ac21cc9bc",
      "tree": "22d695a7a461068c773b327e5c89a045ade5d8a3",
      "parents": [
        "10ea00f55a07f8f9536d9112b95108a86f700bab"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:47 2012 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:47 2012 +0200"
      },
      "message": "Btrfs: add basic restriper infrastructure\n\nAdd basic restriper infrastructure: extended balancing ioctl and all\nrelated ioctl data structures, add data structure for tracking\nrestriper\u0027s state to fs_info, etc.  The semantics of the old balancing\nioctl are fully preserved.\n\nExplicitly disallow any volume operations when balance is in progress.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "10ea00f55a07f8f9536d9112b95108a86f700bab",
      "tree": "83887f41d8a876d919f74f83cda26eb18b10deca",
      "parents": [
        "a46d11a8b06dd0431a3888fbc4856ea13a8e634f"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:47 2012 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:47 2012 +0200"
      },
      "message": "Btrfs: make avail_*_alloc_bits fields dynamic\n\nCurrently when new chunks are created respective avail_alloc_bits field\nis updated to reflect profiles of all chunks present in the system.\nHowever when chunks are removed profile bits are never cleared.\n\nThis patch clears profile bit of respective avail_alloc_bits field when\nthe last chunk with that profile is removed.  Restriper needs this to\nproperly operate when \"downgrading\".\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "a46d11a8b06dd0431a3888fbc4856ea13a8e634f",
      "tree": "2aebc4d3ef2318a08cb067bb4a597a51e2455a65",
      "parents": [
        "52ba692972532f8d652080214b6599ece3dd51b9"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:47 2012 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:47 2012 +0200"
      },
      "message": "Btrfs: add BTRFS_AVAIL_ALLOC_BIT_SINGLE bit\n\nRight now on-disk BTRFS_BLOCK_GROUP_* profile bits are used for\navail_{data,metadata,system}_alloc_bits fields, which gather info about\navailable allocation profiles in the FS.  When chunk is created or read\nfrom disk, its profile is OR\u0027ed with the corresponding avail_alloc_bits\nfield.  Since SINGLE is denoted by 0 in the on-disk format, currently\nthere is no way to tell when such chunks become avaialble.  Restriper\nneeds that information, so add a separate bit for SINGLE profile.\n\nThis bit is going to be in-memory only, it should never be written out\nto disk, so it\u0027s not a disk format change.  However to avoid remappings\nin future, reserve corresponding on-disk bit.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "52ba692972532f8d652080214b6599ece3dd51b9",
      "tree": "d4c60bad0a7813d964988c7c40aeceadfb54cc1d",
      "parents": [
        "6fef8df1dcb9b586268caff66df1d71ce8610132"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:47 2012 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:47 2012 +0200"
      },
      "message": "Btrfs: introduce masks for chunk type and profile\n\nChunk\u0027s type and profile are encoded in u64 flags field.  Introduce\nmasks to easily access them.  Also fix the type of BTRFS_BLOCK_GROUP_*\nconstants, it should be ULL.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "6fef8df1dcb9b586268caff66df1d71ce8610132",
      "tree": "03488bc99771dda6354a3cb3113bee96f55aac47",
      "parents": [
        "08c422c27f855d27b0b3d9fa30ebd938d4ae6f1f"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:47 2012 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:47 2012 +0200"
      },
      "message": "Btrfs: get rid of *_alloc_profile fields\n\n{data,metadata,system}_alloc_profile fields have been unused for a long\ntime now.  Get rid of them.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "122804ecb59493fbb4d31b3ba9ac59faaf45276f",
      "tree": "cff4d8a158c412e4a8d3abc8d91bb0eb52b01c9a",
      "parents": [
        "16008d641670571ff4cd750b416c7caf2d89f467",
        "126400033940afb658123517a2e80eb68259fbd7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 15 12:49:56 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 15 12:49:56 2012 -0800"
      },
      "message": "Merge branch \u0027v4l_for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media\n\n* \u0027v4l_for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (655 commits)\n  [media] revert patch: HDIC HD29L2 DMB-TH USB2.0 reference design driver\n  mb86a20s: Add a few more register settings at the init seq\n  mb86a20s: Group registers into the same line\n  [media] [PATCH] don\u0027t reset the delivery system on DTV_CLEAR\n  [media] [BUG] it913x-fe fix typo error making SNR levels unstable\n  [media] cx23885: Query the CX25840 during enum_input for status\n  [media] cx25840: Add support for g_input_status\n  [media] rc-videomate-m1f.c Rename to match remote controler name\n  [media] drivers: media: au0828: Fix dependency for VIDEO_AU0828\n  [media] convert drivers/media/* to use module_platform_driver()\n  [media] drivers: video: cx231xx: Fix dependency for VIDEO_CX231XX_DVB\n  [media] Exynos4 JPEG codec v4l2 driver\n  [media] doc: v4l: selection: choose pixels as units for selection rectangles\n  [media] v4l: s5p-tv: mixer: fix setup of VP scaling\n  [media] v4l: s5p-tv: mixer: add support for selection API\n  [media] v4l: emulate old crop API using extended crop/compose API\n  [media] doc: v4l: add documentation for selection API\n  [media] doc: v4l: add binary images for selection API\n  [media] v4l: add support for selection api\n  [media] hd29l2: fix review findings\n  ...\n"
    },
    {
      "commit": "b3c9dd182ed3bdcdaf0e42625a35924b0497afdc",
      "tree": "ad48ad4d923fee147c736318d0fad35b3755f4f5",
      "parents": [
        "83c2f912b43c3a7babbb6cb7ae2a5276c1ed2a3e",
        "5d381efb3d1f1ef10535a31ca0dd9b22fe1e1922"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 15 12:24:45 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 15 12:24:45 2012 -0800"
      },
      "message": "Merge branch \u0027for-3.3/core\u0027 of git://git.kernel.dk/linux-block\n\n* \u0027for-3.3/core\u0027 of git://git.kernel.dk/linux-block: (37 commits)\n  Revert \"block: recursive merge requests\"\n  block: Stop using macro stubs for the bio data integrity calls\n  blockdev: convert some macros to static inlines\n  fs: remove unneeded plug in mpage_readpages()\n  block: Add BLKROTATIONAL ioctl\n  block: Introduce blk_set_stacking_limits function\n  block: remove WARN_ON_ONCE() in exit_io_context()\n  block: an exiting task should be allowed to create io_context\n  block: ioc_cgroup_changed() needs to be exported\n  block: recursive merge requests\n  block, cfq: fix empty queue crash caused by request merge\n  block, cfq: move icq creation and rq-\u003eelv.icq association to block core\n  block, cfq: restructure io_cq creation path for io_context interface cleanup\n  block, cfq: move io_cq exit/release to blk-ioc.c\n  block, cfq: move icq cache management to block core\n  block, cfq: move io_cq lookup to blk-ioc.c\n  block, cfq: move cfqd-\u003eicq_list to request_queue and add request-\u003eelv.icq\n  block, cfq: reorganize cfq_io_context into generic and cfq specific parts\n  block: remove elevator_queue-\u003eops\n  block: reorder elevator switch sequence\n  ...\n\nFix up conflicts in:\n - block/blk-cgroup.c\n\tSwitch from can_attach_task to can_attach\n - block/cfq-iosched.c\n\tconflict with now removed cic index changes (we now use q-\u003eid instead)\n"
    },
    {
      "commit": "a520458fccc5f5dd4d0ed63c0602db2fd3172b21",
      "tree": "3bca2be919eac0bfb50bd0623cda6df589260de8",
      "parents": [
        "c49c41a4134679cecb77362e7f6b59acb6320aa7",
        "1f4f43475f1295dc41c18684e59deea9b6d46045"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 15 11:25:41 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 15 11:25:41 2012 -0800"
      },
      "message": "Merge branch \u0027linux-next\u0027 of git://git.infradead.org/ubifs-2.6\n\n* \u0027linux-next\u0027 of git://git.infradead.org/ubifs-2.6:\n  UBI: use own macros for the layout volume\n  UBI: fix nameless volumes handling\n  UBIFS: fix non-debug configuration build\n"
    },
    {
      "commit": "e234b5f2079414b3d772286e3ee00e7bbf6da833",
      "tree": "860baa06589f5f11b354500f30f43ff8c2f4cda9",
      "parents": [
        "94b1984ab9ab61cc6047c07e074d766485299a9c"
      ],
      "author": {
        "name": "Dominique Martinet",
        "email": "asmadeus@codewreck.org",
        "time": "Sun Jan 15 00:28:03 2012 +0100"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@linux.intel.com",
        "time": "Sun Jan 15 13:46:02 2012 +0200"
      },
      "message": "UBIFS: fix non-debug configuration build\n\nFix a brown paperbag bug introduced by me in the previous commit. I was\nin hurry and forgot about the non-debug case completely.\n\nArtem: amend the commit message and tweak the patch to preserve alignment.\n       This made the patch a bit less readable, though.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@linux.intel.com\u003e\n"
    },
    {
      "commit": "c49c41a4134679cecb77362e7f6b59acb6320aa7",
      "tree": "45e690c036ca5846a48c8be67945d1d841b2d96d",
      "parents": [
        "892d208bcf79e4e1058707786a7b6d486697cd78",
        "f423e5ba76e7e4a6fcb4836b4f072d1fdebba8b5"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 14 18:36:33 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 14 18:36:33 2012 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://selinuxproject.org/~jmorris/linux-security\n\n* \u0027for-linus\u0027 of git://selinuxproject.org/~jmorris/linux-security:\n  capabilities: remove __cap_full_set definition\n  security: remove the security_netlink_recv hook as it is equivalent to capable()\n  ptrace: do not audit capability check when outputing /proc/pid/stat\n  capabilities: remove task_ns_* functions\n  capabitlies: ns_capable can use the cap helpers rather than lsm call\n  capabilities: style only - move capable below ns_capable\n  capabilites: introduce new has_ns_capabilities_noaudit\n  capabilities: call has_ns_capability from has_capability\n  capabilities: remove all _real_ interfaces\n  capabilities: introduce security_capable_noaudit\n  capabilities: reverse arguments to security_capable\n  capabilities: remove the task from capable LSM hook entirely\n  selinux: sparse fix: fix several warnings in the security server cod\n  selinux: sparse fix: fix warnings in netlink code\n  selinux: sparse fix: eliminate warnings for selinuxfs\n  selinux: sparse fix: declare selinux_disable() in security.h\n  selinux: sparse fix: move selinux_complete_init\n  selinux: sparse fix: make selinux_secmark_refcount static\n  SELinux: Fix RCU deref check warning in sel_netport_insert()\n\nManually fix up a semantic mis-merge wrt security_netlink_recv():\n\n - the interface was removed in commit fd7784615248 (\"security: remove\n   the security_netlink_recv hook as it is equivalent to capable()\")\n\n - a new user of it appeared in commit a38f7907b926 (\"crypto: Add\n   userspace configuration API\")\n\ncausing no automatic merge conflict, but Eric Paris pointed out the\nissue.\n"
    },
    {
      "commit": "fed474857efbed79cd390d0aee224231ca718f63",
      "tree": "8935acfe89c87fe63f72bb114fa17f97f7c26564",
      "parents": [
        "1e6c4dfdeb040b2dd5c4d6d803ab95c3971ad80c"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Thu Jan 12 17:59:46 2012 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 14 18:01:42 2012 -0800"
      },
      "message": "fsnotify: don\u0027t BUG in fsnotify_destroy_mark()\n\nRemoving the parent of a watched file results in \"kernel BUG at\nfs/notify/mark.c:139\".\n\nTo reproduce\n\n  add \"-w /tmp/audit/dir/watched_file\" to audit.rules\n  rm -rf /tmp/audit/dir\n\nThis is caused by fsnotify_destroy_mark() being called without an\nextra reference taken by the caller.\n\nReported by Francesco Cosoleto here:\n\n  https://bugzilla.novell.com/show_bug.cgi?id\u003d689860\n\nFix by removing the BUG_ON and adding a comment about not accessing mark after\nthe iput.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nCC: stable@vger.kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0a80939b3e6af4b0dc93bf88ec02fd7e90a16f1b",
      "tree": "a112335f2b2b2a51e90531c6c67e8a3b54dcf0ef",
      "parents": [
        "0b48d42235caf627121f440b57d376f48a9af8b6",
        "72db395ffadb1d33233fd123c2bf87ba0198c6c1"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 14 12:32:16 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 14 12:32:16 2012 -0800"
      },
      "message": "Merge tag \u0027for-linus\u0027 of git://github.com/rustyrussell/linux\n\nAutogenerated GPG tag for Rusty D1ADB8F1: 15EE 8D6C AB0E 7F0C F999  BFCB D920 0E6C D1AD B8F1\n\n* tag \u0027for-linus\u0027 of git://github.com/rustyrussell/linux:\n  module_param: check that bool parameters really are bool.\n  intelfbdrv.c: bailearly is an int module_param\n  paride/pcd: fix bool verbose module parameter.\n  module_param: make bool parameters really bool (drivers \u0026 misc)\n  module_param: make bool parameters really bool (arch)\n  module_param: make bool parameters really bool (core code)\n  kernel/async: remove redundant declaration.\n  printk: fix unnecessary module_param_name.\n  lirc_parallel: fix module parameter description.\n  module_param: avoid bool abuse, add bint for special cases.\n  module_param: check type correctness for module_param_array\n  modpost: use linker section to generate table.\n  modpost: use a table rather than a giant if/else statement.\n  modules: sysfs - export: taint, coresize, initsize\n  kernel/params: replace DEBUGP with pr_debug\n  module: replace DEBUGP with pr_debug\n  module: struct module_ref should contains long fields\n  module: Fix performance regression on modules with large symbol tables\n  module: Add comments describing how the \"strmap\" logic works\n\nFix up conflicts in scripts/mod/file2alias.c due to the new linker-\ngenerated table approach to adding __mod_*_device_table entries.  The\nARM sa11x0 mcp bus needed to be converted to that too.\n"
    },
    {
      "commit": "0b48d42235caf627121f440b57d376f48a9af8b6",
      "tree": "400967c5fcb1cd08bbc0e1739e229f9717590f19",
      "parents": [
        "8e63dd6e1c589ba99a18df9cbaa41c3178607641",
        "7a6ef8c72314f254c107c6a9ed7cb201961ee05a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 14 12:26:41 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 14 12:26:41 2012 -0800"
      },
      "message": "Merge branch \u0027for-3.3\u0027 of git://linux-nfs.org/~bfields/linux\n\n* \u0027for-3.3\u0027 of git://linux-nfs.org/~bfields/linux: (31 commits)\n  nfsd4: nfsd4_create_clid_dir return value is unused\n  NFSD: Change name of extended attribute containing junction\n  svcrpc: don\u0027t revert to SVC_POOL_DEFAULT on nfsd shutdown\n  svcrpc: fix double-free on shutdown of nfsd after changing pool mode\n  nfsd4: be forgiving in the absence of the recovery directory\n  nfsd4: fix spurious 4.1 post-reboot failures\n  NFSD: forget_delegations should use list_for_each_entry_safe\n  NFSD: Only reinitilize the recall_lru list under the recall lock\n  nfsd4: initialize special stateid\u0027s at compile time\n  NFSd: use network-namespace-aware cache registering routines\n  SUNRPC: create svc_xprt in proper network namespace\n  svcrpc: update outdated BKL comment\n  nfsd41: allow non-reclaim open-by-fh\u0027s in 4.1\n  svcrpc: avoid memory-corruption on pool shutdown\n  svcrpc: destroy server sockets all at once\n  svcrpc: make svc_delete_xprt static\n  nfsd: Fix oops when parsing a 0 length export\n  nfsd4: Use kmemdup rather than duplicating its implementation\n  nfsd4: add a separate (lockowner, inode) lookup\n  nfsd4: fix CONFIG_NFSD_FAULT_INJECTION compile error\n  ...\n"
    },
    {
      "commit": "69e4747ee9727d660b88d7e1efe0f4afcb35db1b",
      "tree": "2dde4642ad0dba19688b664c4397c61cf9ebce25",
      "parents": [
        "a3301b751b19f0efbafddc4034f8e7ce6bf3007b"
      ],
      "author": {
        "name": "Gleb Natapov",
        "email": "gleb@redhat.com",
        "time": "Sun Jan 08 17:07:28 2012 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 13 20:39:44 2012 -0800"
      },
      "message": "Unused iocbs in a batch should not be accounted as active.\n\nSince commit 080d676de095 (\"aio: allocate kiocbs in batches\") iocbs are\nallocated in a batch during processing of first iocbs.  All iocbs in a\nbatch are automatically added to ctx-\u003eactive_reqs list and accounted in\nctx-\u003ereqs_active.\n\nIf one (not the last one) of iocbs submitted by an user fails, further\niocbs are not processed, but they are still present in ctx-\u003eactive_reqs\nand accounted in ctx-\u003ereqs_active.  This causes process to stuck in a D\nstate in wait_for_all_aios() on exit since ctx-\u003ereqs_active will never\ngo down to zero.  Furthermore since kiocb_batch_free() frees iocb\nwithout removing it from active_reqs list the list become corrupted\nwhich may cause oops.\n\nFix this by removing iocb from ctx-\u003eactive_reqs and updating\nctx-\u003ereqs_active in kiocb_batch_free().\n\nSigned-off-by: Gleb Natapov \u003cgleb@redhat.com\u003e\nReviewed-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nCc: stable@kernel.org   # 3.2\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "96e80a7851b44f3decaac0625665cd64e550b71d",
      "tree": "a24d9f46c43b5fcf824c49b93d37982ab668aade",
      "parents": [
        "57e6a7dde8cfca9ac1d6702cf9104d22bc11ba90",
        "3d4a1c80c4eb97187b3a61b3bfa8c804327f7a45"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 13 10:34:57 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 13 10:34:57 2012 -0800"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/pkl/squashfs-next\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/pkl/squashfs-next:\n  Squashfs: fix i_blocks calculation with extended regular files\n  Squashfs: fix mount time sanity check for corrupted superblock\n  Squashfs: optimise squashfs_cache_get entry search\n  Squashfs: Update documentation to include xattrs\n  Squashfs: add missing block release on error condition\n"
    },
    {
      "commit": "57e6a7dde8cfca9ac1d6702cf9104d22bc11ba90",
      "tree": "e53318e43657531399a8d6c721760015b26aa152",
      "parents": [
        "94b1984ab9ab61cc6047c07e074d766485299a9c",
        "66ad863b410efb7f537719006f9ac52400c1a5c5"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 13 10:33:39 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 13 10:33:39 2012 -0800"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-3.0-nmw\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-3.0-nmw:\n  GFS2: Fix nlink setting on inode creation\n  GFS2: fail mount if journal recovery fails\n  GFS2: let spectator mount do read only recovery\n  GFS2: Fix a use-after-free that coverity spotted\n  GFS2: dlm based recovery coordination\n"
    },
    {
      "commit": "94b1984ab9ab61cc6047c07e074d766485299a9c",
      "tree": "4b6cba21caf3d99129bea6a5eba0544b2fe8402a",
      "parents": [
        "1a52bb0b686844021597d190e562ab55d1210104",
        "515315a123af641a9533e4ff0f178c470dc08fc7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 13 10:31:33 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 13 10:31:33 2012 -0800"
      },
      "message": "Merge branch \u0027linux-next\u0027 of git://git.infradead.org/ubifs-2.6\n\n* \u0027linux-next\u0027 of git://git.infradead.org/ubifs-2.6:\n  UBIFS: fix key printing\n  UBIFS: use snprintf instead of sprintf when printing keys\n  UBIFS: fix debugging messages\n  UBIFS: make debugging messages light again\n  UBI: fix debugging messages\n  UBI: make vid_hdr non-static\n"
    },
    {
      "commit": "1a52bb0b686844021597d190e562ab55d1210104",
      "tree": "7edf13509869a6a7f1f488a679f15ff6c3057c54",
      "parents": [
        "8638094e956a47dbb9a25166705a91e9a0981d52",
        "83eb26af0db71f2dfe551405c55d982288fa6178"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 13 10:29:21 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 13 10:29:21 2012 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client:\n  ceph: ensure prealloc_blob is in place when removing xattr\n  rbd: initialize snap_rwsem in rbd_add()\n  ceph: enable/disable dentry complete flags via mount option\n  vfs: export symbol d_find_any_alias()\n  ceph: always initialize the dentry in open_root_dentry()\n  libceph: remove useless return value for osd_client __send_request()\n  ceph: avoid iput() while holding spinlock in ceph_dir_fsync\n  ceph: avoid useless dget/dput in encode_fh\n  ceph: dereference pointer after checking for NULL\n  crush: fix force for non-root TAKE\n  ceph: remove unnecessary d_fsdata conditional checks\n  ceph: Use kmemdup rather than duplicating its implementation\n\nFix up conflicts in fs/ceph/super.c (d_alloc_root() failure handling vs\nalways initialize the dentry in open_root_dentry)\n"
    },
    {
      "commit": "3d2b3129c2c48cf0153e0f2058cf87e4b45ca3ac",
      "tree": "eb0e3ac276c862280a1161683fc9915ccc999e30",
      "parents": [
        "bf322d983e540f66517db85b6870017613bb1e8d"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Sun Dec 18 20:00:06 2011 +0000"
      },
      "committer": {
        "name": "Ben Myers",
        "email": "bpm@sgi.com",
        "time": "Fri Jan 13 12:11:46 2012 -0600"
      },
      "message": "xfs: remove the unused dm_attrs structure\n\n.. and the just as dead bhv_desc forward declaration while we\u0027re at it.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Alex Elder \u003caelder@sgi.com\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n\n"
    },
    {
      "commit": "bf322d983e540f66517db85b6870017613bb1e8d",
      "tree": "f01eb47527c526d3654746db1f2533eae8cfe050",
      "parents": [
        "673e8e597c06eb81954bf21a10f5cce74a1de8f1"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Sun Dec 18 20:00:05 2011 +0000"
      },
      "committer": {
        "name": "Ben Myers",
        "email": "bpm@sgi.com",
        "time": "Fri Jan 13 12:11:46 2012 -0600"
      },
      "message": "xfs: cleanup xfs_iomap_eof_align_last_fsb\n\nReplace the nasty if, else if, elseif condition with more natural C flow\nthat expressed the logic we want here better.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n\n"
    },
    {
      "commit": "673e8e597c06eb81954bf21a10f5cce74a1de8f1",
      "tree": "a6d47b0c44dfe24119de8d4c944f7c5c6e2c30dc",
      "parents": [
        "099469502f62fbe0d7e4f0b83a2f22538367f734"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Sun Dec 18 20:00:04 2011 +0000"
      },
      "committer": {
        "name": "Ben Myers",
        "email": "bpm@sgi.com",
        "time": "Fri Jan 13 12:11:45 2012 -0600"
      },
      "message": "xfs: remove xfs_itruncate_data\n\nThis wrapper isn\u0027t overly useful, not to say rather confusing.\n\nAround the call to xfs_itruncate_extents it does:\n\n - add tracing\n - add a few asserts in debug builds\n - conditionally update the inode size in two places\n - log the inode\n\nBoth the tracing and the inode logging can be moved to xfs_itruncate_extents\nas they are useful for the attribute fork as well - in fact the attr code\nalready does an equivalent xfs_trans_log_inode call just after calling\nxfs_itruncate_extents.  The conditional size updates are a mess, and there\nwas no reason to do them in two places anyway, as the first one was\nconditional on the inode having extents - but without extents we\nxfs_itruncate_extents would be a no-op and the placement wouldn\u0027t matter\nanyway.  Instead move the size assignments and the asserts that make sense\nto the callers that want it.\n\nAs a side effect of this clean up xfs_setattr_size by introducing variables\nfor the old and new inode size, and moving the size updates into a common\nplace.\n\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n\n"
    },
    {
      "commit": "8638094e956a47dbb9a25166705a91e9a0981d52",
      "tree": "c776b8254bb1a070cfafe5be8615c25b1314e31a",
      "parents": [
        "099469502f62fbe0d7e4f0b83a2f22538367f734"
      ],
      "author": {
        "name": "Ian Kent",
        "email": "raven@themaw.net",
        "time": "Fri Jan 13 20:41:46 2012 +0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 13 08:30:49 2012 -0800"
      },
      "message": "autofs4 - fix deal with autofs4_write races\n\nI don\u0027t know how I missed this obvious mistake when I\nreviewed Als\u0027 patches, sorry.\n\n[ Quoting Al:\n\n\tGrr...  Note to self: do git status *and* git stash show -p\n\tbefore git push.  Nothing like \"WTF? I\u0027d fixed that braino\"\n\tfeeling ;-/\n\n  Al sent the same patch - it got broken in commit d668dc56631d:\n  \"autofs4: deal with autofs4_write/autofs4_write races\". ]\n\nReported-and-tested-by: Dave Airlie \u003cairlied@redhat.com\u003e\nSigned-off-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "515315a123af641a9533e4ff0f178c470dc08fc7",
      "tree": "1a215c3df46286d7ff878cd86517818404758900",
      "parents": [
        "beba006074e7170d3bc91470c8a6c914730d4c63"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "artem.bityutskiy@linux.intel.com",
        "time": "Fri Jan 13 12:33:53 2012 +0200"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "artem.bityutskiy@linux.intel.com",
        "time": "Fri Jan 13 12:50:42 2012 +0200"
      },
      "message": "UBIFS: fix key printing\n\nBefore commit 56e46742e846e4de167dde0e1e1071ace1c882a5 we have had locking\naround all printing macros and we could use static buffers for creating\nkey strings and printing them. However, now we do not have that locking and\nwe cannot use static buffers. This commit removes the old DBGKEY() macros\nand introduces few new helper macros for printing debugging messages plus\na key at the end. Thankfully, all the messages are already structures in\na way that the key is printed in the end.\n\nSigned-off-by: Artem Bityutskiy \u003cartem.bityutskiy@linux.intel.com\u003e\n"
    },
    {
      "commit": "beba006074e7170d3bc91470c8a6c914730d4c63",
      "tree": "3d7330a25a1c7c8228774ec9ff9cc7f1f2dcd1ab",
      "parents": [
        "d34315da9146253351146140ea4b277193ee5e5f"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "artem.bityutskiy@linux.intel.com",
        "time": "Wed Jan 11 15:52:09 2012 +0200"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "artem.bityutskiy@linux.intel.com",
        "time": "Fri Jan 13 12:46:21 2012 +0200"
      },
      "message": "UBIFS: use snprintf instead of sprintf when printing keys\n\nSwitch to \u0027snprintf()\u0027 which is more secure and reliable. This is also a\npreparation to the subsequent key printing fixes.\n\nSigned-off-by: Artem Bityutskiy \u003cartem.bityutskiy@linux.intel.com\u003e\n"
    },
    {
      "commit": "099469502f62fbe0d7e4f0b83a2f22538367f734",
      "tree": "5229c3818b2e6e09d35026d49314047121130536",
      "parents": [
        "7c17d86a8502c2e30c2eea777ed1b830aa3b447b",
        "35f1526845a9d804206883e19bd257d3dcef758f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 12 20:42:54 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 12 20:42:54 2012 -0800"
      },
      "message": "Merge branch \u0027akpm\u0027 (aka \"Andrew\u0027s patch-bomb, take two\")\n\nAndrew explains:\n\n - various misc stuff\n\n - Most of the rest of MM: memcg, threaded hugepages, others.\n\n - cpumask\n\n - kexec\n\n - kdump\n\n - some direct-io performance tweaking\n\n - radix-tree optimisations\n\n - new selftests code\n\n   A note on this: often people will develop a new userspace-visible\n   feature and will develop userspace code to exercise/test that\n   feature.  Then they merge the patch and the selftest code dies.\n   Sometimes we paste it into the changelog.  Sometimes the code gets\n   thrown into Documentation/(!).\n\n   This saddens me.  So this patch creates a bare-bones framework which\n   will henceforth allow me to ask people to include their test apps in\n   the kernel tree so we can keep them alive.  Then when people enhance\n   or fix the feature, I can ask them to update the test app too.\n\n   The infrastruture is terribly trivial at present - let\u0027s see how it\n   evolves.\n\n - checkpoint/restart feature work.\n\n   A note on this: this is a project by various mad Russians to perform\n   c/r mainly from userspace, with various oddball helper code added\n   into the kernel where the need is demonstrated.\n\n   So rather than some large central lump of code, what we have is\n   little bits and pieces popping up in various places which either\n   expose something new or which permit something which is normally\n   kernel-private to be modified.\n\n   The overall project is an ongoing thing.  I\u0027ve judged that the size\n   and scope of the thing means that we\u0027re more likely to be successful\n   with it if we integrate the support into mainline piecemeal rather\n   than allowing it all to develop out-of-tree.\n\n   However I\u0027m less confident than the developers that it will all\n   eventually work! So what I\u0027m asking them to do is to wrap each piece\n   of new code inside CONFIG_CHECKPOINT_RESTORE.  So if it all\n   eventually comes to tears and the project as a whole fails, it should\n   be a simple matter to go through and delete all trace of it.\n\nThis lot pretty much wraps up the -rc1 merge for me.\n\n* akpm: (96 commits)\n  unlzo: fix input buffer free\n  ramoops: update parameters only after successful init\n  ramoops: fix use of rounddown_pow_of_two()\n  c/r: prctl: add PR_SET_MM codes to set up mm_struct entries\n  c/r: procfs: add start_data, end_data, start_brk members to /proc/$pid/stat v4\n  c/r: introduce CHECKPOINT_RESTORE symbol\n  selftests: new x86 breakpoints selftest\n  selftests: new very basic kernel selftests directory\n  radix_tree: take radix_tree_path off stack\n  radix_tree: remove radix_tree_indirect_to_ptr()\n  dio: optimize cache misses in the submission path\n  vfs: cache request_queue in struct block_device\n  fs/direct-io.c: calculate fs_count correctly in get_more_blocks()\n  drivers/parport/parport_pc.c: fix warnings\n  panic: don\u0027t print redundant backtraces on oops\n  sysctl: add the kernel.ns_last_pid control\n  kdump: add udev events for memory online/offline\n  include/linux/crash_dump.h needs elf.h\n  kdump: fix crash_kexec()/smp_send_stop() race in panic()\n  kdump: crashk_res init check for /sys/kernel/kexec_crash_size\n  ...\n"
    },
    {
      "commit": "b3f7f573a20081910e34e99cbc91831f4f02f1ff",
      "tree": "2c0aea64b3be4c24f84be6a5275f7202e0dde594",
      "parents": [
        "067bce1a06c1f84146f873a598cd7c3a28eee1d5"
      ],
      "author": {
        "name": "Cyrill Gorcunov",
        "email": "gorcunov@openvz.org",
        "time": "Thu Jan 12 17:20:53 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 12 20:13:13 2012 -0800"
      },
      "message": "c/r: procfs: add start_data, end_data, start_brk members to /proc/$pid/stat v4\n\nThe mm-\u003estart_code/end_code, mm-\u003estart_data/end_data, mm-\u003estart_brk are\ninvolved into calculation of program text/data segment sizes (which might\nbe seen in /proc/\u003cpid\u003e/statm) and into brk() call final address.\n\nFor restore we need to know all these values.  While\nmm-\u003estart_code/end_code already present in /proc/$pid/stat, the rest\nmembers are not, so this patch brings them in.\n\nThe restore procedure of these members is addressed in another patch using\nprctl().\n\nSigned-off-by: Cyrill Gorcunov \u003cgorcunov@openvz.org\u003e\nAcked-by: Serge Hallyn \u003cserge.hallyn@canonical.com\u003e\nReviewed-by: Kees Cook \u003ckeescook@chromium.org\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Andrew Vagin \u003cavagin@openvz.org\u003e\nCc: Vasiliy Kulikov \u003csegoon@openwall.com\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "65dd2aa90aa17a26703c28652408192856aa0396",
      "tree": "4ea4635f786fc295d16a459925da67701253df97",
      "parents": [
        "87192a2a49c475cf322cb143e0fa63b0102d8567"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Thu Jan 12 17:20:35 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 12 20:13:12 2012 -0800"
      },
      "message": "dio: optimize cache misses in the submission path\n\nSome investigation of a transaction processing workload showed that a\nmajor consumer of cycles in __blockdev_direct_IO is the cache miss while\naccessing the block size.  This is because it has to walk the chain from\nblock_dev to gendisk to queue.\n\nThe block size is needed early on to check alignment and sizes.  It\u0027s only\ndone if the check for the inode block size fails.  But the costly block\ndevice state is unconditionally fetched.\n\n- Reorganize the code to only fetch block dev state when actually\n  needed.\n\nThen do a prefetch on the block dev early on in the direct IO path.  This\nis worth it, because there is substantial code run before we actually\ntouch the block dev now.\n\n- I also added some unlikelies to make it clear the compiler that block\n  device fetch code is not normally executed.\n\nThis gave a small, but measurable improvement on a large database\nbenchmark (about 0.3%)\n\n[akpm@linux-foundation.org: coding-style fixes]\n[sfr@canb.auug.org.au: using prefetch requires including prefetch.h]\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\nCc: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "87192a2a49c475cf322cb143e0fa63b0102d8567",
      "tree": "70acf2fb1e4a9a3a62559ad9218278d2fb114599",
      "parents": [
        "ae55e1aaa7e2e57e538cb98cf617f511c5dc4f73"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Thu Jan 12 17:20:34 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 12 20:13:12 2012 -0800"
      },
      "message": "vfs: cache request_queue in struct block_device\n\nThis makes it possible to get from the inode to the request_queue with one\nless cache miss.  Used in followon optimization.\n\nThe livetime of the pointer is the same as the gendisk.\n\nThis assumes that the queue will always stay the same in the gendisk while\nit\u0027s visible to block_devices.  I think that\u0027s safe correct?\n\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\nAcked-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\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": "ae55e1aaa7e2e57e538cb98cf617f511c5dc4f73",
      "tree": "3f3981dd7617c656e7a6ba2f3a83a14637c63221",
      "parents": [
        "45dac90f0ca7d9efeda8f3d416c808c71207bf20"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "boyu.mt@taobao.com",
        "time": "Thu Jan 12 17:20:33 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 12 20:13:12 2012 -0800"
      },
      "message": "fs/direct-io.c: calculate fs_count correctly in get_more_blocks()\n\nIn get_more_blocks(), we use dio_count to calcuate fs_count and do some\ntricky things to increase fs_count if dio_count isn\u0027t aligned.  But\nactually it still has some corner cases that can\u0027t be coverd.  See the\nfollowing example:\n\n\tdio_write foo -s 1024 -w 4096\n\n(direct write 4096 bytes at offset 1024).  The same goes if the offset\nisn\u0027t aligned to fs_blocksize.\n\nIn this case, the old calculation counts fs_count to be 1, but actually we\nwill write into 2 different blocks (if fs_blocksize\u003d4096).  The old code\njust works, since it will call get_block twice (and may have to allocate\nand create extents twice for filesystems like ext4).  So we\u0027d better call\nget_block just once with the proper fs_count.\n\nSigned-off-by: Tao Ma \u003cboyu.mt@taobao.com\u003e\nCc: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: Christoph Hellwig \u003chch@lst.de\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": "a6bc32b899223a877f595ef9ddc1e89ead5072b8",
      "tree": "a9529f7af2cf8e77bb6670acea32169c891a2b76",
      "parents": [
        "66199712e9eef5aede09dbcd9dfff87798a66917"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Thu Jan 12 17:19:43 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 12 20:13:09 2012 -0800"
      },
      "message": "mm: compaction: introduce sync-light migration for use by compaction\n\nThis patch adds a lightweight sync migrate operation MIGRATE_SYNC_LIGHT\nmode that avoids writing back pages to backing storage.  Async compaction\nmaps to MIGRATE_ASYNC while sync compaction maps to MIGRATE_SYNC_LIGHT.\nFor other migrate_pages users such as memory hotplug, MIGRATE_SYNC is\nused.\n\nThis avoids sync compaction stalling for an excessive length of time,\nparticularly when copying files to a USB stick where there might be a\nlarge number of dirty pages backed by a filesystem that does not support\n-\u003ewritepages.\n\n[aarcange@redhat.com: This patch is heavily based on Andrea\u0027s work]\n[akpm@linux-foundation.org: fix fs/nfs/write.c build]\n[akpm@linux-foundation.org: fix fs/btrfs/disk-io.c build]\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Dave Jones \u003cdavej@redhat.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Andy Isaacson \u003cadi@hexapodia.org\u003e\nCc: Nai Xia \u003cnai.xia@gmail.com\u003e\nCc: Johannes Weiner \u003cjweiner@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b969c4ab9f182a6e1b2a0848be349f99714947b0",
      "tree": "dc1c6e4375cfec7b15f13a37307eba8a9e07f40f",
      "parents": [
        "7335084d446b83cbcb15da80497d03f0c1dc9e21"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Thu Jan 12 17:19:34 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 12 20:13:09 2012 -0800"
      },
      "message": "mm: compaction: determine if dirty pages can be migrated without blocking within -\u003emigratepage\n\nAsynchronous compaction is used when allocating transparent hugepages to\navoid blocking for long periods of time.  Due to reports of stalling,\nthere was a debate on disabling synchronous compaction but this severely\nimpacted allocation success rates.  Part of the reason was that many dirty\npages are skipped in asynchronous compaction by the following check;\n\n\tif (PageDirty(page) \u0026\u0026 !sync \u0026\u0026\n\t\tmapping-\u003ea_ops-\u003emigratepage !\u003d migrate_page)\n\t\t\trc \u003d -EBUSY;\n\nThis skips over all mapping aops using buffer_migrate_page() even though\nit is possible to migrate some of these pages without blocking.  This\npatch updates the -\u003emigratepage callback with a \"sync\" parameter.  It is\nthe responsibility of the callback to fail gracefully if migration would\nblock.\n\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Dave Jones \u003cdavej@redhat.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Andy Isaacson \u003cadi@hexapodia.org\u003e\nCc: Nai Xia \u003cnai.xia@gmail.com\u003e\nCc: Johannes Weiner \u003cjweiner@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "28d82dc1c4edbc352129f97f4ca22624d1fe61de",
      "tree": "a6fbd269d17134ff42597b4e02eba4345bf6d901",
      "parents": [
        "2ccd4f4d4737b37e21dd92c8c584c23cd87740a2"
      ],
      "author": {
        "name": "Jason Baron",
        "email": "jbaron@redhat.com",
        "time": "Thu Jan 12 17:17:43 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 12 20:13:04 2012 -0800"
      },
      "message": "epoll: limit paths\n\nThe current epoll code can be tickled to run basically indefinitely in\nboth loop detection path check (on ep_insert()), and in the wakeup paths.\nThe programs that tickle this behavior set up deeply linked networks of\nepoll file descriptors that cause the epoll algorithms to traverse them\nindefinitely.  A couple of these sample programs have been previously\nposted in this thread: https://lkml.org/lkml/2011/2/25/297.\n\nTo fix the loop detection path check algorithms, I simply keep track of\nthe epoll nodes that have been already visited.  Thus, the loop detection\nbecomes proportional to the number of epoll file descriptor and links.\nThis dramatically decreases the run-time of the loop check algorithm.  In\none diabolical case I tried it reduced the run-time from 15 mintues (all\nin kernel time) to .3 seconds.\n\nFixing the wakeup paths could be done at wakeup time in a similar manner\nby keeping track of nodes that have already been visited, but the\ncomplexity is harder, since there can be multiple wakeups on different\ncpus...Thus, I\u0027ve opted to limit the number of possible wakeup paths when\nthe paths are created.\n\nThis is accomplished, by noting that the end file descriptor points that\nare found during the loop detection pass (from the newly added link), are\nactually the sources for wakeup events.  I keep a list of these file\ndescriptors and limit the number and length of these paths that emanate\nfrom these \u0027source file descriptors\u0027.  In the current implemetation I\nallow 1000 paths of length 1, 500 of length 2, 100 of length 3, 50 of\nlength 4 and 10 of length 5.  Note that it is sufficient to check the\n\u0027source file descriptors\u0027 reachable from the newly added link, since no\nother \u0027source file descriptors\u0027 will have newly added links.  This allows\nus to check only the wakeup paths that may have gotten too long, and not\nre-check all possible wakeup paths on the system.\n\nIn terms of the path limit selection, I think its first worth noting that\nthe most common case for epoll, is probably the model where you have 1\nepoll file descriptor that is monitoring n number of \u0027source file\ndescriptors\u0027.  In this case, each \u0027source file descriptor\u0027 has a 1 path of\nlength 1.  Thus, I believe that the limits I\u0027m proposing are quite\nreasonable and in fact may be too generous.  Thus, I\u0027m hoping that the\nproposed limits will not prevent any workloads that currently work to\nfail.\n\nIn terms of locking, I have extended the use of the \u0027epmutex\u0027 to all\nepoll_ctl add and remove operations.  Currently its only used in a subset\nof the add paths.  I need to hold the epmutex, so that we can correctly\ntraverse a coherent graph, to check the number of paths.  I believe that\nthis additional locking is probably ok, since its in the setup/teardown\npaths, and doesn\u0027t affect the running paths, but it certainly is going to\nadd some extra overhead.  Also, worth noting is that the epmuex was\nrecently added to the ep_ctl add operations in the initial path loop\ndetection code using the argument that it was not on a critical path.\n\nAnother thing to note here, is the length of epoll chains that is allowed.\nCurrently, eventpoll.c defines:\n\n/* Maximum number of nesting allowed inside epoll sets */\n#define EP_MAX_NESTS 4\n\nThis basically means that I am limited to a graph depth of 5 (EP_MAX_NESTS\n+ 1).  However, this limit is currently only enforced during the loop\ncheck detection code, and only when the epoll file descriptors are added\nin a certain order.  Thus, this limit is currently easily bypassed.  The\nnewly added check for wakeup paths, stricly limits the wakeup paths to a\nlength of 5, regardless of the order in which ep\u0027s are linked together.\nThus, a side-effect of the new code is a more consistent enforcement of\nthe graph depth.\n\nThus far, I\u0027ve tested this, using the sample programs previously\nmentioned, which now either return quickly or return -EINVAL.  I\u0027ve also\ntesting using the piptest.c epoll tester, which showed no difference in\nperformance.  I\u0027ve also created a number of different epoll networks and\ntested that they behave as expectded.\n\nI believe this solves the original diabolical test cases, while still\npreserving the sane epoll nesting.\n\nSigned-off-by: Jason Baron \u003cjbaron@redhat.com\u003e\nCc: Nelson Elhage \u003cnelhage@ksplice.com\u003e\nCc: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2ccd4f4d4737b37e21dd92c8c584c23cd87740a2",
      "tree": "7c4048fc709612fa057e39350352445f2f26d211",
      "parents": [
        "888a214dc4c65e1486ef7d3ac6b0cf93ae3cc2c7"
      ],
      "author": {
        "name": "Sasha Levin",
        "email": "levinsasha928@gmail.com",
        "time": "Thu Jan 12 17:17:40 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 12 20:13:04 2012 -0800"
      },
      "message": "pipe: fail cleanly when root tries F_SETPIPE_SZ with big size\n\nWhen a user with the CAP_SYS_RESOURCE cap tries to F_SETPIPE_SZ a pipe\nwith size bigger than kmalloc() can alloc it spits out an ugly warning:\n\n  ------------[ cut here ]------------\n  WARNING: at mm/page_alloc.c:2095 __alloc_pages_nodemask+0x5d3/0x7a0()\n  Pid: 733, comm: a.out Not tainted 3.2.0-rc1+ #4\n  Call Trace:\n     warn_slowpath_common+0x75/0xb0\n     warn_slowpath_null+0x15/0x20\n     __alloc_pages_nodemask+0x5d3/0x7a0\n     __get_free_pages+0x12/0x50\n     __kmalloc+0x12b/0x150\n     pipe_set_size+0x75/0x120\n     pipe_fcntl+0xf8/0x140\n     do_fcntl+0x2d4/0x410\n     sys_fcntl+0x66/0xa0\n     system_call_fastpath+0x16/0x1b\n  ---[ end trace 432f702e6db7b5ee ]---\n\nInstead, make kcalloc() handle the overflow case and fail quietly.\n\n[akpm@linux-foundation.org: switch to sizeof(*bufs) for 80-column niceness]\nSigned-off-by: Sasha Levin \u003clevinsasha928@gmail.com\u003e\nCc: Alexander Viro \u003cviro@zeniv.linux.org.uk\u003e\nAcked-by: Pekka Enberg \u003cpenberg@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": "a2ef990ab5a6705a356d146dd773a3b359787497",
      "tree": "5eda6856d7e7662cc0742752f28e7626d4707f5f",
      "parents": [
        "bccd17294a26b67a8a19aaa120e3eeaa7da49281"
      ],
      "author": {
        "name": "Xiaotian Feng",
        "email": "xtfeng@gmail.com",
        "time": "Thu Jan 12 17:17:08 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 12 20:13:02 2012 -0800"
      },
      "message": "proc: fix null pointer deref in proc_pid_permission()\n\nget_proc_task() can fail to search the task and return NULL,\nput_task_struct() will then bomb the kernel with following oops:\n\n  BUG: unable to handle kernel NULL pointer dereference at 0000000000000010\n  IP: [\u003cffffffff81217d34\u003e] proc_pid_permission+0x64/0xe0\n  PGD 112075067 PUD 112814067 PMD 0\n  Oops: 0002 [#1] PREEMPT SMP\n\nThis is a regression introduced by commit 0499680a (\"procfs: add hidepid\u003d\nand gid\u003d mount options\").  The kernel should return -ESRCH if\nget_proc_task() failed.\n\nSigned-off-by: Xiaotian Feng \u003cdannyfeng@tencent.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Vasiliy Kulikov \u003csegoon@openwall.com\u003e\nCc: Stephen Wilson \u003cwilsons@start.ca\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "90ab5ee94171b3e28de6bb42ee30b527014e0be7",
      "tree": "fcf89889f6e881f2b231d3d20287c08174ce4b54",
      "parents": [
        "476bc0015bf09dad39d36a8b19f76f0c181d1ec9"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jan 13 09:32:20 2012 +1030"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jan 13 09:32:20 2012 +1030"
      },
      "message": "module_param: make bool parameters really bool (drivers \u0026 misc)\n\nmodule_param(bool) used to counter-intuitively take an int.  In\nfddd5201 (mid-2009) we allowed bool or int/unsigned int using a messy\ntrick.\n\nIt\u0027s time to remove the int/unsigned int option.  For this version\nit\u0027ll simply give a warning, but it\u0027ll break next kernel version.\n\nAcked-by: Mauro Carvalho Chehab \u003cmchehab@redhat.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "69116f279a9eaf4c540934269342d9149538fc79",
      "tree": "eb335b97a99fb25ce548dd06f053a81e3c56016f",
      "parents": [
        "bafeafeab94b8d3019aac15c2df2ce47b08a6363"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jan 13 09:32:17 2012 +1030"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jan 13 09:32:17 2012 +1030"
      },
      "message": "module_param: avoid bool abuse, add bint for special cases.\n\nFor historical reasons, we allow module_param(bool) to take an int (or\nan unsigned int).  That\u0027s going away.\n\nA few drivers really want an int: they set it to -1 and a parameter\nwill set it to 0 or 1.  This sucks: reading them from sysfs will give\n\u0027Y\u0027 for both -1 and 1, but if we change it to an int, then the users\nmight be broken (if they did \"param\" instead of \"param\u003d1\").\n\nUse a new \u0027bint\u0027 parser for them.\n\n(ntfs has a different problem: it needs an int for debug_msgs because\nit\u0027s also exposed via sysctl.)\n\nCc: Steve Glendinning \u003csteve.glendinning@smsc.com\u003e\nCc: Jean Delvare \u003ckhali@linux-fr.org\u003e\nCc: Guenter Roeck \u003cguenter.roeck@ericsson.com\u003e\nCc: Hoang-Nam Nguyen \u003chnguyen@de.ibm.com\u003e\nCc: Christoph Raisch \u003craisch@de.ibm.com\u003e\nCc: Roland Dreier \u003croland@kernel.org\u003e\nCc: Sean Hefty \u003csean.hefty@intel.com\u003e\nCc: Hal Rosenstock \u003chal.rosenstock@gmail.com\u003e\nCc: linux390@de.ibm.com\nCc: Anton Altaparmakov \u003canton@tuxera.com\u003e\nCc: Jaroslav Kysela \u003cperex@perex.cz\u003e\nCc: Takashi Iwai \u003ctiwai@suse.de\u003e\nCc: lm-sensors@lm-sensors.org\nCc: linux-rdma@vger.kernel.org\nCc: linux-s390@vger.kernel.org\nCc: linux-ntfs-dev@lists.sourceforge.net\nCc: alsa-devel@alsa-project.org\nAcked-by: Takashi Iwai \u003ctiwai@suse.de\u003e (For the sound part)\nAcked-by: Guenter Roeck \u003cguenter.roeck@ericsson.com\u003e (For the hwmon driver)\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "7c5465d6ccd759caa959828e2add5603518dafc4",
      "tree": "0d7a8dff18b667da2d2d1394c8e4585e7e098920",
      "parents": [
        "c0411a94a8f318379464e29dd81db806249dbca6"
      ],
      "author": {
        "name": "Peng Tao",
        "email": "bergwolf@gmail.com",
        "time": "Thu Jan 12 23:18:46 2012 +0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jan 12 16:52:10 2012 -0500"
      },
      "message": "pnfsblock: alloc short extent before submit bio\n\nAs discussed earlier, it is better for block client to allocate memory for\ntracking extents state before submitting bio. So the patch does it by allocating\na short_extent for every INVALID extent touched by write pagelist and for\nevery zeroing page we created, saving them in layout header. Then in end_io we\ncan just use them to create commit list items and avoid memory allocation there.\n\nSigned-off-by: Peng Tao \u003cpeng_tao@emc.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@tonian.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c0411a94a8f318379464e29dd81db806249dbca6",
      "tree": "3a466db09ab911ab68e4b1aeed4d6981aa0642c3",
      "parents": [
        "72c508879979522de347bcec706507e00d7c443d"
      ],
      "author": {
        "name": "Peng Tao",
        "email": "bergwolf@gmail.com",
        "time": "Thu Jan 12 23:18:44 2012 +0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jan 12 16:52:10 2012 -0500"
      },
      "message": "pnfsblock: remove rpc_call_ops from struct parallel_io\n\nblock layout can just make use of generic read/write_done.\n\nSigned-off-by: Peng Tao \u003cpeng_tao@emc.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@tonian.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "72c508879979522de347bcec706507e00d7c443d",
      "tree": "e5e7729cf427f390b8314b83143342274f8d3d03",
      "parents": [
        "60c52e3a72fda10e82f38b6f979956eb2dcb3d4e"
      ],
      "author": {
        "name": "Peng Tao",
        "email": "bergwolf@gmail.com",
        "time": "Thu Jan 12 23:18:42 2012 +0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jan 12 16:52:10 2012 -0500"
      },
      "message": "pnfsblock: move find lock page logic out of bl_write_pagelist\n\nAlso avoid unnecessary lock_page if page is handled by others.\n\nSigned-off-by: Peng Tao \u003cpeng_tao@emc.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@tonian.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "60c52e3a72fda10e82f38b6f979956eb2dcb3d4e",
      "tree": "61196d0f4619eb56c5d2b50fb72d292ff6bb5521",
      "parents": [
        "74a6eeb44ca6174d9cc93b9b8b4d58211c57bc80"
      ],
      "author": {
        "name": "Peng Tao",
        "email": "bergwolf@gmail.com",
        "time": "Thu Jan 12 23:18:40 2012 +0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jan 12 16:52:09 2012 -0500"
      },
      "message": "pnfsblock: cleanup bl_mark_sectors_init\n\nIt does not need to manipulate on partial initialized blocks.\nWriteback code takes care of it.\n\nSigned-off-by: Peng Tao \u003cpeng_tao@emc.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@tonian.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "74a6eeb44ca6174d9cc93b9b8b4d58211c57bc80",
      "tree": "7aa0fc19c383f31123232103121756e48fbb84ed",
      "parents": [
        "93a3844ee0f843b05a1df4b52e1a19ff26b98d24"
      ],
      "author": {
        "name": "Peng Tao",
        "email": "bergwolf@gmail.com",
        "time": "Thu Jan 12 23:18:48 2012 +0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jan 12 16:39:05 2012 -0500"
      },
      "message": "pnfsblock: limit bio page count\n\nOne bio can have at most BIO_MAX_PAGES pages. We should limit it bec otherwise\nbio_alloc will fail when there are many pages in one read/write_pagelist.\n\nCc: \u003cstable@vger.kernel.org\u003e #3.1+\nSigned-off-by: Peng Tao \u003cpeng_tao@emc.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@tonian.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "93a3844ee0f843b05a1df4b52e1a19ff26b98d24",
      "tree": "efd2ca7a8a711e779a04c47af6166abd8f844073",
      "parents": [
        "57582b372f63d0f655b1a35b0d306d73d1a46775"
      ],
      "author": {
        "name": "Peng Tao",
        "email": "bergwolf@gmail.com",
        "time": "Thu Jan 12 23:18:47 2012 +0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jan 12 16:39:04 2012 -0500"
      },
      "message": "pnfsblock: don\u0027t spinlock when freeing block_dev\n\nbl_free_block_dev() may sleep. We can not call it with spinlock held.\nBesides, there is no need to take bm_lock as we are last user freeing bm_devlist.\n\nCc: \u003cstable@vger.kernel.org\u003e #3.1+\nSigned-off-by: Peng Tao \u003cpeng_tao@emc.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@tonian.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "57582b372f63d0f655b1a35b0d306d73d1a46775",
      "tree": "27c27ca5a20720d835b901760b52b66060ddb840",
      "parents": [
        "82b906d6550ee5fe0d5553359b3c9692dd0aed31"
      ],
      "author": {
        "name": "Peng Tao",
        "email": "bergwolf@gmail.com",
        "time": "Thu Jan 12 23:18:45 2012 +0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jan 12 16:38:55 2012 -0500"
      },
      "message": "pnfsblock: clean up _add_entry\n\nIt is wrong to kmalloc in _add_entry() as it is inside\nspinlock. memory should be already allocated _add_entry() is called.\n\nSigned-off-by: Peng Tao \u003cpeng_tao@emc.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@tonian.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "82b906d6550ee5fe0d5553359b3c9692dd0aed31",
      "tree": "781821e3635458fc88cba66e8d68f8e3d671d7aa",
      "parents": [
        "39e567ae36fe03c2b446e1b83ee3d39bea08f90b"
      ],
      "author": {
        "name": "Peng Tao",
        "email": "bergwolf@gmail.com",
        "time": "Thu Jan 12 23:18:43 2012 +0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jan 12 16:38:51 2012 -0500"
      },
      "message": "pnfsblock: set read/write tk_status to pnfs_error\n\nTo pass the IO status to upper layer.\n\nSigned-off-by: Peng Tao \u003cpeng_tao@emc.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@tonian.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "39e567ae36fe03c2b446e1b83ee3d39bea08f90b",
      "tree": "0f7c3c1ec9dd0fb7a8b36e3ac4818eb870de0580",
      "parents": [
        "de040beccd52bb5fcac90031505384d037b1111c"
      ],
      "author": {
        "name": "Peng Tao",
        "email": "bergwolf@gmail.com",
        "time": "Thu Jan 12 23:18:41 2012 +0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jan 12 16:38:49 2012 -0500"
      },
      "message": "pnfsblock: acquire im_lock in _preload_range\n\nWhen calling _add_entry, we should take the im_lock to protect\nagains other modifiers.\n\nCc: \u003cstable@vger.kernel.org\u003e #3.1+\nSigned-off-by: Peng Tao \u003cpeng_tao@emc.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@tonian.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "de040beccd52bb5fcac90031505384d037b1111c",
      "tree": "c31adca422373e3c121ab7751d1dce90696c997f",
      "parents": [
        "363e0df057ea8da539645fe4c3c227e3d44054cc"
      ],
      "author": {
        "name": "Peng Tao",
        "email": "bergwolf@gmail.com",
        "time": "Tue Jan 10 22:42:47 2012 +0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jan 12 16:31:51 2012 -0500"
      },
      "message": "NFS4: fix compile warnings in nfs4proc.c\n\ncompile in nfs-for-3.3 branch shows following warnings. Fix it here.\n\nfs/nfs/nfs4proc.c: In function ‘__nfs4_get_acl_uncached’:\nfs/nfs/nfs4proc.c:3589: warning: format ‘%ld’ expects type ‘long int’, but argument 4 has type ‘size_t’\nfs/nfs/nfs4proc.c:3589: warning: format ‘%ld’ expects type ‘long int’, but argument 6 has type ‘size_t’\n\nSigned-off-by: Peng Tao \u003cpeng_tao@emc.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "363e0df057ea8da539645fe4c3c227e3d44054cc",
      "tree": "9248304c9e407720e328c8cb4001dd3abaa74758",
      "parents": [
        "13fff2f35fd21d69ee84ef6a78610420e1a42818"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "dan.carpenter@oracle.com",
        "time": "Thu Jan 12 10:16:14 2012 +0300"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jan 12 16:30:07 2012 -0500"
      },
      "message": "nfs: check for integer overflow in decode_devicenotify_args()\n\nOn 32 bit, if n is too large then \"n * sizeof(*args-\u003edevs)\" could\noverflow and args-\u003edevs would be smaller than expected.\n\nSigned-off-by: Dan Carpenter \u003cdan.carpenter@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "13fff2f35fd21d69ee84ef6a78610420e1a42818",
      "tree": "5e826f645baeb0c8bbe886658e3ad72346d53871",
      "parents": [
        "0e0243dc35a2349b3946e54f90e874be396fdb8b"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "dan.carpenter@oracle.com",
        "time": "Thu Jan 12 10:07:35 2012 +0300"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jan 12 16:30:03 2012 -0500"
      },
      "message": "NFS: cleanup endian type in decode_ds_addr()\n\nport is supposed to be a __be16 here.  The existing code should work\nfine, but this is a cleanup.\n\nSigned-off-by: Dan Carpenter \u003cdan.carpenter@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0e0243dc35a2349b3946e54f90e874be396fdb8b",
      "tree": "e73bcb2dc5e45ce56a35ca3808287425f39f69c2",
      "parents": [
        "2485a4b610171f4e1c4ab0d053569747795c1bbe"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "dan.carpenter@oracle.com",
        "time": "Thu Jan 12 10:06:05 2012 +0300"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jan 12 16:29:51 2012 -0500"
      },
      "message": "NFS: add an endian notation\n\nThis function returns a big endian value.  The implementation in\nfs/nfs/callback_proc.c is declared with \"__be32\" but the .h file uses\n\"unsigned\" instead.  It makes sparse complain:\n\nfs/nfs/callback_proc.c:232:8: error:\n\tsymbol \u0027nfs4_callback_layoutrecall\u0027 redeclared with different\n\ttype (originally declared at fs/nfs/callback.h:165) - different\n\tbase types\n\nSigned-off-by: Dan Carpenter \u003cdan.carpenter@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6733e54b669c600eb8e451939ad55130db664fed",
      "tree": "2a8c24c856fa3f5d7d58a3eb39da943ca1c57e65",
      "parents": [
        "bcf8a3dfcb274cf6654a19e12e244f3af8c0d355",
        "451d0f599934fd97faf54a5d7954b518e66192cb"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 12 12:39:21 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 12 12:39:21 2012 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse:\n  FUSE: Notifying the kernel of deletion.\n  fuse: support ioctl on directories\n  fuse: Use kcalloc instead of kzalloc to allocate array\n  fuse: llseek optimize SEEK_CUR and SEEK_SET\n"
    },
    {
      "commit": "83eb26af0db71f2dfe551405c55d982288fa6178",
      "tree": "c7bc62a810483e328cbe2b931416e58ec655ab9b",
      "parents": [
        "0e805a1d857799352e51e8697c0b1a30aec16913"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Wed Jan 11 17:41:01 2012 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Jan 12 11:00:51 2012 -0800"
      },
      "message": "ceph: ensure prealloc_blob is in place when removing xattr\n\nIn __ceph_build_xattrs_blob(), if a ceph inode\u0027s extended attributes\nare marked dirty, all attributes recorded in its rb_tree index are\nformatted into a \"blob\" buffer.  The target buffer is recorded in\nceph_inode-\u003ei_xattrs.prealloc_blob, and it is expected to exist and\nbe of sufficient size to hold the attributes.\n\nThe extended attributes are marked dirty in two cases: when a new\nattribute is added to the inode; or when one is removed.  In the\nformer case work is done to ensure the prealloc_blob buffer is\nproperly set up, but in the latter it is not.\n\nChange the logic in ceph_removexattr() so it matches what is\ndone in ceph_setxattr().  Note that this is done in a way that\nkeeps the two blocks of code nearly identical, in anticipation\nof a subsequent patch that encapsulates some of this logic into\none or more helper routines.\n\nSigned-off-by: Alex Elder \u003celder@dreamhost.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "a40dc6cc2e121abcbd1b22583ef5447763df510c",
      "tree": "1c747cfabf33c6c9ad56811fabd22285816fc27a",
      "parents": [
        "46f72b349290d2bd7aecea38f02609d814332df6"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jan 10 09:12:55 2012 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Jan 12 11:00:40 2012 -0800"
      },
      "message": "ceph: enable/disable dentry complete flags via mount option\n\nEnable/disable use of the dentry dir \u0027complete\u0027 flag via a mount option.\nThis lets the admin control whether ceph uses the dcache to satisfy\nnegative lookups or readdir when it has the entire directory contents in\nits cache.\n\nThis is purely a performance optimization; correctness is guaranteed\nwhether it is enabled or not.\n\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    }
  ],
  "next": "46f72b349290d2bd7aecea38f02609d814332df6"
}
