)]}'
{
  "log": [
    {
      "commit": "5f248c9c251c60af3403902b26e08de43964ea0b",
      "tree": "6d3328e72a7e4015a64017eb30be18095c6a3c64",
      "parents": [
        "f6cec0ae58c17522a7bc4e2f39dae19f199ab534",
        "dca332528bc69e05f67161e1ed59929633d5e63d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 10 11:26:52 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 10 11:26:52 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (96 commits)\n  no need for list_for_each_entry_safe()/resetting with superblock list\n  Fix sget() race with failing mount\n  vfs: don\u0027t hold s_umount over close_bdev_exclusive() call\n  sysv: do not mark superblock dirty on remount\n  sysv: do not mark superblock dirty on mount\n  btrfs: remove junk sb_dirt change\n  BFS: clean up the superblock usage\n  AFFS: wait for sb synchronization when needed\n  AFFS: clean up dirty flag usage\n  cifs: truncate fallout\n  mbcache: fix shrinker function return value\n  mbcache: Remove unused features\n  add f_flags to struct statfs(64)\n  pass a struct path to vfs_statfs\n  update VFS documentation for method changes.\n  All filesystems that need invalidate_inode_buffers() are doing that explicitly\n  convert remaining -\u003eclear_inode() to -\u003eevict_inode()\n  Make -\u003edrop_inode() just return whether inode needs to be dropped\n  fs/inode.c:clear_inode() is gone\n  fs/inode.c:evict() doesn\u0027t care about delete vs. non-delete paths now\n  ...\n\nFix up trivial conflicts in fs/nilfs2/super.c\n"
    },
    {
      "commit": "b57922d97fd6f79b6dbe6db0c4fd30d219fa08c1",
      "tree": "1d39e9cd8e1c1f502fb7e985a08286859c69aa36",
      "parents": [
        "45321ac54316eaeeebde0b5f728a1791e500974c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 07 14:34:48 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:48:37 2010 -0400"
      },
      "message": "convert remaining -\u003eclear_inode() to -\u003eevict_inode()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a4ffdde6e56fdf8c34ddadc2674d6eb978083369",
      "tree": "0fa07df92d804cb7d0482135195e4835cb16403a",
      "parents": [
        "b5fc510c48f631882ccec3c0f02a25d5b67de09f"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jun 02 17:38:30 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:47:44 2010 -0400"
      },
      "message": "simplify checks for I_CLEAR/I_FREEING\n\nadd I_CLEAR instead of replacing I_FREEING with it.  I_CLEAR is\nequivalent to I_FREEING for almost all code looking at either;\nit\u0027s there to keep track of having called clear_inode() exactly\nonce per inode lifetime, at some point after having set I_FREEING.\nI_CLEAR and I_FREEING never get set at the same time with the\ncurrent code, so we can switch to setting i_flags to I_FREEING | I_CLEAR\ninstead of I_CLEAR without loss of information.  As the result of\nsuch change, checks become simpler and the amount of code that needs\nto know about I_CLEAR shrinks a lot.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "fa9b227e9019ebaeeb06224ba531a490f91144b3",
      "tree": "ff3644c6572d2b22db0d8b71f1a79ae0ad33d102",
      "parents": [
        "2f246fd0f126f3b3c23a4e6b7109350e83356bd6"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Mon Jun 14 05:17:31 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:47:42 2010 -0400"
      },
      "message": "xfs: new truncate sequence\n\nConvert XFS to the new truncate sequence.  We still can have errors after\nupdating the file size in xfs_setattr, but these are real I/O errors and lead\nto a transaction abort and filesystem shutdown, so they are not an issue.\n\nErrors from -\u003ewrite_begin and write_end can now be handled correctly because\nwe can actually get rid of the delalloc extents while previous the buffer\nstate was stipped in block_invalidatepage.\n\nThere is still no error handling for -\u003edirect_IO, because doing so will need\nsome major restructuring given that we only have the iolock shared and do not\nhold i_mutex at all.  Fortunately leaving the normally allocated blocks behind\nthere is not a major issue and this will get cleaned up by xfs_free_eofblock\nlater.\n\nNote: the patch is against Al\u0027s vfs.git tree as that contains the nessecary\npreparations.  I\u0027d prefer to get it applied there so that we can get some\ntesting in linux-next.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "155130a4f7848b1aac439cab6bda1a175507c71c",
      "tree": "5019b14b0a9221b08959196e01e3f9326957d678",
      "parents": [
        "6e1db88d536adcbbfe562b2d4b7d6425784fff12"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Jun 04 11:29:58 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:47:33 2010 -0400"
      },
      "message": "get rid of block_write_begin_newtrunc\n\nMove the call to vmtruncate to get rid of accessive blocks to the callers\nin preparation of the new truncate sequence and rename the non-truncating\nversion to block_write_begin.\n\nWhile we\u0027re at it also remove several unused arguments to block_write_begin.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "eafdc7d190a944c755a9fe68573c193e6e0217e7",
      "tree": "915c3cc8004706fabf88eae1ab123a3fa0147516",
      "parents": [
        "256249584bda1a9357e2d29987a37f5b2df035f6"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Jun 04 11:29:53 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:47:29 2010 -0400"
      },
      "message": "sort out blockdev_direct_IO variants\n\nMove the call to vmtruncate to get rid of accessive blocks to the callers\nin prepearation of the new truncate calling sequence.  This was only done\nfor DIO_LOCKING filesystems, so the __blockdev_direct_IO_newtrunc variant\nwas not needed anyway.  Get rid of blockdev_direct_IO_no_locking and\nits _newtrunc variant while at it as just opencoding the two additional\nparamters is shorted than the name suffix.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "90e0c225968f0878e090c7ff3f88323973476cee",
      "tree": "30fff5a5cb18b08d40e4d496489be6ce714a6cde",
      "parents": [
        "938a73b959cf77aadc41bded3bf416b618aa20b3",
        "5f11e6a44059f728dddd8d0dbe5b4368ea93575b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 07 12:57:07 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 07 12:57:07 2010 -0700"
      },
      "message": "Merge branch \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6\n\n* \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6:\n  ext3: Fix dirtying of journalled buffers in data\u003djournal mode\n  ext3: default to ordered mode\n  quota: Use mark_inode_dirty_sync instead of mark_inode_dirty\n  quota: Change quota error message to print out disk and function name\n  MAINTAINERS: Update entries of ext2 and ext3\n  MAINTAINERS: Update address of Andreas Dilger\n  ext3: Avoid filesystem corruption after a crash under heavy delete load\n  ext3: remove vestiges of nobh support\n  ext3: Fix set but unused variables\n  quota: clean up quota active checks\n  quota: Clean up the namespace in dqblk_xfs.h\n  quota: check quota reservation on remove_dquot_ref\n"
    },
    {
      "commit": "209fb87a259ead17e966627b7f053d16a96898da",
      "tree": "2cb348a32e2c1488cfb14189e975bcbcb6a0695f",
      "parents": [
        "fb511f2150174b18b28ad54708c1adda0df39b17"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Sun Jul 18 21:17:11 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon Jul 26 16:09:19 2010 -0500"
      },
      "message": "xfs simplify and speed up direct I/O completions\n\nOur current handling of direct I/O completions is rather suboptimal,\nbecause we defer it to a workqueue more often than needed, and we\nperform a much to aggressive flush of the workqueue in case unwritten\nextent conversions happen.\n\nThis patch changes the direct I/O reads to not even use a completion\nhandler, as we don\u0027t bother to use it at all, and to perform the unwritten\nextent conversions in caller context for synchronous direct I/O.\n\nFor a small I/O size direct I/O workload on a consumer grade SSD, such as\nthe untar of a kernel tree inside qemu this patch gives speedups of\nabout 5%.  Getting us much closer to the speed of a native block device,\nor a fully allocated XFS file.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "fb511f2150174b18b28ad54708c1adda0df39b17",
      "tree": "2642c10c35a8dcbf7aa1e46115a5b48555aa258b",
      "parents": [
        "40e2e97316af6e62affab7a392e792494b8d9dde"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Sun Jul 18 21:17:10 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon Jul 26 16:09:10 2010 -0500"
      },
      "message": "xfs: move aio completion after unwritten extent conversion\n\nIf we write into an unwritten extent using AIO we need to complete the AIO\nrequest after the extent conversion has finished.  Without that a read could\nrace to see see the extent still unwritten and return zeros.   For synchronous\nI/O we already take care of that by flushing the xfsconvertd workqueue (which\nmight be a bit of overkill).\n\nTo do that add iocb and result fields to struct xfs_ioend, so that we can\ncall aio_complete from xfs_end_io after the extent conversion has happened.\nNote that we need a new result field as io_error is used for positive errno\nvalues, while the AIO code can return negative error values and positive\ntransfer sizes.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "40e2e97316af6e62affab7a392e792494b8d9dde",
      "tree": "981ce3b464467893683d47f52ae5d35fdd32d46a",
      "parents": [
        "696123fca877905696591829c97a2cef11c8d048"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Sun Jul 18 21:17:09 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon Jul 26 16:09:02 2010 -0500"
      },
      "message": "direct-io: move aio_complete into -\u003eend_io\n\nFilesystems with unwritten extent support must not complete an AIO request\nuntil the transaction to convert the extent has been commited.  That means\nthe aio_complete calls needs to be moved into the -\u003eend_io callback so\nthat the filesystem can control when to call it exactly.\n\nThis makes a bit of a mess out of dio_complete and the -\u003eend_io callback\nprototype even more complicated.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "939d723b721eef71060201738653a73443ff4510",
      "tree": "3965391cebe9f1e0c1acb0b394c50c1b83312aa3",
      "parents": [
        "a64afb057b607c04383ab5fb53c51421ba18c434"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Tue Jul 20 17:51:16 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon Jul 26 13:16:52 2010 -0500"
      },
      "message": "xfs: kill the b_strat callback in xfs_buf\n\nThe b_strat callback is used by xfs_buf_iostrategy to perform additional\nchecks before submitting a buffer.  It is used in xfs_bwrite and when\nwriting out delayed buffers.  In xfs_bwrite it we can de-virtualize the\ncall easily as b_strat is set a few lines above the call to\nxfs_buf_iostrategy.  For the delayed buffers the rationale is a bit\nmore complicated:\n\n - there are three callers of xfs_buf_delwri_queue, which places buffers\n   on the delwri list:\n    (1) xfs_bdwrite - this sets up b_strat, so it\u0027s fine\n    (2) xfs_buf_iorequest.  None of the callers can have XBF_DELWRI set:\n\t- xlog_bdstrat is only used for log buffers, which are never delwri\n\t- _xfs_buf_read explicitly clears the delwri flag\n\t- xfs_buf_iodone_work retries log buffers only\n\t- xfsbdstrat - only used for reads, superblock writes without the\n\t  delwri flag, log I/O and file zeroing with explicitly allocated\n\t  buffers.\n\t- xfs_buf_iostrategy - only calls xfs_buf_iorequest if b_strat is\n\t  not set\n    (3) xfs_buf_unlock\n\t- only puts the buffer on the delwri list if the DELWRI flag is\n\t  already set.  The DELWRI flag is only ever set in xfs_bwrite,\n\t  xfs_buf_iodone_callbacks, or xfs_trans_log_buf.  For\n\t  xfs_buf_iodone_callbacks and xfs_trans_log_buf we require\n\t  an initialized buf item, which means b_strat was set to\n\t  xfs_bdstrat_cb in xfs_buf_item_init.\n\nConclusion: we can just get rid of the callback and replace it with\nexplicit calls to xfs_bdstrat_cb.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\n\n"
    },
    {
      "commit": "a64afb057b607c04383ab5fb53c51421ba18c434",
      "tree": "8f90f37bbdf1c81311342d8781da1742b3192f74",
      "parents": [
        "0664ce8d0fde731d76fa7e86b3afb54f3a6830ff"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Tue Jul 20 17:50:52 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon Jul 26 13:16:51 2010 -0500"
      },
      "message": "xfs: remove obsolete osyncisosync mount option\n\nSince Linux 2.6.33 the kernel has support for real O_SYNC, which made\nthe osyncisosync option a no-op.  Warn the users about this and remove\nthe mount flag for it.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\n\n"
    },
    {
      "commit": "0f1a932f5d4d6ee71afb141914e2d5f11f27eee1",
      "tree": "231f4a8cd8baa2a948205a842a4ebc323b162c35",
      "parents": [
        "3f34885cd7c6a3f4deea48e3bbc704d91d5704f4"
      ],
      "author": {
        "name": "Tony Luck",
        "email": "tony.luck@intel.com",
        "time": "Tue Jul 20 17:54:41 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon Jul 26 13:16:50 2010 -0500"
      },
      "message": "xfs: Fix build when CONFIG_XFS_POSIX_ACL\u003dn\n\nWhen CONFIG_XFS_POSIX_ACL is not set \"xfs_check_acl\" is #defined\nto NULL - which breaks the code attempting to add a tracepoint\non this function.\n\nOnly define the tracepoint when the function exists.\n\nSigned-off-by: Tony Luck \u003ctony.luck@intel.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\n"
    },
    {
      "commit": "aea1b9532143218f8599ecedbbd6bfbf812385e1",
      "tree": "3b6aa49dffcf982119999578324926a2dd955264",
      "parents": [
        "4a7edddcb5b14ddb5962e6906b6fd6b500d7a361"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Jul 20 17:54:12 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon Jul 26 13:16:49 2010 -0500"
      },
      "message": "xfs: use GFP_NOFS for page cache allocation\n\nAvoid a lockdep warning by preventing page cache allocation from\nrecursing back into the filesystem during memory reclaim.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Alex Elder \u003caelder@sgi.com\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\n"
    },
    {
      "commit": "2f11feabb19748c0ffa2eb82d438e8a91b9f6ea0",
      "tree": "02564de802ac344b7c2048ed10438443356bfce1",
      "parents": [
        "ec53d1dbb3ca960e7b552397613358ba1dbd12bd"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Jul 20 17:53:25 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon Jul 26 13:16:48 2010 -0500"
      },
      "message": "xfs: simplify and remove xfs_ireclaim\n\nxfs_ireclaim has to get and put te pag structure because it is only\ncalled with the inode to reclaim. The one caller of this function\nalready has a reference on the pag and a pointer to is, so move the\nradix tree delete to the caller and remove xfs_ireclaim completely.\nThis avoids a xfs_perag_get/put on every inode being reclaimed.\n\nThe overhead was noticed in a bug report at:\n\nhttps://bugzilla.kernel.org/show_bug.cgi?id\u003d16348\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Alex Elder \u003caelder@sgi.com\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\n"
    },
    {
      "commit": "ec53d1dbb3ca960e7b552397613358ba1dbd12bd",
      "tree": "9b04fd4e4f1149ce0b5927c9f9a89d26fa6a3d4a",
      "parents": [
        "a4190f90b4e22bde8b01b0086e00dd95439e2edd"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Jul 20 17:52:59 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon Jul 26 13:16:48 2010 -0500"
      },
      "message": "xfs: don\u0027t block on buffer read errors\n\nxfs_buf_read() fails to detect dispatch errors before attempting to\nwait on sychronous IO. If there was an error, it will get stuck\nforever, waiting for an I/O that was never started. Make sure the\nerror is detected correctly.\n\nFurther, such a failure can leave locked pages in the page cache\nwhich will cause a later operation to hang on the page. Ensure that\nwe correctly process pages in the buffers when we get a dispatch\nerror.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\n"
    },
    {
      "commit": "a4190f90b4e22bde8b01b0086e00dd95439e2edd",
      "tree": "e92d34f18af6f06c0f637345286579d66c7fc659",
      "parents": [
        "fa17b25e9f95375081b43a741cf1c188682ec588"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Mon Jul 12 06:40:58 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon Jul 26 13:16:47 2010 -0500"
      },
      "message": "xfs: move inode shrinker unregister even earlier\n\nI missed Dave Chinner\u0027s second revision of this change, and pushed\nhis first version out to the repository instead.\n\n\tcommit a476c59ebb279d738718edc0e3fb76aab3687114\n\tAuthor: Dave Chinner \u003cdchinner@redhat.com\u003e\n\nThis commit compensates for that by moving a block of code up a bit\nfurther, with a result that matches the the effect of Dave\u0027s second\nversion.\n\nDave\u0027s first version was:\n\tReviewed-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nDave\u0027s second version was:\n\tReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\nReviewed-by: Eric Sandeen \u003csandeen@redhat.com\u003e\n"
    },
    {
      "commit": "fa17b25e9f95375081b43a741cf1c188682ec588",
      "tree": "6b1aee5edbffdcde5e803295c6c065d4a24fff13",
      "parents": [
        "78558fe8d8326b2395da33456cd9eec57ffc081a"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Sat Jul 03 09:21:17 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon Jul 26 13:16:47 2010 -0500"
      },
      "message": "xfs: remove a dmapi leftover\n\nThe open_exec file operation is only added by the external dmapi\npatch.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Alex Elder \u003caelder@sgi.com\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "78558fe8d8326b2395da33456cd9eec57ffc081a",
      "tree": "cd0592501ea68c3ccc5f2372fcc00e51c9e61b9b",
      "parents": [
        "d4f7a5cbd5449a3d2097f601f588886ea7b70dc3"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Mon Jun 28 10:34:57 2010 -0400"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon Jul 26 13:16:46 2010 -0500"
      },
      "message": "xfs: writepage always has buffers\n\nThese days we always have buffers thanks to -\u003epage_mkwrite.  And we\nalready have an assert a few lines above tripping in case that was\nnot true due to a bug.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "d4f7a5cbd5449a3d2097f601f588886ea7b70dc3",
      "tree": "79df9adda1c9aa606f55df507db5b328ac58fd59",
      "parents": [
        "651701d71da4dc0ac607f17a638e77906f0d280e"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Mon Jun 28 10:34:44 2010 -0400"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon Jul 26 13:16:46 2010 -0500"
      },
      "message": "xfs: allow writeback from kswapd\n\nWe only need disable I/O from direct or memcg reclaim.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "2727ccc950ae17375b15005403e1c35ba8fec1df",
      "tree": "7e405f93bc25589e8506701f73da8344f2856907",
      "parents": [
        "cca28fb83d9e60779bb348edc33a62068e5f04a4"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Jun 25 11:08:40 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon Jul 26 13:16:45 2010 -0500"
      },
      "message": "xfs: unregister inode shrinker before freeing filesystem structures\n\nCurrently we don\u0027t remove the XFS mount from the shrinker list until\nlate in the unmount path. By this time, we have already torn down\nthe internals of the filesystem (e.g. the per-ag structures), and\nhence if the shrinker is executed between the teardown and the\nunregistering, the shrinker will get NULL per-ag structure pointers\nand panic trying to dereference them.\n\nFix this by removing the xfs mount from the shrinker list before\ntearing down it\u0027s internal structures.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "cca28fb83d9e60779bb348edc33a62068e5f04a4",
      "tree": "182ab465eadfb00ff4e1d0717b6dea127cba18e3",
      "parents": [
        "f2d6761433d69d94e0b39ac44ef0f0f0b0508065"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Thu Jun 24 11:57:09 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon Jul 26 13:16:44 2010 -0500"
      },
      "message": "xfs: split xfs_itrace_entry\n\nReplace the xfs_itrace_entry catchall with specific trace points.  For\nmost simple callers we now use the simple inode class, which used to\nbe the iget class, but add more details tracing for namespace events,\nwhich now includes the name of the directory entries manipulated.\n\nRemove the xfs_inactive trace point, which is a duplicate of the clear_inode\none, and the xfs_change_file_space trace point, which is immediately\nfollowed by the more specific alloc/free space trace points.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\n\n"
    },
    {
      "commit": "ef35e9255d4ed12522e836fbcec861e7306d794a",
      "tree": "4ae5b2aef3f8dac9dd44490f6952e359239aa117",
      "parents": [
        "d2e078c33c24f97411b0fdd7cd2173e68125e7e3"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Thu Jun 24 11:51:19 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon Jul 26 13:16:44 2010 -0500"
      },
      "message": "xfs: remove xfs_iput_new\n\nWe never get an i_mode of 0 or a locked VFS inode until we pass in the\nXFS_IGET_CREATE flag to xfs_iget, which makes xfs_iput_new equivalent to\nxfs_iput for the only caller.  In addition to that xfs_nfs_get_inode\ndoes not even need to lock the inode given that the generation never changes\nfor a life inode, so just pass a 0 lock_flags to xfs_iget and release\nthe inode using IRELE in the error path.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\n\n"
    },
    {
      "commit": "d2e078c33c24f97411b0fdd7cd2173e68125e7e3",
      "tree": "596dafaa5f9f6336a62350a889926184a93a3850",
      "parents": [
        "807cbbdb438d172b87b380eebc1f1c1a5a3549b2"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Thu Jun 24 11:50:22 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon Jul 26 13:16:43 2010 -0500"
      },
      "message": "xfs: some iget tracing cleanups / fixes\n\nThe xfs_iget_alloc/found tracepoints are a bit misnamed and misplaced.\nRename them to xfs_iget_hit/xfs_iget_miss and move them to the beggining\nof the xfs_iget_cache_hit/miss functions.  Add a new xfs_iget_reclaim_fail\ntracepoint for the case where we fail to re-initialize a VFS inode,\nand add a second instance of the xfs_iget_skip tracepoint for the case\nof a failed igrab() call.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\n\n"
    },
    {
      "commit": "807cbbdb438d172b87b380eebc1f1c1a5a3549b2",
      "tree": "633d0d170c987800ddcdbe94aa91f65f8ee5686e",
      "parents": [
        "64c86149410bc62d9ac27a0594b3402a2aca03d8"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Thu Jun 24 11:49:12 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon Jul 26 13:16:43 2010 -0500"
      },
      "message": "xfs: do not use emums for flags used in tracing\n\nThe tracing code can\u0027t print flags defined as enums.  Most flags that\nwe want to print are defines as macros already, but move the few remaining\nones over to make the trace output more useful.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\n\n"
    },
    {
      "commit": "64c86149410bc62d9ac27a0594b3402a2aca03d8",
      "tree": "58ba57bd091ad80c1c7592bdd7539b10c3e3f6b8",
      "parents": [
        "f2bde9b89b4d67c9bc3b963cb996f449ddcd27a4"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Thu Jun 24 11:45:34 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon Jul 26 13:16:42 2010 -0500"
      },
      "message": "xfs: remove explicit xfs_sync_data/xfs_sync_attr calls on umount\n\nOn the final put of a superblock the VFS already calls sync_filesystem\nfor us to write out all data and wait for it.  No need to start another\nasynchronous writeback inside -\u003eput_super.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\n\n"
    },
    {
      "commit": "f2bde9b89b4d67c9bc3b963cb996f449ddcd27a4",
      "tree": "3f5ce631c4f0057776bdf38fcde1b34b359f3376",
      "parents": [
        "3070451eea1ed8e3bde0573183c7d8ac25fd5e97"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Thu Jun 24 11:44:35 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon Jul 26 13:16:42 2010 -0500"
      },
      "message": "xfs: small cleanups for xfs_iomap / __xfs_get_blocks\n\nRemove the flags argument to  __xfs_get_blocks as we can easily derive\nit from the direct argument, and remove the unused BMAPI_MMAP flag.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\n\n"
    },
    {
      "commit": "7a36c8a98a7dd05756bb147be2ac350325ff5830",
      "tree": "7a95c3e6090f209aecd0a1d5532ec577862248ca",
      "parents": [
        "20cb52ebd1b5ca6fa8a5d9b6b1392292f5ca8a45"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Thu Jun 24 11:39:25 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon Jul 26 13:16:41 2010 -0500"
      },
      "message": "xfs: avoid synchronous transaction in xfs_fs_write_inode\n\nWe already rely on the fact that the sync code will cause a synchronous\nlog force later on (currently via xfs_fs_sync_fs -\u003e xfs_quiesce_data -\u003e\nxfs_sync_data), so no need to do this here.  This allows us to avoid\na lot of synchronous log forces during sync, which pays of especially\nwith delayed logging enabled.   Some compilebench numbers that show\nthis:\n\nxfs (delayed logging, 256k logbufs)\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nintial create\t\t  25.94 MB/s\t  25.75 MB/s\t  25.64 MB/s\ncreate\t\t\t   8.54 MB/s\t   9.12 MB/s\t   9.15 MB/s\npatch\t\t\t   2.47 MB/s\t   2.47 MB/s\t   3.17 MB/s\ncompile\t\t\t  29.65 MB/s\t  30.51 MB/s\t  27.33 MB/s\nclean\t\t\t  90.92 MB/s\t  98.83 MB/s\t 128.87 MB/s\nread tree\t\t  11.90 MB/s\t  11.84 MB/s\t   8.56 MB/s\nread compiled\t\t  28.75 MB/s\t  29.96 MB/s\t  24.25 MB/s\ndelete tree\t\t8.39 seconds\t8.12 seconds\t8.46 seconds\ndelete compiled\t\t8.35 seconds\t8.44 seconds\t5.11 seconds\nstat tree\t\t6.03 seconds\t5.59 seconds\t5.19 seconds\nstat compiled tree\t9.00 seconds\t9.52 seconds\t8.49 seconds\n\nxfs + write_inode log_force removal\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nintial create\t\t  25.87 MB/s\t  25.76 MB/s\t  25.87 MB/s\ncreate\t\t\t  15.18 MB/s\t  14.80 MB/s\t  14.94 MB/s\npatch\t\t\t   3.13 MB/s\t   3.14 MB/s\t   3.11 MB/s\ncompile\t\t\t  36.74 MB/s\t  37.17 MB/s\t  36.84 MB/s\nclean\t\t\t 226.02 MB/s\t 222.58 MB/s\t 217.94 MB/s\nread tree\t\t  15.14 MB/s\t  15.02 MB/s\t  15.14 MB/s\nread compiled tree\t  29.30 MB/s\t  29.31 MB/s\t  29.32 MB/s\ndelete tree\t\t6.22 seconds\t6.14 seconds\t6.15 seconds\ndelete compiled tree\t5.75 seconds\t5.92 seconds\t5.81 seconds\nstat tree\t\t4.60 seconds\t4.51 seconds\t4.56 seconds\nstat compiled tree\t4.07 seconds\t3.87 seconds\t3.96 seconds\n\nIn addition to that also remove the delwri inode flush that is unessecary\nnow that bulkstat is always coherent.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\n\n"
    },
    {
      "commit": "20cb52ebd1b5ca6fa8a5d9b6b1392292f5ca8a45",
      "tree": "c4644ab4b8b12d2c6100fb47c7dfa4c5949107ca",
      "parents": [
        "89f3b363967a958e756a549c8747c1fb9c930c1a"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Thu Jun 24 09:46:01 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon Jul 26 13:16:41 2010 -0500"
      },
      "message": "xfs: simplify xfs_vm_writepage\n\nThe writepage implementation in XFS still tries to deal with dirty but\nunmapped buffers which used to caused by writes through shared mmaps.  Since\nthe introduction of -\u003epage_mkwrite these can\u0027t happen anymore, so remove the\ncode dealing with them.\n\nNote that the all_bh variable which causes us to start I/O on all buffers on\nthe pages was controlled by the count of unmapped buffers, which also\nincluded those not actually dirty.  It\u0027s now unconditionally initialized to\n0 but set to 1 for the case of small file size extensions.  It probably can\nbe removed entirely, but that\u0027s left for another patch.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\n\n"
    },
    {
      "commit": "89f3b363967a958e756a549c8747c1fb9c930c1a",
      "tree": "445282b1c9de68e6b209444317c2fee3b2e5f095",
      "parents": [
        "3d9b02e3c76531687ab5314e0edf266256f13c2d"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Thu Jun 24 09:45:48 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon Jul 26 13:16:40 2010 -0500"
      },
      "message": "xfs: simplify xfs_vm_releasepage\n\nCurrently the xfs releasepage implementation has code to deal with converting\ndelayed allocated and unwritten space.  But we never get called for those as\nwe always convert delayed and unwritten space when cleaning a page, or drop\nthe state from the buffers in block_invalidatepage.  We still keep a WARN_ON\non those cases for now, but remove all the case dealing with it, which allows\nto fold xfs_page_state_convert into xfs_vm_writepage and remove the !startio\ncase from the whole writeback path.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\n"
    },
    {
      "commit": "3d9b02e3c76531687ab5314e0edf266256f13c2d",
      "tree": "f730a4da55eb1536227ebe0f976f878f0e08181b",
      "parents": [
        "b4e9181e772b0c8b9038c5822ead368b96c2b533"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Thu Jun 24 09:45:30 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon Jul 26 13:16:40 2010 -0500"
      },
      "message": "xfs: fix corruption case for block size \u003c page size\n\nxfstests 194 first truncats a file back and then extends it again by\ntruncating it to a larger size.  This causes discard_buffer to drop\nthe mapped, but not the uptodate bit and thus creates something that\nxfs_page_state_convert takes for unmapped space created by mmap because\nit doesn\u0027t check for the dirty bit, which also gets cleared by\ndiscard_buffer and checked by other -\u003ewritepage implementations like\nblock_write_full_page.  Handle this kind of buffers early, and unlike\nEric\u0027s first version of the patch simply ASSERT that the buffers is\ndirty, given that the mmap write case can\u0027t happen anymore since the\nintroduction of -\u003epage_mkwrite.  The now dead code dealing with that\nwill be deleted in a follow on patch.\n\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\n"
    },
    {
      "commit": "b4e9181e772b0c8b9038c5822ead368b96c2b533",
      "tree": "2c6cd32cb72a5c7450fefca3701ebc774e830f1c",
      "parents": [
        "cd8b0bb3c49d0691e9e7b4cf19e21ca63b92c053"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Jun 23 18:11:15 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon Jul 26 13:16:39 2010 -0500"
      },
      "message": "xfs: remove unused delta tracking code in xfs_bmapi\n\nThis code was introduced four years ago in commit\n3e57ecf640428c01ba1ed8c8fc538447ada1715b without any review and has\nbeen unused since.  Remove it just as the rest of the code introduced\nin that commit to reduce that stack usage and complexity in this central\npiece of code.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\n\n"
    },
    {
      "commit": "898621d5a72c6799a9a13fce20443b4b6699899c",
      "tree": "6cd994bd8d24f4f4f6ac5b5b57e0b99ee02d4ba6",
      "parents": [
        "4d16e9246fc3b3cf7bc95609eff66929a39daa06"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Thu Jun 24 11:36:58 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon Jul 26 13:16:36 2010 -0500"
      },
      "message": "xfs: simplify inode to transaction joining\n\nCurrently we need to either call IHOLD or xfs_trans_ihold on an inode when\njoining it to a transaction via xfs_trans_ijoin.\n\nThis patches instead makes xfs_trans_ijoin usable on it\u0027s own by doing\nan implicity xfs_trans_ihold, which also allows us to drop the third\nargument.  For the case where we want to hold a reference on the inode\na xfs_trans_ijoin_ref wrapper is added which does the IHOLD and marks\nthe inode for needing an xfs_iput.  In addition to the cleaner interface\nto the caller this also simplifies the implementation.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\n\n"
    },
    {
      "commit": "4d16e9246fc3b3cf7bc95609eff66929a39daa06",
      "tree": "d3e1cb33c3394b7cb95f390a85acb48c80fd5f54",
      "parents": [
        "ca30b2a7b7ac899ac4da6030ccbebf2f137b8e6d"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Jun 23 18:11:15 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon Jul 26 13:16:36 2010 -0500"
      },
      "message": "xfs: simplify buffer pinning\n\nGet rid of the xfs_buf_pin/xfs_buf_unpin/xfs_buf_ispin helpers and opencode\nthem in their only callers, just like we did for the inode pinning a while\nago.  Also remove duplicate trace points - the bufitem tracepoints cover\nall the information that is present in a buffer tracepoint.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\n\n"
    },
    {
      "commit": "e98c414f9a3134fe7efc56ef8f1d394b54bfd40e",
      "tree": "b3d4696cfb4875af39041f9ddcd642bd1cd90a29",
      "parents": [
        "3400777ff03a3cd4fdbc6cb15676fc7e7ceefc00"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Jun 23 18:11:15 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon Jul 26 13:16:34 2010 -0500"
      },
      "message": "xfs: simplify log item descriptor tracking\n\nCurrently we track log item descriptor belonging to a transaction using a\ncomplex opencoded chunk allocator.  This code has been there since day one\nand seems to work around the lack of an efficient slab allocator.\n\nThis patch replaces it with dynamically allocated log item descriptors\nfrom a dedicated slab pool, linked to the transaction by a linked list.\n\nThis allows to greatly simplify the log item descriptor tracking to the\npoint where it\u0027s just a couple hundred lines in xfs_trans.c instead of\na separate file.  The external API has also been simplified while we\u0027re\nat it - the xfs_trans_add_item and xfs_trans_del_item functions to add/\ndelete items from a transaction have been simplified to the bare minium,\nand the xfs_trans_find_item function is replaced with a direct dereference\nof the li_desc field.  All debug code walking the list of log items in\na transaction is down to a simple list_for_each_entry.\n\nNote that we could easily use a singly linked list here instead of the\ndouble linked list from list.h as the fastpath only does deletion from\nsequential traversal.  But given that we don\u0027t have one available as\na library function yet I use the list.h functions for simplicity.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\n\n"
    },
    {
      "commit": "3400777ff03a3cd4fdbc6cb15676fc7e7ceefc00",
      "tree": "aac7652d73e481b35389c14b179ce17b5f31d818",
      "parents": [
        "288699fecaffa1ef8f75f92020cbb593a772e487"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Jun 23 18:11:15 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon Jul 26 13:16:33 2010 -0500"
      },
      "message": "xfs: remove unneeded #include statements\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\n\n"
    },
    {
      "commit": "288699fecaffa1ef8f75f92020cbb593a772e487",
      "tree": "0b8dff3cff671a429739e1b30c8dcfedc40c19a7",
      "parents": [
        "b37fa16e78d6f9790462b3181602a26b5af36260"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Jun 23 18:11:15 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon Jul 26 13:16:33 2010 -0500"
      },
      "message": "xfs: drop dmapi hooks\n\nDmapi support was never merged upstream, but we still have a lot of hooks\nbloating XFS for it, all over the fast pathes of the filesystem.\n\nThis patch drops over 700 lines of dmapi overhead.  If we\u0027ll ever get HSM\nsupport in mainline at least the namespace events can be done much saner\nin the VFS instead of the individual filesystem, so it\u0027s not like this\nis much help for future work.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\n\n"
    },
    {
      "commit": "ade7ce31c22e961dfbe1a6d57fd362c90c187cbd",
      "tree": "96a64a3ae76a182e80db8457e49aa30355b54ae3",
      "parents": [
        "7af9cce8ae467bb2fcf3b0b6be3898835bdb984c"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Jun 04 10:56:01 2010 +0200"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Jul 21 16:01:46 2010 +0200"
      },
      "message": "quota: Clean up the namespace in dqblk_xfs.h\n\nAlmost all identifiers use the FS_* namespace, so rename the missing few\nXFS_* ones to FS_* as well.  Without this some people might get upset\nabout having too many XFS names in generic code.\n\nAcked-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "16fd5367370099b59d96e30bb7d9de8d419659f2",
      "tree": "a9c12adb84f363ac48a0846de7a9464b1631e464",
      "parents": [
        "70e60ce71516c3a9e882edb70a09f696a05961db"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Jul 20 09:43:39 2010 +1000"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Tue Jul 20 09:43:39 2010 +1000"
      },
      "message": "xfs: track AGs with reclaimable inodes in per-ag radix tree\n\nhttps://bugzilla.kernel.org/show_bug.cgi?id\u003d16348\n\nWhen the filesystem grows to a large number of allocation groups,\nthe summing of recalimable inodes gets expensive. In many cases,\nmost AGs won\u0027t have any reclaimable inodes and so we are wasting CPU\ntime aggregating over these AGs. This is particularly important for\nthe inode shrinker that gets called frequently under memory\npressure.\n\nTo avoid the overhead, track AGs with reclaimable inodes in the\nper-ag radix tree so that we can find all the AGs with reclaimable\ninodes via a simple gang tag lookup. This involves setting the tag\nwhen the first reclaimable inode is tracked in the AG, and removing\nthe tag when the last reclaimable inode is removed from the tree.\nThen the summation process becomes a loop walking the radix tree\nsumming AGs with the reclaim tag set.\n\nThis significantly reduces the overhead of scanning - a 6400 AG\nfilesystea now only uses about 25% of a cpu in kswapd while slab\nreclaim progresses instead of being permanently stuck at 100% CPU\nand making little progress. Clean filesystems filesystems will see\nno overhead and the overhead only increases linearly with the number\nof dirty AGs.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "70e60ce71516c3a9e882edb70a09f696a05961db",
      "tree": "324a400f2d21d071f6c462edbb6efa789125f6f1",
      "parents": [
        "7f8275d0d660c146de6ee3017e1e2e594c49e820"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Jul 20 08:07:02 2010 +1000"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Tue Jul 20 08:07:02 2010 +1000"
      },
      "message": "xfs: convert inode shrinker to per-filesystem contexts\n\nNow the shrinker passes us a context, wire up a shrinker context per\nfilesystem. This allows us to remove the global mount list and the\nlocking problems that introduced. It also means that a shrinker call\ndoes not need to traverse clean filesystems before finding a\nfilesystem with reclaimable inodes.  This significantly reduces\nscanning overhead when lots of filesystems are present.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "7f8275d0d660c146de6ee3017e1e2e594c49e820",
      "tree": "884db927118b44102750b5168ee36ef4b8b5cb4e",
      "parents": [
        "d0c6f6258478e1dba532bf7c28e2cd6e1047d3a4"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Jul 19 14:56:17 2010 +1000"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Mon Jul 19 14:56:17 2010 +1000"
      },
      "message": "mm: add context argument to shrinker callback\n\nThe current shrinker implementation requires the registered callback\nto have global state to work from. This makes it difficult to shrink\ncaches that are not global (e.g. per-filesystem caches). Pass the shrinker\nstructure to the callback so that users can embed the shrinker structure\nin the context the shrinker needs to operate on and get back to it in the\ncallback via container_of().\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "7b6259e7a83647948fa33a736cc832310c8d85aa",
      "tree": "99bb872b179a93f5e32b51f312029abb1237b055",
      "parents": [
        "1920779e67cbf5ea8afef317777c5bf2b8096188"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Thu Jun 24 11:35:17 2010 +1000"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Thu Jun 24 11:35:17 2010 +1000"
      },
      "message": "xfs: remove block number from inode lookup code\n\nThe block number comes from bulkstat based inode lookups to shortcut\nthe mapping calculations. We ar enot able to trust anything from\nbulkstat, so drop the block number as well so that the correct\nlookups and mappings are always done.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "1920779e67cbf5ea8afef317777c5bf2b8096188",
      "tree": "f3450e4075162ef5ec360446c301513a5adf316e",
      "parents": [
        "7124fe0a5b619d65b739477b3b55a20bf805b06d"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Thu Jun 24 11:15:47 2010 +1000"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Thu Jun 24 11:15:47 2010 +1000"
      },
      "message": "xfs: rename XFS_IGET_BULKSTAT to XFS_IGET_UNTRUSTED\n\nInode numbers may come from somewhere external to the filesystem\n(e.g. file handles, bulkstat information) and so are inherently\nuntrusted. Rename the flag we use for these lookups to make it\nobvious we are doing a lookup of an untrusted inode number and need\nto verify it completely before trying to read it from disk.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "7dce11dbac54fce777eea0f5fb25b2694ccd7900",
      "tree": "90d6d109ca110bcbf47a954a8283ec250be07003",
      "parents": [
        "1817176a86352f65210139d4c794ad2d19fc6b63"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Wed Jun 23 18:11:11 2010 +1000"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Wed Jun 23 18:11:11 2010 +1000"
      },
      "message": "xfs: always use iget in bulkstat\n\nThe non-coherent bulkstat versionsthat look directly at the inode\nbuffers causes various problems with performance optimizations that\nmake increased use of just logging inodes.  This patch makes bulkstat\nalways use iget, which should be fast enough for normal use with the\nradix-tree based inode cache introduced a while ago.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\n"
    },
    {
      "commit": "254c8c2dbf0e06a560a5814eb90cb628adb2de66",
      "tree": "6bcd10add0b85cf43cad8e72b6d4525c5a63b264",
      "parents": [
        "0b5649278e39a068aaf91399941bab1b4a4a3cc2"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Wed Jun 09 10:37:19 2010 +1000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 08 18:12:44 2010 -0700"
      },
      "message": "xfs: remove nr_to_write writeback windup.\n\nNow that the background flush code has been fixed, we shouldn\u0027t need to\nsilently multiply the wbc-\u003enr_to_write to get good writeback. Remove\nthat code.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1bf7dbfde8fe7ddaa8e2e1b4e0fc41a9fc6aa7a5",
      "tree": "fdb99e686fa40e79cc53f80dfed58e9b548ed4eb",
      "parents": [
        "ad8456361fa19068cf49b50a4f98e41b73c08e76",
        "f9369729496a0f4c607a4cc1ea4dfeddbbfc505a"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Fri Jun 04 13:22:30 2010 -0500"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Fri Jun 04 13:22:30 2010 -0500"
      },
      "message": "Merge branch \u0027master\u0027 into for-linus\n"
    },
    {
      "commit": "070ecdca54dde9577d2697088e74e45568f48efb",
      "tree": "6f70d1fd43231866ad6b54e2e5c011700ef3b072",
      "parents": [
        "99a4d54620264a614c89597bc5aaab22ec83f89c"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Thu Jun 03 16:22:29 2010 +1000"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Thu Jun 03 16:22:29 2010 +1000"
      },
      "message": "xfs: skip writeback from reclaim context\n\nAllowing writeback from reclaim context causes massive problems with stack\noverflows as we can call into the writeback code which tends to be a heavy\nstack user both in the generic code and XFS from random contexts that\nperform memory allocations.\n\nFollow the example of btrfs (and in slightly different form ext4) and refuse\nto write out data from reclaim context.  This issue should really be handled\nby the VM so that we can tune better for this case, but until we get it\nsorted out there we have to hack around this in each filesystem with a\ncomplex writeback path.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\n\n\n"
    },
    {
      "commit": "fb3b504adeee942e55393396fea8fdf406acf037",
      "tree": "42486eb1c674ba2d76b719109e21a54a7df7b8fc",
      "parents": [
        "9b98b6f3e1534bba2efcd5b16318945cf2218d99"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Fri May 28 19:03:10 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Fri May 28 15:19:56 2010 -0500"
      },
      "message": "xfs: fix access to upper inodes without inode64\n\nIf a filesystem is mounted without the inode64 mount option we\nshould still be able to access inodes not fitting into 32 bits, just\nnot created new ones.  For this to work we need to make sure the\ninode cache radix tree is initialized for all allocation groups, not\njust those we plan to allocate inodes from.  This patch makes sure\nwe initialize the inode cache radix tree for all allocation groups,\nand also cleans xfs_initialize_perag up a bit to separate the\ninode32 logical from the general perag structure setup.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "3bd0946eb157e26240ca858d1a42738b095dc6f3",
      "tree": "bc3bdd29874700f5cada5922caf1d39efd4ab138",
      "parents": [
        "f8adb4d574cf8c67f8391367136edc5469258fdc"
      ],
      "author": {
        "name": "Huang Weiyi",
        "email": "weiyi.huang@gmail.com",
        "time": "Tue May 25 22:15:26 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Fri May 28 15:19:36 2010 -0500"
      },
      "message": "xfs: remove duplicated #include\n\nRemove duplicated #include(\u0027s) in\n  fs/xfs/linux-2.6/xfs_quotaops.c\n\nSigned-off-by: Huang Weiyi \u003cweiyi.huang@gmail.com\u003e\nReviewed-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "f8adb4d574cf8c67f8391367136edc5469258fdc",
      "tree": "0528b7b64336719965c54ae4f47b95747f8f6eff",
      "parents": [
        "292ec4cf3536a5ed8809e8823341b203e497bbaf"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Mon May 24 08:25:57 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Fri May 28 15:19:31 2010 -0500"
      },
      "message": "xfs: convert more trace events to DEFINE_EVENT\n\nUse DECLARE_EVENT_CLASS, and save ~15K:\n\n   text    data     bss     dec     hex filename\n 171949   43028      48  215025   347f1 fs/xfs/linux-2.6/xfs_trace.o.orig\n 156521   43028      36  199585   30ba1 fs/xfs/linux-2.6/xfs_trace.o\n\nNo change in functionality.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nAcked-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "292ec4cf3536a5ed8809e8823341b203e497bbaf",
      "tree": "abded6956e08f3fc5ccddd4af945739aa049a92f",
      "parents": [
        "07f1a4f5e89cd4e6c79d67d41e8a18c451214ae2"
      ],
      "author": {
        "name": "Huang Weiyi",
        "email": "weiyi.huang@gmail.com",
        "time": "Sat May 22 17:13:20 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Fri May 28 15:19:24 2010 -0500"
      },
      "message": "xfs: xfs_trace.c: remove duplicated #include\n\nRemove duplicated #include(\u0027s) in\n  fs/xfs/linux-2.6/xfs_trace.c\n\nSigned-off-by: Huang Weiyi \u003cweiyi.huang@gmail.com\u003e\nReviewed-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "07f1a4f5e89cd4e6c79d67d41e8a18c451214ae2",
      "tree": "a4efa89cd8536b6ff6b75713fd5cc342f4da4f62",
      "parents": [
        "fdc07f44c891d3fdee7722a03e3881614a293b3c"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri May 21 05:47:59 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Fri May 28 15:19:12 2010 -0500"
      },
      "message": "xfs: Check new inode size is OK before preallocating\n\nThe new xfsqa test 228 tries to preallocate more space than the\nfilesystem contains. it should fail, but instead triggers an assert\nabout lock flags.  The failure is due to the size extension failing\nin vmtruncate() due to rlimit being set. Check this before we start\nthe preallocation to avoid allocating space that will never be used.\n\nAlso the path through xfs_vn_allocate already holds the IO lock, so\nit should not be present in the lock flags when the setattr fails.\nHence the assert needs to take this into account. This will prevent\nother such callers from hitting this incorrect ASSERT.\n\n(Fixed a reference to \"newsize\" to read \"new_size\". -Alex)\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "7ea8085910ef3dd4f3cad6845aaa2b580d39b115",
      "tree": "d9c1edb5906f943f7d70bfb4b65106e29772d379",
      "parents": [
        "cc967be54710d97c05229b2e5ba2d00df84ddd64"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Wed May 26 17:53:25 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu May 27 22:05:02 2010 -0400"
      },
      "message": "drop unused dentry argument to -\u003efsync\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "88e88374ee4958786397a57f684de6f1fc5e0242",
      "tree": "750fe86ece5d65e597223eb07c5ce7cf5b3749a0",
      "parents": [
        "7e125f7b9cbfce4101191b8076d606c517a73066",
        "ccf7c23fc129e75ef60e6f59f60a485b7a056598"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon May 24 11:57:36 2010 -0500"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon May 24 11:57:36 2010 -0500"
      },
      "message": "Merge branch \u0027delayed-logging-for-2.6.35\u0027 into for-linus\n"
    },
    {
      "commit": "71e330b593905e40d6c5afa824d38ee02d70ce5f",
      "tree": "4c9fa6c4766280752fc40f3057fd6cf64396c16c",
      "parents": [
        "a9a745daadab26f13884ff26a50fa38247c11ce9"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri May 21 14:37:18 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon May 24 10:38:03 2010 -0500"
      },
      "message": "xfs: Introduce delayed logging core code\n\nThe delayed logging code only changes in-memory structures and as\nsuch can be enabled and disabled with a mount option. Add the mount\noption and emit a warning that this is an experimental feature that\nshould not be used in production yet.\n\nWe also need infrastructure to track committed items that have not\nyet been written to the log. This is what the Committed Item List\n(CIL) is for.\n\nThe log item also needs to be extended to track the current log\nvector, the associated memory buffer and it\u0027s location in the Commit\nItem List. Extend the log item and log vector structures to enable\nthis tracking.\n\nTo maintain the current log format for transactions with delayed\nlogging, we need to introduce a checkpoint transaction and a context\nfor tracking each checkpoint from initiation to transaction\ncompletion.  This includes adding a log ticket for tracking space\nlog required/used by the context checkpoint.\n\nTo track all the changes we need an io vector array per log item,\nrather than a single array for the entire transaction. Using the new\nlog vector structure for this requires two passes - the first to\nallocate the log vector structures and chain them together, and the\nsecond to fill them out.  This log vector chain can then be passed\nto the CIL for formatting, pinning and insertion into the CIL.\n\nFormatting of the log vector chain is relatively simple - it\u0027s just\na loop over the iovecs on each log vector, but it is made slightly\nmore complex because we re-write the iovec after the copy to point\nback at the memory buffer we just copied into.\n\nThis code also needs to pin log items. If the log item is not\nalready tracked in this checkpoint context, then it needs to be\npinned. Otherwise it is already pinned and we don\u0027t need to pin it\nagain.\n\nThe only other complexity is calculating the amount of new log space\nthe formatting has consumed. This needs to be accounted to the\ntransaction in progress, and the accounting is made more complex\nbecase we need also to steal space from it for log metadata in the\ncheckpoint transaction. Calculate all this at insert time and update\nall the tickets, counters, etc correctly.\n\nOnce we\u0027ve formatted all the log items in the transaction, attach\nthe busy extents to the checkpoint context so the busy extents live\nuntil checkpoint completion and can be processed at that point in\ntime. Transactions can then be freed at this point in time.\n\nNow we need to issue checkpoints - we are tracking the amount of log space\nused by the items in the CIL, so we can trigger background checkpoints when the\nspace usage gets to a certain threshold. Otherwise, checkpoints need ot be\ntriggered when a log synchronisation point is reached - a log force event.\n\nBecause the log write code already handles chained log vectors, writing the\ntransaction is trivial, too. Construct a transaction header, add it\nto the head of the chain and write it into the log, then issue a\ncommit record write. Then we can release the checkpoint log ticket\nand attach the context to the log buffer so it can be called during\nIo completion to complete the checkpoint.\n\nWe also need to allow for synchronising multiple in-flight\ncheckpoints. This is needed for two things - the first is to ensure\nthat checkpoint commit records appear in the log in the correct\nsequence order (so they are replayed in the correct order). The\nsecond is so that xfs_log_force_lsn() operates correctly and only\nflushes and/or waits for the specific sequence it was provided with.\n\nTo do this we need a wait variable and a list tracking the\ncheckpoint commits in progress. We can walk this list and wait for\nthe checkpoints to change state or complete easily, an this provides\nthe necessary synchronisation for correct operation in both cases.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "ed3b4d6cdc81e8feefdbfa3c584614be301b6d39",
      "tree": "5b8cd5735dfbc5eb834f96d25a8eb587186715be",
      "parents": [
        "955833cf2ad0aa39b336e853cad212d867199984"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Fri May 21 12:07:08 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon May 24 10:34:00 2010 -0500"
      },
      "message": "xfs: Improve scalability of busy extent tracking\n\nWhen we free a metadata extent, we record it in the per-AG busy\nextent array so that it is not re-used before the freeing\ntransaction hits the disk. This array is fixed size, so when it\noverflows we make further allocation transactions synchronous\nbecause we cannot track more freed extents until those transactions\nhit the disk and are completed. Under heavy mixed allocation and\nfreeing workloads with large log buffers, we can overflow this array\nquite easily.\n\nFurther, the array is sparsely populated, which means that inserts\nneed to search for a free slot, and array searches often have to\nsearch many more slots that are actually used to check all the\nbusy extents. Quite inefficient, really.\n\nTo enable this aspect of extent freeing to scale better, we need\na structure that can grow dynamically. While in other areas of\nXFS we have used radix trees, the extents being freed are at random\nlocations on disk so are better suited to being indexed by an rbtree.\n\nSo, use a per-AG rbtree indexed by block number to track busy\nextents.  This incures a memory allocation when marking an extent\nbusy, but should not occur too often in low memory situations. This\nshould scale to an arbitrary number of extents so should not be a\nlimitation for features such as in-memory aggregation of\ntransactions.\n\nHowever, there are still situations where we can\u0027t avoid allocating\nbusy extents (such as allocation from the AGFL). To minimise the\noverhead of such occurences, we need to avoid doing a synchronous\nlog force while holding the AGF locked to ensure that the previous\ntransactions are safely on disk before we use the extent. We can do\nthis by marking the transaction doing the allocation as synchronous\nrather issuing a log force.\n\nBecause of the locking involved and the ordering of transactions,\nthe synchronous transaction provides the same guarantees as a\nsynchronous log force because it ensures that all the prior\ntransactions are already on disk when the synchronous transaction\nhits the disk. i.e. it preserves the free-\u003eallocate order of the\nextent correctly in recovery.\n\nBy doing this, we avoid holding the AGF locked while log writes are\nin progress, hence reducing the length of time the lock is held and\ntherefore we increase the rate at which we can allocate and free\nfrom the allocation group, thereby increasing overall throughput.\n\nThe only problem with this approach is that when a metadata buffer is\nmarked stale (e.g. a directory block is removed), then buffer remains\npinned and locked until the log goes to disk. The issue here is that\nif that stale buffer is reallocated in a subsequent transaction, the\nattempt to lock that buffer in the transaction will hang waiting\nthe log to go to disk to unlock and unpin the buffer. Hence if\nsomeone tries to lock a pinned, stale, locked buffer we need to\npush on the log to get it unlocked ASAP. Effectively we are trading\noff a guaranteed log force for a much less common trigger for log\nforce to occur.\n\nIdeally we should not reallocate busy extents. That is a much more\ncomplex fix to the problem as it involves direct intervention in the\nallocation btree searches in many places. This is left to a future\nset of modifications.\n\nFinally, now that we track busy extents in allocated memory, we\ndon\u0027t need the descriptors in the transaction structure to point to\nthem. We can replace the complex busy chunk infrastructure with a\nsimple linked list of busy extents. This allows us to remove a large\nchunk of code, making the overall change a net reduction in code\nsize.\n\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "c11554104f4dcb509fd43973389b097a04b9d51d",
      "tree": "18b67546aa2baacaa729ae51ad656465bdc2654f",
      "parents": [
        "64fc35de60da3b1fe970168d10914bf1cf34a3e3"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri May 07 11:05:19 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon May 24 10:33:39 2010 -0500"
      },
      "message": "xfs: Clean up XFS_BLI_* flag namespace\n\nClean up the buffer log format (XFS_BLI_*) flags because they have a\npolluted namespace. They XFS_BLI_ prefix is used for both in-memory\nand on-disk flag feilds, but have overlapping values for different\nflags. Rename the buffer log format flags to use the XFS_BLF_*\nprefix to avoid confusing them with the in-memory XFS_BLI_* prefixed\nflags.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "e8bebe2f71d26871b0970ae1d9cf0ed3cdd9569d",
      "tree": "c0d82cbd11daaf579b74121c6641d58947091094",
      "parents": [
        "6109e2ce2600e2db26cd0424bb9c6ed019723288",
        "82f3952c02add60b15eea9151d4d99b6b82066c6"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 21 19:37:45 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 21 19:37:45 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (69 commits)\n  fix handling of offsets in cris eeprom.c, get rid of fake on-stack files\n  get rid of home-grown mutex in cris eeprom.c\n  switch ecryptfs_write() to struct inode *, kill on-stack fake files\n  switch ecryptfs_get_locked_page() to struct inode *\n  simplify access to ecryptfs inodes in -\u003ereadpage() and friends\n  AFS: Don\u0027t put struct file on the stack\n  Ban ecryptfs over ecryptfs\n  logfs: replace inode uid,gid,mode initialization with helper function\n  ufs: replace inode uid,gid,mode initialization with helper function\n  udf: replace inode uid,gid,mode init with helper\n  ubifs: replace inode uid,gid,mode initialization with helper function\n  sysv: replace inode uid,gid,mode initialization with helper function\n  reiserfs: replace inode uid,gid,mode initialization with helper function\n  ramfs: replace inode uid,gid,mode initialization with helper function\n  omfs: replace inode uid,gid,mode initialization with helper function\n  bfs: replace inode uid,gid,mode initialization with helper function\n  ocfs2: replace inode uid,gid,mode initialization with helper function\n  nilfs2: replace inode uid,gid,mode initialization with helper function\n  minix: replace inode uid,gid,mode init with helper\n  ext4: replace inode uid,gid,mode init with helper\n  ...\n\nTrivial conflict in fs/fs-writeback.c (mark bitfields unsigned)\n"
    },
    {
      "commit": "46e58764f0c502847ed1f4662aa37eefa602a8f9",
      "tree": "c3dc3f8aae37014726a372106e6028df1a5e63ab",
      "parents": [
        "94d09a98cdb163be12fb5c76841fa295f0bee22a"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Thu May 13 17:53:20 2010 -0700"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri May 21 18:31:19 2010 -0400"
      },
      "message": "xfs: constify xattr_handler\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ee9a3607fb03e804ddf624544105f4e34260c380",
      "tree": "ce41b6e0fa10982a306f6c142a92dbf3c9961284",
      "parents": [
        "b492e95be0ae672922f4734acf3f5d35c30be948",
        "d515e86e639890b33a09390d062b0831664f04a2"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri May 21 21:27:26 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri May 21 21:27:26 2010 +0200"
      },
      "message": "Merge branch \u0027master\u0027 into for-2.6.35\n\nConflicts:\n\tfs/ext3/fsync.c\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "c472b43275976512e4c1c32da5ced03f339cb380",
      "tree": "9159fbfd1190456e8b3e699b856022c23f6ec10c",
      "parents": [
        "b9b2dd36c1bc64430f8e13990ab135cbecc10076"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Thu May 06 17:05:17 2010 -0400"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri May 21 19:30:44 2010 +0200"
      },
      "message": "quota: unify -\u003eset_dqblk\n\nPass the larger struct fs_disk_quota to the -\u003eset_dqblk operation so\nthat the Q_SETQUOTA and Q_XSETQUOTA operations can be implemented\nwith a single filesystem operation and we can retire the -\u003eset_xquota\noperation.  The additional information (RT-subvolume accounting and\nwarn counts) are left zero for the VFS quota implementation.\n\nAdd new fieldmask values for setting the numer of blocks and inodes\nvalues which is required for the VFS quota, but wasn\u0027t for XFS.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "b9b2dd36c1bc64430f8e13990ab135cbecc10076",
      "tree": "051bb6a238c9ff98fe135de3e8591c65cf242d46",
      "parents": [
        "0636c73ee7b129f77f577aaaefc8dde057be6d18"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Thu May 06 17:04:58 2010 -0400"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri May 21 19:30:43 2010 +0200"
      },
      "message": "quota: unify -\u003eget_dqblk\n\nPass the larger struct fs_disk_quota to the -\u003eget_dqblk operation so\nthat the Q_GETQUOTA and Q_XGETQUOTA operations can be implemented\nwith a single filesystem operation and we can retire the -\u003eget_xquota\noperation.  The additional information (RT-subvolume accounting and\nwarn counts) are left zero for the VFS quota implementation.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "bd1556a146d46070049428dded306829cb65161d",
      "tree": "3ce3c35fb3359a83766a0442156cee692479037b",
      "parents": [
        "2b8f12b7e438fa6ba4a0f8f861871be0beb3a3e6"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Apr 28 12:29:00 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:20 2010 -0500"
      },
      "message": "xfs: clean up end index calculation in xfs_page_state_convert\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "2b8f12b7e438fa6ba4a0f8f861871be0beb3a3e6",
      "tree": "8528d14896aef2e8718fd9edc4fc716d7815ae3f",
      "parents": [
        "558e6891693f4c383c51c7343a88dea174eadacf"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Apr 28 12:28:59 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:19 2010 -0500"
      },
      "message": "xfs: clean up mapping size calculation in __xfs_get_blocks\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "558e6891693f4c383c51c7343a88dea174eadacf",
      "tree": "df7512d1f97fb4557d920d3ceb566dee256c1a7c",
      "parents": [
        "34a52c6c064fb9f1fd1310407ce076a4bb049734"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Apr 28 12:28:58 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:19 2010 -0500"
      },
      "message": "xfs: clean up xfs_iomap_valid\n\nRename all iomap_valid identifiers to imap_valid to fit the new\nworld order, and clean up xfs_iomap_valid to convert the passed in\noffset to blocks instead of the imap values to bytes.  Use the\nsimpler inode-\u003ei_blkbits instead of the XFS macros for this.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "34a52c6c064fb9f1fd1310407ce076a4bb049734",
      "tree": "2b05a8d21f644ab733f7e242971bd0314c46b355",
      "parents": [
        "207d041602cead1c1a16288f6225aea9da1f5bc4"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Apr 28 12:28:57 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:17 2010 -0500"
      },
      "message": "xfs: move I/O type flags into xfs_aops.c\n\nThe IOMAP_ flags are now only used inside xfs_aops.c for extent\nprobing and I/O completion tracking, so more them here, and rename\nthem to IO_* as there\u0027s no mapping involved at all.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "207d041602cead1c1a16288f6225aea9da1f5bc4",
      "tree": "ad6149735c8bc0c5d112e301e6e17dac6280dcb6",
      "parents": [
        "e513182d4d7ec8f1870ae368c549ef2838e2c105"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Apr 28 12:28:56 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:17 2010 -0500"
      },
      "message": "xfs: kill struct xfs_iomap\n\nNow that struct xfs_iomap contains exactly the same units as struct\nxfs_bmbt_irec we can just use the latter directly in the aops code.\nReplace the missing IOMAP_NEW flag with a new boolean output\nparameter to xfs_iomap.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "e513182d4d7ec8f1870ae368c549ef2838e2c105",
      "tree": "1dc543b7f798c4826684bf2a0a5d83bd363f246f",
      "parents": [
        "8699bb0a480193e62d5ccb9c86e2c26b407090a8"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Apr 28 12:28:55 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:17 2010 -0500"
      },
      "message": "xfs: report iomap_bn in block base\n\nReport the iomap_bn field of struct xfs_iomap in terms of filesystem\nblocks instead of in terms of bytes.  Shift the byte conversions\ninto the caller, and replace the IOMAP_DELAY and IOMAP_HOLE flag\nchecks with checks for HOLESTARTBLOCK and DELAYSTARTBLOCK.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "8699bb0a480193e62d5ccb9c86e2c26b407090a8",
      "tree": "aabcc9cd0800cf5c0d0605d46a104ed825f90db6",
      "parents": [
        "9563b3d8998c78d5b7e718b546d5f68037c494fe"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Apr 28 12:28:54 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:17 2010 -0500"
      },
      "message": "xfs: report iomap_offset and iomap_bsize in block base\n\nReport the iomap_offset and iomap_bsize fields of struct xfs_iomap\nin terms of fsblocks instead of in terms of disk blocks.  Shift the\nbyte conversions into the callers temporarily, but they will\ndisappear or get cleaned up later.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "9563b3d8998c78d5b7e718b546d5f68037c494fe",
      "tree": "f614d05139491b129515443855e80eb0c562157b",
      "parents": [
        "046f1685bb5211c3dea74fda0198c19171e9abc9"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Apr 28 12:28:53 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:17 2010 -0500"
      },
      "message": "xfs: remove iomap_delta\n\nThe iomap_delta field in struct xfs_iomap just contains the\ndifference between the offset passed to xfs_iomap and the\niomap_offset.  Just calculate it in the only caller that cares.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "046f1685bb5211c3dea74fda0198c19171e9abc9",
      "tree": "3d01a53802173f26cd0475c74344b598f855e8f2",
      "parents": [
        "826bf0adce0cddd9c94c2706b63d181dfc5cdaaa"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Apr 28 12:28:52 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:16 2010 -0500"
      },
      "message": "xfs: remove iomap_target\n\nInstead of using the iomap_target field in struct xfs_iomap\nand the IOMAP_REALTIME flag just use the already existing\nxfs_find_bdev_for_inode helper.  There\u0027s some fallout as we\nneed to pass the inode in a few more places, which we also\nuse to sanitize some calling conventions.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "2d1ff3c75a4642062d314634290be6d8da4ffb03",
      "tree": "1112feee61ad0c7653c6877d04397b4949c46471",
      "parents": [
        "48389ef17583f2214bbd2c119b3015677419c16b"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Thu Apr 29 15:13:56 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:16 2010 -0500"
      },
      "message": "xfs: Make fiemap work in query mode.\n\nAccording to Documentation/filesystems/fiemap.txt, If fm_extent_count\nis zero, then the fm_extents[] array is ignored (no extents will be\nreturned), and the fm_mapped_extents count will hold the number of\nextents needed.\n\nBut as the commit 97db39a1f6f69e906e98118392400de5217aa33a has changed\nbmv_count to the caller\u0027s input buffer, this number query function can\u0027t\nwork any more. As this commit is written to change bmv_count from\nMAXEXTNUM because of ENOMEM.\n\nThis patch just try to  set bm.bmv_count to something sane.\nThanks to Dave Chinner \u003cdavid@fromorbit.com\u003e for the suggestion.\n\nCc: Eric Sandeen \u003csandeen@redhat.com\u003e\nCc: Alex Elder \u003caelder@sgi.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "37bc5743fdc29f60fb104cd9031babbabddff25a",
      "tree": "abbcde46a9741a40a0ced8d1f289f6af65725d15",
      "parents": [
        "fce1cad651e3cf2779ed8f9e6608daf50d29daaf"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Tue Apr 20 17:00:59 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:14 2010 -0500"
      },
      "message": "xfs: wait for direct I/O to complete in fsync and write_inode\n\nWe need to wait for all pending direct I/O requests before taking care of\nmetadata in fsync and write_inode.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\n\n"
    },
    {
      "commit": "fce1cad651e3cf2779ed8f9e6608daf50d29daaf",
      "tree": "cbd2eba102e09c48a1f7795ba95f2fbd287d9b2e",
      "parents": [
        "3f943d853d6ce6d808e7362e4444c7ed5f692357"
      ],
      "author": {
        "name": "Andrea Gelmini",
        "email": "andrea.gelmini@gelma.net",
        "time": "Thu Mar 25 17:22:41 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:14 2010 -0500"
      },
      "message": "xfs: xfs_trace.c: duplicated include\n\nfs/xfs/linux-2.6/xfs_trace.c: xfs_attr_sf.h is included more than once.\n\nSigned-off-by: Andrea Gelmini \u003candrea.gelmini@gelma.net\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "8c38366f99f83a7fa441e0c0669fefc18615e005",
      "tree": "05789fdea7c34b1b6f29151b6a13bd49f3c6fec9",
      "parents": [
        "df308bcfec27e0c6bc83715dfd417caff5c33f19"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Fri Mar 12 10:59:40 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:13 2010 -0500"
      },
      "message": "xfs: enforce synchronous writes in xfs_bwrite\n\nxfs_bwrite is used with the intention of synchronously writing out\nbuffers, but currently it does not actually clear the async flag if\nthat\u0027s left from previous writes but instead implements async\nbehaviour if it finds it.  Remove the code handling asynchronous\nwrites as we\u0027ve got rid of those entirely outside of the log and\ndelwri buffers, and make sure that we clear the async and read flags\nbefore writing the buffer.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "df308bcfec27e0c6bc83715dfd417caff5c33f19",
      "tree": "558d5b910a4de3cbb36b44eeca1e1f619f2cddf3",
      "parents": [
        "f983710758218c7aad4aae3e40a7312a21d6f55a"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Fri Mar 12 10:59:16 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:13 2010 -0500"
      },
      "message": "xfs: remove periodic superblock writeback\n\nAll modifications to the superblock are done transactional through\nxfs_trans_log_buf, so there is no reason to initiate periodic\nasynchronous writeback.  This only removes the superblock from the\ndelwri list and will lead to sub-optimal I/O scheduling.\n\nCut down xfs_sync_fsdata now that it\u0027s only used for synchronous\nsuperblock writes and move the log coverage checks into the two\ncallers.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "e6a81f13aa9aa20ef03174210aed24791865b05e",
      "tree": "727202721a225004e2522f32278de294c3748e70",
      "parents": [
        "368e136174344c417bad6ff0380b7b3f574bf120"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Apr 13 15:06:51 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:11 2010 -0500"
      },
      "message": "xfs: convert the dquot hash list to use list heads\n\nConvert the dquot hash list on the filesystem to use listhead\ninfrastructure rather than the roll-your-own in the quota code.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "368e136174344c417bad6ff0380b7b3f574bf120",
      "tree": "1718f3e35b42adbaabf5a65062f2d3f5ecf1ac43",
      "parents": [
        "3a25404b3fccd41d36b2fda18d86011201608c38"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Apr 13 15:06:50 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:11 2010 -0500"
      },
      "message": "xfs: remove duplicate code from dquot reclaim\n\nThe dquot shaker and the free-list reclaim code use exactly the same\nalgorithm but the code is duplicated and slightly different in each\ncase. Make the shaker code use the single dquot reclaim code to\nremove the code duplication.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "9abbc539bf7f299819ad0a235064a1b643ab6407",
      "tree": "0c15d4f4933bce3a1a1db19509f4993ce2e46286",
      "parents": [
        "e6b1f27370fc67ac9868b2dbe2c22bc26952900e"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Apr 13 15:06:46 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:10 2010 -0500"
      },
      "message": "xfs: add log item recovery tracing\n\nCurrently there is no tracing in log recovery, so it is difficult to\ndetermine what is going on when something goes wrong.\n\nAdd tracing for log item recovery to provide visibility into the log\nrecovery process. The tracing added shows regions being extracted\nfrom the log transactions and added to the transaction hash forming\nrecovery items, followed by the reordering, cancelling and finally\nrecovery of the items.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "4aaf15d1aa9673dd2cc45c48957c946cb4aa2694",
      "tree": "aec24df27ca9cde2d359b77f9ac97f8ad44a1baa",
      "parents": [
        "43f5efc5b59db1b66e39fe9fdfc4ba6a27152afa"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Mar 08 11:24:07 2010 +1100"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:08 2010 -0500"
      },
      "message": "xfs: Add inode pin counts to traces\n\nWe don\u0027t record pin counts in inode events right now, and this makes\nit difficult to track down problems related to pinning inodes. Add\nthe pin count to the inode trace class and add trace events for\npinning and unpinning inodes.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "e2a07812e93d4a51b1b1a6f15145a1634948db47",
      "tree": "2d13997492891384df9cbbd472296f2cb17f18d7",
      "parents": [
        "fda168c24586ab8e01b0eb68028d78fe3e4fb71a"
      ],
      "author": {
        "name": "Jan Engelhardt",
        "email": "jengelh@medozas.de",
        "time": "Tue Mar 23 09:52:55 2010 +1100"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:07 2010 -0500"
      },
      "message": "xfs: add blockdev name to kthreads\n\nThis allows to see in `ps` and similar tools which kthreads are\nallotted to which block device/filesystem, similar to what jbd2\ndoes. As the process name is a fixed 16-char array, no extra\nspace is needed in tasks.\n\n  PID TTY      STAT   TIME COMMAND\n    2 ?        S      0:00 [kthreadd]\n  197 ?        S      0:00  \\_ [jbd2/sda2-8]\n  198 ?        S      0:00  \\_ [ext4-dio-unwrit]\n  204 ?        S      0:00  \\_ [flush-8:0]\n 2647 ?        S      0:00  \\_ [xfs_mru_cache]\n 2648 ?        S      0:00  \\_ [xfslogd/0]\n 2649 ?        S      0:00  \\_ [xfsdatad/0]\n 2650 ?        S      0:00  \\_ [xfsconvertd/0]\n 2651 ?        S      0:00  \\_ [xfsbufd/ram0]\n 2652 ?        S      0:00  \\_ [xfsaild/ram0]\n 2653 ?        S      0:00  \\_ [xfssyncd/ram0]\n\nSigned-off-by: Jan Engelhardt \u003cjengelh@medozas.de\u003e\nReviewed-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\n"
    },
    {
      "commit": "fda168c24586ab8e01b0eb68028d78fe3e4fb71a",
      "tree": "015ac765550296cac1bc9b3eee833d99630a83fa",
      "parents": [
        "e40152ee1e1c7a63f4777791863215e3faa37a86"
      ],
      "author": {
        "name": "Zhitong Wang",
        "email": "zhitong.wangzt@alibaba-inc.com",
        "time": "Tue Mar 23 09:51:22 2010 +1100"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:07 2010 -0500"
      },
      "message": "xfs: Fix integer overflow in fs/xfs/linux-2.6/xfs_ioctl*.c\n\nThe am_hreq.opcount field in the xfs_attrmulti_by_handle() interface\nis not bounded correctly. The opcount is used to determine the size\nof the buffer required. The size is bounded, but can overflow and so\nthe size checks may not be sufficient to catch invalid opcounts.\nFix it by catching opcount values that would cause overflows before\ncalculating the size.\n\nSigned-off-by: Zhitong Wang \u003czhitong.wangzt@alibaba-inc.com\u003e\nReviewed-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\n"
    },
    {
      "commit": "9bf729c0af67897ea8498ce17c29b0683f7f2028",
      "tree": "9e6350fd9da5aef0b53ddeddd82f618ae16bf931",
      "parents": [
        "79dba2eaa771c3173957eccfd288e0e0d12e4d3f"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Thu Apr 29 09:55:50 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Thu Apr 29 16:22:13 2010 -0500"
      },
      "message": "xfs: add a shrinker to background inode reclaim\n\nOn low memory boxes or those with highmem, kernel can OOM before the\nbackground reclaims inodes via xfssyncd. Add a shrinker to run inode\nreclaim so that it inode reclaim is expedited when memory is low.\n\nThis is more complex than it needs to be because the VM folk don\u0027t\nwant a context added to the shrinker infrastructure. Hence we need\nto add a global list of XFS mount structures so the shrinker can\ntraverse them.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "7407cf355fdf5500430be966dbbde84a27293bad",
      "tree": "922861288ff38558ed721a79653f52b17b13bb95",
      "parents": [
        "6a47dc1418682c83d603b491df1d048f73aa973e",
        "79dba2eaa771c3173957eccfd288e0e0d12e4d3f"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Apr 29 09:36:24 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Apr 29 09:36:24 2010 +0200"
      },
      "message": "Merge branch \u0027master\u0027 into for-2.6.35\n\nConflicts:\n\tfs/block_dev.c\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "fbd9b09a177a481eda256447c881f014f29034fe",
      "tree": "ef7e213045382f82a1e3e3cf134d196a1045dd7a",
      "parents": [
        "6b4517a7913a09d3259bb1d21c9cb300f12294bd"
      ],
      "author": {
        "name": "Dmitry Monakhov",
        "email": "dmonakhov@openvz.org",
        "time": "Wed Apr 28 17:55:06 2010 +0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Apr 28 19:47:36 2010 +0200"
      },
      "message": "blkdev: generalize flags for blkdev_issue_fn functions\n\nThe patch just convert all blkdev_issue_xxx function to common\nset of flags. Wait/allocation semantics preserved.\n\nSigned-off-by: Dmitry Monakhov \u003cdmonakhov@openvz.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "f1d486a3617a2f620b31224e4ace1496c4627e39",
      "tree": "82eae8ca41e529690c2b71d712e886161e786e6b",
      "parents": [
        "b6f8dd49dbdbfa60a33bba3d4b766fe341109b4b"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Apr 13 15:06:45 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Fri Apr 16 13:51:44 2010 -0500"
      },
      "message": "xfs: don\u0027t warn on EAGAIN in inode reclaim\n\nAny inode reclaim flush that returns EAGAIN will result in the inode\nreclaim being attempted again later. There is no need to issue a\nwarning into the logs about this situation.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Alex Elder \u003caelder@sgi.com\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "5a0e3ad6af8660be21ca98a971cd00f331318c05",
      "tree": "5bfb7be11a03176a87296a43ac6647975c00a1d1",
      "parents": [
        "ed391f4ebf8f701d3566423ce8f17e614cde9806"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 24 17:04:11 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 30 22:02:32 2010 +0900"
      },
      "message": "include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h\n\npercpu.h is included by sched.h and module.h and thus ends up being\nincluded when building most .c files.  percpu.h includes slab.h which\nin turn includes gfp.h making everything defined by the two files\nuniversally available and complicating inclusion dependencies.\n\npercpu.h -\u003e slab.h dependency is about to be removed.  Prepare for\nthis change by updating users of gfp and slab facilities include those\nheaders directly instead of assuming availability.  As this conversion\nneeds to touch large number of source files, the following script is\nused as the basis of conversion.\n\n  http://userweb.kernel.org/~tj/misc/slabh-sweep.py\n\nThe script does the followings.\n\n* Scan files for gfp and slab usages and update includes such that\n  only the necessary includes are there.  ie. if only gfp is used,\n  gfp.h, if slab is used, slab.h.\n\n* When the script inserts a new include, it looks at the include\n  blocks and try to put the new include such that its order conforms\n  to its surrounding.  It\u0027s put in the include block which contains\n  core kernel includes, in the same order that the rest are ordered -\n  alphabetical, Christmas tree, rev-Xmas-tree or at the end if there\n  doesn\u0027t seem to be any matching order.\n\n* If the script can\u0027t find a place to put a new include (mostly\n  because the file doesn\u0027t have fitting include block), it prints out\n  an error message indicating which .h file needs to be added to the\n  file.\n\nThe conversion was done in the following steps.\n\n1. The initial automatic conversion of all .c files updated slightly\n   over 4000 files, deleting around 700 includes and adding ~480 gfp.h\n   and ~3000 slab.h inclusions.  The script emitted errors for ~400\n   files.\n\n2. Each error was manually checked.  Some didn\u0027t need the inclusion,\n   some needed manual addition while adding it to implementation .h or\n   embedding .c file was more appropriate for others.  This step added\n   inclusions to around 150 files.\n\n3. The script was run again and the output was compared to the edits\n   from #2 to make sure no file was left behind.\n\n4. Several build tests were done and a couple of problems were fixed.\n   e.g. lib/decompress_*.c used malloc/free() wrappers around slab\n   APIs requiring slab.h to be added manually.\n\n5. The script was run on all .h files but without automatically\n   editing them as sprinkling gfp.h and slab.h inclusions around .h\n   files could easily lead to inclusion dependency hell.  Most gfp.h\n   inclusion directives were ignored as stuff from gfp.h was usually\n   wildly available and often used in preprocessor macros.  Each\n   slab.h inclusion directive was examined and added manually as\n   necessary.\n\n6. percpu.h was updated not to include slab.h.\n\n7. Build test were done on the following configurations and failures\n   were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my\n   distributed build env didn\u0027t work with gcov compiles) and a few\n   more options had to be turned off depending on archs to make things\n   build (like ipr on powerpc/64 which failed due to missing writeq).\n\n   * x86 and x86_64 UP and SMP allmodconfig and a custom test config.\n   * powerpc and powerpc64 SMP allmodconfig\n   * sparc and sparc64 SMP allmodconfig\n   * ia64 SMP allmodconfig\n   * s390 SMP allmodconfig\n   * alpha SMP allmodconfig\n   * um on x86_64 SMP allmodconfig\n\n8. percpu.h modifications were reverted so that it could be applied as\n   a separate patch and serve as bisection point.\n\nGiven the fact that I had only a couple of failures from tests on step\n6, I\u0027m fairly confident about the coverage of this conversion patch.\nIf there is a breakage, it\u0027s likely to be something in one of the arch\nheaders which should be easily discoverable easily on most builds of\nthe specific arch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nGuess-its-ok-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\n"
    },
    {
      "commit": "e8c3753ce4cd6a805ebcfdb3aa6d30e6f4b8b3e0",
      "tree": "cf0618d802720d77a8d1910e1085e82b1dfbb588",
      "parents": [
        "8a262e573d30187b32b5534ec489446931239cc5"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Mar 15 02:36:35 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Tue Mar 16 15:40:53 2010 -0500"
      },
      "message": "xfs: don\u0027t warn about page discards on shutdown\n\nIf we are doing a forced shutdown, we can get lots of noise about\ndelalloc pages being discarded. This is happens by design during a\nforced shutdown, so don\u0027t spam the logs with these messages.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "8a262e573d30187b32b5534ec489446931239cc5",
      "tree": "e510327146e3329d19fac8269cc51d437c8a650f",
      "parents": [
        "cd9640a70d542ca026a812ac34733799da0a39c9"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Tue Mar 16 18:55:56 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Tue Mar 16 15:40:36 2010 -0500"
      },
      "message": "xfs: use scalable vmap API\n\nRe-apply a commit that had been reverted due to regressions\nthat have since been fixed.\n\n    From 95f8e302c04c0b0c6de35ab399a5551605eeb006 Mon Sep 17 00:00:00 2001\n    From: Nick Piggin \u003cnpiggin@suse.de\u003e\n    Date: Tue, 6 Jan 2009 14:43:09 +1100\n\n    Implement XFS\u0027s large buffer support with the new vmap APIs. See the vmap\n    rewrite (db64fe02) for some numbers. The biggest improvement that comes from\n    using the new APIs is avoiding the global KVA allocation lock on every call.\n\n    Signed-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\n    Reviewed-by: Christoph Hellwig \u003chch@infradead.org\u003e\n    Signed-off-by: Lachlan McIlroy \u003clachlan@sgi.com\u003e\n\nOnly modifications here were a minor reformat, plus making the patch\napply given the new use of xfs_buf_is_vmapped().\n\nModified-by: Alex Elder \u003caelder@sgi.com\u003e\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "cd9640a70d542ca026a812ac34733799da0a39c9",
      "tree": "497c3ab912f25994d7adc4c7a860cf01bb78c95c",
      "parents": [
        "57d54889cd00db2752994b389ba714138652e60c"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Tue Mar 16 18:55:54 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Tue Mar 16 15:40:19 2010 -0500"
      },
      "message": "xfs: remove old vmap cache\n\nRe-apply a commit that had been reverted due to regressions\nthat have since been fixed.\n\n    Original commit: d2859751cd0bf586941ffa7308635a293f943c17\n    Author: Nick Piggin \u003cnpiggin@suse.de\u003e\n    Date: Tue, 6 Jan 2009 14:40:44 +1100\n\n    XFS\u0027s vmap batching simply defers a number (up to 64) of vunmaps,\n    and keeps track of them in a list. To purge the batch, it just goes\n    through the list and calls vunamp on each one. This is pretty poor:\n    a global TLB flush is generally still performed on each vunmap, with\n    the most expensive parts of the operation being the broadcast IPIs\n    and locking involved in the SMP callouts, and the locking involved\n    in the vmap management -- none of these are avoided by just batching\n    up the calls. I\u0027m actually surprised it ever made much difference.\n    (Now that the lazy vmap allocator is upstream, this description is\n    not quite right, but the vunmap batching still doesn\u0027t seem to do\n    much).\n\n    Rip all this logic out of XFS completely. I will improve vmap\n    performance and scalability directly in subsequent patch.\n\n    Signed-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\n    Reviewed-by: Christoph Hellwig \u003chch@infradead.org\u003e\n    Signed-off-by: Lachlan McIlroy \u003clachlan@sgi.com\u003e\n\nThe only change I made was to use the \"new\" xfs_buf_is_vmapped()\nfunction in a place it had been open-coded in the original.\n\nModified-by: Alex Elder \u003caelder@sgi.com\u003e\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "66ce3cf84deba6cc71dcf43c9d56a4278e5f712d",
      "tree": "7580bcc42fc7c52620b98d78ebdc654bd7ed83ea",
      "parents": [
        "05c5cb31ec47cacf38db56d9efaa37ca9d473132",
        "9b1f56d60acfd634728f91f34922066c6f80ede6"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 06 11:32:21 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 06 11:32:21 2010 -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: (21 commits)\n  xfs: return inode fork offset in bulkstat for fsr\n  xfs: Increase the default size of the reserved blocks pool\n  xfs: truncate delalloc extents when IO fails in writeback\n  xfs: check for more work before sleeping in xfssyncd\n  xfs: Fix a build warning in xfs_aops.c\n  xfs: fix locking for inode cache radix tree tag updates\n  xfs: remove xfs_ipin/xfs_iunpin\n  xfs: cleanup xfs_iunpin_wait/xfs_iunpin_nowait\n  xfs: kill xfs_lrw.h\n  xfs: factor common xfs_trans_bjoin code\n  xfs: stop passing opaque handles to xfs_log.c routines\n  xfs: split xfs_bmap_btalloc\n  xfs: fix xfs_fsblock_t tracing\n  xfs: fix inode pincount check in fsync\n  xfs: Non-blocking inode locking in IO completion\n  xfs: implement optimized fdatasync\n  xfs: remove wrapper for the fsync file operation\n  xfs: remove wrappers for read/write file operations\n  xfs: merge xfs_lrw.c into xfs_file.c\n  xfs: fix dquota trace format\n  ...\n"
    },
    {
      "commit": "05c5cb31ec47cacf38db56d9efaa37ca9d473132",
      "tree": "03f900679819abd8700d5ea93c22e3a59d3af7ca",
      "parents": [
        "4582a30c2fdca5d2b40f63a20ea082b93230ff2b",
        "4ea41e2de5bba756858bb40f964e3490b6d1a25c"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 06 11:31:38 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 06 11:31:38 2010 -0800"
      },
      "message": "Merge branch \u0027for-2.6.34\u0027 of git://linux-nfs.org/~bfields/linux\n\n* \u0027for-2.6.34\u0027 of git://linux-nfs.org/~bfields/linux: (22 commits)\n  nfsd4: fix minor memory leak\n  svcrpc: treat uid\u0027s as unsigned\n  nfsd: ensure sockets are closed on error\n  Revert \"sunrpc: move the close processing after do recvfrom method\"\n  Revert \"sunrpc: fix peername failed on closed listener\"\n  sunrpc: remove unnecessary svc_xprt_put\n  NFSD: NFSv4 callback client should use RPC_TASK_SOFTCONN\n  xfs_export_operations.commit_metadata\n  commit_metadata export operation replacing nfsd_sync_dir\n  lockd: don\u0027t clear sm_monitored on nsm_reboot_lookup\n  lockd: release reference to nsm_handle in nlm_host_rebooted\n  nfsd: Use vfs_fsync_range() in nfsd_commit\n  NFSD: Create PF_INET6 listener in write_ports\n  SUNRPC: NFS kernel APIs shouldn\u0027t return ENOENT for \"transport not found\"\n  SUNRPC: Bury \"#ifdef IPV6\" in svc_create_xprt()\n  NFSD: Support AF_INET6 in svc_addsock() function\n  SUNRPC: Use rpc_pton() in ip_map_parse()\n  nfsd: 4.1 has an rfc number\n  nfsd41: Create the recovery entry for the NFSv4.1 client\n  nfsd: use vfs_fsync for non-directories\n  ...\n"
    },
    {
      "commit": "e213e26ab3988c516c06eba4dcd030ac052f6dc9",
      "tree": "6e26fbdbb842b387697d73daf6e70cf718269a77",
      "parents": [
        "c812a51d11bbe983f4c24e32b59b265705ddd3c2",
        "efd8f0e6f6c1faa041f228d7113bd3a9db802d49"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 05 13:20:53 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 05 13:20:53 2010 -0800"
      },
      "message": "Merge branch \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6\n\n* \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6: (33 commits)\n  quota: stop using QUOTA_OK / NO_QUOTA\n  dquot: cleanup dquot initialize routine\n  dquot: move dquot initialization responsibility into the filesystem\n  dquot: cleanup dquot drop routine\n  dquot: move dquot drop responsibility into the filesystem\n  dquot: cleanup dquot transfer routine\n  dquot: move dquot transfer responsibility into the filesystem\n  dquot: cleanup inode allocation / freeing routines\n  dquot: cleanup space allocation / freeing routines\n  ext3: add writepage sanity checks\n  ext3: Truncate allocated blocks if direct IO write fails to update i_size\n  quota: Properly invalidate caches even for filesystems with blocksize \u003c pagesize\n  quota: generalize quota transfer interface\n  quota: sb_quota state flags cleanup\n  jbd: Delay discarding buffers in journal_unmap_buffer\n  ext3: quota_write cross block boundary behaviour\n  quota: drop permission checks from xfs_fs_set_xstate/xfs_fs_set_xquota\n  quota: split out compat_sys_quotactl support from quota.c\n  quota: split out netlink notification support from quota.c\n  quota: remove invalid optimization from quota_sync_all\n  ...\n\nFixed trivial conflicts in fs/namei.c and fs/ufs/inode.c\n"
    },
    {
      "commit": "a9185b41a4f84971b930c519f0c63bd450c4810d",
      "tree": "268cf4e206cca12fb9e1dd68984e7c190e465b46",
      "parents": [
        "26821ed40b4230259e770c9911180f38fcaa6f59"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Mar 05 09:21:37 2010 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Mar 05 13:25:52 2010 -0500"
      },
      "message": "pass writeback_control to -\u003ewrite_inode\n\nThis gives the filesystem more information about the writeback that\nis happening.  Trond requested this for the NFS unstable write handling,\nand other filesystems might benefit from this too by beeing able to\ndistinguish between the different callers in more detail.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "26821ed40b4230259e770c9911180f38fcaa6f59",
      "tree": "40cd0fed705ec59dd3c909b96452bae1fc532796",
      "parents": [
        "64ba9926759792cf7b95f823402e2781edd1b5d4"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Mar 05 09:21:21 2010 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Mar 05 13:25:10 2010 -0500"
      },
      "message": "make sure data is on disk before calling -\u003ewrite_inode\n\nSimilar to the fsync issue fixed a while ago in commit\n2daea67e966dc0c42067ebea015ddac6834cef88 we need to write for data to\nactually hit the disk before writing out the metadata to guarantee\ndata integrity for filesystems that modify the inode in the data I/O\ncompletion path.  Currently XFS and NFS handle this manually, and AFS\nhas a write_inode method that does nothing but waiting for data, while\nothers are possibly missing out on this.\n\nFortunately this change has a lot less impact than the fsync change\nas none of the write_inode methods starts data writeout of any form\nby itself.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "9b1f56d60acfd634728f91f34922066c6f80ede6",
      "tree": "e8f64d4bea808341f56f41e724c2920ae6b1ed26",
      "parents": [
        "64ba9926759792cf7b95f823402e2781edd1b5d4",
        "07000ee686cf19e853fa06f7904eff2cfe230ea3"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Fri Mar 05 11:45:03 2010 -0600"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Fri Mar 05 11:45:03 2010 -0600"
      },
      "message": "Merge branch \u0027for-2.6.34-rc1-batch2\u0027 into for-linus\n"
    },
    {
      "commit": "3ed3a4343b79a79d10e31f85f2d1afabcead76c6",
      "tree": "9d3982cfb179bff8071ef99f2e2b36e3872dfa6a",
      "parents": [
        "20f6b2c785cf187445f126321638ab8ba7aa7494"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Mar 05 02:00:42 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Fri Mar 05 11:01:53 2010 -0600"
      },
      "message": "xfs: truncate delalloc extents when IO fails in writeback\n\nWe currently use block_invalidatepage() to clean up pages where I/O\nfails in -\u003ewritepage(). Unfortunately, if the page has delalloc\nregions on it, we fail to remove the delalloc regions when we\ninvalidate the page.  This can result in tripping a BUG() in\nxfs_get_blocks() later on if a direct IO read is done on that same\nregion - the delalloc extent is returned when none is supposed to be\nthere.\n\nFix this by truncating away the delalloc regions on the page before\ninvalidating it. Because they are delalloc, we can do this without\nneeding a transaction. Indeed - if we get ENOSPC errors, we have to\nbe able to do this truncation without a transaction as there is\nno space left for block reservation (typically why we see a ENOSPC\nin writeback).\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "20f6b2c785cf187445f126321638ab8ba7aa7494",
      "tree": "bf8ba702047ae78cffeac6fd97852bde3741621b",
      "parents": [
        "694189328a7e566cb84bd3205503a42b60e87882"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Thu Mar 04 01:46:23 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Fri Mar 05 11:01:45 2010 -0600"
      },
      "message": "xfs: check for more work before sleeping in xfssyncd\n\nxfssyncd processes a queue of work by detaching the queue and\nthen iterating over all the work items. It then sleeps for a\ntime period or until new work comes in. If new work is queued\nwhile xfssyncd is actively processing the detached work queue,\nit will not process that new work until after a sleep timeout\nor the next work event queued wakes it.\n\nFix this by checking the work queue again before going to sleep.\n\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "694189328a7e566cb84bd3205503a42b60e87882",
      "tree": "dfd6cb104db477741ed8cc8a878832e90904f184",
      "parents": [
        "f1f724e4b523d444c5a598d74505aefa3d6844d2"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Thu Mar 04 00:57:09 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Fri Mar 05 11:01:22 2010 -0600"
      },
      "message": "xfs: Fix a build warning in xfs_aops.c\n\nFix a build warning that slipped through.  Dave Chinner had posted\nan updated version of his patch but the previous version--without\nthis fix--was what got committed.\n\nReported-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "ac0e773718dc20551e72900d2e7eada96ac91100",
      "tree": "c46ec45c2044b0995ef241be4b800527210414d7",
      "parents": [
        "5582c76f901d240f57329212b59b4d957ea8d6cf"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Tue Feb 16 03:44:56 2010 -0500"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri Mar 05 00:20:25 2010 +0100"
      },
      "message": "quota: drop permission checks from xfs_fs_set_xstate/xfs_fs_set_xquota\n\nWe already do these checks in the generic code.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    }
  ],
  "next": "8c4e4acd660a09e571a71583b5bbe1eee700c9ad"
}
