)]}'
{
  "log": [
    {
      "commit": "32aaeffbd4a7457bf2f7448b33b5946ff2a960eb",
      "tree": "faf7ad871d87176423ff9ed1d1ba4d9c688fc23f",
      "parents": [
        "208bca0860406d16398145ddd950036a737c3c9d",
        "67b84999b1a8b1af5625b1eabe92146c5eb42932"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 06 19:44:47 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 06 19:44:47 2011 -0800"
      },
      "message": "Merge branch \u0027modsplit-Oct31_2011\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux\n\n* \u0027modsplit-Oct31_2011\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux: (230 commits)\n  Revert \"tracing: Include module.h in define_trace.h\"\n  irq: don\u0027t put module.h into irq.h for tracking irqgen modules.\n  bluetooth: macroize two small inlines to avoid module.h\n  ip_vs.h: fix implicit use of module_get/module_put from module.h\n  nf_conntrack.h: fix up fallout from implicit moduleparam.h presence\n  include: replace linux/module.h with \"struct module\" wherever possible\n  include: convert various register fcns to macros to avoid include chaining\n  crypto.h: remove unused crypto_tfm_alg_modname() inline\n  uwb.h: fix implicit use of asm/page.h for PAGE_SIZE\n  pm_runtime.h: explicitly requires notifier.h\n  linux/dmaengine.h: fix implicit use of bitmap.h and asm/page.h\n  miscdevice.h: fix up implicit use of lists and types\n  stop_machine.h: fix implicit use of smp.h for smp_processor_id\n  of: fix implicit use of errno.h in include/linux/of.h\n  of_platform.h: delete needless include \u003clinux/module.h\u003e\n  acpi: remove module.h include from platform/aclinux.h\n  miscdevice.h: delete unnecessary inclusion of module.h\n  device_cgroup.h: delete needless include \u003clinux/module.h\u003e\n  net: sch_generic remove redundant use of \u003clinux/module.h\u003e\n  net: inet_timewait_sock doesnt need \u003clinux/module.h\u003e\n  ...\n\nFix up trivial conflicts (other header files, and  removal of the ab3550 mfd driver) in\n - drivers/media/dvb/frontends/dibx000_common.c\n - drivers/media/video/{mt9m111.c,ov6650.c}\n - drivers/mfd/ab3550-core.c\n - include/linux/dmaengine.h\n"
    },
    {
      "commit": "bfe8684869601dacfcb2cd69ef8cfd9045f62170",
      "tree": "4e213aaa766b26f43f0f9ec7998a7745239d9377",
      "parents": [
        "6d6b77f163c7eabedbba00ed2abb7d4a570bff76"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Fri Oct 28 14:13:29 2011 +0200"
      },
      "committer": {
        "name": "Christoph Hellwig",
        "email": "hch@serles.lst.de",
        "time": "Wed Nov 02 12:53:43 2011 +0100"
      },
      "message": "filesystems: add set_nlink()\n\nReplace remaining direct i_nlink updates with a new set_nlink()\nupdater function.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nTested-by: Toshiyuki Okajima \u003ctoshi.okajima@jp.fujitsu.com\u003e\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "b9075fa968a0a4347aef35e235e2995c0e57dddd",
      "tree": "cf9f9716784e790d8a43339653256d9cf9178ff3",
      "parents": [
        "ae29bc92da01a2e9d278a9a58c3b307d41cc0254"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Mon Oct 31 17:11:33 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:54 2011 -0700"
      },
      "message": "treewide: use __printf not __attribute__((format(printf,...)))\n\nStandardize the style for compiler based printf format verification.\nStandardized the location of __printf too.\n\nDone via script and a little typing.\n\n$ grep -rPl --include\u003d*.[ch] -w \"__attribute__\" * | \\\n  grep -vP \"^(tools|scripts|include/linux/compiler-gcc.h)\" | \\\n  xargs perl -n -i -e \u0027local $/; while (\u003c\u003e) { s/\\b__attribute__\\s*\\(\\s*\\(\\s*format\\s*\\(\\s*printf\\s*,\\s*(.+)\\s*,\\s*(.+)\\s*\\)\\s*\\)\\s*\\)/__printf($1, $2)/g ; print; }\u0027\n\n[akpm@linux-foundation.org: revert arch bits]\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nCc: \"Kirill A. Shutemov\" \u003ckirill@shutemov.name\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "afeacc8c1f38b7bb93d4bc7b4ba04c2605061ef0",
      "tree": "e6eb248db3f932808ff2495a094e728d7d7f61e1",
      "parents": [
        "79bb1ee46ad1b76069108ca9b5467a3c14574744"
      ],
      "author": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Thu May 26 16:00:52 2011 -0400"
      },
      "committer": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Mon Oct 31 19:30:31 2011 -0400"
      },
      "message": "fs: add export.h to files using EXPORT_SYMBOL/THIS_MODULE macros\n\nThese files were getting \u003clinux/module.h\u003e via an implicit include\npath, but we want to crush those out of existence since they cost\ntime during compiles of processing thousands of lines of headers\nfor no reason.  Give them the lightweight header that just contains\nthe EXPORT_SYMBOL infrastructure.\n\nSigned-off-by: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\n"
    },
    {
      "commit": "f362f98e7c445643d27c610bb7a86b79727b592e",
      "tree": "399d9ebccdfbdfe9690ab1403a001d6f08e54b41",
      "parents": [
        "f793f2961170c0b49c1650e69e7825484159ce62",
        "f3c7691e8d30d88899b514675c7c86d19057b5fd"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 28 10:49:34 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 28 10:49:34 2011 -0700"
      },
      "message": "Merge branch \u0027for-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/hch/vfs-queue\n\n* \u0027for-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/hch/vfs-queue: (21 commits)\n  leases: fix write-open/read-lease race\n  nfs: drop unnecessary locking in llseek\n  ext4: replace cut\u0027n\u0027pasted llseek code with generic_file_llseek_size\n  vfs: add generic_file_llseek_size\n  vfs: do (nearly) lockless generic_file_llseek\n  direct-io: merge direct_io_walker into __blockdev_direct_IO\n  direct-io: inline the complete submission path\n  direct-io: separate map_bh from dio\n  direct-io: use a slab cache for struct dio\n  direct-io: rearrange fields in dio/dio_submit to avoid holes\n  direct-io: fix a wrong comment\n  direct-io: separate fields only used in the submission path from struct dio\n  vfs: fix spinning prevention in prune_icache_sb\n  vfs: add a comment to inode_permission()\n  vfs: pass all mask flags check_acl and posix_acl_permission\n  vfs: add hex format for MAY_* flag values\n  vfs: indicate that the permission functions take all the MAY_* flags\n  compat: sync compat_stats with statfs.\n  vfs: add \"device\" tag to /proc/self/mountstats\n  cleanup: vfs: small comment fix for block_invalidatepage\n  ...\n\nFix up trivial conflict in fs/gfs2/file.c (llseek changes)\n"
    },
    {
      "commit": "f793f2961170c0b49c1650e69e7825484159ce62",
      "tree": "06d27973f9db1080c1460f32155ce2baf610c3d4",
      "parents": [
        "dabcbb1bae0f55378060b285062b20f6ec648c6a",
        "b99b98dc2673a123a73068f16720232d7be7e669"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 28 10:44:50 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 28 10:44:50 2011 -0700"
      },
      "message": "Merge http://sucs.org/~rohan/git/gfs2-3.0-nmw\n\n* http://sucs.org/~rohan/git/gfs2-3.0-nmw: (24 commits)\n  GFS2: Move readahead of metadata during deallocation into its own function\n  GFS2: Remove two unused variables\n  GFS2: Misc fixes\n  GFS2: rewrite fallocate code to write blocks directly\n  GFS2: speed up delete/unlink performance for large files\n  GFS2: Fix off-by-one in gfs2_blk2rgrpd\n  GFS2: Clean up -\u003epage_mkwrite\n  GFS2: Correctly set goal block after allocation\n  GFS2: Fix AIL flush issue during fsync\n  GFS2: Use cached rgrp in gfs2_rlist_add()\n  GFS2: Call do_strip() directly from recursive_scan()\n  GFS2: Remove obsolete assert\n  GFS2: Cache the most recently used resource group in the inode\n  GFS2: Make resource groups \"append only\" during life of fs\n  GFS2: Use rbtree for resource groups and clean up bitmap buffer ref count scheme\n  GFS2: Fix lseek after SEEK_DATA, SEEK_HOLE have been added\n  GFS2: Clean up gfs2_create\n  GFS2: Use -\u003edirty_inode()\n  GFS2: Fix bug trap and journaled data fsync\n  GFS2: Fix inode allocation error path\n  ...\n"
    },
    {
      "commit": "ef3d0fd27e90f67e35da516dafc1482c82939a60",
      "tree": "dea852eab2a52782867becffb11bce2577ed2b91",
      "parents": [
        "847cc6371ba820763773e993000410d6d8d23515"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Thu Sep 15 16:06:48 2011 -0700"
      },
      "committer": {
        "name": "root",
        "email": "root@serles.lst.de",
        "time": "Fri Oct 28 14:58:58 2011 +0200"
      },
      "message": "vfs: do (nearly) lockless generic_file_llseek\n\nThe i_mutex lock use of generic _file_llseek hurts.  Independent processes\naccessing the same file synchronize over a single lock, even though\nthey have no need for synchronization at all.\n\nUnder high utilization this can cause llseek to scale very poorly on larger\nsystems.\n\nThis patch does some rethinking of the llseek locking model:\n\nFirst the 64bit f_pos is not necessarily atomic without locks\non 32bit systems. This can already cause races with read() today.\nThis was discussed on linux-kernel in the past and deemed acceptable.\nThe patch does not change that.\n\nLet\u0027s look at the different seek variants:\n\nSEEK_SET: Doesn\u0027t really need any locking.\nIf there\u0027s a race one writer wins, the other loses.\n\nFor 32bit the non atomic update races against read()\nstay the same. Without a lock they can also happen\nagainst write() now.  The read() race was deemed\nacceptable in past discussions, and I think if it\u0027s\nok for read it\u0027s ok for write too.\n\n\u003d\u003e Don\u0027t need a lock.\n\nSEEK_END: This behaves like SEEK_SET plus it reads\nthe maximum size too. Reading the maximum size would have the\n32bit atomic problem. But luckily we already have a way to read\nthe maximum size without locking (i_size_read), so we\ncan just use that instead.\n\nWithout i_mutex there is no synchronization with write() anymore,\nhowever since the write() update is atomic on 64bit it just behaves\nlike another racy SEEK_SET.  On non atomic 32bit it\u0027s the same\nas SEEK_SET.\n\n\u003d\u003e Don\u0027t need a lock, but need to use i_size_read()\n\nSEEK_CUR: This has a read-modify-write race window\non the same file. One could argue that any application\ndoing unsynchronized seeks on the same file is already broken.\nBut for the sake of not adding a regression here I\u0027m\nusing the file-\u003ef_lock to synchronize this. Using this\nlock is much better than the inode mutex because it doesn\u0027t\nsynchronize between processes.\n\n\u003d\u003e So still need a lock, but can use a f_lock.\n\nThis patch implements this new scheme in generic_file_llseek.\nI dropped generic_file_llseek_unlocked and changed all callers.\n\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "36b8d186e6cc8e32cb5227f5645a58e1bc0af190",
      "tree": "1000ad26e189e6ff2c53fb7eeff605f59c7ad94e",
      "parents": [
        "cd85b557414fe4cd44ea6608825e96612a5fe2b2",
        "c45ed235abf1b0b6666417e3c394f18717976acd"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 25 09:45:31 2011 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 25 09:45:31 2011 +0200"
      },
      "message": "Merge branch \u0027next\u0027 of git://selinuxproject.org/~jmorris/linux-security\n\n* \u0027next\u0027 of git://selinuxproject.org/~jmorris/linux-security: (95 commits)\n  TOMOYO: Fix incomplete read after seek.\n  Smack: allow to access /smack/access as normal user\n  TOMOYO: Fix unused kernel config option.\n  Smack: fix: invalid length set for the result of /smack/access\n  Smack: compilation fix\n  Smack: fix for /smack/access output, use string instead of byte\n  Smack: domain transition protections (v3)\n  Smack: Provide information for UDS getsockopt(SO_PEERCRED)\n  Smack: Clean up comments\n  Smack: Repair processing of fcntl\n  Smack: Rule list lookup performance\n  Smack: check permissions from user space (v2)\n  TOMOYO: Fix quota and garbage collector.\n  TOMOYO: Remove redundant tasklist_lock.\n  TOMOYO: Fix domain transition failure warning.\n  TOMOYO: Remove tomoyo_policy_memory_lock spinlock.\n  TOMOYO: Simplify garbage collector.\n  TOMOYO: Fix make namespacecheck warnings.\n  target: check hex2bin result\n  encrypted-keys: check hex2bin result\n  ...\n"
    },
    {
      "commit": "b99b98dc2673a123a73068f16720232d7be7e669",
      "tree": "a191b03e9c054c62777d1b3ab3cae55cbd6e5e01",
      "parents": [
        "9ae32429fe036fcfce036ec57b28fc59f3911976"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Sep 21 11:05:16 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Oct 21 12:39:54 2011 +0100"
      },
      "message": "GFS2: Move readahead of metadata during deallocation into its own function\n\nMove the recently added readahead of the indirect pointer\ntree during deallocation into its own function in order\nthat we can use it elsewhere in the future. Also this\nfixes the resetting of the \"first\" variable in the\noriginal patch.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "9ae32429fe036fcfce036ec57b28fc59f3911976",
      "tree": "a331589e14fef9f8149fc3e1f00baab7d60260fe",
      "parents": [
        "891a8e9335176b7eb9adc5e34f555ee5e1da47c6"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Sep 20 12:16:11 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Oct 21 12:39:52 2011 +0100"
      },
      "message": "GFS2: Remove two unused variables\n\nThe two variables being initialised in gfs2_inplace_reserve\nto track the file \u0026 line number of the caller are never\nused, so we might as well remove them.\n\nIf something does go wrong, then a stack trace is probably\nmore useful anyway.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "891a8e9335176b7eb9adc5e34f555ee5e1da47c6",
      "tree": "61e52cad86ab0455f310478189f21722a785c16d",
      "parents": [
        "64dd153c83743af81f20924c6343652d731eeecb"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Sep 19 10:25:49 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Oct 21 12:39:51 2011 +0100"
      },
      "message": "GFS2: Misc fixes\n\nSome items picked up through automated code analysis. A few bits\nof unreachable code and two unchecked return values.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "64dd153c83743af81f20924c6343652d731eeecb",
      "tree": "e296566ece355c34cb10ad35ce35f43ca58fd036",
      "parents": [
        "bd5437a7d4307a35f2c7cc19cad706ec0e5d61f0"
      ],
      "author": {
        "name": "Benjamin Marzinski",
        "email": "bmarzins@redhat.com",
        "time": "Mon Sep 12 18:15:24 2011 -0500"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Oct 21 12:39:49 2011 +0100"
      },
      "message": "GFS2: rewrite fallocate code to write blocks directly\n\nGFS2\u0027s fallocate code currently goes through the page cache. Since it\u0027s only\nwriting to the end of the file or to holes in it, it doesn\u0027t need to, and it\nwas causing issues on low memory environments. This patch pulls in some of\nSteve\u0027s block allocation work, and uses it to simply allocate the blocks for\nthe file, and zero them out at allocation time.  It provides a slight\nperformance increase, and it dramatically simplifies the code.\n\nSigned-off-by: Benjamin Marzinski \u003cbmarzins@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "bd5437a7d4307a35f2c7cc19cad706ec0e5d61f0",
      "tree": "3014bf500f6fc1aa90989d5ae956d1c45ff478d2",
      "parents": [
        "f75bbfb4dda68c86eb33cde7e2b5c1343c6d5812"
      ],
      "author": {
        "name": "Bob Peterson",
        "email": "rpeterso@redhat.com",
        "time": "Thu Sep 15 09:59:56 2011 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Oct 21 12:39:47 2011 +0100"
      },
      "message": "GFS2: speed up delete/unlink performance for large files\n\nThis patch improves the performance of delete/unlink\noperations in a GFS2 file system where the files are large\nby adding a layer of metadata read-ahead for indirect blocks.\nMileage will vary, but on my system, deleting an 8.6G file\ndropped from 22 seconds to about 4.5 seconds.\n\nSigned-off-by: Bob Peterson \u003crpeterso@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "f75bbfb4dda68c86eb33cde7e2b5c1343c6d5812",
      "tree": "42d5f7a3637061cddc3170aac8e57c4933007898",
      "parents": [
        "13d921e37174e3d1042deeb303537c1d935da553"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Sep 08 10:21:13 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Oct 21 12:39:46 2011 +0100"
      },
      "message": "GFS2: Fix off-by-one in gfs2_blk2rgrpd\n\nBob reported:\n\nI found an off-by-one problem with how I coded this section:\nIt should be:\n\n+ else if (blk \u003e\u003d cur-\u003erd_data0 + cur-\u003erd_data)\n\nIn fact, cur-\u003erd_data0 + cur-\u003erd_data is the start of the next\nrgrp (the next ri_addr), so without the \"\u003d\" check it can land on\nthe wrong rgrp.\n\nIn all normal cases, this won\u0027t be a problem: you\u0027re searching\nfor a block _within_ the rgrp, which will pass the test properly.\nWhere it gets into trouble is if you search the rgrps for the\nblock exactly equal to ri_addr.  I don\u0027t think anything in the\nkernel does this, but I found a place in gfs2-utils gfs2_edit\nwhere it does.  So I definitely need to fix it in libgfs2.  I\u0027d\nlike to suggest we fix it in the kernel as well for the sake of\nkeeping the functions similar.\n\nSo this patch fixes the above mentioned off by one error as well\nas removing the unused parent pointer.\n\nReported-by: Bob Peterson \u003crpeterso@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "13d921e37174e3d1042deeb303537c1d935da553",
      "tree": "c3d208bd4e8eaec8e0f07586f6b21f3c7cd5832b",
      "parents": [
        "ccad4e147acf2a59b463f5df3cee8b43b144ce82"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Sep 07 15:12:51 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Oct 21 12:39:44 2011 +0100"
      },
      "message": "GFS2: Clean up -\u003epage_mkwrite\n\nThis patch brings gfs2\u0027s -\u003epage_mkwrite uptodate with respect to the\nexpectations set by the VM. Also added is a check to wait if the fs\nis frozen, before we attempt to get a glock. This will only work on\nthe node which initiates the freeze, but thats ok since the transaction\nlock will still provide the expected barrier on other nodes.\n\nThe major change here is that we return a locked page now, except when\nwe don\u0027t return a page at all (error cases). This removes the race\nwhich required rechecking the page after it was returned.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "ccad4e147acf2a59b463f5df3cee8b43b144ce82",
      "tree": "413aa2eecde02b2167829d1758de941a1244c5c6",
      "parents": [
        "b5b24d7aeb9608935786369ac2d3e9f362877d55"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Sep 07 12:15:23 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Oct 21 12:39:42 2011 +0100"
      },
      "message": "GFS2: Correctly set goal block after allocation\n\nThe new goal block should be set to the end of the newly\nallocated extent, not the start of it.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "b5b24d7aeb9608935786369ac2d3e9f362877d55",
      "tree": "2043123df7a6e6ca367b24cb3442ee50314cdee0",
      "parents": [
        "70b0c3656f12964a6dac104214c904c66e626058"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Sep 07 10:33:25 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Oct 21 12:39:41 2011 +0100"
      },
      "message": "GFS2: Fix AIL flush issue during fsync\n\nUnfortunately, it is not enough to just ignore locked buffers during\nthe AIL flush from fsync. We need to be able to ignore all buffers\nwhich are locked, dirty or pinned at this stage as they might have\nbeen added subsequent to the log flush earlier in the fsync function.\n\nIn addition, this means that we no longer need to rely on i_mutex to\nkeep out writes during fsync, so we can, as a side-effect, remove\nthat protection too.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nTested-By: Abhijith Das \u003cadas@redhat.com\u003e\n"
    },
    {
      "commit": "70b0c3656f12964a6dac104214c904c66e626058",
      "tree": "f58b4b67d6343d5b48c6335fb93ccbe6ed61e1c0",
      "parents": [
        "d56fa8a1c17b68274349fc852f634af99c0c4671"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Sep 02 16:08:09 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Oct 21 12:39:39 2011 +0100"
      },
      "message": "GFS2: Use cached rgrp in gfs2_rlist_add()\n\nEach block which is deallocated, requires a call to gfs2_rlist_add()\nand each of those calls was calling gfs2_blk2rgrpd() in order to\nfigure out which rgrp the block belonged in. This can be speeded up\nby making use of the rgrp cached in the inode. We also reset this\ncached rgrp in case the block has changed rgrp. This should provide\na big reduction in gfs2_blk2rgrpd() calls during deallocation.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "d56fa8a1c17b68274349fc852f634af99c0c4671",
      "tree": "e2089551b7abc12fc615eb2f169d4693093a17f4",
      "parents": [
        "534029e2fd06ac9a5a1b33b2735e3ac3242adb29"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Sep 02 12:43:41 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Oct 21 12:39:38 2011 +0100"
      },
      "message": "GFS2: Call do_strip() directly from recursive_scan()\n\nThe recursive_scan() function only ever takes a single \"bc\"\nargument, so we might as well just call do_strip() directly\nfrom resource_scan() rather than pass it in as an argument.\n\nAlso the \"data\" argument is always a struct strip_mine, so\nwe can pass that in, rather than using a void pointer.\n\nThis also moves do_strip() ahead of recursive_scan() so that\nwe don\u0027t need to add a prototype.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "534029e2fd06ac9a5a1b33b2735e3ac3242adb29",
      "tree": "601705fb117963ae27a18f4c27d7de6ac83675b5",
      "parents": [
        "54335b1fca27b84baa75b1f45985d98262003837"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Sep 01 16:36:44 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Oct 21 12:39:36 2011 +0100"
      },
      "message": "GFS2: Remove obsolete assert\n\nGiven that a resource group has been locked, there is no reason why\nwe should not be able to allocate as many blocks as are free. The\nal_requested parameter should really be considered as a minimum\nnumber of blocks to be available. Should this limit be overshot,\nthere are other mechanisms which will prevent over allocation.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "54335b1fca27b84baa75b1f45985d98262003837",
      "tree": "c6b21aff1759d86be56208e9981117e4383c3f47",
      "parents": [
        "8339ee543ece6e2dcc1bbd97d5350163c198cf00"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Sep 01 13:31:59 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Oct 21 12:39:34 2011 +0100"
      },
      "message": "GFS2: Cache the most recently used resource group in the inode\n\nThis means that after the initial allocation for any inode, the\nlast used resource group is cached in the inode for future use.\nThis drastically reduces the number of lookups of resource\ngroups in the common case, and this the contention on that\ndata structure.\n\nThe allocation algorithm is the same as previously, except that we\nalways check to see if the goal block is within the cached rgrp\nfirst before going to the rbtree to look one up.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "8339ee543ece6e2dcc1bbd97d5350163c198cf00",
      "tree": "80b3d4b990a8ab5f8b7c28945f694b01301c05c6",
      "parents": [
        "7c9ca621137cde26be05448133fc1a554345f4f8"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Aug 31 16:38:29 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Oct 21 12:39:33 2011 +0100"
      },
      "message": "GFS2: Make resource groups \"append only\" during life of fs\n\nSince we have ruled out supporting online filesystem shrink,\nit is possible to make the resource group list append only\nduring the life of a super block. This gives several benefits:\n\nFirstly, we only need to read new rindex elements as they are added\nrather than needing to reread the whole rindex file each time one\nelement is added.\n\nSecondly, the rindex glock can be held for much shorter periods of\ntime, and is completely removed from the fast path for allocations.\nThe lock is taken in shared mode only when updating the resource\ngroups when the first allocation occurs, and after a grow has\ntaken place.\n\nThirdly, this results in a reduction in code size, and everything\ngets a lot simpler to understand in this area.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "7c9ca621137cde26be05448133fc1a554345f4f8",
      "tree": "9c0779d2ca6fa8a1c6dab7ff6391bef8f444f1b3",
      "parents": [
        "9453615a1a7ef3fa910c6464a619595556cfcd63"
      ],
      "author": {
        "name": "Bob Peterson",
        "email": "rpeterso@redhat.com",
        "time": "Wed Aug 31 09:53:19 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Oct 21 12:39:31 2011 +0100"
      },
      "message": "GFS2: Use rbtree for resource groups and clean up bitmap buffer ref count scheme\n\nHere is an update of Bob\u0027s original rbtree patch which, in addition, also\nresolves the rather strange ref counting that was being done relating to\nthe bitmap blocks.\n\nOriginally we had a dual system for journaling resource groups. The metadata\nblocks were journaled and also the rgrp itself was added to a list. The reason\nfor adding the rgrp to the list in the journal was so that the \"repolish\nclones\" code could be run to update the free space, and potentially send any\ndiscard requests when the log was flushed. This was done by comparing the\n\"cloned\" bitmap with what had been written back on disk during the transaction\ncommit.\n\nDue to this, there was a requirement to hang on to the rgrps\u0027 bitmap buffers\nuntil the journal had been flushed. For that reason, there was a rather\ncomplicated set up in the -\u003ego_lock -\u003ego_unlock functions for rgrps involving\nboth a mutex and a spinlock (the -\u003esd_rindex_spin) to maintain a reference\ncount on the buffers.\n\nHowever, the journal maintains a reference count on the buffers anyway, since\nthey are being journaled as metadata buffers. So by moving the code which deals\nwith the post-journal accounting for bitmap blocks to the metadata journaling\ncode, we can entirely dispense with the rather strange buffer ref counting\nscheme and also the requirement to journal the rgrps.\n\nThe net result of all this is that the -\u003esd_rindex_spin is left to do exactly\none job, and that is to look after the rbtree or rgrps.\n\nThis patch is designed to be a stepping stone towards using RCU for the rbtree\nof resource groups, however the reduction in the number of uses of the\n-\u003esd_rindex_spin is likely to have benefits for multi-threaded workloads,\nanyway.\n\nThe patch retains -\u003ego_lock and -\u003ego_unlock for rgrps, however these maybe also\nbe removed in future in favour of calling the functions directly where required\nin the code. That will allow locking of resource groups without needing to\nactually read them in - something that could be useful in speeding up statfs.\n\nIn the mean time though it is valid to dereference -\u003ebi_bh only when the rgrp\nis locked. This is basically the same rule as before, modulo the references not\nbeing valid until the following journal flush.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nSigned-off-by: Bob Peterson \u003crpeterso@redhat.com\u003e\nCc: Benjamin Marzinski \u003cbmarzins@redhat.com\u003e\n"
    },
    {
      "commit": "9453615a1a7ef3fa910c6464a619595556cfcd63",
      "tree": "40242c84367376197420ce12e50ae29e720dc5e3",
      "parents": [
        "9a63edd12ba3c18351f00d6b77a6b2f49f2b8eb6"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Aug 23 10:19:25 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Oct 21 12:39:29 2011 +0100"
      },
      "message": "GFS2: Fix lseek after SEEK_DATA, SEEK_HOLE have been added\n\nWe need to take the inode\u0027s glock whenever the inode\u0027s size\nis referenced, otherwise it might not be uptodate. Even\nthough generic_file_llseek_unlocked() doesn\u0027t implement\nSEEK_DATA, SEEK_HOLE directly, it does reference the inode\u0027s\nsize in those cases, so we need to add them to the list\nof origins which need the glock.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "9a63edd12ba3c18351f00d6b77a6b2f49f2b8eb6",
      "tree": "46aac35d5e39bd393aca9cd2654235be42859d82",
      "parents": [
        "ab9bbda0204dfd0e5342562d9979d1241b14ea5f"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Aug 18 14:35:53 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Oct 21 12:39:28 2011 +0100"
      },
      "message": "GFS2: Clean up gfs2_create\n\nIf we pass through knowledge of whether the creation is intended to be\nexclusive or not, then we can deal with that in gfs2_create_inode\nand remove one set of locking. Also this removes the loop in\ngfs2_create and simplifies the code a bit.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "ab9bbda0204dfd0e5342562d9979d1241b14ea5f",
      "tree": "621e623d99fbef1432da17b6390c92d7f13224a4",
      "parents": [
        "f18185291d605ea9e442e00e2cf6c917a84d9837"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Aug 15 14:20:36 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Oct 21 12:39:26 2011 +0100"
      },
      "message": "GFS2: Use -\u003edirty_inode()\n\nThe aim of this patch is to use the newly enhanced -\u003edirty_inode()\nsuper block operation to deal with atime updates, rather than\npiggy backing that code into -\u003ewrite_inode() as is currently\ndone.\n\nThe net result is a simplification of the code in various places\nand a reduction of the number of gfs2_dinode_out() calls since\nthis is now implied by -\u003edirty_inode().\n\nSome of the mark_inode_dirty() calls have been moved under glocks\nin order to take advantage of then being able to avoid locking in\n-\u003edirty_inode() when we already have suitable locks.\n\nOne consequence is that generic_write_end() now correctly deals\nwith file size updates, so that we do not need a separate check\nfor that afterwards. This also, indirectly, means that fdatasync\nshould work correctly on GFS2 - the current code always syncs the\nmetadata whether it needs to or not.\n\nHas survived testing with postmark (with and without atime) and\nalso fsx.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "f18185291d605ea9e442e00e2cf6c917a84d9837",
      "tree": "27c3148fcce8de4d52dba528fd788e6c2059c9c8",
      "parents": [
        "40ac218f52aa5cac7dc8082f28b61c8b2b29373c"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Aug 05 10:12:47 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Oct 21 12:39:25 2011 +0100"
      },
      "message": "GFS2: Fix bug trap and journaled data fsync\n\nJournaled data requires that a complete flush of all dirty data for\nthe file is done, in order that the ail flush which comes after\nwill succeed.\n\nAlso the recently enhanced bug trap can trigger falsely in case\nan ail flush from fsync races with a page read. This updates the\nbug trap such that it will ignore buffers which are locked and\nonly trigger on dirty and/or pinned buffers when the ail flush\nis run from fsync. The original bug trap is retained when ail\nflush is run from -\u003ego_sync()\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "40ac218f52aa5cac7dc8082f28b61c8b2b29373c",
      "tree": "34e86173a2554b738f0141a1c38ffc3191d2f228",
      "parents": [
        "1d4ec642d9f00d4c531b1a4ae0613091ec1f8e9b"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Aug 02 13:17:27 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Oct 21 12:39:23 2011 +0100"
      },
      "message": "GFS2: Fix inode allocation error path\n\nIf we have got far enough through the inode allocation code\npath that an inode has already been allocated, then we must\ncall iput to dispose of it, if an error occurs during a\nlater part of the process. This will always be the final iput\nsince there will be no other references to the inode.\n\nUnlike when the inode has been unlinked, its block state will\nbe GFS2_BLKST_INODE rather than GFS2_BLKST_UNLINKED so we need\nto skip the test in -\u003eevict_inode() for this one case in order\nto ensure that it will be deallocated correctly. This patch adds\na new flag in order to ensure that this will happen correctly.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "1d4ec642d9f00d4c531b1a4ae0613091ec1f8e9b",
      "tree": "71b7c5944b21d87750802e70dcd69698f17b3e7d",
      "parents": [
        "75549186edf1515062fe2fcbfbd92bd99659afba"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Aug 02 13:13:20 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Oct 21 12:39:21 2011 +0100"
      },
      "message": "GFS2: Make atime checks more efficient\n\nWe do not need to start a transaction unless the atime\ncheck has proved positive. Also if we are going to flush\nthe complete ail list anyway, we might as well skip the\nwriteback for this specific inode\u0027s metadata, since that\nwill be done as part of the ail writeback process in an\norder offering potentially more efficient I/O.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "75549186edf1515062fe2fcbfbd92bd99659afba",
      "tree": "c3942739398fdf76b2cfaa3e5f72575f7fa8d4f8",
      "parents": [
        "2f0264d592e34cde99efbad7d616b04af138e913"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Aug 02 13:09:36 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Oct 21 12:39:20 2011 +0100"
      },
      "message": "GFS2: Fix bug-trap in ail flush code\n\nThe assert was being tested under the wrong lock, a\nlegacy of the original code. Also, if it does trigger,\nthe resulting information was not always a lot of help.\n\nThis moves the patch under the correct lock and also\nprints out more useful information in tacking down the\nsource of the problem.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "2f0264d592e34cde99efbad7d616b04af138e913",
      "tree": "c3839570b304396513c8cc296a3fc7130b6066f1",
      "parents": [
        "4c28d33803d4aeaff32b4ac502af11a9b2aed8f4"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Jul 27 10:58:48 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Oct 21 12:39:18 2011 +0100"
      },
      "message": "GFS2: Split data write \u0026 wait in fsync\n\nNow that the data writing is part of fsync proper, we can split\nthe waiting part out and do it later on. This reduces the\nnumber of waits that we do during fsync on average.\n\nThere is also no need to take the i_mutex unless we are flushing\nmetadata to disk, so we can move that to within the metadata\nflushing code.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "4c28d33803d4aeaff32b4ac502af11a9b2aed8f4",
      "tree": "c7119b6755aae3e1ceceedec54e481d9ff893b00",
      "parents": [
        "fd11e153b82ad1c84ccc71ba1cfedc222465198c"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Jul 26 09:17:28 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Oct 21 12:39:17 2011 +0100"
      },
      "message": "GFS2: Clean up dir hash table reading\n\nSince there is now only a single caller to gfs2_dir_read_data()\nand it has a number of constant arguments, we can factor\nthose out. Also some tests relating to the inode size were\nbeing done twice.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "65299a3b788bd274bed92f9fa3232082c9f3ea70",
      "tree": "191c0afe31c15ac4c1bab96e0a07fddb097d0de8",
      "parents": [
        "5dc06c5a70b79a323152bec7e55783e705767e63"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Tue Aug 23 14:50:29 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Aug 23 14:50:29 2011 +0200"
      },
      "message": "block: separate priority boosting from REQ_META\n\nAdd a new REQ_PRIO to let requests preempt others in the cfq I/O schedule,\nand lave REQ_META purely for marking requests as metadata in blktrace.\n\nAll existing callers of REQ_META except for XFS are updated to also\nset REQ_PRIO for now.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "5dc06c5a70b79a323152bec7e55783e705767e63",
      "tree": "8f008edc8574ecda04ee6deb13d69b489e8250b6",
      "parents": [
        "fcb8ce5cfe30ca9ca5c9a79cdfe26d1993e65e0c"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Tue Aug 23 14:49:55 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Aug 23 14:49:55 2011 +0200"
      },
      "message": "block: remove READ_META and WRITE_META\n\nReplace all occurnanced of the undocumented READ_META with READ | REQ_META\nand remove the unused WRITE_META define.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "5a2f3a02aea164f4f59c0c3497772090a411b462",
      "tree": "d3ebe03d4f97575290087843960baa01de3acd0a",
      "parents": [
        "1d568ab068c021672d6cd7f50f92a3695a921ffb",
        "817b54aa45db03437c6d09a7693fc6926eb8e822"
      ],
      "author": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Tue Aug 09 10:31:03 2011 +1000"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Tue Aug 09 10:31:03 2011 +1000"
      },
      "message": "Merge branch \u0027next-evm\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/zohar/ima-2.6 into next\n\nConflicts:\n\tfs/attr.c\n\nResolve conflict manually.\n\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "1b8e94993c4752d98c33903aa836acc15f7e6d5c",
      "tree": "b78cba208f0a193ce6ceebbc146021af4425b4e1",
      "parents": [
        "12ff47e7f5fb64c566f62e6cf6a3b291c51bd337",
        "206d440f64030b6425841bf7cb38e26a5ea0c382"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 01 13:48:31 2011 -1000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 01 13:48:31 2011 -1000"
      },
      "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:\n  xfs: Fix build breakage in xfs_iops.c when CONFIG_FS_POSIX_ACL is not set\n  VFS: Reorganise shrink_dcache_for_umount_subtree() after demise of dcache_lock\n  VFS: Remove dentry-\u003ed_lock locking from shrink_dcache_for_umount_subtree()\n  VFS: Remove detached-dentry counter from shrink_dcache_for_umount_subtree()\n  switch posix_acl_chmod() to umode_t\n  switch posix_acl_from_mode() to umode_t\n  switch posix_acl_equiv_mode() to umode_t *\n  switch posix_acl_create() to umode_t *\n  block: initialise bd_super in bdget()\n  vfs: avoid call to inode_lru_list_del() if possible\n  vfs: avoid taking inode_hash_lock on pipes and sockets\n  vfs: conditionally call inode_wb_list_del()\n  VFS: Fix automount for negative autofs dentries\n  Btrfs: load the key from the dir item in readdir into a fake dentry\n  devtmpfs: missing initialialization in never-hit case\n  hppfs: missing include\n"
    },
    {
      "commit": "d6952123b53cc8b334df69bba2cd0063b0d88f68",
      "tree": "b1ccaa7e3d65dbf4af093202044da65bc4deb34e",
      "parents": [
        "d3fb612076eebec6f67257db0c7a9666ac7e5892"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 23 18:56:36 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 01 02:10:06 2011 -0400"
      },
      "message": "switch posix_acl_equiv_mode() to umode_t *\n\n... so that \u0026inode-\u003ei_mode could be passed to it\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "d3fb612076eebec6f67257db0c7a9666ac7e5892",
      "tree": "5265fca258a74ffa75b845998492abb9446db72c",
      "parents": [
        "782b94cdf577b4df1feb376f372dccc28e66a771"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 23 18:37:50 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 01 02:09:42 2011 -0400"
      },
      "message": "switch posix_acl_create() to umode_t *\n\nso we can pass \u0026inode-\u003ei_mode to it\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "333c066bb76f1f270ca77f16afe198e54e352c83",
      "tree": "07343bcb01b28ca48c4e364a5da7dcacc0c37439",
      "parents": [
        "75623437167d9d1ef14acaf6b3fb4ccd38fcbc84",
        "19237039919088781b4191a00bdc1284d8fea1dd"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 27 09:26:22 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 27 09:26:22 2011 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-fixes\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-fixes:\n  GFS2: Fix mount hang caused by certain access pattern to sysfs files\n"
    },
    {
      "commit": "60063497a95e716c9a689af3be2687d261f115b4",
      "tree": "6ce0d68db76982c53df46aee5f29f944ebf2c320",
      "parents": [
        "148817ba092f9f6edd35bad3c6c6b8e8f90fe2ed"
      ],
      "author": {
        "name": "Arun Sharma",
        "email": "asharma@fb.com",
        "time": "Tue Jul 26 16:09:06 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 26 16:49:47 2011 -0700"
      },
      "message": "atomic: use \u003clinux/atomic.h\u003e\n\nThis allows us to move duplicated code in \u003casm/atomic.h\u003e\n(atomic_inc_not_zero() for now) to \u003clinux/atomic.h\u003e\n\nSigned-off-by: Arun Sharma \u003casharma@fb.com\u003e\nReviewed-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nCc: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nAcked-by: Mike Frysinger \u003cvapier@gentoo.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "19237039919088781b4191a00bdc1284d8fea1dd",
      "tree": "2d1fb1d68caa6eb642fa6b201163619bd616b559",
      "parents": [
        "e08dc1325feaf49eec392ee52feb2974ec3f5155"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Jul 26 09:15:45 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Jul 26 10:18:37 2011 +0100"
      },
      "message": "GFS2: Fix mount hang caused by certain access pattern to sysfs files\n\nDepending upon the order of userspace/kernel during the\nmount process, this can result in a hang without the\n_all version of the completion.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "4e34e719e457f2e031297175410fc0bd4016a085",
      "tree": "ab969a371e0d2efc6bfbf503ca6cdfce3af3bf6c",
      "parents": [
        "edde854e8bb34a7f32fa993d721f1da0faf64165"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Sat Jul 23 17:37:31 2011 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jul 25 14:30:23 2011 -0400"
      },
      "message": "fs: take the ACL checks to common code\n\nReplace the -\u003echeck_acl method with a -\u003eget_acl method that simply reads an\nACL from disk after having a cache miss.  This means we can replace the ACL\nchecking boilerplate code with a single implementation in namei.c.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "826cae2f2b4d726b925f43bc208a571639da4761",
      "tree": "b7f83eecf3bde8c4e455d89c7c535988b3e8bd59",
      "parents": [
        "95203befa8887997f14077d8557e67d78457ee02"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 23 03:10:32 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jul 25 14:27:32 2011 -0400"
      },
      "message": "kill boilerplates around posix_acl_create_masq()\n\nnew helper: posix_acl_create(\u0026acl, gfp, mode_p).  Replaces acl with\nmodified clone, on failure releases acl and replaces with NULL.\nReturns 0 or -ve on error.  All callers of posix_acl_create_masq()\nswitched.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "bc26ab5f65ae41b71df86ea46df3c3833d1d8d83",
      "tree": "85bbc4e0da4fac99ccf31b3609c61e2b148a8498",
      "parents": [
        "4482a087d4c5a6ffbc385c56b4a4e2f694d9fd5d"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 23 00:18:02 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jul 25 14:27:30 2011 -0400"
      },
      "message": "kill boilerplate around posix_acl_chmod_masq()\n\nnew helper: posix_acl_chmod(\u0026acl, gfp, mode).  Replaces acl with modified\nclone or with NULL if that has failed; returns 0 or -ve on error.  All\ncallers of posix_acl_chmod_masq() switched to that - they\u0027d been doing\nexactly the same thing.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e77819e57f0817c6dc7cadd061acd70c604cbce2",
      "tree": "f5d7aba2dfbb747a97d783b7cc6a486922c42559",
      "parents": [
        "3ca30d40a91fb9b9871e61d5dea2c1a895906a15"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 22 19:30:19 2011 -0700"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jul 25 14:23:39 2011 -0400"
      },
      "message": "vfs: move ACL cache lookup into generic code\n\nThis moves logic for checking the cached ACL values from low-level\nfilesystems into generic code.  The end result is a streamlined ACL\ncheck that doesn\u0027t need to load the inode-\u003ei_op-\u003echeck_acl pointer at\nall for the common cached case.\n\nThe filesystems also don\u0027t need to check for a non-blocking RCU walk\ncase in their acl_check() functions, because that is all handled at a\nVFS layer.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "bbd9d6f7fbb0305c9a592bf05a32e87eb364a4ff",
      "tree": "12b2bb4202b05f6ae6a43c6ce830a0472043dbe5",
      "parents": [
        "8e204874db000928e37199c2db82b7eb8966cc3c",
        "5a9a43646cf709312d71eca71cef90ad802f28f9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 22 19:02:39 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 22 19:02:39 2011 -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: (107 commits)\n  vfs: use ERR_CAST for err-ptr tossing in lookup_instantiate_filp\n  isofs: Remove global fs lock\n  jffs2: fix IN_DELETE_SELF on overwriting rename() killing a directory\n  fix IN_DELETE_SELF on overwriting rename() on ramfs et.al.\n  mm/truncate.c: fix build for CONFIG_BLOCK not enabled\n  fs:update the NOTE of the file_operations structure\n  Remove dead code in dget_parent()\n  AFS: Fix silly characters in a comment\n  switch d_add_ci() to d_splice_alias() in \"found negative\" case as well\n  simplify gfs2_lookup()\n  jfs_lookup(): don\u0027t bother with . or ..\n  get rid of useless dget_parent() in btrfs rename() and link()\n  get rid of useless dget_parent() in fs/btrfs/ioctl.c\n  fs: push i_mutex and filemap_write_and_wait down into -\u003efsync() handlers\n  drivers: fix up various -\u003ellseek() implementations\n  fs: handle SEEK_HOLE/SEEK_DATA properly in all fs\u0027s that define their own llseek\n  Ext4: handle SEEK_HOLE/SEEK_DATA generically\n  Btrfs: implement our own -\u003ellseek\n  fs: add SEEK_HOLE and SEEK_DATA flags\n  reiserfs: make reiserfs default to barrier\u003dflush\n  ...\n\nFix up trivial conflicts in fs/xfs/linux-2.6/xfs_super.c due to the new\nshrinker callout for the inode cache, that clashed with the xfs code to\nstart the periodic workers later.\n"
    },
    {
      "commit": "6c673ab393bc18e8bff729cd04cf384d15e72a04",
      "tree": "e1eed0667626c8b092d27500560808d834d21e8d",
      "parents": [
        "79ac5a46c5c1c17476fbf84b4d4600d6d565defd"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jul 17 10:22:27 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:48:02 2011 -0400"
      },
      "message": "simplify gfs2_lookup()\n\nd_splice_alias() will DTRT when given NULL or ERR_PTR\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "02c24a82187d5a628c68edfe71ae60dc135cd178",
      "tree": "c8dbaba4d82e2b20ed4335910a564a1f7d90fcf6",
      "parents": [
        "22735068d53c7115e384bc88dea95b17e76a6839"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Sat Jul 16 20:44:56 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:59 2011 -0400"
      },
      "message": "fs: push i_mutex and filemap_write_and_wait down into -\u003efsync() handlers\n\nBtrfs needs to be able to control how filemap_write_and_wait_range() is called\nin fsync to make it less of a painful operation, so push down taking i_mutex and\nthe calling of filemap_write_and_wait() down into the -\u003efsync() handlers.  Some\nfile systems can drop taking the i_mutex altogether it seems, like ext3 and\nocfs2.  For correctness sake I just pushed everything down in all cases to make\nsure that we keep the current behavior the same for everybody, and then each\nindividual fs maintainer can make up their mind about what to do from there.\nThanks,\n\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "562c72aa57c36b178eacc3500a0215651eca9429",
      "tree": "2c522c53ab26fc72e85e08747a08e3dca1207c87",
      "parents": [
        "11b80f459adaf91a712f95e7734a17655a36bf30"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Fri Jun 24 14:29:45 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:47 2011 -0400"
      },
      "message": "fs: move inode_dio_wait calls into -\u003esetattr\n\nLet filesystems handle waiting for direct I/O requests themselves instead\nof doing it beforehand.  This means filesystem-specific locks to prevent\nnew dio referenes from appearing can be held.  This is important to allow\ngeneralizing i_dio_count to non-DIO_LOCKING filesystems.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "10556cb21a0d0b24d95f00ea6df16f599a3345b2",
      "tree": "3d7d8dfba807805a55c154f1850717bf3b49f343",
      "parents": [
        "2830ba7f34ebb27c4e5b8b6ef408cd6d74860890"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 19:28:19 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:24 2011 -0400"
      },
      "message": "-\u003epermission() sanitizing: don\u0027t pass flags to -\u003epermission()\n\nnot used by the instances anymore.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "2830ba7f34ebb27c4e5b8b6ef408cd6d74860890",
      "tree": "bbcebc14bffd000f1dfcbf37e64f56d2f49581ac",
      "parents": [
        "7e40145eb111a5192e6d819f764db9d6828d1abb"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 19:16:29 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:22 2011 -0400"
      },
      "message": "-\u003epermission() sanitizing: don\u0027t pass flags to generic_permission()\n\nredundant; all callers get it duplicated in mask \u0026 MAY_NOT_BLOCK and none of\nthem removes that bit.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "7e40145eb111a5192e6d819f764db9d6828d1abb",
      "tree": "3249952a751de12465e8d66c63328445e9242f3a",
      "parents": [
        "9c2c703929e4c41210cfa6e3f599514421bab8dc"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 19:12:17 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:21 2011 -0400"
      },
      "message": "-\u003epermission() sanitizing: don\u0027t pass flags to -\u003echeck_acl()\n\nnot used in the instances anymore.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "9c2c703929e4c41210cfa6e3f599514421bab8dc",
      "tree": "2086738f22755ad18ba18ab2ee0f2b23d651da60",
      "parents": [
        "1fc0f78ca9f311c6277e2f1b7655bb4d43ceb311"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 19:06:22 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:19 2011 -0400"
      },
      "message": "-\u003epermission() sanitizing: pass MAY_NOT_BLOCK to -\u003echeck_acl()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "178ea73521d64ba41d7aa5488fb9f549c6d4507d",
      "tree": "7fb6bfb6483577752e307a5bb2e3905658d44294",
      "parents": [
        "07b8ce1ee87d291ff564c02cf878fae973317a52"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 11:31:30 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:16 2011 -0400"
      },
      "message": "kill check_acl callback of generic_permission()\n\nits value depends only on inode and does not change; we might as\nwell store it in -\u003ei_op-\u003echeck_acl and be done with that.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "9d8f13ba3f4833219e50767b022b82cd0da930eb",
      "tree": "3ba2367380d009111ea17696162a62320c88d144",
      "parents": [
        "0f2a55d5bb2372058275b0b343d90dd5d640d045"
      ],
      "author": {
        "name": "Mimi Zohar",
        "email": "zohar@linux.vnet.ibm.com",
        "time": "Mon Jun 06 15:29:25 2011 -0400"
      },
      "committer": {
        "name": "Mimi Zohar",
        "email": "zohar@linux.vnet.ibm.com",
        "time": "Mon Jul 18 12:29:38 2011 -0400"
      },
      "message": "security: new security_inode_init_security API adds function callback\n\nThis patch changes the security_inode_init_security API by adding a\nfilesystem specific callback to write security extended attributes.\nThis change is in preparation for supporting the initialization of\nmultiple LSM xattrs and the EVM xattr.  Initially the callback function\nwalks an array of xattrs, writing each xattr separately, but could be\noptimized to write multiple xattrs at once.\n\nFor existing security_inode_init_security() calls, which have not yet\nbeen converted to use the new callback function, such as those in\nreiserfs and ocfs2, this patch defines security_old_inode_init_security().\n\nSigned-off-by: Mimi Zohar \u003czohar@us.ibm.com\u003e\n"
    },
    {
      "commit": "46fcb2ed29ff7a9ec34c4ae67b631743eb7e756f",
      "tree": "f28487201dd8fe815192b75d1b29426a7882a01b",
      "parents": [
        "9964afbb797329e4c6e5d05ebc199c39af618c5f"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Thu Jun 23 10:39:34 2011 -0500"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Jul 15 09:32:52 2011 +0100"
      },
      "message": "GFS2: combine duplicated block freeing routines\n\n__gfs2_free_data and __gfs2_free_meta are almost identical, and\ncan be trivially combined.\n\n[This is as per Eric\u0027s original patch minus gfs2_free_data() which had\n no callers left and plus the conversion of the bmap.c calls to these\n functions. All in all, a nice clean up]\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "9964afbb797329e4c6e5d05ebc199c39af618c5f",
      "tree": "c0877e423f5dff8b722869bd3f21622a88889220",
      "parents": [
        "7cf8dcd3b68a760d66fbc7f0d75d3fbb8f21775d"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Jun 16 14:06:55 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Jul 15 09:32:35 2011 +0100"
      },
      "message": "GFS2: Add S_NOSEC support\n\nThis adds S_NOSEC support to GFS2. We set/reset the flag either when\na user calls setattr or when we have just regained the glock\nfrom another node. The flag is only set if there are no xattrs\non the inode and there is no suid bit set.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nReviewed-by: Andi Kleen \u003cak@linux.intel.com\u003e\nCc: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\n"
    },
    {
      "commit": "7cf8dcd3b68a760d66fbc7f0d75d3fbb8f21775d",
      "tree": "f529dace79c044e6128e9cf283a5c1a584fed5db",
      "parents": [
        "17d539f0499fa2c0321b7c260831cca2bb36d119"
      ],
      "author": {
        "name": "Bob Peterson",
        "email": "rpeterso@redhat.com",
        "time": "Wed Jun 15 11:41:48 2011 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Jul 15 09:32:11 2011 +0100"
      },
      "message": "GFS2: Automatically adjust glock min hold time\n\nThis patch is a performance improvement for GFS2 in a clustered\nenvironment. It makes the glock hold time self-adjusting.\n\nSigned-off-by: Bob Peterson \u003crpeterso@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "17d539f0499fa2c0321b7c260831cca2bb36d119",
      "tree": "28b960ad670a0112d45afbab120f855b8e95b146",
      "parents": [
        "5dcd07b9f39ca3e9be5bcc387d193fc0674e1c81"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Jun 15 10:29:37 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Jul 15 09:31:48 2011 +0100"
      },
      "message": "GFS2: Cache dir hash table in a contiguous buffer\n\nThis patch adds a cache for the hash table to the directory code\nin order to help simplify the way in which the hash table is\naccessed. This is intended to be a first step towards introducing\nsome performance improvements in the directory code.\n\nThere are two follow ups that I\u0027m hoping to see fairly shortly. One\nis to simplify the hash table reading code now that we always read the\ncomplete hash table, whether we want one entry or all of them. The\nother is to introduce readahead on the heads of the hash chains\nwhich are referred to from the table.\n\nThe hash table is a maximum of 128k in size, so it is not worth trying\nto read it in small chunks.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "380f7c65a7eb3288e4b6812acf3474a1de230707",
      "tree": "7abe4b4ce390afc6b4d2bc7cae0ec298fe2efa3c",
      "parents": [
        "3942ae5319640ced5844b75f44884e4bcb8a2f16"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Jul 14 08:59:44 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Jul 14 08:59:44 2011 +0100"
      },
      "message": "GFS2: Resolve inode eviction and ail list interaction bug\n\nThis patch contains a few misc fixes which resolve a recently\nreported issue. This patch has been a real team effort and has\nreceived a lot of testing.\n\nThe first issue is that the ail lock needs to be held over a few\nmore operations. The lock thats added into gfs2_releasepage() may\npossibly be a candidate for replacing with RCU at some future\npoint, but at this stage we\u0027ve gone for the obvious fix.\n\nThe second issue is that gfs2_write_inode() can end up calling\na glock recursively when called from gfs2_evict_inode() via the\nsyncing code, so it needs a guard added.\n\nThe third issue is that we either need to not truncate the metadata\npages of inodes which have zero link count, but which we cannot\ndeallocate due to them still being in use by other nodes, or we need\nto ensure that those pages have all made it through the journal and\nail lists first. This patch takes the former approach, but the\nlatter has also been tested and there is nothing to choose between\nthem performance-wise. So again, we could revise that decision\nin the future.\n\nAlso, the inode eviction process is now better documented.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nTested-by: Bob Peterson \u003crpeterso@redhat.com\u003e\nTested-by: Abhijith Das \u003cadas@redhat.com\u003e\nReported-by: Barry J. Marson \u003cbmarson@redhat.com\u003e\nReported-by: David Teigland \u003cteigland@redhat.com\u003e\n"
    },
    {
      "commit": "3942ae5319640ced5844b75f44884e4bcb8a2f16",
      "tree": "cc9eee61c37d18e1887f0723d338b121561dc0b9",
      "parents": [
        "1ce533686c7d40bf900dc346a7279c17a9ee8e0e"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Jul 11 08:53:30 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Jul 12 09:15:46 2011 +0100"
      },
      "message": "GFS2: Fix race during filesystem mount\n\nThere is a potential race during filesystem mounting which has recently\nbeen reported. It occurs when the userland gfs_controld is able to\nprocess requests fast enough that it tries to use the sysfs interface\nbefore the lock module is properly initialised. This is a pretty\nunusual case as normally the lock module initialisation is very quick\ncompared with gfs_controld.\n\nThis patch adds an interruptible completion which is used to ensure that\nuserland will wait for the initialisation of the lock module to\ncomplete.\n\nThere are other potential solutions to this problem, but this is the\nquickest at this stage and has been tested both with and without\nmount.gfs2 present in the system.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nReported-by: David Booher \u003cdbooher@adams.net\u003e\n"
    },
    {
      "commit": "1ce533686c7d40bf900dc346a7279c17a9ee8e0e",
      "tree": "fceea4beb94bb819577ea410919c2b603ddef30f",
      "parents": [
        "620917de59eeb934b9f8cf35cc2d95c1ac8ed0fc"
      ],
      "author": {
        "name": "Benjamin Marzinski",
        "email": "bmarzins@redhat.com",
        "time": "Mon Jun 13 14:27:40 2011 -0500"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Jul 12 09:15:24 2011 +0100"
      },
      "message": "GFS2: force a log flush when invalidating the rindex glock\n\nRight now, there is nothing that forces the log to get flushed when a node\ndrops its rindex glock so that another node can grow the filesystem. If the\nlog doesn\u0027t get flushed, GFS2 can corrupt the sd_log_le_rg list in the\nfollowing way.\n\nA node puts an rgd on the list in rg_lo_add(), and then the rindex glock is\ndropped so the other node can grow the filesystem. When the node reacquires the\nrindex glock, that rgd gets deleted in clear_rgrpdi() before ever being\nremoved from the list by gfs2_log_flush().\n\nThis code simply forces a log flush when the rindex glock is invalidated,\nsolving the problem.\n\nSigned-off-by: Benjamin Marzinski \u003cbmarzins@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "d205df9955feb9c2ae63ac1387804e225ff22605",
      "tree": "abae84cb6fc082f14072089bb0058b1bbd88c97a",
      "parents": [
        "24210071e0dd7da1a945a2a1686b93f2b2f3b410",
        "f90e5b5b136ede1f0fd15999e95f13124d6b0dbd"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 07 18:44:10 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 07 18:44:10 2011 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-fixes\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-fixes:\n  GFS2: Processes waiting on inode glock that no processes are holding\n"
    },
    {
      "commit": "b7c2f036284452627d793af981877817b37d4351",
      "tree": "c96bbf7558512b27f4802994c9271ccd0f1c19f3",
      "parents": [
        "14587a2a25447813996e6fb9e48d48627cb75a5d",
        "8d2c50e3b65c8d48d51088f541c13fde46cc8133"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 26 13:19:00 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 26 13:19:00 2011 -0700"
      },
      "message": "Merge branch \u0027trivial\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild-2.6\n\n* \u0027trivial\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild-2.6:\n  gfs2: Drop __TIME__ usage\n  isdn/diva: Drop __TIME__ usage\n  atm: Drop __TIME__ usage\n  dlm: Drop __TIME__ usage\n  wan/pc300: Drop __TIME__ usage\n  parport: Drop __TIME__ usage\n  hdlcdrv: Drop __TIME__ usage\n  baycom: Drop __TIME__ usage\n  pmcraid: Drop __DATE__ usage\n  edac: Drop __DATE__ usage\n  rio: Drop __DATE__ usage\n  scsi/wd33c93: Drop __TIME__ usage\n  scsi/in2000: Drop __TIME__ usage\n  aacraid: Drop __TIME__ usage\n  media/cx231xx: Drop __TIME__ usage\n  media/radio-maxiradio: Drop __TIME__ usage\n  nozomi: Drop __TIME__ usage\n  cyclades: Drop __TIME__ usage\n"
    },
    {
      "commit": "8d2c50e3b65c8d48d51088f541c13fde46cc8133",
      "tree": "b0e073fdadba2c407b2e44579aaf5d2ae25cc526",
      "parents": [
        "3df3f2bf6104dca5cf225063436b7d6fff6793b1"
      ],
      "author": {
        "name": "Michal Marek",
        "email": "mmarek@suse.cz",
        "time": "Fri Apr 01 12:41:20 2011 +0200"
      },
      "committer": {
        "name": "Michal Marek",
        "email": "mmarek@suse.cz",
        "time": "Thu May 26 10:54:37 2011 +0200"
      },
      "message": "gfs2: Drop __TIME__ usage\n\nThe kernel already prints its build timestamp during boot, no need to\nrepeat it in random drivers and produce different object files each\ntime.\n\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: cluster-devel@redhat.com\nSigned-off-by: Michal Marek \u003cmmarek@suse.cz\u003e\n"
    },
    {
      "commit": "1495f230fa7750479c79e3656286b9183d662077",
      "tree": "e5e233bb9fe1916ccc7281e7dcc71b1572fb22c5",
      "parents": [
        "a09ed5e00084448453c8bada4dcd31e5fbfc2f21"
      ],
      "author": {
        "name": "Ying Han",
        "email": "yinghan@google.com",
        "time": "Tue May 24 17:12:27 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:26 2011 -0700"
      },
      "message": "vmscan: change shrinker API by passing shrink_control struct\n\nChange each shrinker\u0027s API by consolidating the existing parameters into\nshrink_control struct.  This will simplify any further features added w/o\ntouching each file of shrinker.\n\n[akpm@linux-foundation.org: fix build]\n[akpm@linux-foundation.org: fix warning]\n[kosaki.motohiro@jp.fujitsu.com: fix up new shrinker API]\n[akpm@linux-foundation.org: fix xfs warning]\n[akpm@linux-foundation.org: update gfs2]\nSigned-off-by: Ying Han \u003cyinghan@google.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nAcked-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Dave Hansen \u003cdave@linux.vnet.ibm.com\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f90e5b5b136ede1f0fd15999e95f13124d6b0dbd",
      "tree": "d632331ee9a282954c1d5ed6fa6160c59a1611fb",
      "parents": [
        "4a7df24ddc7097cd789a7527187826552ea0765e"
      ],
      "author": {
        "name": "Bob Peterson",
        "email": "rpeterso@redhat.com",
        "time": "Tue May 24 10:44:42 2011 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed May 25 10:37:11 2011 +0100"
      },
      "message": "GFS2: Processes waiting on inode glock that no processes are holding\n\nThis patch fixes a race in the GFS2 glock state machine that may\nresult in lockups.  The symptom is that all nodes but one will\nhang, waiting for a particular glock.  All the holder records\nwill have the \"W\" (Waiting) bit set.  The other node will\ntypically have the glock stuck in Exclusive mode (EX) with no\nholder records, but the dinode will be cached.  In other words,\nan entry with \"I:\" will appear in the glock dump for that glock,\nbut nothing else.\n\nThe race has to do with the glock \"Pending Demote\" bit, which\ncan be set, then immediately reset, thus losing the fact that\nanother node needs the glock.  The sequence of events is:\n\n1. Something schedules the glock workqueue (e.g. glock request from fs)\n2. The glock workqueue gets to the point between the test of the reply pending\nbit and the spin lock:\n\n        if (test_and_clear_bit(GLF_REPLY_PENDING, \u0026gl-\u003egl_flags)) {\n                finish_xmote(gl, gl-\u003egl_reply);\n                drop_ref \u003d 1;\n        }\n        down_read(\u0026gfs2_umount_flush_sem);         \u003c---- i.e. here\n        spin_lock(\u0026gl-\u003egl_spin);\n\n3. In comes (a) the reply to our EX lock request setting GLF_REPLY_PENDING and\n            (b) the demote request which sets GLF_PENDING_DEMOTE\n\n4. The following test is executed:\n\n        if (test_and_clear_bit(GLF_PENDING_DEMOTE, \u0026gl-\u003egl_flags) \u0026\u0026\n            gl-\u003egl_state !\u003d LM_ST_UNLOCKED \u0026\u0026\n            gl-\u003egl_demote_state !\u003d LM_ST_EXCLUSIVE) {\n\nThis resets the pending demote flag, and gl-\u003egl_demote_state is not equal to\nexclusive, however because the reply from the dlm arrived after we checked for\nthe GLF_REPLY_PENDING flag, gl-\u003egl_state is still equal to unlocked, so\nalthough we reset the GLF_PENDING_DEMOTE flag, we didn\u0027t then set the\nGLF_DEMOTE flag or reinstate the GLF_PENDING_DEMOTE_FLAG.\n\nThe patch closes the timing window by only transitioning the\n\"Pending demote\" bit to the \"demote\" flag once we know the\nother conditions (not unlocked and not exclusive) are met.\n\nSigned-off-by: Bob Peterson \u003crpeterso@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n\n"
    },
    {
      "commit": "26b06a6958df0f12f1a654db8598433eb89cc024",
      "tree": "4f65fc66e5bef81d7ef16f620686a048c49c7196",
      "parents": [
        "6d3117b41295150d4ac70622055dd8f5529d86b2"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Sat May 21 19:21:07 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Sat May 21 19:21:07 2011 +0100"
      },
      "message": "GFS2: Wait properly when flushing the ail list\n\nThe ail flush code has always relied upon log flushing to prevent\nit from spinning needlessly. This fixes it to wait on the last\nI/O request submitted (we don\u0027t need to wait for all of it)\ninstead of either spinning with io_schedule or sleeping.\n\nAs a result cpu usage of gfs2_logd is much reduced with certain\nworkloads.\n\nReported-by: Abhijith Das \u003cadas@redhat.com\u003e\nTested-by: Abhijith Das \u003cadas@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "6d3117b41295150d4ac70622055dd8f5529d86b2",
      "tree": "64a74505be1099c968e1ca47c4fa6a0180cc1ee2",
      "parents": [
        "c21fd1a8c68ce3f49b00caf10337169262cfb8ad"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Sat May 21 14:05:58 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Sat May 21 14:05:58 2011 +0100"
      },
      "message": "GFS2: Wipe directory hash table metadata when deallocating a directory\n\nThe deallocation code for directories in GFS2 is largely divided into\ntwo parts. The first part deallocates any directory leaf blocks and\nmarks the directory as being a regular file when that is complete. The\nsecond stage was identical to deallocating regular files.\n\nRegular files have their data blocks in a different\naddress space to directories, and thus what would have been normal data\nblocks in a regular file (the hash table in a GFS2 directory) were\ndeallocated correctly. However, a reference to these blocks was left in the\njournal (assuming of course that some previous activity had resulted in\nthose blocks being in the journal or ail list).\n\nThis patch uses the i_depth as a test of whether the inode is an\nexhash directory (we cannot test the inode type as that has already\nbeen changed to a regular file at this stage in deallocation)\n\nThe original issue was reported by Chris Hertel as an issue he encountered\nrunning bonnie++\n\nReported-by: Christopher R. Hertel \u003ccrh@samba.org\u003e\nCc: Abhijith Das \u003cadas@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "6c1b8d94bcc1882e451d0e7a28a4a5253f4970ab",
      "tree": "1e612ce2e7b5e2164ffa49ad6518ca2834a7f9bb",
      "parents": [
        "82aff107f8c9194586f68e86412246629d05670a",
        "f2741d9898269e565c220ec295a8f5c3756c7585"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 20 13:28:45 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 20 13:28:45 2011 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-nmw\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-nmw: (32 commits)\n  GFS2: Move all locking inside the inode creation function\n  GFS2: Clean up symlink creation\n  GFS2: Clean up mkdir\n  GFS2: Use UUID field in generic superblock\n  GFS2: Rename ops_inode.c to inode.c\n  GFS2: Inode.c is empty now, remove it\n  GFS2: Move final part of inode.c into super.c\n  GFS2: Move most of the remaining inode.c into ops_inode.c\n  GFS2: Move gfs2_refresh_inode() and friends into glops.c\n  GFS2: Remove gfs2_dinode_print() function\n  GFS2: When adding a new dir entry, inc link count if it is a subdir\n  GFS2: Make gfs2_dir_del update link count when required\n  GFS2: Don\u0027t use gfs2_change_nlink in link syscall\n  GFS2: Don\u0027t use a try lock when promoting to a higher mode\n  GFS2: Double check link count under glock\n  GFS2: Improve bug trap code in -\u003ereleasepage()\n  GFS2: Fix ail list traversal\n  GFS2: make sure fallocate bytes is a multiple of blksize\n  GFS2: Add an AIL writeback tracepoint\n  GFS2: Make writeback more responsive to system conditions\n  ...\n"
    },
    {
      "commit": "f2741d9898269e565c220ec295a8f5c3756c7585",
      "tree": "36700a4cb6faee29ceae753474f0f0a9cbf899d7",
      "parents": [
        "160b4026dc3e75c0693d0123eca805e88cd200b6"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri May 13 12:11:17 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri May 13 12:11:17 2011 +0100"
      },
      "message": "GFS2: Move all locking inside the inode creation function\n\nNow that there are no longer any exceptions to the normal inode\ncreation code path, we can move the parts of the locking code\nwhich were duplicated in mkdir/mknod/create/symlink into the\ninode create function.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "160b4026dc3e75c0693d0123eca805e88cd200b6",
      "tree": "32aa1a6e23b09be65cabdbcd6be2a8fc3d50527f",
      "parents": [
        "e2d0a13bba051d7a9618b0952d91fac68175a71a"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri May 13 10:34:59 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri May 13 10:34:59 2011 +0100"
      },
      "message": "GFS2: Clean up symlink creation\n\nThis moves the symlink specific parts of inode creation\ninto the function where we initialise the rest of the\ndinode. As a result we have one less place where we need\nto look up the inode\u0027s buffer.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "e2d0a13bba051d7a9618b0952d91fac68175a71a",
      "tree": "f1a28237be9b253da551bb20911ef5e7d256e7cf",
      "parents": [
        "32e471ef1057e812856739d26b4a87d929fb8aa1"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri May 13 09:55:55 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri May 13 09:55:55 2011 +0100"
      },
      "message": "GFS2: Clean up mkdir\n\nThis moves the initialisation of the directory into the inode\ncreation functions to avoid having to duplicate the lookup\nof the inode\u0027s buffer.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "32e471ef1057e812856739d26b4a87d929fb8aa1",
      "tree": "f4f0debf9505b91d284c4e93d4c5f1b5c5690991",
      "parents": [
        "2ab9cd1c63b519e37b21b504376822be983badba"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue May 10 15:01:59 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue May 10 15:01:59 2011 +0100"
      },
      "message": "GFS2: Use UUID field in generic superblock\n\nThe VFS superblock structure now has a UUID field, so we can use that\nin preference to the UUID field in the GFS2 superblock now.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "2ab9cd1c63b519e37b21b504376822be983badba",
      "tree": "6293f520ef56e77b5ad9de6d773b585643450ecf",
      "parents": [
        "64ea5402581485237d3b6e3a0cf2b364ad8bd580"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue May 10 13:12:49 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue May 10 13:12:49 2011 +0100"
      },
      "message": "GFS2: Rename ops_inode.c to inode.c\n\nThis is the final part of the ops_inode.c/inode.c reordering. We\nare left with a single file called inode.c which now contains\nall the inode operations, as expected.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "64ea5402581485237d3b6e3a0cf2b364ad8bd580",
      "tree": "3639c3de9d64ee89360ec190f3029766fc0ed9ca",
      "parents": [
        "9eed04cd99b0a497cf0da22658808a7f5b10d734"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue May 10 13:09:53 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue May 10 13:09:53 2011 +0100"
      },
      "message": "GFS2: Inode.c is empty now, remove it\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "9eed04cd99b0a497cf0da22658808a7f5b10d734",
      "tree": "42d8655ac9523ddd19bda5621de58b22a2a1de07",
      "parents": [
        "194c011fc4650d0dd1eecbc35bc26045108aca51"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon May 09 14:11:40 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon May 09 16:45:38 2011 +0100"
      },
      "message": "GFS2: Move final part of inode.c into super.c\n\nNow inode.c is empty.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "194c011fc4650d0dd1eecbc35bc26045108aca51",
      "tree": "1cb7769ab3df703336d17cc0835fc4a2132f51e6",
      "parents": [
        "d4b2cf1b0566eebfe39a6d70e9e4b5fa01ddaace"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon May 09 14:06:38 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon May 09 16:45:14 2011 +0100"
      },
      "message": "GFS2: Move most of the remaining inode.c into ops_inode.c\n\nThis is in preparation to remove inode.c and rename ops_inode.c\nto inode.c. Also most of the functions which were left in inode.c\nrelate to the creation and lookup of inodes. I\u0027m intending to work\non consolidating some of that code, and its easier when its all in\none place.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "d4b2cf1b0566eebfe39a6d70e9e4b5fa01ddaace",
      "tree": "2f682adea3ac272ea865335ee3449c056a96f088",
      "parents": [
        "94fb763b1a76a2000ad21f3119b05c90040acaf0"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon May 09 13:49:59 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon May 09 16:44:49 2011 +0100"
      },
      "message": "GFS2: Move gfs2_refresh_inode() and friends into glops.c\n\nEventually there will only be a single caller of this code, so lets\nmove it where it can be made static at some future date.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "94fb763b1a76a2000ad21f3119b05c90040acaf0",
      "tree": "72cb7fd210b8bb58e52403ba8c7fb35e93e2a5cc",
      "parents": [
        "3d6ecb7d16fd4248fce58387a982a0756ad3fcc2"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon May 09 13:36:10 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon May 09 16:44:29 2011 +0100"
      },
      "message": "GFS2: Remove gfs2_dinode_print() function\n\nThis function was intended for debugging purposes, but it is not very\nuseful. If we want to know what is on disk then all we need is a\nblock number and gfs2_edit can give us much better information about\nwhat is there. Otherwise, if we are interested in what is stored in\nthe in-core inode, it doesn\u0027t help us out there either.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "3d6ecb7d16fd4248fce58387a982a0756ad3fcc2",
      "tree": "b988b57c8a46fcfabe3738ccdb8982d67cd24c97",
      "parents": [
        "855d23ce2665c56437bd88fa6a0d45b6713bd194"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon May 09 13:30:08 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon May 09 16:43:53 2011 +0100"
      },
      "message": "GFS2: When adding a new dir entry, inc link count if it is a subdir\n\nThis adds an increment of the link count when we add a new directory\nentry, if that entry is itself a directory. This means that we no\nlonger need separate code to perform this operation.\n\nNow that both adding and removing directory entries automatically\nupdate the parent directory\u0027s link count if required, that makes\nthe code shorter and simpler than before.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "855d23ce2665c56437bd88fa6a0d45b6713bd194",
      "tree": "0678f8d0e93dfafd783bf9782f457bc7235b2128",
      "parents": [
        "2baee03fb916563d7cc597e5460e4cb938815c52"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon May 09 16:42:37 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon May 09 16:42:37 2011 +0100"
      },
      "message": "GFS2: Make gfs2_dir_del update link count when required\n\nWhen we remove an entry from a directory, we can save ourselves\nsome trouble if we know the type of the entry in question, since\nif it is itself a directory, we can update the link count of the\nparent at the same time as removing the directory entry.\n\nIn addition this patch also merges the rmdir and unlink code which\nwas almost identical anyway. This eliminates the calls to remove\nthe . and .. directory entries on each rmdir (not needed since the\ndirectory will be deallocated, anyway) which was the only thing preventing\npassing the dentry to gfs2_dir_del(). The passing of the dentry\nrather than just the name allows us to figure out the type of the entry\nwhich is being removed, and thus adjust the link count when required.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "2baee03fb916563d7cc597e5460e4cb938815c52",
      "tree": "7fb2318e11be52f956c0b2af44a62a4746d034ab",
      "parents": [
        "588da3b3be8b3225c2dd192aa782bf6c5c32eb84"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon May 09 12:08:36 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon May 09 16:35:25 2011 +0100"
      },
      "message": "GFS2: Don\u0027t use gfs2_change_nlink in link syscall\n\nThere are three users of gfs2_change_nlink which add to the link\ncount. Two of these are about to be removed in later patches, so\nthis means that there will no callers, when that happens allowing\nremoval of that function, also in a later patch.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "588da3b3be8b3225c2dd192aa782bf6c5c32eb84",
      "tree": "857beb3294af78b926e9e5d95ed2d97b0c9c909b",
      "parents": [
        "d192a8e5c6fec4fe8cdafebccc415db4074dee88"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu May 05 12:36:38 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu May 05 12:36:38 2011 +0100"
      },
      "message": "GFS2: Don\u0027t use a try lock when promoting to a higher mode\n\nPreviously we marked all locks being promoted to a higher mode\nwith the try flag to avoid any potential deadlocks issues. The\nDLM is able to detect these and report them in way that GFS2 can\ndeal with them correctly. So we can just request the required mode\nand wait for a response without needing to perform this check.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "d192a8e5c6fec4fe8cdafebccc415db4074dee88",
      "tree": "7c66540003f6aea894578f6786599bd08dcb9b7f",
      "parents": [
        "8f065d36508f283ee6cbeb05829f032d0b782a16"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu May 05 12:35:40 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu May 05 12:35:40 2011 +0100"
      },
      "message": "GFS2: Double check link count under glock\n\nTo avoid any possible races relating to the link count, we need to\nrecheck it under the inode\u0027s glock in all cases where it matters.\nAlso to ensure we never get any nasty surprises, this patch also\nensures that once the link count has hit zero it can never be\nelevated by rereading in data from disk.\n\nThe only place we cannot provide a proper solution is in rename\nin the case where we are removing a target inode and we discover\nthat the target inode has been already unlinked on another node.\nThe race window is very small, and we return EAGAIN in this case\nto indicate what has happened. The proper solution would be to move\nthe lookup parts of rename from the vfs into library calls which\nthe fs could call directly, but that is potentially a very big job\nand this fix should cover most cases for now.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "8f065d36508f283ee6cbeb05829f032d0b782a16",
      "tree": "3ebd2a660a5d13c773e16c024ce025df24a9b502",
      "parents": [
        "4f1de018215fb56940ce5793e11becd1e8cd6e44"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue May 03 11:49:19 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue May 03 11:49:19 2011 +0100"
      },
      "message": "GFS2: Improve bug trap code in -\u003ereleasepage()\n\nIf the buffer is dirty or pinned, then as well as printing a\nwarning, we should also refuse to release the page in\nquestion.\n\nCurrently this can occur if there is a race between mmap()ed\nwriters and O_DIRECT on the same file. With the addition of\n-\u003elaunder_page() in the future, we should be able to close\nthis gap.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "4f1de018215fb56940ce5793e11becd1e8cd6e44",
      "tree": "4f90d7ef5e219615eab7c45e421fa45cb2729b1e",
      "parents": [
        "6905d9e4dda6112f007e9090bca80507da158e63"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Apr 26 10:23:56 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue May 03 11:48:07 2011 +0100"
      },
      "message": "GFS2: Fix ail list traversal\n\nIn the recent patches to update the AIL list code, I managed to\nforget that the ail list lock got dropped, even though I\nadded a comment specifically to remind myself :(\n\nReported-by: Barry Marson \u003cbmarson@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "6905d9e4dda6112f007e9090bca80507da158e63",
      "tree": "d0a13a80a31c18ac148f678450e045196066eb06",
      "parents": [
        "c83ae9cad8776bab153a05cc466be39f14011091"
      ],
      "author": {
        "name": "Benjamin Marzinski",
        "email": "bmarzins@redhat.com",
        "time": "Tue Apr 26 01:13:24 2011 -0500"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue May 03 11:47:42 2011 +0100"
      },
      "message": "GFS2: make sure fallocate bytes is a multiple of blksize\n\nThe GFS2 fallocate code chooses a target size to for allocating chunks of\nspace.  Whenever it can\u0027t find any resource groups with enough space free, it\nhalves its target. Since this target is in bytes, eventually it will no longer\nbe a multiple of blksize.  As long as there is more space available in the\nresource group than the target, this isn\u0027t a problem, since gfs2 will use the\nactual space available, which is always a multiple of blksize.  However,\nwhen gfs couldn\u0027t fallocate a bigger chunk than the target, it was using the\nnon-blksize aligned number. This caused a BUG in later code that required\nblksize aligned offsets.  GFS2 now ensures that bytes is always a multiple of\nblksize\n\nSigned-off-by: Benjamin Marzinski \u003cbmarzins@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "1879fd6a26571fd4e8e1f4bb3e7537bc936b1fe7",
      "tree": "5fb41fdaef01d462ff9c7ecfe688760a44e89b6a",
      "parents": [
        "3dd2ee4824b668a635d6d2bb6bc73f33708cab9f"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Mon Apr 25 14:01:36 2011 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 25 18:14:10 2011 -0700"
      },
      "message": "add hlist_bl_lock/unlock helpers\n\nNow that the whole dcache_hash_bucket crap is gone, go all the way and\nalso remove the weird locking layering violations for locking the hash\nbuckets.  Add hlist_bl_lock/unlock helpers to move the locking into the\nlist abstraction instead of requiring each caller to open code it.\nAfter all allowing for the bit locks is the whole point of these helpers\nover the plain hlist variant.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c83ae9cad8776bab153a05cc466be39f14011091",
      "tree": "b8ae7e94b03e3e6d21df24ff41d466ea552b6ccb",
      "parents": [
        "4667a0ec32867865fd4deccf834594b3ea831baf"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Apr 18 14:18:38 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Apr 20 09:01:58 2011 +0100"
      },
      "message": "GFS2: Add an AIL writeback tracepoint\n\nAdd a tracepoint for monitoring writeback of the AIL.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "4667a0ec32867865fd4deccf834594b3ea831baf",
      "tree": "bff74fb13700e4087972fce94e45fd69dae7939b",
      "parents": [
        "f42ab0852946c1fb5103682c5897eb3da908e4b0"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Apr 18 14:18:09 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Apr 20 09:01:37 2011 +0100"
      },
      "message": "GFS2: Make writeback more responsive to system conditions\n\nThis patch adds writeback_control to writing back the AIL\nlist. This means that we can then take advantage of the\ninformation we get in -\u003ewrite_inode() in order to set off\nsome pre-emptive writeback.\n\nIn addition, the AIL code is cleaned up a bit to make it\na bit simpler to understand.\n\nThere is still more which can usefully be done in this area,\nbut this is a good start at least.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "f42ab0852946c1fb5103682c5897eb3da908e4b0",
      "tree": "3847b23d2cac6bab422e6e001e0c6d6c66a81f1e",
      "parents": [
        "627c10b7e471b5dcfb7101d6cc74d219619c9bc4"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Apr 14 16:50:31 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Apr 20 09:01:17 2011 +0100"
      },
      "message": "GFS2: Optimise glock lru and end of life inodes\n\nThe GLF_LRU flag introduced in the previous patch can be\nused to check if a glock is on the lru list when a new\nholder is queued and if so remove it, without having first\nto get the lru_lock.\n\nThe main purpose of this patch however is to optimise the\nglocks left over when an inode at end of life is being\nevicted. Previously such glocks were left with the GLF_LFLUSH\nflag set, so that when reclaimed, each one required a log flush.\nThis patch resets the GLF_LFLUSH flag when there is nothing\nleft to flush thus preventing later log flushes as glocks are\nreused or demoted.\n\nIn order to do this, we need to keep track of the number of\nrevokes which are outstanding, and also to clear the GLF_LFLUSH\nbit after a log commit when only revokes have been processed.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "627c10b7e471b5dcfb7101d6cc74d219619c9bc4",
      "tree": "28b485c2ce46035da616c1a20f4ac92bae96427a",
      "parents": [
        "dba898b02defa66e5fe493d58ec0293a940f9c93"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Apr 14 14:09:52 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Apr 20 09:00:59 2011 +0100"
      },
      "message": "GFS2: Improve tracing support (adds two flags)\n\nThis adds support for two new flags. One keeps track of whether\nthe glock is on the LRU list or not. The other isn\u0027t really a\nflag as such, but an indication of whether the glock has an\nattached object or not. This indication is reported without\nany locking, which is ok since we do not dereference the object\npointer but merely report whether it is NULL or not.\n\nAlso, this fixes one place where a tracepoint was missing, which\nwas at the point we remove deallocated blocks from the journal.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "dba898b02defa66e5fe493d58ec0293a940f9c93",
      "tree": "68ef0414a4c0ba677c23dbca6ecab957e9f11c35",
      "parents": [
        "efc1a9c2a70e4e49f4cf179a7ed8064b7a406e4a"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Apr 14 09:54:02 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Apr 20 09:00:41 2011 +0100"
      },
      "message": "GFS2: Clean up fsync()\n\nThis patch is designed to clean up GFS2\u0027s fsync\nimplementation and ensure that it really does get everything on\ndisk. Since -\u003ewrite_inode() has been updated, we can call that\nvia the vfs library function sync_inode_metadata() and the only\nremaining thing that has to be done is to ensure that we get\nany revoke records in the log after the inode has been written back.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "efc1a9c2a70e4e49f4cf179a7ed8064b7a406e4a",
      "tree": "2a80ecaa8759ff529c84fb4191dd035270f3dae9",
      "parents": [
        "29687a2ac8dfcd5363e515ea715ec226aef8c26b"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Apr 13 13:03:34 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Apr 20 09:00:24 2011 +0100"
      },
      "message": "GFS2: Remove unused macro\n\nThe buffer_in_io() macro has been unused for some time,\nso remove it.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "29687a2ac8dfcd5363e515ea715ec226aef8c26b",
      "tree": "a9bb35c110396c9c2a563c9442690cfb3368c8a8",
      "parents": [
        "5ac048bb7ea6e87b06504b999017cfa1f38f4092"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Mar 30 16:33:25 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Apr 20 08:59:48 2011 +0100"
      },
      "message": "GFS2: Alter point of entry to glock lru list for glocks with an address_space\n\nRather than allowing the glocks to be scheduled for possible\nreclaim as soon as they have exited the journal, this patch\ndelays their entry to the list until the glocks in question\nare no longer in use.\n\nThis means that we will rely on the vm for writeback of all\ndirty data and metadata from now on. When glocks are added\nto the lru list they should be freeable much faster since all\nthe I/O required to free them should have already been completed.\n\nThis should lead to much better I/O patterns under low memory\nconditions.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "5ac048bb7ea6e87b06504b999017cfa1f38f4092",
      "tree": "218a2dd0e6f6d39ead51bb32c10f801f6153c069",
      "parents": [
        "1027efaa238e1b65c07b6c2d9e270e548c2bdb07"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Mar 30 16:25:51 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Apr 20 08:59:25 2011 +0100"
      },
      "message": "GFS2: Use filemap_fdatawrite() to write back the AIL\n\nIn order to ensure that the mapping stats (and thus the bdi) are correctly\nupdated, this patch changes the AIL writeback to use the filemap_datawrite\nfunction. This helps prevent stalls in balance_dirty_pages() due to\nlarge amounts of dirty metadata when there is little or no dirty data\naround.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "1027efaa238e1b65c07b6c2d9e270e548c2bdb07",
      "tree": "dc02c7a8ebeb2b7c52a09b0150019f6236ca3de9",
      "parents": [
        "556bb17998a37dabf7e9e96aa545bcea899be745"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Mar 30 16:13:25 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Apr 20 08:55:07 2011 +0100"
      },
      "message": "GFS2: Make -\u003ewrite_inode() really write\n\nThe GFS2 -\u003ewrite_inode function should be more aggressive at writing\nback to the filesystem. This adopts the XFS system of returning\n-EAGAIN when the writeback has not been completely done. Also, we\nnow kick off in-place writeback when called with WB_SYNC_NONE,\nbut we only wait for it and flush the log when WB_SYNC_ALL is\nrequested.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "556bb17998a37dabf7e9e96aa545bcea899be745",
      "tree": "737b2de46857df04a47989b320ad5841dba29588",
      "parents": [
        "ec038c826b5c3c163ad1673390f10e869020c28c"
      ],
      "author": {
        "name": "Bob Peterson",
        "email": "rpeterso@redhat.com",
        "time": "Tue Mar 22 13:56:37 2011 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Apr 20 08:54:44 2011 +0100"
      },
      "message": "GFS2: move function foreach_leaf to gfs2_dir_exhash_dealloc\n\nThe previous patches made function gfs2_dir_exhash_dealloc do nothing\nbut call function foreach_leaf.  This patch simplifies the code by\nmoving the entire function foreach_leaf into gfs2_dir_exhash_dealloc.\n\nSigned-off-by: Bob Peterson \u003crpeterso@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "ec038c826b5c3c163ad1673390f10e869020c28c",
      "tree": "11d97ed7a40033e1bf113e3ca7fa28e4f22bfe0d",
      "parents": [
        "d24a7a439a329b60f8e168c03e80566519e09be2"
      ],
      "author": {
        "name": "Bob Peterson",
        "email": "rpeterso@redhat.com",
        "time": "Tue Mar 22 13:55:23 2011 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Apr 20 08:54:26 2011 +0100"
      },
      "message": "GFS2: pass leaf_bh into leaf_dealloc\n\nFunction foreach_leaf used to look up the leaf block address and get\na buffer_head.  Then it would call leaf_dealloc which did the same\nlookup.  This patch combines the two operations by making foreach_leaf\npass the leaf bh to leaf_dealloc.\n\nSigned-off-by: Bob Peterson \u003crpeterso@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    }
  ],
  "next": "d24a7a439a329b60f8e168c03e80566519e09be2"
}
