)]}'
{
  "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": "696123fca877905696591829c97a2cef11c8d048",
      "tree": "d18c83ee0cd6148f156edb854996ea1554da78fd",
      "parents": [
        "ecd7f082d68d7fb1c96bcf72071aa85db9c00ddf"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Jul 26 13:51:46 2010 -0500"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon Jul 26 16:07:38 2010 -0500"
      },
      "message": "xfs: fix big endian build\n\nCommit 0fd7275cc42ab734eaa1a2c747e65479bd1e42af (\"xfs: fix gcc 4.6\nset but not read and unused statement warnings\") failed to convert\nsome code inside XFS_NATIVE_HOST (big endian host code only) and\nhence fails to build on such machines. Fix it.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "ecd7f082d68d7fb1c96bcf72071aa85db9c00ddf",
      "tree": "1cc4b35219fd1437ec52bc8519a5de96281ba00f",
      "parents": [
        "5d18898b20dfed5f373f8a9a7cbe01446036f8e9"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Thu Jul 22 12:52:08 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon Jul 26 13:16:53 2010 -0500"
      },
      "message": "xfs: clean up xfs_bmap_get_bp\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": "5d18898b20dfed5f373f8a9a7cbe01446036f8e9",
      "tree": "dc96915d62c7140ad4ac33a3724ddf36f9db022f",
      "parents": [
        "939d723b721eef71060201738653a73443ff4510"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Tue Jul 20 17:51:31 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon Jul 26 13:16:52 2010 -0500"
      },
      "message": "xfs: simplify xfs_truncate_file\n\nxfs_truncate_file is only used for truncating quota files.  Move it to\nxfs_qm_syscalls.c so it can be marked static and take advatange of the\nfact by removing the unused page cache validation and taking the iget\ninto the helper.\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": "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": "0664ce8d0fde731d76fa7e86b3afb54f3a6830ff",
      "tree": "c33c78d3a3e34ecc7f1ddda363040b57687b6b25",
      "parents": [
        "73523a2ecf03f0bfe7c36c244aff8a2ef2208a4a"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Tue Jul 20 17:31:01 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon Jul 26 13:16:51 2010 -0500"
      },
      "message": "xfs: clean up filestreams helpers\n\nMove xfs_filestream_peek_ag, xxfs_filestream_get_ag and xfs_filestream_put_ag\nfrom xfs_filestream.h to xfs_filestream.c where it\u0027s only callers are, and\nremove the inline marker while we\u0027re at it to let the compiler decide on the\ninlining.  Also don\u0027t return a value from xfs_filestream_put_ag because\nwe don\u0027t need 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": "73523a2ecf03f0bfe7c36c244aff8a2ef2208a4a",
      "tree": "b6b1f2be9a4b276a41381a51fc7278bf7e365471",
      "parents": [
        "0f1a932f5d4d6ee71afb141914e2d5f11f27eee1"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Tue Jul 20 17:54:45 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon Jul 26 13:16:51 2010 -0500"
      },
      "message": "xfs: fix gcc 4.6 set but not read and unused statement warnings\n\n[hch: dropped a few hunks that need structural changes instead]\n\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\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": "3f34885cd7c6a3f4deea48e3bbc704d91d5704f4",
      "tree": "c03bcdaf42d70d7e08df2cd629d5308870660bed",
      "parents": [
        "aea1b9532143218f8599ecedbbd6bfbf812385e1"
      ],
      "author": {
        "name": "Kulikov Vasiliy",
        "email": "segooon@gmail.com",
        "time": "Tue Jul 20 17:54:28 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon Jul 26 13:16:50 2010 -0500"
      },
      "message": "xfs: fix unsigned underflow in xfs_free_eofblocks\n\nmap_len is unsigned. Checking map_len \u003c\u003d 0 is buggy when it should be\nbelow zero. So, check exact expression instead of map_len.\n\nSigned-off-by: Kulikov Vasiliy \u003csegooon@gmail.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": "4a7edddcb5b14ddb5962e6906b6fd6b500d7a361",
      "tree": "e62253cc40f36bfa631f0dd316a16ac987d11dd4",
      "parents": [
        "438697064aaa2f64e0fcc6586582a3e7ec36005b"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Jul 20 17:53:59 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon Jul 26 13:16:49 2010 -0500"
      },
      "message": "xfs: fix memory reclaim recursion deadlock on locked inode buffer\n\nCalling into memory reclaim with a locked inode buffer can deadlock\nif memory reclaim tries to lock the inode buffer during inode\nteardown. Convert the relevant memory allocations to use KM_NOFS to\navoid this deadlock condition.\n\nReported-by: Peter Watkins \u003ctreestem@gmail.com\u003e\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": "438697064aaa2f64e0fcc6586582a3e7ec36005b",
      "tree": "d17c751af1c917656680d659073541fc954e04bd",
      "parents": [
        "2f11feabb19748c0ffa2eb82d438e8a91b9f6ea0"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Jul 20 17:53:44 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon Jul 26 13:16:49 2010 -0500"
      },
      "message": "xfs: fix xfs_trans_add_item() lockdep warnings\n\nxfs_trans_add_item() is called with ip-\u003ei_ilock held, which means it\nis unsafe for memory reclaim to recurse back into the filesystem\n(ilock is required in writeback). Hence the allocation needs to be\nKM_NOFS to avoid recursion.\n\nLockdep report indicating memory allocation being called with the\nip-\u003ei_ilock held is as follows:\n\n[ 1749.866796] \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[ 1749.867788] [ INFO: inconsistent lock state ]\n[ 1749.868327] 2.6.35-rc3-dgc+ #25\n[ 1749.868741] ---------------------------------\n[ 1749.868741] inconsistent {IN-RECLAIM_FS-W} -\u003e {RECLAIM_FS-ON-W} usage.\n[ 1749.868741] dd/2835 [HC0[0]:SC0[0]:HE1:SE1] takes:\n[ 1749.868741]  (\u0026(\u0026ip-\u003ei_lock)-\u003emr_lock){++++?.}, at: [\u003cffffffff813170fb\u003e] xfs_ilock+0x10b/0x190\n[ 1749.868741] {IN-RECLAIM_FS-W} state was registered at:\n[ 1749.868741]   [\u003cffffffff810b3a97\u003e] __lock_acquire+0x437/0x1450\n[ 1749.868741]   [\u003cffffffff810b4b56\u003e] lock_acquire+0xa6/0x160\n[ 1749.868741]   [\u003cffffffff810a20b5\u003e] down_write_nested+0x65/0xb0\n[ 1749.868741]   [\u003cffffffff813170fb\u003e] xfs_ilock+0x10b/0x190\n[ 1749.868741]   [\u003cffffffff8134e819\u003e] xfs_reclaim_inode+0x99/0x310\n[ 1749.868741]   [\u003cffffffff8134f56b\u003e] xfs_inode_ag_walk+0x8b/0x150\n[ 1749.868741]   [\u003cffffffff8134f6bb\u003e] xfs_inode_ag_iterator+0x8b/0xf0\n[ 1749.868741]   [\u003cffffffff8134f7a8\u003e] xfs_reclaim_inode_shrink+0x88/0x90\n[ 1749.868741]   [\u003cffffffff81119d07\u003e] shrink_slab+0x137/0x1a0\n[ 1749.868741]   [\u003cffffffff8111bbe1\u003e] balance_pgdat+0x421/0x6a0\n[ 1749.868741]   [\u003cffffffff8111bf7d\u003e] kswapd+0x11d/0x320\n[ 1749.868741]   [\u003cffffffff8109ce56\u003e] kthread+0x96/0xa0\n[ 1749.868741]   [\u003cffffffff81035de4\u003e] kernel_thread_helper+0x4/0x10\n[ 1749.868741] irq event stamp: 4234335\n[ 1749.868741] hardirqs last  enabled at (4234335): [\u003cffffffff81147d25\u003e] kmem_cache_free+0x115/0x220\n[ 1749.868741] hardirqs last disabled at (4234334): [\u003cffffffff81147c4d\u003e] kmem_cache_free+0x3d/0x220\n[ 1749.868741] softirqs last  enabled at (4233112): [\u003cffffffff81084dd2\u003e] __do_softirq+0x142/0x260\n[ 1749.868741] softirqs last disabled at (4233095): [\u003cffffffff81035edc\u003e] call_softirq+0x1c/0x50\n[ 1749.868741] \n[ 1749.868741] other info that might help us debug this:\n[ 1749.868741] 2 locks held by dd/2835:\n[ 1749.868741]  #0:  (\u0026(\u0026ip-\u003ei_iolock)-\u003emr_lock#2){+.+.+.}, at: [\u003cffffffff81316edd\u003e] xfs_ilock_nowait+0xed/0x200\n[ 1749.868741]  #1:  (\u0026(\u0026ip-\u003ei_lock)-\u003emr_lock){++++?.}, at: [\u003cffffffff813170fb\u003e] xfs_ilock+0x10b/0x190\n[ 1749.868741] \n[ 1749.868741] stack backtrace:\n[ 1749.868741] Pid: 2835, comm: dd Not tainted 2.6.35-rc3-dgc+ #25\n[ 1749.868741] Call Trace:\n[ 1749.868741]  [\u003cffffffff810b1faa\u003e] print_usage_bug+0x18a/0x190\n[ 1749.868741]  [\u003cffffffff8104264f\u003e] ? save_stack_trace+0x2f/0x50\n[ 1749.868741]  [\u003cffffffff810b2400\u003e] ? check_usage_backwards+0x0/0xf0\n[ 1749.868741]  [\u003cffffffff810b2f11\u003e] mark_lock+0x331/0x400\n[ 1749.868741]  [\u003cffffffff810b3047\u003e] mark_held_locks+0x67/0x90\n[ 1749.868741]  [\u003cffffffff810b3111\u003e] lockdep_trace_alloc+0xa1/0xe0\n[ 1749.868741]  [\u003cffffffff81147419\u003e] kmem_cache_alloc+0x39/0x1e0\n[ 1749.868741]  [\u003cffffffff8133f954\u003e] kmem_zone_alloc+0x94/0xe0\n[ 1749.868741]  [\u003cffffffff8133f9be\u003e] kmem_zone_zalloc+0x1e/0x50\n[ 1749.868741]  [\u003cffffffff81335f02\u003e] xfs_trans_add_item+0x72/0xb0\n[ 1749.868741]  [\u003cffffffff81339e41\u003e] xfs_trans_ijoin+0xa1/0xd0\n[ 1749.868741]  [\u003cffffffff81319f82\u003e] xfs_itruncate_finish+0x312/0x5d0\n[ 1749.868741]  [\u003cffffffff8133cb87\u003e] xfs_free_eofblocks+0x227/0x280\n[ 1749.868741]  [\u003cffffffff8133cd18\u003e] xfs_release+0x138/0x190\n[ 1749.868741]  [\u003cffffffff813464c5\u003e] xfs_file_release+0x15/0x20\n[ 1749.868741]  [\u003cffffffff81150ebf\u003e] fput+0x13f/0x260\n[ 1749.868741]  [\u003cffffffff8114d8c2\u003e] filp_close+0x52/0x80\n[ 1749.868741]  [\u003cffffffff8114d9a9\u003e] sys_close+0xb9/0x120\n[ 1749.868741]  [\u003cffffffff81034ff2\u003e] system_call_fastpath+0x16/0x1b\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": "651701d71da4dc0ac607f17a638e77906f0d280e",
      "tree": "13df2162d97f9fdd7bb6e2789740fc6e8225b123",
      "parents": [
        "2727ccc950ae17375b15005403e1c35ba8fec1df"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Mon Jun 28 10:34:34 2010 -0400"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon Jul 26 13:16:45 2010 -0500"
      },
      "message": "xfs: remove incorrect log write optimization\n\nWe do need a barrier for the first buffer of a split log write.\nOtherwise we might incorrectly stamp the tail LSN into transactions\nin the first part of the split write, or not flush data I/O before\nupdating the inode size.\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": "f2d6761433d69d94e0b39ac44ef0f0f0b0508065",
      "tree": "12b33cc84c66146b9dc16f8df4884a7e6345f20f",
      "parents": [
        "ef35e9255d4ed12522e836fbcec861e7306d794a"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Thu Jun 24 11:52:50 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon Jul 26 13:16:44 2010 -0500"
      },
      "message": "xfs: remove xfs_iput\n\nxfs_iput is just a small wrapper for xfs_iunlock + IRELE.  Having this\nout of line wrapper means the trace events in those two can\u0027t track\ntheir caller properly.  So just remove the wrapper and opencode the\nunlock + rele in the few callers.\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": "3070451eea1ed8e3bde0573183c7d8ac25fd5e97",
      "tree": "667aee111d96e885021e261647fe4ec3cdb1f08a",
      "parents": [
        "7a36c8a98a7dd05756bb147be2ac350325ff5830"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Thu Jun 24 11:42:19 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon Jul 26 13:16:42 2010 -0500"
      },
      "message": "xfs: reduce stack usage in xfs_iomap\n\nxfs_iomap passes a xfs_bmbt_irec pointer to xfs_iomap_write_direct and\nxfs_iomap_write_allocate to give them the results of our read-only\nxfs_bmapi query.  Instead of allocating a new xfs_bmbt_irec on stack\nfor the next call to xfs_bmapi re use the one we got passed as it\u0027s not\nused after this point.\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": "cd8b0bb3c49d0691e9e7b4cf19e21ca63b92c053",
      "tree": "2cefaf57f221ba8c8939ff31884f82bad4f3894a",
      "parents": [
        "a59f55703c3725b2fa582924f51db62b58be05bb"
      ],
      "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 XFS_BMAPI_ flags\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\n\n"
    },
    {
      "commit": "a59f55703c3725b2fa582924f51db62b58be05bb",
      "tree": "7abe7668bd7d599952a567f97de814f9171807ab",
      "parents": [
        "9134c2332ecb9154860669d778ef2808f06503ec"
      ],
      "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:38 2010 -0500"
      },
      "message": "xfs: remove the unused XFS_TRANS_NOSLEEP/XFS_TRANS_WAIT flags\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\n\n"
    },
    {
      "commit": "9134c2332ecb9154860669d778ef2808f06503ec",
      "tree": "544fa9e5ffc843b10231573ef25c0b358f9fa6bb",
      "parents": [
        "dbb2f6529feeee8f4de77849edeee2e60c40c805"
      ],
      "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:38 2010 -0500"
      },
      "message": "xfs: remove the unused XFS_LOG_SLEEP and XFS_LOG_NOSLEEP flags\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\n\n"
    },
    {
      "commit": "dbb2f6529feeee8f4de77849edeee2e60c40c805",
      "tree": "194bd508bb6dd59114750962b7992bbb1fd82a05",
      "parents": [
        "4e0d5f926b80b06234a4ed664d6ae8c54fb08c4b"
      ],
      "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:37 2010 -0500"
      },
      "message": "xfs: kill the unused xlog_debug variable\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\n\n"
    },
    {
      "commit": "4e0d5f926b80b06234a4ed664d6ae8c54fb08c4b",
      "tree": "6e8412c8e0dec25e5e895acb3e73fc25855800dd",
      "parents": [
        "898621d5a72c6799a9a13fce20443b4b6699899c"
      ],
      "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: fix the xfs_log_iovec i_addr type\n\nBy making this member a void pointer we can get rid of a lot of pointless\ncasts.\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": "ca30b2a7b7ac899ac4da6030ccbebf2f137b8e6d",
      "tree": "b934c18bb70196aa44c7eb586569692e1b889f82",
      "parents": [
        "7bfa31d8e0f90b65ff23be94fca65ce261b43fc8"
      ],
      "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:35 2010 -0500"
      },
      "message": "xfs: give li_cb callbacks the correct prototype\n\nStop the function pointer casting madness and give all the li_cb instances\ncorrect prototype.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\n\n"
    },
    {
      "commit": "7bfa31d8e0f90b65ff23be94fca65ce261b43fc8",
      "tree": "dbf7bfd8ce06baca8fd23aeac3c99fa73c07a8bb",
      "parents": [
        "9412e3181c0ef82efc3d8e88d73e583ec10c34e9"
      ],
      "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:35 2010 -0500"
      },
      "message": "xfs: give xfs_item_ops methods the correct prototypes\n\nStop the function pointer casting madness and give all the xfs_item_ops the\ncorrect prototypes.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\n\n"
    },
    {
      "commit": "9412e3181c0ef82efc3d8e88d73e583ec10c34e9",
      "tree": "10ed24cdebd9922e7cd9414941e5c59e9e5fafab",
      "parents": [
        "e98c414f9a3134fe7efc56ef8f1d394b54bfd40e"
      ],
      "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: merge iop_unpin_remove into iop_unpin\n\nThe unpin_remove item operation instances always share most of the\nimplementation with the respective unpin implementation.  So instead\nof keeping two different entry points add a remove flag to the unpin\noperation and share the code more easily.\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": "7124fe0a5b619d65b739477b3b55a20bf805b06d",
      "tree": "be333ebdcc7df735070dbc1441c1d59682d06132",
      "parents": [
        "7dce11dbac54fce777eea0f5fb25b2694ccd7900"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Thu Jun 24 11:15:33 2010 +1000"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Thu Jun 24 11:15:33 2010 +1000"
      },
      "message": "xfs: validate untrusted inode numbers during lookup\n\nWhen we decode a handle or do a bulkstat lookup, we are using an\ninode number we cannot trust to be valid. If we are deleting inode\nchunks from disk (default noikeep mode), then we cannot trust the on\ndisk inode buffer for any given inode number to correctly reflect\nwhether the inode has been unlinked as the di_mode nor the\ngeneration number may have been updated on disk.\n\nThis is due to the fact that when we delete an inode chunk, we do\nnot write the clusters back to disk when they are removed - instead\nwe mark them stale to avoid them being written back potentially over\nthe top of something that has been subsequently allocated at that\nlocation. The result is that we can have locations of disk that look\nlike they contain valid inodes but in reality do not. Hence we\ncannot simply convert the inode number to a block number and read\nthe location from disk to determine if the inode is valid or not.\n\nAs a result, and XFS_IGET_BULKSTAT lookup needs to actually look the\ninode up in the inode allocation btree to determine if the inode\nnumber is valid or not.\n\nIt should be noted even on ikeep filesystems, there is the\npossibility that blocks on disk may look like valid inode clusters.\ne.g. if there are filesystem images hosted on the filesystem. Hence\neven for ikeep filesystems we really need to validate that the inode\nnumber is valid before issuing the inode buffer read.\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": "1817176a86352f65210139d4c794ad2d19fc6b63",
      "tree": "59ccbcb634d87882fc899b0d21438c4bb86f8632",
      "parents": [
        "7e27d6e778cd87b6f2415515d7127eba53fe5d02"
      ],
      "author": {
        "name": "Dan Rosenberg",
        "email": "dan.j.rosenberg@gmail.com",
        "time": "Thu Jun 24 12:07:47 2010 +1000"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Thu Jun 24 12:07:47 2010 +1000"
      },
      "message": "xfs: prevent swapext from operating on write-only files\n\nThis patch prevents user \"foo\" from using the SWAPEXT ioctl to swap\na write-only file owned by user \"bar\" into a file owned by \"foo\" and\nsubsequently reading it.  It does so by checking that the file\ndescriptors passed to the ioctl are also opened for reading.\n\nSigned-off-by: Dan Rosenberg \u003cdan.j.rosenberg@gmail.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\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": "f9369729496a0f4c607a4cc1ea4dfeddbbfc505a",
      "tree": "05d463cd3c40514f09c01553cfd40ea3ea784f37",
      "parents": [
        "070ecdca54dde9577d2697088e74e45568f48efb"
      ],
      "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: improve xfs_isilocked\n\nUse rwsem_is_locked to make the assertations for shared locks work.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\n\n\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": "5b257b4a1f9239624c6b5e669763de04e482c2b3",
      "tree": "4896f326cc9e30c091ad2a370244837613f998ee",
      "parents": [
        "fb3b504adeee942e55393396fea8fdf406acf037"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "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: fix race in inode cluster freeing failing to stale inodes\n\nWhen an inode cluster is freed, it needs to mark all inodes in memory as\nXFS_ISTALE before marking the buffer as stale. This is eeded because the inodes\nhave a different life cycle to the buffer, and once the buffer is torn down\nduring transaction completion, we must ensure none of the inodes get written\nback (which is what XFS_ISTALE does).\n\nUnfortunately, xfs_ifree_cluster() has some bugs that lead to inodes not being\nmarked with XFS_ISTALE. This shows up when xfs_iflush() is called on these\ninodes either during inode reclaim or tail pushing on the AIL.  The buffer is\nread back, but no longer contains inodes and so triggers assert failures and\nshutdowns. This was reproducable with at run.dbench10 invocation from xfstests.\n\nThere are two main causes of xfs_ifree_cluster() failing. The first is simple -\nit checks in-memory inodes it finds in the per-ag icache to see if they are\nclean without holding the flush lock. if they are clean it skips them\ncompletely. However, If an inode is flushed delwri, it will\nappear clean, but is not guaranteed to be written back until the flush lock has\nbeen dropped. Hence we may have raced on the clean check and the inode may\nactually be dirty. Hence always mark inodes found in memory stale before we\ncheck properly if they are clean.\n\nThe second is more complex, and makes the first problem easier to hit.\nBasically the in-memory inode scan is done with full knowledge it can be racing\nwith inode flushing and AIl tail pushing, which means that inodes that it can\u0027t\nget the flush lock on might not be attached to the buffer after then in-memory\ninode scan due to IO completion occurring. This is actually documented in the\ncode as \"needs better interlocking\". i.e. this is a zero-day bug.\n\nEffectively, the in-memory scan must be done while the inode buffer is locked\nand Io cannot be issued on it while we do the in-memory inode scan. This\nensures that inodes we couldn\u0027t get the flush lock on are guaranteed to be\nattached to the cluster buffer, so we can then catch all in-memory inodes and\nmark them stale.\n\nNow that the inode cluster buffer is locked before the in-memory scan is done,\nthere is no need for the two-phase update of the in-memory inodes, so simplify\nthe code into two loops and remove the allocation of the temporary buffer used\nto hold locked inodes across the phases.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\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": "9b98b6f3e1534bba2efcd5b16318945cf2218d99",
      "tree": "1b793a3632ec68c2f8a2f24f200325f2235dd1b8",
      "parents": [
        "38e712ab3d28d79725eaade02fe8aba51abac196"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Thu May 27 01:58:13 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Fri May 28 15:19:50 2010 -0500"
      },
      "message": "xfs: fix might_sleep() warning when initialising per-ag tree\n\nThe use of radix_tree_preload() only works if the radix tree was\ninitialised without the __GFP_WAIT flag. The per-ag tree uses\nGFP_NOFS, so does not trigger allocation of new tree nodes from the\npreloaded array. Hence it enters the allocator with a spinlock held\nand triggers the might_sleep() warnings.\n\nReported-by; Chris Mason \u003cchris.mason@oracle.com\u003e\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": "38e712ab3d28d79725eaade02fe8aba51abac196",
      "tree": "e9fb77e11d0be890b86abcbe5fadc02e4761615f",
      "parents": [
        "3bd0946eb157e26240ca858d1a42738b095dc6f3"
      ],
      "author": {
        "name": "Julia Lawall",
        "email": "julia@diku.dk",
        "time": "Wed May 26 15:57:23 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Fri May 28 15:19:41 2010 -0500"
      },
      "message": "fs/xfs/quota: Add missing mutex_unlock\n\nAdd a mutex_unlock missing on the error path.  The use of this lock\nis balanced elsewhere in the file.\n\nThe semantic match that finds this problem is as follows:\n(http://coccinelle.lip6.fr/)\n\n// \u003csmpl\u003e\n@@\nexpression E1;\n@@\n\n* mutex_lock(E1,...);\n  \u003c+... when !\u003d E1\n  if (...) {\n    ... when !\u003d E1\n*   return ...;\n  }\n  ...+\u003e\n* mutex_unlock(E1,...);\n// \u003c/smpl\u003e\n\nSigned-off-by: Julia Lawall \u003cjulia@diku.dk\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": "fdc07f44c891d3fdee7722a03e3881614a293b3c",
      "tree": "aed7fd2fac1df3d4d01c679c18ce2fdba31025c3",
      "parents": [
        "025101dca4480eff9da948405e872d5115030850"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Mon May 10 17:28:14 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Fri May 28 14:58:36 2010 -0500"
      },
      "message": "xfs: clean up xlog_align\n\nAdd suggested cleanups to commit 29db3370a1369541d58d692fbfb168b8a0bd7f41\nfrom review that didn\u0027t end up being commited.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "025101dca4480eff9da948405e872d5115030850",
      "tree": "a35460cf1a1cce94bb19249328761551c8f1b6b1",
      "parents": [
        "32891b292d6262d1db8e553cf3f4b38a91247b5a"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Tue May 04 13:53:48 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Fri May 28 14:58:30 2010 -0500"
      },
      "message": "xfs: cleanup log reservation calculactions\n\nInstead of having small helper functions calling big macros do the\ncalculations for the log reservations directly in the functions.\nThese are mostly 1:1 from the macros execept that the macros kept\nthe quota calculations in their callers.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "32891b292d6262d1db8e553cf3f4b38a91247b5a",
      "tree": "2110ec573f89b617e8a8dfe891b86a6842601ef2",
      "parents": [
        "657a4cffde065beca7d919e867f61e7d322708b6"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Fri Apr 30 16:43:48 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Fri May 28 14:58:24 2010 -0500"
      },
      "message": "xfs: be more explicit if RT mount fails due to config\n\nRecent testers were slightly confused that a realtime mount failed\ndue to missing CONFIG_XFS_RT; we can make that a little more\nobvious.\n\nV2: drop the else as suggested by Christoph\n\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "657a4cffde065beca7d919e867f61e7d322708b6",
      "tree": "c3841761a48175aaab67c4e7293ae4d86b44b393",
      "parents": [
        "ccf7c23fc129e75ef60e6f59f60a485b7a056598"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Fri Apr 30 03:42:49 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Fri May 28 14:58:16 2010 -0500"
      },
      "message": "xfs: replace E2BIG with EFBIG where appropriate\n\nMany places in the xfs code return E2BIG when they really mean\nEFBIG; trying to grow past 16T on a 32 bit machine, for example,\nsays \"Argument list too long\" rather than \"File too large\" which is\nnot particularly helpful.\n\nSome of these don\u0027t make perfect sense as EFBIG either, but still\nbetter than E2BIG IMHO.\n\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\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": "ccf7c23fc129e75ef60e6f59f60a485b7a056598",
      "tree": "957539e31ee2a7155bbf9bb085ec1cb1d3432d3a",
      "parents": [
        "df806158b0f6eb24247773b4a19b8b59d7217e59"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Thu May 20 23:19:42 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon May 24 10:41:22 2010 -0500"
      },
      "message": "xfs: Ensure inode allocation buffers are fully replayed\n\nWith delayed logging, we can get inode allocation buffers in the\nsame transaction inode unlink buffers. We don\u0027t currently mark inode\nallocation buffers in the log, so inode unlink buffers take\nprecedence over allocation buffers.\n\nThe result is that when they are combined into the same checkpoint,\nonly the unlinked inode chain fields are replayed, resulting in\nuninitialised inode buffers being detected when the next inode\nmodification is replayed.\n\nTo fix this, we need to ensure that we do not set the inode buffer\nflag in the buffer log item format flags if the inode allocation has\nnot already hit the log. To avoid requiring a change to log\nrecovery, we really need to make this a modification that relies\nonly on in-memory sate.\n\nWe can do this by checking during buffer log formatting (while the\nCIL cannot be flushed) if we are still in the same sequence when we\ncommit the unlink transaction as the inode allocation transaction.\nIf we are, then we do not add the inode buffer flag to the buffer\nlog format item flags. This means the entire buffer will be\nreplayed, not just the unlinked fields. We do this while\nCIL flusheѕ are locked out to ensure that we don\u0027t race with the\nsequence numbers changing and hence fail to put the inode buffer\nflag in the buffer format flags when we really need to.\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": "df806158b0f6eb24247773b4a19b8b59d7217e59",
      "tree": "a6fb142258aabf03011aadd14c9cf6ade9033d58",
      "parents": [
        "9da1ab181ac1790f86528b86ba5876f037e8dcdc"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon May 17 15:52:13 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon May 24 10:38:20 2010 -0500"
      },
      "message": "xfs: enable background pushing of the CIL\n\nIf we let the CIL grow without bound, it will grow large enough to violate\nrecovery constraints (must be at least one complete transaction in the log at\nall times) or take forever to write out through the log buffers. Hence we need\na check during asynchronous transactions as to whether the CIL needs to be\npushed.\n\nWe track the amount of log space the CIL consumes, so it is relatively simple\nto limit it on a pure size basis. Make the limit the minimum of just under half\nthe log size (recovery constraint) or 8MB of log space (which is an awful lot\nof metadata).\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": "9da1ab181ac1790f86528b86ba5876f037e8dcdc",
      "tree": "44aed8ed83c4d8b4480d757d2efb0dde475a6500",
      "parents": [
        "71e330b593905e40d6c5afa824d38ee02d70ce5f"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon May 17 15:51:59 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon May 24 10:38:14 2010 -0500"
      },
      "message": "xfs: forced unmounts need to push the CIL\n\nIf the filesystem is being shut down and the there is no log error,\nthe current code forces out the current log buffers. This code now needs\nto push the CIL before it forces out the log buffers to acheive the same\nresult.\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": "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": "955833cf2ad0aa39b336e853cad212d867199984",
      "tree": "301c224647dea71852e36929932321bccabd1dc4",
      "parents": [
        "169a7b078eaa765e6bd09865c985298ee9084a89"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri May 14 21:41:46 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon May 24 10:33:52 2010 -0500"
      },
      "message": "xfs: make the log ticket ID available outside the log infrastructure\n\nThe ticket ID is needed to uniquely identify transactions when doing busy\nextent matching. Delayed logging changes the lifecycle of busy extents with\nrespect to the transaction structure lifecycle. Hence we can no longer use\nthe transaction structure as a means of determining the owner of the busy\nextent as it may be freed and reused while the busy extent is still active.\n\nThis commit provides the infrastructure to access the xlog_tid_t held in the\nticket from a transaction handle. This avoids the need for callers to peek\ninto the transaction and log structures to find this out.\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": "169a7b078eaa765e6bd09865c985298ee9084a89",
      "tree": "ee787e600c6c80b6c08ab4d551b8c494daa22e81",
      "parents": [
        "c11554104f4dcb509fd43973389b097a04b9d51d"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri May 07 11:05:31 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon May 24 10:33:46 2010 -0500"
      },
      "message": "xfs: clean up log ticket overrun debug output\n\nPush the error message output when a ticket overrun is detected\ninto the ticket printing functions. Also remove the debug version\nof the code as the production version will still panic just as\neffectively on a debug kernel via the panic mask being set.\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": "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": "64fc35de60da3b1fe970168d10914bf1cf34a3e3",
      "tree": "150216a336bbb3a0f7066763b675fb6a0e6f3061",
      "parents": [
        "3383ca5780f88bb2c119174045ed77d5ece08072"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri May 07 11:04:34 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon May 24 10:33:31 2010 -0500"
      },
      "message": "xfs: modify buffer item reference counting\n\nThe buffer log item reference counts used to take referenceѕ for every\ntransaction, similar to the pin counting. This is symmetric (like the\npin/unpin) with respect to transaction completion, but with dleayed logging\nbecomes assymetric as the pinning becomes assymetric w.r.t. transaction\ncompletion.\n\nTo make both cases the same, allow the buffer pinning to take a reference to\nthe buffer log item and always drop the reference the transaction has on it\nwhen being unlocked. This is balanced correctly because the unpin operation\nalways drops a reference to the log item. Hence reference counting becomes\nsymmetric w.r.t. item pinning as well as w.r.t active transactions and as a\nresult the reference counting model remain consistent between normal and\ndelayed logging.\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": "3383ca5780f88bb2c119174045ed77d5ece08072",
      "tree": "582aaa878f90af0e48941c3fcadbafe4c1a695f4",
      "parents": [
        "524ee36fa4661d745a467c3bba0e1034fd1f4b77"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri May 07 11:04:17 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon May 24 10:33:17 2010 -0500"
      },
      "message": "xfs: allow log ticket allocation to take allocation flags\n\nDelayed logging currently requires ticket allocation to succeed, so\nwe need to be able to sleep on allocation. It also should not allow\nmemory allocation to recurse into the filesystem. hence we need to\npass allocation flags directing the type of allocation the caller\nrequires.\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": "524ee36fa4661d745a467c3bba0e1034fd1f4b77",
      "tree": "c14176bd3f02e40f1fbdffc137b6f4d49b8e6d5e",
      "parents": [
        "b4ed4626a9775cd8cb77209280d24839526f94f2"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri May 07 11:05:05 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon May 24 10:33:10 2010 -0500"
      },
      "message": "xfs: Don\u0027t reuse the same transaction ID for duplicated transactions.\n\nThe transaction ID is written into the log as the unique identifier\nfor transactions during recover. When duplicating a transaction, we\nreuse the log ticket, which means it has the same transaction ID as\nthe previous transaction.\n\nRather than regenerating a random transaction ID for the duplicated\ntransaction, just add one to the current ID so that duplicated\ntransaction can be easily spotted in the log and during recovery\nduring problem diagnosis.\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": "b4ed4626a9775cd8cb77209280d24839526f94f2",
      "tree": "4269213c71d0e20d5c383c8a0947ce897cea8ac5",
      "parents": [
        "bd1556a146d46070049428dded306829cb65161d"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Apr 28 12:29:01 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:20 2010 -0500"
      },
      "message": "xfs: mark xfs_iomap_write_ helpers static\n\nAnd also drop a useless argument to xfs_iomap_write_direct.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    }
  ],
  "next": "bd1556a146d46070049428dded306829cb65161d"
}
