)]}'
{
  "log": [
    {
      "commit": "a44f99c7efdb88fa41128065c9a9445c19894e34",
      "tree": "9d9dc6026b2c0409eca05e360c98b8a688ccdb1e",
      "parents": [
        "b87a2d3e3147bd140da2eae584772c353d11421b",
        "22942c00a6ad6e9e93b53811a6de72c821c15d22"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Mar 20 18:14:55 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Mar 20 18:14:55 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: (25 commits)\n  video: change to new flag variable\n  scsi: change to new flag variable\n  rtc: change to new flag variable\n  rapidio: change to new flag variable\n  pps: change to new flag variable\n  net: change to new flag variable\n  misc: change to new flag variable\n  message: change to new flag variable\n  memstick: change to new flag variable\n  isdn: change to new flag variable\n  ieee802154: change to new flag variable\n  ide: change to new flag variable\n  hwmon: change to new flag variable\n  dma: change to new flag variable\n  char: change to new flag variable\n  fs: change to new flag variable\n  xtensa: change to new flag variable\n  um: change to new flag variables\n  s390: change to new flag variable\n  mips: change to new flag variable\n  ...\n\nFix up trivial conflict in drivers/hwmon/Makefile\n"
    },
    {
      "commit": "0ccd234ca04b09a156f8771af316ac9de2fa7312",
      "tree": "b4b990acd2bca0c755b630e7ffe4a7bf08cd4882",
      "parents": [
        "3996eabbab5597d27d5140e1d8f9e3f1145f8b40"
      ],
      "author": {
        "name": "matt mooney",
        "email": "mfm@muteddisk.com",
        "time": "Fri Jan 14 06:12:35 2011 -0800"
      },
      "committer": {
        "name": "Michal Marek",
        "email": "mmarek@suse.cz",
        "time": "Thu Mar 17 14:02:57 2011 +0100"
      },
      "message": "fs: change to new flag variable\n\nReplace EXTRA_CFLAGS with ccflags-y. And change ntfs-objs to ntfs-y\nfor cleaner conditional inclusion.\n\nSigned-off-by: matt mooney \u003cmfm@muteddisk.com\u003e\nAcked-by: WANG Cong \u003cxiyou.wangcong@gmail.com\u003e\nSigned-off-by: Michal Marek \u003cmmarek@suse.cz\u003e\n"
    },
    {
      "commit": "0f6e0e8448a16d8d22119ce91d8dd24b44865b51",
      "tree": "7c295c02db035fc6a0b867465911a2bc9dc6b1ef",
      "parents": [
        "0d2ecee2bdb2a19d04bc5cefac0f86e790f1aad4",
        "a002951c97ff8da49938c982a4c236bf2fafdc9f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 16 09:15:43 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 16 09:15:43 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6: (33 commits)\n  AppArmor: kill unused macros in lsm.c\n  AppArmor: cleanup generated files correctly\n  KEYS: Add an iovec version of KEYCTL_INSTANTIATE\n  KEYS: Add a new keyctl op to reject a key with a specified error code\n  KEYS: Add a key type op to permit the key description to be vetted\n  KEYS: Add an RCU payload dereference macro\n  AppArmor: Cleanup make file to remove cruft and make it easier to read\n  SELinux: implement the new sb_remount LSM hook\n  LSM: Pass -o remount options to the LSM\n  SELinux: Compute SID for the newly created socket\n  SELinux: Socket retains creator role and MLS attribute\n  SELinux: Auto-generate security_is_socket_class\n  TOMOYO: Fix memory leak upon file open.\n  Revert \"selinux: simplify ioctl checking\"\n  selinux: drop unused packet flow permissions\n  selinux: Fix packet forwarding checks on postrouting\n  selinux: Fix wrong checks for selinux_policycap_netpeer\n  selinux: Fix check for xfrm selinux context algorithm\n  ima: remove unnecessary call to ima_must_measure\n  IMA: remove IMA imbalance checking\n  ...\n"
    },
    {
      "commit": "3ae2a1ce2e7b70254e5c9e465adefac9cba191d6",
      "tree": "388da81c97a92861b84b408eb12a494d859cca7a",
      "parents": [
        "26a992dbc24e34cbdd03621d1c97ce571ad74e65",
        "7e32d02613a72a39ba01638337c609a9a866c653"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 16 08:58:43 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 16 08:58:43 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:\n  GFS2: Don\u0027t use _raw version of RCU dereference\n  GFS2: Adding missing unlock_page()\n  GFS2: Update to AIL list locking\n  GFS2: introduce AIL lock\n  GFS2: fix block allocation check for fallocate\n  GFS2: Optimize glock multiple-dequeue code\n  GFS2: Remove potential race in flock code\n  GFS2: Fix glock deallocation race\n  GFS2: quota allows exceeding hard limit\n  GFS2: deallocation performance patch\n  GFS2: panics on quotacheck update\n  GFS2: Improve cluster mmap scalability\n  GFS2: Fix glock queue trace point\n  GFS2: Post-VFS scale update for RCU path walk\n  GFS2: Use RCU for glock hash table\n"
    },
    {
      "commit": "a002951c97ff8da49938c982a4c236bf2fafdc9f",
      "tree": "d43e7885ea7376df0a47a0fc8ceca66dc5bfa357",
      "parents": [
        "521cb40b0c44418a4fd36dc633f575813d59a43d",
        "c151694b2c48d956ac8c8c59c6927f89cc29ef70"
      ],
      "author": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Wed Mar 16 09:41:17 2011 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Wed Mar 16 09:41:17 2011 +1100"
      },
      "message": "Merge branch \u0027next\u0027 into for-linus\n"
    },
    {
      "commit": "7e32d02613a72a39ba01638337c609a9a866c653",
      "tree": "b45f3c19b4054d1790b6f5b81b8b416cde41992e",
      "parents": [
        "6c474f7bc1ef70bc05ce486e7e7e524124122de8"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Mar 15 08:32:14 2011 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Mar 15 08:58:17 2011 +0000"
      },
      "message": "GFS2: Don\u0027t use _raw version of RCU dereference\n\nAs per RCU glock patch review comments, don\u0027t use the _raw\nversion of this function here.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "6c474f7bc1ef70bc05ce486e7e7e524124122de8",
      "tree": "c052a112e8719fdc8e72cf857be3ceaf183a6ac5",
      "parents": [
        "c618e87a5fd02aaad006c12d5a80a231dfa39250"
      ],
      "author": {
        "name": "Maxim",
        "email": "maxim.patlasov@gmail.com",
        "time": "Mon Mar 14 13:19:21 2011 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Mar 14 13:19:21 2011 +0000"
      },
      "message": "GFS2: Adding missing unlock_page()\n\ngfs2_write_begin() calls grab_cache_page_write_begin() that returns *locked*\npage. Correspondent error-handling path lacks for unlock_page() call:\n\n\u003e out:\n\u003e \tif (error \u003d\u003d 0)\n\u003e \t\treturn 0;\n\u003e\n\u003e \tpage_cache_release(page);\n\nThe whole system hangs if gfs2_unstuff_dinode() called from gfs2_write_begin()\nfailed for some reason.\n\nReported-by: Maxim \u003cmaxim.patlasov@gmail.com\u003e\nSigned-off-by: Maxim \u003cmaxim.patlasov@gmail.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "5fe0c2378884e68beb532f5890cc0e3539ac747b",
      "tree": "be25414052184e146049ea6466854366559d5528",
      "parents": [
        "c8b91accfa1059d5565443193d89572eca2f5dd6"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Sat Jan 29 18:43:25 2011 +0530"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Mar 14 09:15:28 2011 -0400"
      },
      "message": "exportfs: Return the minimum required handle size\n\nThe exportfs encode handle function should return the minimum required\nhandle size. This helps user to find out the handle size by passing 0\nhandle size in the first step and then redoing to the call again with\nthe returned handle size value.\n\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "c618e87a5fd02aaad006c12d5a80a231dfa39250",
      "tree": "3f8f1f39fb6dedf3cb72fbd71377cc0eecafc7ce",
      "parents": [
        "d6a079e82efd5fcbb1c7295f22e123c2cc748018"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Mar 14 12:40:29 2011 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Mar 14 12:40:29 2011 +0000"
      },
      "message": "GFS2: Update to AIL list locking\n\nThe previous patch missed a couple of places where the AIL list\nneeded locking, so this fixes up those places, plus a comment\nis corrected too.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Dave Chinner \u003cdchinner@redhat.com\u003e\n"
    },
    {
      "commit": "d6a079e82efd5fcbb1c7295f22e123c2cc748018",
      "tree": "f95f3369dfb560bfc5d282577ca1edec0487e1d7",
      "parents": [
        "e4a7b7b0c98efcdcc4c1f6eb10925dec1fbc4016"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Mar 11 11:52:25 2011 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Mar 11 11:52:25 2011 +0000"
      },
      "message": "GFS2: introduce AIL lock\n\nThe log lock is currently used to protect the AIL lists and\nthe movements of buffers into and out of them. The lists\nare self contained and no log specific items outside the\nlists are accessed when starting or emptying the AIL lists.\n\nHence the operation of the AIL does not require the protection\nof the log lock so split them out into a new AIL specific lock\nto reduce the amount of traffic on the log lock. This will\nalso reduce the amount of serialisation that occurs when\nthe gfs2_logd pushes on the AIL to move it forward.\n\nThis reduces the impact of log pushing on sequential write\nthroughput.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "e4a7b7b0c98efcdcc4c1f6eb10925dec1fbc4016",
      "tree": "72b28371e1e0397a1fb39c103d2062593e3a3a24",
      "parents": [
        "fa1bbdea300a15ec7c1186a5e53de33a5b1672f5"
      ],
      "author": {
        "name": "Benjamin Marzinski",
        "email": "bmarzins@redhat.com",
        "time": "Fri Mar 11 00:49:09 2011 -0600"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Mar 11 09:26:48 2011 +0000"
      },
      "message": "GFS2: fix block allocation check for fallocate\n\nGFS2 fallocate wasn\u0027t properly checking if a blocks were already allocated.\nIn write_empty_blocks(), if a page didn\u0027t have buffer_heads attached, GFS2\nwas always treating it as if there were no blocks allocated for that page.\nGFS2 now calls gfs2_block_map() to check if the blocks are allocated before\nwriting them out.\n\nSigned-off-by: Benjamin Marzinski \u003cbmarzins@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n\n"
    },
    {
      "commit": "fa1bbdea300a15ec7c1186a5e53de33a5b1672f5",
      "tree": "7b10ada8427c40494bd752817f5ad9dc7f7db35d",
      "parents": [
        "0a33443b38746f35fc4acc8a5af6c7099e03ea40"
      ],
      "author": {
        "name": "Bob Peterson",
        "email": "rpeterso@redhat.com",
        "time": "Thu Mar 10 11:41:57 2011 -0500"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Mar 11 09:24:54 2011 +0000"
      },
      "message": "GFS2: Optimize glock multiple-dequeue code\n\nThis is a small patch that optimizes multiple glock dequeue\noperations.  It changes the unlock order to be more efficient\nand makes it easier for lock debugging tools to unravel.  It\nalso eliminates the need for the temp variable x, although\nthat would likely be optimized out.\n\nSigned-off-by: Bob Peterson \u003crpeterso@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "53fe924161ff18d24c5c1c256549e9c1b9874827",
      "tree": "4447ddc370f8138952146e54c515675cc026a2ee",
      "parents": [
        "529c5f958f9e60abaa7407986034b17d17536bf2"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Mar 10 03:44:48 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Mar 10 03:44:48 2011 -0500"
      },
      "message": "gfs2: fix d_revalidate oopsen on NFS exports\n\ncan\u0027t blindly check nd-\u003eflags in -\u003ed_revalidate()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "0a33443b38746f35fc4acc8a5af6c7099e03ea40",
      "tree": "523d8bec4c49a3b04b46fe275e1c4ef3f18fba7a",
      "parents": [
        "fc0e38dae645f65424d1fb5d2a938aab8ce48a58"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Mar 09 11:14:32 2011 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Mar 09 11:14:32 2011 +0000"
      },
      "message": "GFS2: Remove potential race in flock code\n\nThis patch ensures that we always wait for glock demotion when\ndropping flocks on a file in order to prevent any race\nconditions associated with further flock calls or closing\nthe file.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "fc0e38dae645f65424d1fb5d2a938aab8ce48a58",
      "tree": "8b0a89a0de01a0504a002a184a290a53545fce82",
      "parents": [
        "662e3a551b468c7338f5291d7a00389fe85885e2"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Mar 09 10:58:04 2011 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Mar 09 10:58:04 2011 +0000"
      },
      "message": "GFS2: Fix glock deallocation race\n\nThis patch fixes a race in deallocating glocks which was introduced\nin the RCU glock patch. We need to ensure that the glock count is\nkept correct even in the case that there is a race to add a new\nglock into the hash table. Also, to avoid having to wait for an\nRCU grace period, the glock counter can be decremented before\ncall_rcu() is called.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "662e3a551b468c7338f5291d7a00389fe85885e2",
      "tree": "4e4939e0c1f1f5ce66541982476e68f24f83221b",
      "parents": [
        "4c16c36ad62fff8485215bd803d778eb2bd0b8bd"
      ],
      "author": {
        "name": "Abhijith Das",
        "email": "adas@redhat.com",
        "time": "Tue Mar 08 10:40:42 2011 -0500"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Mar 09 09:32:44 2011 +0000"
      },
      "message": "GFS2: quota allows exceeding hard limit\n\nImmediately after being synced to disk, cached quotas are zeroed out and a\nsubsequent access of the cached quotas results in incorrect zero values. This\nmeant that gfs2 assumed the actual usage to be the zero (or near-zero) usage\nvalues it found in the cached quotas and comparison against warn/limits never\ntriggered a quota violation.\n\nThis patch adds a new flag QDF_REFRESH that is set after a sync so that the\ncached quotas are forcefully refreshed from disk on a subsequent access on\nseeing this flag set.\n\nResolves: rhbz#675944\nSigned-off-by: Abhi Das \u003cadas@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n\n"
    },
    {
      "commit": "fe3fa43039d47ee4e22caf460b79b62a14937f79",
      "tree": "9eab8d00f1227b9fe0959f32a62d892ed35803ba",
      "parents": [
        "ee009e4a0d4555ed522a631bae9896399674f064",
        "026eb167ae77244458fa4b4b9fc171209c079ba7"
      ],
      "author": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Tue Mar 08 11:38:10 2011 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Tue Mar 08 11:38:10 2011 +1100"
      },
      "message": "Merge branch \u0027master\u0027 of git://git.infradead.org/users/eparis/selinux into next\n"
    },
    {
      "commit": "4c16c36ad62fff8485215bd803d778eb2bd0b8bd",
      "tree": "2cbe195639b291397060f5639abb21bcef82bc61",
      "parents": [
        "e79a46a0302a6bf8f879da43c00373b6ed1081ea"
      ],
      "author": {
        "name": "Bob Peterson",
        "email": "rpeterso@redhat.com",
        "time": "Wed Feb 23 16:11:33 2011 -0500"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Feb 24 12:13:48 2011 +0000"
      },
      "message": "GFS2: deallocation performance patch\n\nThis patch is a performance improvement to GFS2\u0027s dealloc code.\nRather than update the quota file and statfs file for every\nsingle block that\u0027s stripped off in unlink function do_strip,\nthis patch keeps track and updates them once for every layer\nthat\u0027s stripped.  This is done entirely inside the existing\ntransaction, so there should be no risk of corruption.\nThe other functions that deallocate blocks will be unaffected\nbecause they are using wrapper functions that do the same\nthing that they do today.\n\nI tested this code on my roth cluster by creating 200\nfiles in a directory, each of which is 100MB, then on\nfour nodes, I simultaneously deleted the files, thus competing\nfor GFS2 resources (but different files).  The commands\nI used were:\n\n[root@roth-01]# time for i in `seq 1 4 200` ; do rm /mnt/gfs2/bigdir/gfs2.$i; done\n[root@roth-02]# time for i in `seq 2 4 200` ; do rm /mnt/gfs2/bigdir/gfs2.$i; done\n[root@roth-03]# time for i in `seq 3 4 200` ; do rm /mnt/gfs2/bigdir/gfs2.$i; done\n[root@roth-05]# time for i in `seq 4 4 200` ; do rm /mnt/gfs2/bigdir/gfs2.$i; done\n\nThe performance increase was significant:\n\n             roth-01     roth-02     roth-03     roth-05\n             ---------   ---------   ---------   ---------\nold: real    0m34.027    0m25.021s   0m23.906s   0m35.646s\nnew: real    0m22.379s   0m24.362s   0m24.133s   0m18.562s\n\nTotal time spent deleting:\nold: 118.6s\nnew:  89.4\n\nFor this particular case, this showed a 25% performance increase for\nGFS2 unlinks.\n\nSigned-off-by: Bob Peterson \u003crpeterso@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n\n"
    },
    {
      "commit": "2aa15890f3c191326678f1bd68af61ec6b8753ec",
      "tree": "347f5fdcd0678b12be92f266cd2a5e7a74749403",
      "parents": [
        "78794b2cdeac37ac1fd950fc9c4454b56d88ac03"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Wed Feb 23 13:49:47 2011 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 23 19:52:52 2011 -0800"
      },
      "message": "mm: prevent concurrent unmap_mapping_range() on the same inode\n\nMichael Leun reported that running parallel opens on a fuse filesystem\ncan trigger a \"kernel BUG at mm/truncate.c:475\"\n\nGurudas Pai reported the same bug on NFS.\n\nThe reason is, unmap_mapping_range() is not prepared for more than\none concurrent invocation per inode.  For example:\n\n  thread1: going through a big range, stops in the middle of a vma and\n     stores the restart address in vm_truncate_count.\n\n  thread2: comes in with a small (e.g. single page) unmap request on\n     the same vma, somewhere before restart_address, finds that the\n     vma was already unmapped up to the restart address and happily\n     returns without doing anything.\n\nAnother scenario would be two big unmap requests, both having to\nrestart the unmapping and each one setting vm_truncate_count to its\nown value.  This could go on forever without any of them being able to\nfinish.\n\nTruncate and hole punching already serialize with i_mutex.  Other\ncallers of unmap_mapping_range() do not, and it\u0027s difficult to get\ni_mutex protection for all callers.  In particular -\u003ed_revalidate(),\nwhich calls invalidate_inode_pages2_range() in fuse, may be called\nwith or without i_mutex.\n\nThis patch adds a new mutex to \u0027struct address_space\u0027 to prevent\nrunning multiple concurrent unmap_mapping_range() on the same mapping.\n\n[ We\u0027ll hopefully get rid of all this with the upcoming mm\n  preemptibility series by Peter Zijlstra, the \"mm: Remove i_mmap_mutex\n  lockbreak\" patch in particular.  But that is for 2.6.39 ]\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nReported-by: Michael Leun \u003clkml20101129@newton.leun.net\u003e\nReported-by: Gurudas Pai \u003cgurudas.pai@oracle.com\u003e\nTested-by: Gurudas Pai \u003cgurudas.pai@oracle.com\u003e\nAcked-by: Hugh Dickins \u003chughd@google.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "58a69cb47ec6991bf006a3e5d202e8571b0327a4",
      "tree": "56abdf817649c352f70bff3263f9351ed6c42062",
      "parents": [
        "7576958a9d5a4a677ad7dd40901cdbb6c1110c98"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 16 09:25:31 2011 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 16 17:48:59 2011 +0100"
      },
      "message": "workqueue, freezer: unify spelling of \u0027freeze\u0027 + \u0027able\u0027 to \u0027freezable\u0027\n\nThere are two spellings in use for \u0027freeze\u0027 + \u0027able\u0027 - \u0027freezable\u0027 and\n\u0027freezeable\u0027.  The former is the more prominent one.  The latter is\nmostly used by workqueue and in a few other odd places.  Unify the\nspelling to \u0027freezable\u0027.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Alan Stern \u003cstern@rowland.harvard.edu\u003e\nAcked-by: \"Rafael J. Wysocki\" \u003crjw@sisk.pl\u003e\nAcked-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\nAcked-by: Dmitry Torokhov \u003cdtor@mail.ru\u003e\nCc: David Woodhouse \u003cdwmw2@infradead.org\u003e\nCc: Alex Dubov \u003coakad@yahoo.com\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "e79a46a0302a6bf8f879da43c00373b6ed1081ea",
      "tree": "a9061e1a3f1c9e8616ed08f5cff95321b6dc1b8c",
      "parents": [
        "b9c93bb7deadc7cdd00415edc6b38d67a26c1c7a"
      ],
      "author": {
        "name": "Abhijith Das",
        "email": "adas@redhat.com",
        "time": "Mon Feb 07 11:22:41 2011 -0500"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Feb 07 20:00:44 2011 +0000"
      },
      "message": "GFS2: panics on quotacheck update\n\nHandle block allocation for forceful unstuffing of quota dinode during quota\nupdate using quotactl(). Also fix block reservation for special cases when\nquotas cross over block boundaries and update 2 blocks instead of 1.\n\nSigned-off-by: Abhi Das \u003cadas@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n\n"
    },
    {
      "commit": "b9c93bb7deadc7cdd00415edc6b38d67a26c1c7a",
      "tree": "b490fba351eefdb9ef4feeb9925fae75045fac51",
      "parents": [
        "edae38a6431276c50d4b51543c36de258722358e"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Feb 02 14:48:10 2011 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Feb 02 14:48:10 2011 +0000"
      },
      "message": "GFS2: Improve cluster mmap scalability\n\nThe mmap system call grabs a glock when an update to atime maybe\nrequired. It does this in order to ensure that the flags on the\ninode are uptodate, but since it will only mark atime for a future\nupdate, an exclusive lock is not required here (one will be taken\nlater when the actual update is performed).\n\nAlso, the lock can be skipped when the mount is marked noatime in\naddition to the original check which only looked at the noatime\nflag for the inode itself.\n\nThis should increase the scalability of the mmap call when multiple\nnodes are all mmaping the same file.\n\nReported-by: Scooter Morris \u003cscooter@cgl.ucsf.edu\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "2a7dba391e5628ad665ce84ef9a6648da541ebab",
      "tree": "ba0722bd74d2c883dbda7ff721850bab411cac04",
      "parents": [
        "821404434f3324bf23f545050ff64055a149766e"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Tue Feb 01 11:05:39 2011 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Tue Feb 01 11:12:29 2011 -0500"
      },
      "message": "fs/vfs/security: pass last path component to LSM on inode creation\n\nSELinux would like to implement a new labeling behavior of newly created\ninodes.  We currently label new inodes based on the parent and the creating\nprocess.  This new behavior would also take into account the name of the\nnew object when deciding the new label.  This is not the (supposed) full path,\njust the last component of the path.\n\nThis is very useful because creating /etc/shadow is different than creating\n/etc/passwd but the kernel hooks are unable to differentiate these\noperations.  We currently require that userspace realize it is doing some\ndifficult operation like that and than userspace jumps through SELinux hoops\nto get things set up correctly.  This patch does not implement new\nbehavior, that is obviously contained in a seperate SELinux patch, but it\ndoes pass the needed name down to the correct LSM hook.  If no such name\nexists it is fine to pass NULL.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "edae38a6431276c50d4b51543c36de258722358e",
      "tree": "4b6628f405c8563d08c21a71587d25135cd74147",
      "parents": [
        "75d5cfbe4b78cc26af7b042e23f61700b50bc294"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Jan 31 09:38:12 2011 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Jan 31 09:38:12 2011 +0000"
      },
      "message": "GFS2: Fix glock queue trace point\n\nSomehow this tracepoint landed up in the wrong place. This moves it\nto where it should be.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "75d5cfbe4b78cc26af7b042e23f61700b50bc294",
      "tree": "189346d6c6fb7e72921d7ace2871bfd8780110da",
      "parents": [
        "bc015cb84129eb1451913cfebece270bf7a39e0f"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Jan 19 09:42:40 2011 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Jan 21 09:39:24 2011 +0000"
      },
      "message": "GFS2: Post-VFS scale update for RCU path walk\n\nWe can allow a few more cases to use RCU path walking than\noriginally allowed. It should be possible to also enable\nRCU path walking when the glock is already cached. Thats\na bit more complicated though, so left for a future patch.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Nick Piggin \u003cnpiggin@gmail.com\u003e\n"
    },
    {
      "commit": "bc015cb84129eb1451913cfebece270bf7a39e0f",
      "tree": "4f116a61b802d87ae80051e9ae05d8fcb73d9ae7",
      "parents": [
        "2b1caf6ed7b888c95a1909d343799672731651a5"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Jan 19 09:30:01 2011 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Jan 21 09:39:08 2011 +0000"
      },
      "message": "GFS2: Use RCU for glock hash table\n\nThis has a number of advantages:\n\n - Reduces contention on the hash table lock\n - Makes the code smaller and simpler\n - Should speed up glock dumps when under load\n - Removes ref count changing in examine_bucket\n - No longer need hash chain lock in glock_put() in common case\n\nThere are some further changes which this enables and which\nwe may do in the future. One is to look at using SLAB_RCU,\nand another is to look at using a per-cpu counter for the\nper-sb glock counter, since that is touched twice in the\nlifetime of each glock (but only used at umount time).\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "24d9765fc18c7838ccdbb0d71fb706321d9b824c",
      "tree": "75875b69c1bb694d2ad5e1ab19f278bf7d3a8acc",
      "parents": [
        "23c3010808de86f21436eb822aacfa551bfc17e4"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Jan 18 14:49:08 2011 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Jan 18 14:49:08 2011 +0000"
      },
      "message": "GFS2: Fix error path in gfs2_lookup_by_inum()\n\nIn the (impossible, except if there is fs corruption) error path\nin gfs2_lookup_by_inum() if the call to gfs2_inode_refresh()\nfails, it was leaving the function by calling iput() rather\nthan iget_failed(). This would cause future lookups of the same\ninode to block forever.\n\nThis patch fixes the problem by moving the call to gfs2_inode_refresh()\ninto gfs2_inode_lookup() where iget_failed() is part of the error path\nalready. Also this cleans up some unreachable code and makes\ngfs2_set_iop() static.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "23c3010808de86f21436eb822aacfa551bfc17e4",
      "tree": "56b7176fdeb0dd453b88969dbecba7afcc39883f",
      "parents": [
        "e6f597a1425b5af64917be3448b29e2d5a585ac8"
      ],
      "author": {
        "name": "Benjamin Marzinski",
        "email": "bmarzins@redhat.com",
        "time": "Fri Jan 14 22:39:16 2011 -0600"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Jan 18 14:28:29 2011 +0000"
      },
      "message": "GFS2: remove iopen glocks from cache on failed deletes\n\nWhen a file gets deleted on GFS2, if a node can\u0027t get an exclusive lock on the\nfile\u0027s iopen glock, it punts on actually freeing up the space, because another\nnode is using the file.  When it does this, it needs to drop the iopen glock\nfrom its cache so that the other node can get an exclusive lock on it. Now,\ngfs2_delete_inode() sets GL_NOCACHE before dropping the shared lock on the\niopen glock in preparation for grabbing it in the exclusive state.  Since the\nnode needs the glock in the exclusive state, dropping the shared lock from the\ncache doesn\u0027t slow down the case where no other nodes are using the file.\n\nSigned-off-by: Benjamin Marzinski \u003cbmarzins@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n\n"
    },
    {
      "commit": "2fe17c1075836b66678ed2a305fd09b6773883aa",
      "tree": "eb5287be8138686682eef9622872cfc7657e0664",
      "parents": [
        "64c23e86873ee410554d6d1c76b60da47025e96f"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Jan 14 13:07:43 2011 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jan 17 02:25:31 2011 -0500"
      },
      "message": "fallocate should be a file operation\n\nCurrently all filesystems except XFS implement fallocate asynchronously,\nwhile XFS forced a commit.  Both of these are suboptimal - in case of O_SYNC\nI/O we really want our allocation on disk, especially for the !KEEP_SIZE\ncase where we actually grow the file with user-visible zeroes.  On the\nother hand always commiting the transaction is a bad idea for fast-path\nuses of fallocate like for example in recent Samba versions.   Given\nthat block allocation is a data plane operation anyway change it from\nan inode operation to a file operation so that we have the file structure\navailable that lets us check for O_SYNC.\n\nThis also includes moving the code around for a few of the filesystems,\nand remove the already unnedded S_ISDIR checks given that we only wire\nup fallocate for regular files.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "64c23e86873ee410554d6d1c76b60da47025e96f",
      "tree": "b30c5ff8782ebfdec6956d7834f796731fd3a1d4",
      "parents": [
        "eb745dbccce56f1bbe3f80b95ad2a325145171c2"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Jan 14 13:07:30 2011 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jan 17 02:25:30 2011 -0500"
      },
      "message": "make the feature checks in -\u003efallocate future proof\n\nInstead of various home grown checks that might need updates for new\nflags just check for any bit outside the mask of the features supported\nby the filesystem.  This makes the check future proof for any newly\nadded flag.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "275220f0fcff1adf28a717076e00f575edf05fda",
      "tree": "d249bccc80c64443dab211639050c4fb14332648",
      "parents": [
        "fe3c560b8a22cb28e54fe8950abef38e88d75831",
        "81c5e2ae33c4b19e53966b427e33646bf6811830"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:45:01 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:45:01 2011 -0800"
      },
      "message": "Merge branch \u0027for-2.6.38/core\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.38/core\u0027 of git://git.kernel.dk/linux-2.6-block: (43 commits)\n  block: ensure that completion error gets properly traced\n  blktrace: add missing probe argument to block_bio_complete\n  block cfq: don\u0027t use atomic_t for cfq_group\n  block cfq: don\u0027t use atomic_t for cfq_queue\n  block: trace event block fix unassigned field\n  block: add internal hd part table references\n  block: fix accounting bug on cross partition merges\n  kref: add kref_test_and_get\n  bio-integrity: mark kintegrityd_wq highpri and CPU intensive\n  block: make kblockd_workqueue smarter\n  Revert \"sd: implement sd_check_events()\"\n  block: Clean up exit_io_context() source code.\n  Fix compile warnings due to missing removal of a \u0027ret\u0027 variable\n  fs/block: type signature of major_to_index(int) to major_to_index(unsigned)\n  block: convert !IS_ERR(p) \u0026\u0026 p to !IS_ERR_NOR_NULL(p)\n  cfq-iosched: don\u0027t check cfqg in choose_service_tree()\n  fs/splice: Pull buf-\u003eops-\u003econfirm() from splice_from_pipe actors\n  cdrom: export cdrom_check_events()\n  sd: implement sd_check_events()\n  sr: implement sr_check_events()\n  ...\n"
    },
    {
      "commit": "9ecf639a9686c9c7e3fd2cd72817ca490c658e6f",
      "tree": "bc6e56f9fbc813914285ffed9f2da72a3e7282a5",
      "parents": [
        "23a8519b55235660f6fb7d6f394a912de9d23208"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Nov 17 20:46:20 2010 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jan 12 20:16:44 2011 -0500"
      },
      "message": "Gfs2: fail if we try to use hole punch\n\nGfs2 doesn\u0027t have the ability to punch holes yet, so make sure we return\nEOPNOTSUPP if we try to use hole punching through fallocate.  This support can\nbe added later.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "41ced6dcf3dc6b901716fda0dc8de3536da4d39b",
      "tree": "cffec5e5bde8d8a580c03cef8eea2ddb9a821d8a",
      "parents": [
        "1c929cfe6d8f2087a337a868fbf6c38d56bb4889"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Dec 18 12:06:56 2010 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jan 12 20:02:46 2011 -0500"
      },
      "message": "switch gfs2, close races\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "57cc7215b70856dc6bae8e55b00ecd7b1d7429b1",
      "tree": "f6dedefd41e6745a9b801166b99af7d830e41ef2",
      "parents": [
        "37721e1b0cf98cb65895f234d8c500d270546529"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Jan 10 08:18:25 2011 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 10 08:51:44 2011 -0800"
      },
      "message": "headers: kobject.h redux\n\nRemove kobject.h from files which don\u0027t need it, notably,\nsched.h and fs.h.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b4a45f5fe8078bfc10837dbd5b98735058bc4698",
      "tree": "df6f13a27610a3ec7eb4a661448cd779a8f84c79",
      "parents": [
        "01539ba2a706ab7d35fc0667dff919ade7f87d63",
        "b3e19d924b6eaf2ca7d22cba99a517c5171007b6"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 07 08:56:33 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 07 08:56:33 2011 -0800"
      },
      "message": "Merge branch \u0027vfs-scale-working\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/npiggin/linux-npiggin\n\n* \u0027vfs-scale-working\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/npiggin/linux-npiggin: (57 commits)\n  fs: scale mntget/mntput\n  fs: rename vfsmount counter helpers\n  fs: implement faster dentry memcmp\n  fs: prefetch inode data in dcache lookup\n  fs: improve scalability of pseudo filesystems\n  fs: dcache per-inode inode alias locking\n  fs: dcache per-bucket dcache hash locking\n  bit_spinlock: add required includes\n  kernel: add bl_list\n  xfs: provide simple rcu-walk ACL implementation\n  btrfs: provide simple rcu-walk ACL implementation\n  ext2,3,4: provide simple rcu-walk ACL implementation\n  fs: provide simple rcu-walk generic_check_acl implementation\n  fs: provide rcu-walk aware permission i_ops\n  fs: rcu-walk aware d_revalidate method\n  fs: cache optimise dentry and inode for rcu-walk\n  fs: dcache reduce branches in lookup path\n  fs: dcache remove d_mounted\n  fs: fs_struct use seqlock\n  fs: rcu-walk for path lookup\n  ...\n"
    },
    {
      "commit": "b74c79e99389cd79b31fcc08f82c24e492e63c7e",
      "tree": "763c6b412517306670bc625e90035f2d16bb739f",
      "parents": [
        "34286d6662308d82aed891852d04c7c3a2649b16"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:58 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:29 2011 +1100"
      },
      "message": "fs: provide rcu-walk aware permission i_ops\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "34286d6662308d82aed891852d04c7c3a2649b16",
      "tree": "c4b7311404d302e7cb94df7a4690298e1059910a",
      "parents": [
        "44a7d7a878c9cbb74f236ea755b25b6b2e26a9a9"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:57 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:29 2011 +1100"
      },
      "message": "fs: rcu-walk aware d_revalidate method\n\nRequire filesystems be aware of .d_revalidate being called in rcu-walk\nmode (nd-\u003eflags \u0026 LOOKUP_RCU). For now do a simple push down, returning\n-ECHILD from all implementations.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "fb045adb99d9b7c562dc7fef834857f78249daa1",
      "tree": "1fd6a4024fffeec568abe100d730589bfdb81c38",
      "parents": [
        "5f57cbcc02cf18f6b22ef4066bb10afeb8f930ff"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:55 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:28 2011 +1100"
      },
      "message": "fs: dcache reduce branches in lookup path\n\nReduce some branches and memory accesses in dcache lookup by adding dentry\nflags to indicate common d_ops are set, rather than having to check them.\nThis saves a pointer memory access (dentry-\u003ed_op) in common path lookup\nsituations, and saves another pointer load and branch in cases where we\nhave d_op but not the particular operation.\n\nPatched with:\n\ngit grep -E \u0027[.\u003e]([[:space:]])*d_op([[:space:]])*\u003d\u0027 | xargs sed -e \u0027s/\\([^\\t ]*\\)-\u003ed_op \u003d \\(.*\\);/d_set_d_op(\\1, \\2);/\u0027 -e \u0027s/\\([^\\t ]*\\)\\.d_op \u003d \\(.*\\);/d_set_d_op(\\\u0026\\1, \\2);/\u0027 -i\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "fa0d7e3de6d6fc5004ad9dea0dd6b286af8f03e9",
      "tree": "203e0f73883e4c26b5597e36042386a1237dab35",
      "parents": [
        "77812a1ef139d84270d27faacc0630c887411013"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:49 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:26 2011 +1100"
      },
      "message": "fs: icache RCU free inodes\n\nRCU free the struct inode. This will allow:\n\n- Subsequent store-free path walking patch. The inode must be consulted for\n  permissions when walking, so an RCU inode reference is a must.\n- sb_inode_list_lock to be moved inside i_lock because sb list walkers who want\n  to take i_lock no longer need to take sb_inode_list_lock to walk the list in\n  the first place. This will simplify and optimize locking.\n- Could remove some nested trylock loops in dcache code\n- Could potentially simplify things a bit in VM land. Do not need to take the\n  page lock to follow page-\u003emapping.\n\nThe downsides of this is the performance cost of using RCU. In a simple\ncreat/unlink microbenchmark, performance drops by about 10% due to inability to\nreuse cache-hot slab objects. As iterations increase and RCU freeing starts\nkicking over, this increases to about 20%.\n\nIn cases where inode lifetimes are longer (ie. many inodes may be allocated\nduring the average life span of a single inode), a lot of this cache reuse is\nnot applicable, so the regression caused by this patch is smaller.\n\nThe cache-hot regression could largely be avoided by using SLAB_DESTROY_BY_RCU,\nhowever this adds some complexity to list walking and store-free path walking,\nso I prefer to implement this at a later date, if it is shown to be a win in\nreal situations. I haven\u0027t found a regression in any non-micro benchmark so I\ndoubt it will be a problem.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "b1e6a015a580ad145689ad1d6b4aa0e03e6c868b",
      "tree": "57a10ef164e4d2f798d9b832dbeaf973aca2ab83",
      "parents": [
        "621e155a3591962420eacdd39f6f0aa29ceb221e"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:28 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:20 2011 +1100"
      },
      "message": "fs: change d_hash for rcu-walk\n\nChange d_hash so it may be called from lock-free RCU lookups. See similar\npatch for d_compare for details.\n\nFor in-tree filesystems, this is just a mechanical change.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "fe15ce446beb3a33583af81ffe6c9d01a75314ed",
      "tree": "bc8af66b6dd2d0f21a2a3f48a19975ae2cdbae4e",
      "parents": [
        "5eef7fa905c814826f518aca2d414ca77508ce30"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:23 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:18 2011 +1100"
      },
      "message": "fs: change d_delete semantics\n\nChange d_delete from a dentry deletion notification to a dentry caching\nadvise, more like -\u003edrop_inode. Require it to be constant and idempotent,\nand not take d_lock. This is how all existing filesystems use the callback\nanyway.\n\nThis makes fine grained dentry locking of dput and dentry lru scanning\nmuch simpler.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "846f40455276617275284a4b76b89311b4aed0b9",
      "tree": "c8bd64c7e87554e79ab5f37d9c857c8efe91d4cc",
      "parents": [
        "bcd7278d8a423a255e45f4d10afe564328f1885f"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Dec 16 15:18:48 2010 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Dec 16 15:18:48 2010 +0000"
      },
      "message": "GFS2: Don\u0027t flush delete workqueue when releasing the transaction lock\n\nThere is no requirement to flush the delete workqueue before a\ngfs2 filesystem is suspended. The workqueue\u0027s work will just\nbe suspended along with the rest of the tasks on the filesystem.\n\nThe resolves a deadlock situation where the transaction lock\u0027s\ndemotion code was trying to flush the delete workqueue while at\nthe same time, the workqueue was waiting for the transaction\nlock.\n\nThe delete workqueue is flushed by gfs2_make_fs_ro() already, so\nthat umount/remount are correctly protected anyway.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "bcd7278d8a423a255e45f4d10afe564328f1885f",
      "tree": "fe577aaa2b6c042978ae2b3e2306ab8a0cadcddd",
      "parents": [
        "47a25380e37f44db7202093ca92e4af569c34f55"
      ],
      "author": {
        "name": "Bob Peterson",
        "email": "rpeterso@redhat.com",
        "time": "Tue Dec 07 13:58:56 2010 -0500"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Dec 07 18:55:07 2010 +0000"
      },
      "message": "GFS2: fsck.gfs2 reported statfs error after gfs2_grow\n\nWhen you do gfs2_grow it failed to take the very last\nrgrp into account when adding up the new free space due\nto an off-by-one error.  It was not reading the last\nrgrp from the rindex because of a check for \"\u003c\u003d\" that\nshould have been \"\u003c\".  Therefore, fsck.gfs2 was finding\n(and fixing) an error with the system statfs file.\n\nSigned-off-by: Bob Peterson \u003crpeterso@redhat.com\u003e\n"
    },
    {
      "commit": "47a25380e37f44db7202093ca92e4af569c34f55",
      "tree": "db3e6dba3859c5562b9a86f6d4059519fa7a1c52",
      "parents": [
        "e06dfc492870e1d380f02722cde084b724dc197b"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Nov 30 15:49:31 2010 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Nov 30 15:49:31 2010 +0000"
      },
      "message": "GFS2: Merge glock state fields into a bitfield\n\nWe can only merge the fields into a bitfield if the locking\nrules for them are the same. In this case gl_spin covers all\nof the fields (write side) but a couple of them are used\nwith GLF_LOCK as the read side lock, which should be ok\nsince we know that the field in question won\u0027t be changing\nat the time.\n\nThe gl_req setting has to be done earlier (in glock.c) in order\nto place it under gl_spin. The gl_reply setting also has to be\nbrought under gl_spin in order to comply with the new rules.\n\nThis saves 4*sizeof(unsigned int) per glock.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Bob Peterson \u003crpeterso@redhat.com\u003e\n"
    },
    {
      "commit": "e06dfc492870e1d380f02722cde084b724dc197b",
      "tree": "8fca288f44f494b64ad9eaa2d09f5b23b1633a4d",
      "parents": [
        "086d8334cf73b3bb695b82dd864a7a8b00d96b7e"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Nov 30 15:46:02 2010 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Nov 30 15:46:02 2010 +0000"
      },
      "message": "GFS2: Fix uninitialised error value in previous patch\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "086d8334cf73b3bb695b82dd864a7a8b00d96b7e",
      "tree": "acadf5458a2ccfde44049bcb7ba63e136844f875",
      "parents": [
        "0489b3f5eba735413ccedd425651cf41d6b1f7c5"
      ],
      "author": {
        "name": "Benjamin Marzinski",
        "email": "bmarzins@redhat.com",
        "time": "Tue Nov 23 23:52:55 2010 -0600"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Nov 30 15:41:54 2010 +0000"
      },
      "message": "GFS2: fix recursive locking during rindex truncates\n\nWhen you truncate the rindex file, you need to avoid calling gfs2_rindex_hold,\nsince you already hold it.  However, if you haven\u0027t already read in the\nresource groups, you need to do that.\n\nSigned-off-by: Benjamin Marzinski \u003cbmarzins@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n\n"
    },
    {
      "commit": "0489b3f5eba735413ccedd425651cf41d6b1f7c5",
      "tree": "08f09b54c4ec3f6f42fcfe83d435f6023e0eb386",
      "parents": [
        "0b1246e6776c79719ff4a3afd9c38fba99b99d5a"
      ],
      "author": {
        "name": "Benjamin Marzinski",
        "email": "bmarzins@redhat.com",
        "time": "Tue Nov 30 09:38:35 2010 -0600"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Nov 30 15:34:18 2010 +0000"
      },
      "message": "GFS2: reread rindex when necessary to grow rindex\n\nWhen GFS2 grew the filesystem, it was never rereading the rindex file during\nthe grow. This is necessary for large grows when the filesystem is almost full,\nand GFS2 needs to use some of the space allocated earlier in the grow to\ncomplete it.  Now, if GFS2 fails to reserve the necessary space and the rindex\nfile is not uptodate, it rereads it.  Also, the only difference between\ngfs2_ri_update() and gfs2_ri_update_special() was that gfs2_ri_update_special()\ndidn\u0027t clear out the existing resource groups, since you knew that it was only\ncalled when there were no resource groups.  Attempting to clear out the\nresource groups when there are none takes almost no time, and rarely happens,\nso I simply removed gfs2_ri_update_special().\n\nSigned-off-by: Benjamin Marzinski \u003cbmarzins@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n\n"
    },
    {
      "commit": "0b1246e6776c79719ff4a3afd9c38fba99b99d5a",
      "tree": "23f029c525e33e856f3d890054309589323d7892",
      "parents": [
        "921169ca2f7c8a0a2ccda2ce33c465dfe3ae30ef"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Nov 30 15:33:04 2010 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Nov 30 15:33:04 2010 +0000"
      },
      "message": "GFS2: Remove duplicate #defines from glock.h\n\nThere are a number of duplicated #defines in glock.h\nplus one which is unused. This removes the extra\ndefinitions.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "921169ca2f7c8a0a2ccda2ce33c465dfe3ae30ef",
      "tree": "f40f00721426eb992d75493defefb8de8a71b7e1",
      "parents": [
        "802ec9b6682349d9d9c92a9e55f44324d2954f41"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Nov 29 12:50:38 2010 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Nov 30 10:31:48 2010 +0000"
      },
      "message": "GFS2: Clean up of gdlm_lock function\n\nThe DLM never returns -EAGAIN in response to dlm_lock(), and even\nif it did, the test in gdlm_lock() was wrong anyway. Once that\ntest is removed, it is possible to greatly simplify this code\nby simply using a \"normal\" error return code (0 for success).\n\nWe then no longer need the LM_OUT_ASYNC return code which can\nbe removed.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "802ec9b6682349d9d9c92a9e55f44324d2954f41",
      "tree": "25e69625588e936e3cdc93dd648d07fcbfe73ce0",
      "parents": [
        "edc221d00bd5c6da0e5c67701f3782b72796619f"
      ],
      "author": {
        "name": "Abhijith Das",
        "email": "adas@redhat.com",
        "time": "Thu Nov 18 11:26:46 2010 -0500"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Nov 30 10:31:27 2010 +0000"
      },
      "message": "GFS2: Allow gfs2 to update quota usage values through the quotactl interface\n\nWith this patch the gfs2_set_dqblk() function will be able to update the\nquota usage block count (FS_DQ_BCOUNT) in addition to the already supported\nFS_DQ_BHARD (limit) and FS_DQ_BSOFT (warn) fields of the dquot structure.\n\nSigned-off-by: Abhi Das \u003cadas@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "edc221d00bd5c6da0e5c67701f3782b72796619f",
      "tree": "2376c53981a815716955659331d8956b46e95805",
      "parents": [
        "5e69069c1afb655b5f1a154856ccdb4bb7327b81"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Wed Nov 10 13:19:06 2010 -0800"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Nov 30 10:31:05 2010 +0000"
      },
      "message": "GFS2: fs/gfs2/glock.h: Add __attribute__((format(printf,2,3)) to gfs2_print_dbg\n\nFunctions that use printf formatting, especially\nthose that use %pV, should have their uses of\nprintf format and arguments checked by the compiler.\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "5e69069c1afb655b5f1a154856ccdb4bb7327b81",
      "tree": "f6bddfefc266a534b3a2879aa83f2c82ff3b3d81",
      "parents": [
        "2ae51ed7b548c1d943d080da617515e801ea5c3e"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Tue Nov 09 16:35:20 2010 -0800"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Nov 30 10:30:41 2010 +0000"
      },
      "message": "GFS2: fs/gfs2/glock.c: Use printf extension %pV\n\nUsing %pV reduces the number of printk calls and\neliminates any possible message interleaving from\nother printk calls.\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "2ae51ed7b548c1d943d080da617515e801ea5c3e",
      "tree": "b2ed48042eef41f89d8316b70bbbb6c936d3dc76",
      "parents": [
        "9e55cd53728719ac3a3234a6618259ab8e203a10"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Nov 10 15:14:57 2010 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Nov 30 10:30:19 2010 +0000"
      },
      "message": "GFS2: Clean up duplicated setattr code\n\nWhile preparing the last patch I noticed that the gfs2_setattr_simple\ncode had been duplicated into two other places. This patch updates\nthose to call gfs2_setattr_simple rather than open coding it.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "9e55cd53728719ac3a3234a6618259ab8e203a10",
      "tree": "65888b1c6fafcc94520891c810384dbcd0e2ba0c",
      "parents": [
        "cc18152eb7c27653199546bd14e991a451ab8d1b"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Nov 09 14:09:53 2010 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Nov 30 10:22:48 2010 +0000"
      },
      "message": "GFS2: Remove unreachable calls to vmtruncate\n\nSuggested-by: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "cc18152eb7c27653199546bd14e991a451ab8d1b",
      "tree": "495d008f321dbc455a8c8765dacf1834171b704e",
      "parents": [
        "d2115778c7ea0df2201f1ad9aab948c49ffa1078"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Fri Nov 05 16:12:36 2010 -0700"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Nov 30 10:22:19 2010 +0000"
      },
      "message": "GFS2: fs/gfs2/glock.c: Convert sprintf_symbol to %pS\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "d2115778c7ea0df2201f1ad9aab948c49ffa1078",
      "tree": "d987b54d5a982e58ce4ae7c4ec8a32a04cddd367",
      "parents": [
        "e8a7e48bb248a1196484d3f8afa53bded2b24e71"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Nov 03 19:58:53 2010 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Nov 30 10:21:55 2010 +0000"
      },
      "message": "GFS2: Change two WQ_RESCUERs into WQ_MEM_RECLAIM\n\nThe WQ_RESCUER flag should only be used internally to the\nworkqueue implementation.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "f30195c50245d8ace628e1978b1daa8df86e7224",
      "tree": "edf4f91c4356c41d50fb07f15cebd1e6442538ad",
      "parents": [
        "d07335e51df0c6dec202d315fc4f1f7e100eec4e",
        "d4d77629953eabd3c14f6fa5746f6b28babfc55f"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Nov 27 19:49:18 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Nov 27 19:49:18 2010 +0100"
      },
      "message": "Merge branch \u0027cleanup-bd_claim\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/misc into for-2.6.38/core\n"
    },
    {
      "commit": "14870b457524e745f1a118e17873d104b1a47b70",
      "tree": "db7a3d2c20ada60c8bbbc14d71481b036a082b9f",
      "parents": [
        "e53beacd23d9cb47590da6a7a7f6d417b941a994"
      ],
      "author": {
        "name": "Abhijith Das",
        "email": "adas@redhat.com",
        "time": "Thu Nov 18 11:24:24 2010 -0500"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Nov 19 11:20:29 2010 +0000"
      },
      "message": "GFS2: Userland expects quota limit/warn/usage in 512b blocks\n\nUserland programs using the quotactl() syscall assume limit/warn/usage\nblock counts in 512b basic blocks which were instead being read/written\nin fs blocksize in gfs2. With this patch, gfs2 correctly interacts with\nthe syscall using 512b blocks.\n\nSigned-off-by: Abhi Das \u003cadas@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "044b9414c7caf9a26192c73a5b88fa1a8a32a1c1",
      "tree": "9596bb669a68b04eebc40864c3b3fd71d3d1e273",
      "parents": [
        "0143832cc96d0bf78486297aad5c8fb2c2ead02a"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Nov 03 20:01:07 2010 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Nov 15 12:44:42 2010 +0000"
      },
      "message": "GFS2: Fix inode deallocation race\n\nThis area of the code has always been a bit delicate due to the\nsubtleties of lock ordering. The problem is that for \"normal\"\nalloc/dealloc, we always grab the inode locks first and the rgrp lock\nlater.\n\nIn order to ensure no races in looking up the unlinked, but still\nallocated inodes, we need to hold the rgrp lock when we do the lookup,\nwhich means that we can\u0027t take the inode glock.\n\nThe solution is to borrow the technique already used by NFS to solve\nwhat is essentially the same problem (given an inode number, look up\nthe inode carefully, checking that it really is in the expected\nstate).\n\nWe cannot do that directly from the allocation code (lock ordering\nagain) so we give the job to the pre-existing delete workqueue and\ncarry on with the allocation as normal.\n\nIf we find there is no space, we do a journal flush (required anyway\nif space from a deallocation is to be released) which should block\nagainst the pending deallocations, so we should always get the space\nback.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "d4d77629953eabd3c14f6fa5746f6b28babfc55f",
      "tree": "38cce0d4764ecb34a9f7f49332959780e28bb786",
      "parents": [
        "75f1dc0d076d1c1168f2115f1941ea627d38bd5a"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Nov 13 11:55:18 2010 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Nov 13 11:55:18 2010 +0100"
      },
      "message": "block: clean up blkdev_get() wrappers and their users\n\nAfter recent blkdev_get() modifications, open_by_devnum() and\nopen_bdev_exclusive() are simple wrappers around blkdev_get().\nReplace them with blkdev_get_by_dev() and blkdev_get_by_path().\n\nblkdev_get_by_dev() is identical to open_by_devnum().\nblkdev_get_by_path() is slightly different in that it doesn\u0027t\nautomatically add %FMODE_EXCL to @mode.\n\nAll users are converted.  Most conversions are mechanical and don\u0027t\nintroduce any behavior difference.  There are several exceptions.\n\n* btrfs now sets FMODE_EXCL in btrfs_device-\u003emode, so there\u0027s no\n  reason to OR it explicitly on blkdev_put().\n\n* gfs2, nilfs2 and the generic mount_bdev() now set FMODE_EXCL in\n  sb-\u003es_mode.\n\n* With the above changes, sb-\u003es_mode now always should contain\n  FMODE_EXCL.  WARN_ON_ONCE() added to kill_block_super() to detect\n  errors.\n\nThe new blkdev_get_*() functions are with proper docbook comments.\nWhile at it, add function description to blkdev_get() too.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Mike Snitzer \u003csnitzer@redhat.com\u003e\nCc: Joern Engel \u003cjoern@lazybastard.org\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: KONISHI Ryusuke \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nCc: reiserfs-devel@vger.kernel.org\nCc: xfs-masters@oss.sgi.com\nCc: Alexander Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e525fd89d380c4a94c0d63913a1dd1a593ed25e7",
      "tree": "d226ef40d3f99e42fcf272ad432585cbd641ebec",
      "parents": [
        "e09b457bdb7e8d23fc54dcef0930ac697d8de895"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Nov 13 11:55:17 2010 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Nov 13 11:55:17 2010 +0100"
      },
      "message": "block: make blkdev_get/put() handle exclusive access\n\nOver time, block layer has accumulated a set of APIs dealing with bdev\nopen, close, claim and release.\n\n* blkdev_get/put() are the primary open and close functions.\n\n* bd_claim/release() deal with exclusive open.\n\n* open/close_bdev_exclusive() are combination of open and claim and\n  the other way around, respectively.\n\n* bd_link/unlink_disk_holder() to create and remove holder/slave\n  symlinks.\n\n* open_by_devnum() wraps bdget() + blkdev_get().\n\nThe interface is a bit confusing and the decoupling of open and claim\nmakes it impossible to properly guarantee exclusive access as\nin-kernel open + claim sequence can disturb the existing exclusive\nopen even before the block layer knows the current open if for another\nexclusive access.  Reorganize the interface such that,\n\n* blkdev_get() is extended to include exclusive access management.\n  @holder argument is added and, if is @FMODE_EXCL specified, it will\n  gain exclusive access atomically w.r.t. other exclusive accesses.\n\n* blkdev_put() is similarly extended.  It now takes @mode argument and\n  if @FMODE_EXCL is set, it releases an exclusive access.  Also, when\n  the last exclusive claim is released, the holder/slave symlinks are\n  removed automatically.\n\n* bd_claim/release() and close_bdev_exclusive() are no longer\n  necessary and either made static or removed.\n\n* bd_link_disk_holder() remains the same but bd_unlink_disk_holder()\n  is no longer necessary and removed.\n\n* open_bdev_exclusive() becomes a simple wrapper around lookup_bdev()\n  and blkdev_get().  It also has an unexpected extra bdev_read_only()\n  test which probably should be moved into blkdev_get().\n\n* open_by_devnum() is modified to take @holder argument and pass it to\n  blkdev_get().\n\nMost of bdev open/close operations are unified into blkdev_get/put()\nand most exclusive accesses are tested atomically at the open time (as\nit should).  This cleans up code and removes some, both valid and\ninvalid, but unnecessary all the same, corner cases.\n\nopen_bdev_exclusive() and open_by_devnum() can use further cleanup -\nrename to blkdev_get_by_path() and blkdev_get_by_devt() and drop\nspecial features.  Well, let\u0027s leave them for another day.\n\nMost conversions are straight-forward.  drbd conversion is a bit more\ninvolved as there was some reordering, but the logic should stay the\nsame.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Neil Brown \u003cneilb@suse.de\u003e\nAcked-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nAcked-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nAcked-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nCc: Peter Osterlund \u003cpetero2@telia.com\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Andreas Dilger \u003cadilger.kernel@dilger.ca\u003e\nCc: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: Mark Fasheh \u003cmfasheh@suse.com\u003e\nCc: Joel Becker \u003cjoel.becker@oracle.com\u003e\nCc: Alex Elder \u003caelder@sgi.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: dm-devel@redhat.com\nCc: drbd-dev@lists.linbit.com\nCc: Leo Chen \u003cleochen@broadcom.com\u003e\nCc: Scott Branden \u003csbranden@broadcom.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Dave Kleikamp \u003cshaggy@linux.vnet.ibm.com\u003e\nCc: Joern Engel \u003cjoern@logfs.org\u003e\nCc: reiserfs-devel@vger.kernel.org\nCc: Alexander Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "51ee4b84f5c86935b438d6636f34b523edb415a8",
      "tree": "c60e0da8f8b6393477d79ef6d6ce321ee3b8ecaa",
      "parents": [
        "96f935934591b72f5b05fd6923bc8cdcae92f2e5"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Sun Oct 31 08:35:10 2010 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Oct 31 06:35:15 2010 -0700"
      },
      "message": "locks: let the caller free file_lock on -\u003esetlease failure\n\nThe caller allocated it, the caller should free it.\n\nThe only issue so far is that we could change the flp pointer even on an\nerror return if the fl_change callback failed.  But we can simply move\nthe flp assignment after the fl_change invocation, as the callers don\u0027t\ncare about the flp return value if the setlease call failed.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "05fa3135fdc7b9b510b502a35b6b97d2b38c6f48",
      "tree": "d533e8112111202ae890b2061c0386669002d080",
      "parents": [
        "096657b65e1ac197e20be5ce7cff6b6ca2532787"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Sat Oct 30 17:31:15 2010 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Oct 30 18:08:15 2010 -0700"
      },
      "message": "locks: fix setlease methods to free passed-in lock\n\nWe modified setlease to require the caller to allocate the new lease in\nthe case of creating a new lease, but forgot to fix up the filesystem\nmethods.\n\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Steve French \u003csfrench@samba.org\u003e\nCc: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\nAcked-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8bcbbf0009dd467afd6bed1fedfcb1d2463f55a7",
      "tree": "0913df26841e57371f44133aa95272981a78ed52",
      "parents": [
        "f7442b3be65bfcabbb5d6e896e65d69e8b261583"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jul 26 16:03:58 2010 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Oct 29 04:17:16 2010 -0400"
      },
      "message": "convert gfs2\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "426e1f5cec4821945642230218876b0e89aafab1",
      "tree": "2728ace018d0698886989da586210ef1543a7098",
      "parents": [
        "9e5fca251f44832cb996961048ea977f80faf6ea",
        "63997e98a3be68d7cec806d22bf9b02b2e1daabb"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 17:58:44 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 17:58:44 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (52 commits)\n  split invalidate_inodes()\n  fs: skip I_FREEING inodes in writeback_sb_inodes\n  fs: fold invalidate_list into invalidate_inodes\n  fs: do not drop inode_lock in dispose_list\n  fs: inode split IO and LRU lists\n  fs: switch bdev inode bdi\u0027s correctly\n  fs: fix buffer invalidation in invalidate_list\n  fsnotify: use dget_parent\n  smbfs: use dget_parent\n  exportfs: use dget_parent\n  fs: use RCU read side protection in d_validate\n  fs: clean up dentry lru modification\n  fs: split __shrink_dcache_sb\n  fs: improve DCACHE_REFERENCED usage\n  fs: use percpu counter for nr_dentry and nr_dentry_unused\n  fs: simplify __d_free\n  fs: take dcache_lock inside __d_path\n  fs: do not assign default i_ino in new_inode\n  fs: introduce a per-cpu last_ino allocator\n  new helper: ihold()\n  ...\n"
    },
    {
      "commit": "1b430beee5e388605dfb092b214ef0320f752cf6",
      "tree": "c1b1ece282aab771fd1386a3fe0c6e82cb5c5bfe",
      "parents": [
        "d19d5476f4b9f91d2de92b91588bb118beba6c0d"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Tue Oct 26 14:21:26 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:05 2010 -0700"
      },
      "message": "writeback: remove nonblocking/encountered_congestion references\n\nThis removes more dead code that was somehow missed by commit 0d99519efef\n(writeback: remove unused nonblocking and congestion checks).  There are\nno behavior change except for the removal of two entries from one of the\next4 tracing interface.\n\nThe nonblocking checks in -\u003ewritepages are no longer used because the\nflusher now prefer to block on get_request_wait() than to skip inodes on\nIO congestion.  The latter will lead to more seeky IO.\n\nThe nonblocking checks in -\u003ewritepage are no longer used because it\u0027s\nredundant with the WB_SYNC_NONE check.\n\nWe no long set -\u003enonblocking in VM page out and page migration, because\na) it\u0027s effectively redundant with WB_SYNC_NONE in current code\nb) it\u0027s old semantic of \"Don\u0027t get stuck on request queues\" is mis-behavior:\n   that would skip some dirty inodes on congestion and page out others, which\n   is unfair in terms of LRU age.\n\nInspired by Christoph Hellwig. Thanks!\n\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: Sage Weil \u003csage@newdream.net\u003e\nCc: Steve French \u003csfrench@samba.org\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7de9c6ee3ecffd99e1628e81a5ea5468f7581a1f",
      "tree": "88787e77ba8a253d0a26aeda4bd5e58532d592e0",
      "parents": [
        "646ec4615cd05972581c9c5342ed7a1e77df17bb"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Oct 23 11:11:40 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 25 21:26:11 2010 -0400"
      },
      "message": "new helper: ihold()\n\nClones an existing reference to inode; caller must already hold one.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "9dcefee508d547eed88f3c578dc92819bdeaa952",
      "tree": "7d63df92ba654ee4a9840099156588472ec1044d",
      "parents": [
        "8e3b9a072d071700e83e88b0bf59115c59042885"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Oct 24 09:46:50 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 25 21:23:01 2010 -0400"
      },
      "message": "gfs2: invalidate_inodes() is no-op there\n\nIn fill_super() we hadn\u0027t MS_ACTIVE set yet, so there won\u0027t\nbe any inodes with zero i_count sitting around.\n\nIn put_super() we already have MS_ACTIVE removed *and* we\nhad called invalidate_inodes() since then.  So again there\nwon\u0027t be any inodes with zero i_count...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ebdec241d509cf69f6ebf1ecdc036359d3dbe154",
      "tree": "e3c23f9b213936cb8501c83f55522a01f4a69aca",
      "parents": [
        "56b0dacfa2b8416815a2f2a5f4f51e46be4cf14c"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Wed Oct 06 10:47:23 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 25 21:18:20 2010 -0400"
      },
      "message": "fs: kill block_prepare_write\n\n__block_write_begin and block_prepare_write are identical except for slightly\ndifferent calling conventions.  Convert all callers to the __block_write_begin\ncalling conventions and drop block_prepare_write.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "91b745016c12d440386c40fb76ab69c8e08cbc06",
      "tree": "881a26a43b3ee924c0979a54b38c7a87d79d7f1a",
      "parents": [
        "04cc69768e7d1f40d98b79d23d203674553b4da2",
        "daaae6b010ac0f60c9c35e481589966f9f1fcc22"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 17:13:10 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 17:13:10 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq:\n  workqueue: remove in_workqueue_context()\n  workqueue: Clarify that schedule_on_each_cpu is synchronous\n  memory_hotplug: drop spurious calls to flush_scheduled_work()\n  shpchp: update workqueue usage\n  pciehp: update workqueue usage\n  isdn/eicon: don\u0027t call flush_scheduled_work() from diva_os_remove_soft_isr()\n  workqueue: add and use WQ_MEM_RECLAIM flag\n  workqueue: fix HIGHPRI handling in keep_working()\n  workqueue: add queue_work and activate_work trace points\n  workqueue: prepare for more tracepoints\n  workqueue: implement flush[_delayed]_work_sync()\n  workqueue: factor out start_flush_work()\n  workqueue: cleanup flush/cancel functions\n  workqueue: implement alloc_ordered_workqueue()\n\nFix up trivial conflict in fs/gfs2/main.c as per Tejun\n"
    },
    {
      "commit": "a2887097f25cd38cadfc11d10769e2b349fb5eca",
      "tree": "cd4adcb305365d6ba9acd2c02d4eb9d0125c6f8d",
      "parents": [
        "8abfc6e7a45eb74e51904bbae676fae008b11366",
        "005a1d15f5a6b2bb4ada80349513effbf22b4588"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 17:07:18 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 17:07:18 2010 -0700"
      },
      "message": "Merge branch \u0027for-2.6.37/barrier\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.37/barrier\u0027 of git://git.kernel.dk/linux-2.6-block: (46 commits)\n  xen-blkfront: disable barrier/flush write support\n  Added blk-lib.c and blk-barrier.c was renamed to blk-flush.c\n  block: remove BLKDEV_IFL_WAIT\n  aic7xxx_old: removed unused \u0027req\u0027 variable\n  block: remove the BH_Eopnotsupp flag\n  block: remove the BLKDEV_IFL_BARRIER flag\n  block: remove the WRITE_BARRIER flag\n  swap: do not send discards as barriers\n  fat: do not send discards as barriers\n  ext4: do not send discards as barriers\n  jbd2: replace barriers with explicit flush / FUA usage\n  jbd2: Modify ASYNC_COMMIT code to not rely on queue draining on barrier\n  jbd: replace barriers with explicit flush / FUA usage\n  nilfs2: replace barriers with explicit flush / FUA usage\n  reiserfs: replace barriers with explicit flush / FUA usage\n  gfs2: replace barriers with explicit flush / FUA usage\n  btrfs: replace barriers with explicit flush / FUA usage\n  xfs: replace barriers with explicit flush / FUA usage\n  block: pass gfp_mask and flags to sb_issue_discard\n  dm: convey that all flushes are processed as empty\n  ...\n"
    },
    {
      "commit": "092e0e7e520a1fca03e13c9f2d157432a8657ff2",
      "tree": "451897252c4c08c4b5a8ef535da156f1e817e80b",
      "parents": [
        "79f14b7c56d3b3ba58f8b43d1f70b9b71477a800",
        "776c163b1b93c8dfa5edba885bc2bfbc2d228a5f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 10:52:56 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 10:52:56 2010 -0700"
      },
      "message": "Merge branch \u0027llseek\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl\n\n* \u0027llseek\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl:\n  vfs: make no_llseek the default\n  vfs: don\u0027t use BKL in default_llseek\n  llseek: automatically add .llseek fop\n  libfs: use generic_file_llseek for simple_attr\n  mac80211: disallow seeks in minstrel debug code\n  lirc: make chardev nonseekable\n  viotape: use noop_llseek\n  raw: use explicit llseek file operations\n  ibmasmfs: use generic_file_llseek\n  spufs: use llseek in all file operations\n  arm/omap: use generic_file_llseek in iommu_debug\n  lkdtm: use generic_file_llseek in debugfs\n  net/wireless: use generic_file_llseek in debugfs\n  drm: use noop_llseek\n"
    },
    {
      "commit": "79f14b7c56d3b3ba58f8b43d1f70b9b71477a800",
      "tree": "3bb53b7806c1baba6cc24b91724a9264cceccd39",
      "parents": [
        "c37927d4359e81b85de644f8fb08878717cf5f3f",
        "6d7bccc2215c37205ede6c9cf84db64e7c4f9443"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 10:52:01 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 10:52:01 2010 -0700"
      },
      "message": "Merge branch \u0027vfs\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl\n\n* \u0027vfs\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl: (30 commits)\n  BKL: remove BKL from freevxfs\n  BKL: remove BKL from qnx4\n  autofs4: Only declare function when CONFIG_COMPAT is defined\n  autofs: Only declare function when CONFIG_COMPAT is defined\n  ncpfs: Lock socket in ncpfs while setting its callbacks\n  fs/locks.c: prepare for BKL removal\n  BKL: Remove BKL from ncpfs\n  BKL: Remove BKL from OCFS2\n  BKL: Remove BKL from squashfs\n  BKL: Remove BKL from jffs2\n  BKL: Remove BKL from ecryptfs\n  BKL: Remove BKL from afs\n  BKL: Remove BKL from USB gadgetfs\n  BKL: Remove BKL from autofs4\n  BKL: Remove BKL from isofs\n  BKL: Remove BKL from fat\n  BKL: Remove BKL from ext2 filesystem\n  BKL: Remove BKL from do_new_mount()\n  BKL: Remove BKL from cgroup\n  BKL: Remove BKL from NTFS\n  ...\n"
    },
    {
      "commit": "fa251f89903d73989e2f63e13d0eaed1e07ce0da",
      "tree": "3f7fe779941e3b6d67754dd7c44a32f48ea47c74",
      "parents": [
        "dd3932eddf428571762596e17b65f5dc92ca361b",
        "cd07202cc8262e1669edff0d97715f3dd9260917"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Oct 19 09:13:04 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Oct 19 09:13:04 2010 +0200"
      },
      "message": "Merge branch \u0027v2.6.36-rc8\u0027 into for-2.6.37/barrier\n\nConflicts:\n\tblock/blk-core.c\n\tdrivers/block/loop.c\n\tmm/swapfile.c\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "33027af637da3f69bd17488cc3e68493c9052a7d",
      "tree": "1c0d5508131e259f8dc9dcde2cf6e7860c9a8f29",
      "parents": [
        "134669854e3a680d8aad9a4047891c653715f4c0"
      ],
      "author": {
        "name": "Andrea Gelmini",
        "email": "andrea.gelmini@gelma.net",
        "time": "Sat Oct 16 15:19:22 2010 +0200"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Oct 18 14:38:07 2010 +0100"
      },
      "message": "GFS2: fixed typo\n\nSigned-off-by: Andrea Gelmini \u003candrea.gelmini@gelma.net\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n\n"
    },
    {
      "commit": "6038f373a3dc1f1c26496e60b6c40b164716f07e",
      "tree": "a0d3bbd026eea41b9fc36b8c722cbaf56cd9f825",
      "parents": [
        "1ec5584e3edf9c4bf2c88c846534d19cf986ba11"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Sun Aug 15 18:52:59 2010 +0200"
      },
      "committer": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Fri Oct 15 15:53:27 2010 +0200"
      },
      "message": "llseek: automatically add .llseek fop\n\nAll file_operations should get a .llseek operation so we can make\nnonseekable_open the default for future file operations without a\n.llseek pointer.\n\nThe three cases that we can automatically detect are no_llseek, seq_lseek\nand default_llseek. For cases where we can we can automatically prove that\nthe file offset is always ignored, we use noop_llseek, which maintains\nthe current behavior of not returning an error from a seek.\n\nNew drivers should normally not use noop_llseek but instead use no_llseek\nand call nonseekable_open at open time.  Existing drivers can be converted\nto do the same when the maintainer knows for certain that no user code\nrelies on calling seek on the device file.\n\nThe generated code is often incorrectly indented and right now contains\ncomments that clarify for each added line why a specific variant was\nchosen. In the version that gets submitted upstream, the comments will\nbe gone and I will manually fix the indentation, because there does not\nseem to be a way to do that using coccinelle.\n\nSome amount of new code is currently sitting in linux-next that should get\nthe same modifications, which I will do at the end of the merge window.\n\nMany thanks to Julia Lawall for helping me learn to write a semantic\npatch that does all this.\n\n\u003d\u003d\u003d\u003d\u003d begin semantic patch \u003d\u003d\u003d\u003d\u003d\n// This adds an llseek\u003d method to all file operations,\n// as a preparation for making no_llseek the default.\n//\n// The rules are\n// - use no_llseek explicitly if we do nonseekable_open\n// - use seq_lseek for sequential files\n// - use default_llseek if we know we access f_pos\n// - use noop_llseek if we know we don\u0027t access f_pos,\n//   but we still want to allow users to call lseek\n//\n@ open1 exists @\nidentifier nested_open;\n@@\nnested_open(...)\n{\n\u003c+...\nnonseekable_open(...)\n...+\u003e\n}\n\n@ open exists@\nidentifier open_f;\nidentifier i, f;\nidentifier open1.nested_open;\n@@\nint open_f(struct inode *i, struct file *f)\n{\n\u003c+...\n(\nnonseekable_open(...)\n|\nnested_open(...)\n)\n...+\u003e\n}\n\n@ read disable optional_qualifier exists @\nidentifier read_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\nexpression E;\nidentifier func;\n@@\nssize_t read_f(struct file *f, char *p, size_t s, loff_t *off)\n{\n\u003c+...\n(\n   *off \u003d E\n|\n   *off +\u003d E\n|\n   func(..., off, ...)\n|\n   E \u003d *off\n)\n...+\u003e\n}\n\n@ read_no_fpos disable optional_qualifier exists @\nidentifier read_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\n@@\nssize_t read_f(struct file *f, char *p, size_t s, loff_t *off)\n{\n... when !\u003d off\n}\n\n@ write @\nidentifier write_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\nexpression E;\nidentifier func;\n@@\nssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off)\n{\n\u003c+...\n(\n  *off \u003d E\n|\n  *off +\u003d E\n|\n  func(..., off, ...)\n|\n  E \u003d *off\n)\n...+\u003e\n}\n\n@ write_no_fpos @\nidentifier write_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\n@@\nssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off)\n{\n... when !\u003d off\n}\n\n@ fops0 @\nidentifier fops;\n@@\nstruct file_operations fops \u003d {\n ...\n};\n\n@ has_llseek depends on fops0 @\nidentifier fops0.fops;\nidentifier llseek_f;\n@@\nstruct file_operations fops \u003d {\n...\n .llseek \u003d llseek_f,\n...\n};\n\n@ has_read depends on fops0 @\nidentifier fops0.fops;\nidentifier read_f;\n@@\nstruct file_operations fops \u003d {\n...\n .read \u003d read_f,\n...\n};\n\n@ has_write depends on fops0 @\nidentifier fops0.fops;\nidentifier write_f;\n@@\nstruct file_operations fops \u003d {\n...\n .write \u003d write_f,\n...\n};\n\n@ has_open depends on fops0 @\nidentifier fops0.fops;\nidentifier open_f;\n@@\nstruct file_operations fops \u003d {\n...\n .open \u003d open_f,\n...\n};\n\n// use no_llseek if we call nonseekable_open\n////////////////////////////////////////////\n@ nonseekable1 depends on !has_llseek \u0026\u0026 has_open @\nidentifier fops0.fops;\nidentifier nso ~\u003d \"nonseekable_open\";\n@@\nstruct file_operations fops \u003d {\n...  .open \u003d nso, ...\n+.llseek \u003d no_llseek, /* nonseekable */\n};\n\n@ nonseekable2 depends on !has_llseek @\nidentifier fops0.fops;\nidentifier open.open_f;\n@@\nstruct file_operations fops \u003d {\n...  .open \u003d open_f, ...\n+.llseek \u003d no_llseek, /* open uses nonseekable */\n};\n\n// use seq_lseek for sequential files\n/////////////////////////////////////\n@ seq depends on !has_llseek @\nidentifier fops0.fops;\nidentifier sr ~\u003d \"seq_read\";\n@@\nstruct file_operations fops \u003d {\n...  .read \u003d sr, ...\n+.llseek \u003d seq_lseek, /* we have seq_read */\n};\n\n// use default_llseek if there is a readdir\n///////////////////////////////////////////\n@ fops1 depends on !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier readdir_e;\n@@\n// any other fop is used that changes pos\nstruct file_operations fops \u003d {\n... .readdir \u003d readdir_e, ...\n+.llseek \u003d default_llseek, /* readdir is present */\n};\n\n// use default_llseek if at least one of read/write touches f_pos\n/////////////////////////////////////////////////////////////////\n@ fops2 depends on !fops1 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read.read_f;\n@@\n// read fops use offset\nstruct file_operations fops \u003d {\n... .read \u003d read_f, ...\n+.llseek \u003d default_llseek, /* read accesses f_pos */\n};\n\n@ fops3 depends on !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier write.write_f;\n@@\n// write fops use offset\nstruct file_operations fops \u003d {\n... .write \u003d write_f, ...\n+\t.llseek \u003d default_llseek, /* write accesses f_pos */\n};\n\n// Use noop_llseek if neither read nor write accesses f_pos\n///////////////////////////////////////////////////////////\n\n@ fops4 depends on !fops1 \u0026\u0026 !fops2 \u0026\u0026 !fops3 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read_no_fpos.read_f;\nidentifier write_no_fpos.write_f;\n@@\n// write fops use offset\nstruct file_operations fops \u003d {\n...\n .write \u003d write_f,\n .read \u003d read_f,\n...\n+.llseek \u003d noop_llseek, /* read and write both use no f_pos */\n};\n\n@ depends on has_write \u0026\u0026 !has_read \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier write_no_fpos.write_f;\n@@\nstruct file_operations fops \u003d {\n... .write \u003d write_f, ...\n+.llseek \u003d noop_llseek, /* write uses no f_pos */\n};\n\n@ depends on has_read \u0026\u0026 !has_write \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read_no_fpos.read_f;\n@@\nstruct file_operations fops \u003d {\n... .read \u003d read_f, ...\n+.llseek \u003d noop_llseek, /* read uses no f_pos */\n};\n\n@ depends on !has_read \u0026\u0026 !has_write \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\n@@\nstruct file_operations fops \u003d {\n...\n+.llseek \u003d noop_llseek, /* no read or write fn */\n};\n\u003d\u003d\u003d\u003d\u003d End semantic patch \u003d\u003d\u003d\u003d\u003d\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nCc: Julia Lawall \u003cjulia@diku.dk\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\n"
    },
    {
      "commit": "6370a6ad3b53df90b4700977f7718118a2cd524a",
      "tree": "2d1f45a19e66329813ce133b18f920d8c450b0c0",
      "parents": [
        "30310045dd20a286cf3800f063f79b468e132fb1"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Oct 11 15:12:27 2010 +0200"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Oct 11 15:20:26 2010 +0200"
      },
      "message": "workqueue: add and use WQ_MEM_RECLAIM flag\n\nAdd WQ_MEM_RECLAIM flag which currently maps to WQ_RESCUER, mark\nWQ_RESCUER as internal and replace all external WQ_RESCUER usages to\nWQ_MEM_RECLAIM.\n\nThis makes the API users express the intent of the workqueue instead\nof indicating the internal mechanism used to guarantee forward\nprogress.  This is also to make it cleaner to add more semantics to\nWQ_MEM_RECLAIM.  For example, if deemed necessary, memory reclaim\nworkqueues can be made highpri.\n\nThis patch doesn\u0027t introduce any functional change.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Jeff Garzik \u003cjgarzik@pobox.com\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "134669854e3a680d8aad9a4047891c653715f4c0",
      "tree": "8c6f6b2615fc7bf84c69b02bde33065aaa8688c9",
      "parents": [
        "46290341cd649c2bfb69e5067c1804c0395c83a1"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Oct 06 09:58:44 2010 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Oct 06 09:58:44 2010 +0100"
      },
      "message": "GFS2: Fix type mapping for demote_rq interface\n\nMostly the glock operations follow the type of the glock. The\none exception is the transaction glock, so we need to check for\nthat directly.\n\nReported-by: Dr. David Alan Gilbert \u003clinux@treblig.org\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "b89f432133851a01c0d28822f11cbdcc15781a75",
      "tree": "a3e9ba638a9b746985148f4525335d360ec7da56",
      "parents": [
        "2e54eb96e2c801f33d95b5dade15212ac4d6c4a5"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Sat Sep 18 15:09:31 2010 +0200"
      },
      "committer": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Tue Oct 05 11:02:04 2010 +0200"
      },
      "message": "fs/locks.c: prepare for BKL removal\n\nThis prepares the removal of the big kernel lock from the\nfile locking code. We still use the BKL as long as fs/lockd\nuses it and ceph might sleep, but we can flip the definition\nto a private spinlock as soon as that\u0027s done.\nAll users outside of fs/lockd get converted to use\nlock_flocks() instead of lock_kernel() where appropriate.\n\nBased on an earlier patch to use a spinlock from Matthew\nWilcox, who has attempted this a few times before, the\nearliest patch from over 10 years ago turned it into\na semaphore, which ended up being slower than the BKL\nand was subsequently reverted.\n\nSomeone should do some serious performance testing when\nthis becomes a spinlock, since this has caused problems\nbefore. Using a spinlock should be at least as good\nas the BKL in theory, but who knows...\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nAcked-by: Matthew Wilcox \u003cwilly@linux.intel.com\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: John Kacur \u003cjkacur@redhat.com\u003e\nCc: Sage Weil \u003csage@newdream.net\u003e\nCc: linux-kernel@vger.kernel.org\nCc: linux-fsdevel@vger.kernel.org\n"
    },
    {
      "commit": "46290341cd649c2bfb69e5067c1804c0395c83a1",
      "tree": "1ef4a9c1d158ec182645d4be4cb3357a52a4404d",
      "parents": [
        "feb47ca9314666d920855b8a235032dea2b2caa4"
      ],
      "author": {
        "name": "Bob Peterson",
        "email": "rpeterso@redhat.com",
        "time": "Thu Sep 30 10:34:00 2010 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Sep 30 17:23:03 2010 +0100"
      },
      "message": "GFS2 fatal: filesystem consistency error on rename\n\nThis patch fixes a GFS2 problem whereby the first rename after a\nmount can result in a file system consistency error being flagged\nimproperly and cause the file system to withdraw.  The problem is\nthat the rename code tries to run the rgrp list with function\ngfs2_blk2rgrpd before the rgrp list is guaranteed to be read in\nfrom disk.  The patch makes the rename function hold the rindex\nglock (as the gfs2_unlink code does today) which reads in the rgrp\nlist if need be.  There were a total of three places in the rename\ncode that improperly referenced the rgrp list without the rindex\nglock and this patch fixes all three.\n\nSigned-off-by: Bob Peterson \u003crpeterso@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "feb47ca9314666d920855b8a235032dea2b2caa4",
      "tree": "163a391bda495826747eb249cf74b42ad35bd5ec",
      "parents": [
        "43f74c199563a4273e528e2166d0650625a1e05f"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Sep 29 15:04:18 2010 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Sep 29 15:04:18 2010 +0100"
      },
      "message": "GFS2: Improve journal allocation via sysfs\n\nRecently a feature was added to GFS2 to allow journal id allocation\nvia sysfs. This patch builds upon that so that a negative journal id\nwill be treated as an error code to be passed back as the return code\nfrom mount. This allows termination of the mount process if there is\na failure.\n\nAlso, the process has been updated so that the kernel will wait\nfor a journal id, even in the \"spectator\" case. This is required\nin order to avoid mounting a filesystem in case there is an error\nwhile joining the cluster. In the spectator case, 0 is written into\nthe file to indicate that all is well, and that mount should continue.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "43f74c199563a4273e528e2166d0650625a1e05f",
      "tree": "cef4b1af71fde827a81f1f88bb13b0b75c6a99ab",
      "parents": [
        "c741c4551237f9c1bdcd3b1b39b0883bd19a3723"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Sep 29 14:24:41 2010 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Sep 29 14:24:41 2010 +0100"
      },
      "message": "GFS2: Add \"norecovery\" mount option as a synonym for \"spectator\"\n\nXFS supports the \"norecovery\" mount option which is basically the\nsame as the GFS2 spectator mode. This adds support for \"norecovery\"\nas a synonym for spectator mode, which is hopefully a more obvious\ndescription of what it actually does.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "c741c4551237f9c1bdcd3b1b39b0883bd19a3723",
      "tree": "f3d39633f5e63ad40dd5a7375090b239bde3368c",
      "parents": [
        "d594845106f34c079a6b05be01a37e4883c3bf4c"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Sep 29 14:20:52 2010 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Sep 29 14:20:52 2010 +0100"
      },
      "message": "GFS2: Fix spectator umount issue\n\nThe tests further down the recovery function relating to\nunlocking the journal need to be updated to match the\nintial test. Also, a test in the umount code which was\nsurplus to requirements has been removed. Umounting\nspectator mounts now works correctly, as expected.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "d594845106f34c079a6b05be01a37e4883c3bf4c",
      "tree": "15065bde22128cdf5d82f9c5a8fdce4beae04ea2",
      "parents": [
        "bf97b6734e027cc18abad420ab88f861f65d7816"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Sep 28 10:17:47 2010 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Sep 28 10:17:47 2010 +0100"
      },
      "message": "GFS2: Fix compiler warning from previous patch\n\nThis shouldn\u0027t really be required, but gcc can\u0027t tell that\n\"al\" is only accessed when initialised.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "bf97b6734e027cc18abad420ab88f861f65d7816",
      "tree": "74892640ed482487f3bc630ad4fd20e62dec2c54",
      "parents": [
        "d0795f912318f65b800c6b619d749c3bf7c930fb"
      ],
      "author": {
        "name": "Benjamin Marzinski",
        "email": "bmarzins@redhat.com",
        "time": "Mon Sep 27 16:00:04 2010 -0500"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Sep 28 09:44:24 2010 +0100"
      },
      "message": "GFS2: reserve more blocks for transactions\n\nSome of the functions in GFS2 were not reserving space in the transaction for\nthe resource group header and the resource groups bitblocks that get added\nwhen you do allocation. GFS2 now makes sure to reserve space for the\nresource group header and either all the bitblocks in the resource group, or\none for each block that it may allocate, whichever is smaller using the new\ngfs2_rg_blocks() inline function.\n\nSigned-off-by: Benjamin Marzinski \u003cbmarzins@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n\n"
    },
    {
      "commit": "d0795f912318f65b800c6b619d749c3bf7c930fb",
      "tree": "c3d13ab5e4864306cc215d4dd6b6cecb1e33d77b",
      "parents": [
        "c80dbb58f9c3f84372e37dfe80b41810052ad62f"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Sep 27 15:58:11 2010 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Sep 27 15:58:11 2010 +0100"
      },
      "message": "GFS2: Fix journal check for spectator mounts\n\nWhen checking journals for spectator mounts, we cannot rely on the\njournal being locked, whatever its jid might be. This patch\nensures that we always get the journal locks when checking\njournals for a spectator mount.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "c80dbb58f9c3f84372e37dfe80b41810052ad62f",
      "tree": "138e1683dbac848c2563a03509207f8981b059ed",
      "parents": [
        "c2048b003cfb840ad81bdc6eb55beb12a19a222e"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Sep 24 09:55:07 2010 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Sep 24 09:55:07 2010 +0100"
      },
      "message": "GFS2: Remove upgrade mount option\n\nThis option has never done anything useful. Also at the same time\nthis cleans up the sb checks which are done at mount time. The\ndebug option will be accepted, but ignored in future. Since it\ndidn\u0027t do anything, there didn\u0027t seem much point in retaining it.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "c2048b003cfb840ad81bdc6eb55beb12a19a222e",
      "tree": "17b3b09141cfb1c2ca13759bac365ef5050e5dc9",
      "parents": [
        "f57a024ed2ee00d62515ffd4040f5ded3e0eb853"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Sep 23 14:00:31 2010 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Sep 23 14:00:31 2010 +0100"
      },
      "message": "GFS2: Remove localcaching mount option\n\nThis option defaulted to on for lock_nolock mounts and off\notherwise. The only function was to avoid the revalidation of\ndentries. In the cluster case, that is entirely pointless and\nliable to cause coherency problems.\n\nThe patch changes the revalidation to depend upon whether the\nfs is a local or cluster fs (i.e. it follows the existing default\nbehaviour). I very much doubt anybody ever used this option as\nthere is no reason to. Even so we will continue to accept it\non the mount command line, but ignore it.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "f57a024ed2ee00d62515ffd4040f5ded3e0eb853",
      "tree": "7f253cd03070d5b6d8af2330cecd2f0f70ac6870",
      "parents": [
        "8d1235852b462cfb66aa036bd4a2686763c69ed4"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Sep 23 13:41:42 2010 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Sep 23 13:41:42 2010 +0100"
      },
      "message": "GFS2: Remove ignore_local_fs mount argument\n\nThis is been a no-op for a very long time now. I\u0027m pretty sure\nnobody uses it, but just in case we\u0027ll still accept it on the\ncommand line, but ignore it.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "8d1235852b462cfb66aa036bd4a2686763c69ed4",
      "tree": "9ac348ed6183c4dc509dba3d2ef750043266c82c",
      "parents": [
        "9fa0ea9f26f64fbfc3dfd51d1dc2c230b65ffb19"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Sep 17 12:30:23 2010 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Sep 20 11:21:09 2010 +0100"
      },
      "message": "GFS2: Make . and .. qstrs constant\n\nRather than calculating the qstrs for . and .. each time\nwe need them, its better to keep a constant version of\nthese and just refer to them when required.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@infradead.org\u003e\n"
    },
    {
      "commit": "9fa0ea9f26f64fbfc3dfd51d1dc2c230b65ffb19",
      "tree": "39d893961545394f1a504ed3d63fe900f76b95ef",
      "parents": [
        "1fea7c25a05d388c0cdbe02cbdaf3a2e70885581"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Sep 13 16:23:00 2010 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Sep 20 11:20:36 2010 +0100"
      },
      "message": "GFS2: Use new workqueue scheme\n\nThe recovery workqueue can be freezable since\nwe want it to finish what it is doing if the system is to\nbe frozen (although why you\u0027d want to freeze a cluster node\nis beyond me since it will result in it being ejected from\nthe cluster). It does still make sense for single node\nGFS2 filesystems though.\n\nThe glock workqueue will benefit from being able to run more\nwork items concurrently. A test running postmark shows\nimproved performance and multi-threaded workloads are likely\nto benefit even more. It needs to be high priority because\nthe latency directly affects the latency of filesystem glock\noperations.\n\nThe delete workqueue is similar to the recovery workqueue in\nthat it must not get blocked by memory allocations, and may\nrun for a long time.\n\nPotentially other GFS2 threads might also be converted to\nworkqueues, but I\u0027ll leave that for a later patch.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "1fea7c25a05d388c0cdbe02cbdaf3a2e70885581",
      "tree": "4cb485254d7d3eb42b2dc0c3de140a21f586d511",
      "parents": [
        "7b5e3d5fcf0d6fce66050bd0313a7dc2ae4abc62"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Sep 08 10:09:25 2010 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Sep 20 11:20:12 2010 +0100"
      },
      "message": "GFS2: Update handling of DLM return codes to match reality\n\nGFS2\u0027s idea of which return codes it needs to handle was based\nupon those listed in dlm.h. Those didn\u0027t cover all the possible\ncodes and listed some which never happen. This updates GFS2 to\nhandle all the codes which can actually be returned from the\nDLM under various circumstances.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "7b5e3d5fcf0d6fce66050bd0313a7dc2ae4abc62",
      "tree": "2121e7587c5bb73faeaba6e438178ea8aff570ee",
      "parents": [
        "fe08d5a89726675a920b0e9bbbe849c46b27a6e5"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Sep 03 09:39:20 2010 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Sep 20 11:19:50 2010 +0100"
      },
      "message": "GFS2: Don\u0027t enforce min hold time when two demotes occur in rapid succession\n\nDue to the design of the VFS, it is quite usual for operations on GFS2\nto consist of a lookup (requiring a shared lock) followed by an\noperation requiring an exclusive lock. If a remote node has cached an\nexclusive lock, then it will receive two demote events in rapid succession\nfirstly for a shared lock and then to unlocked. The existing min hold time\ncode was triggering in this case, even if the node was otherwise idle\nsince the state change time was being updated by the initial demote.\n\nThis patch introduces logic to skip the min hold timer in the case that\na \"double demote\" of this kind has occurred. The min hold timer will\nstill be used in all other cases.\n\nA new glock flag is introduced which is used to keep track of whether\nthere have been any newly queued holders since the last glock state\nchange. The min hold time is only applied if the flag is set.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nTested-by: Abhijith Das \u003cadas@redhat.com\u003e\n"
    },
    {
      "commit": "fe08d5a89726675a920b0e9bbbe849c46b27a6e5",
      "tree": "bb7b57316a91d3a3cb66649e910c9609f35a3167",
      "parents": [
        "3921120e757f9167f3fcd3a1781239824471b14d"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Aug 23 11:54:45 2010 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Sep 20 11:19:35 2010 +0100"
      },
      "message": "GFS2: Fix whitespace in previous patch\n\nRemoves the offending space\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "3921120e757f9167f3fcd3a1781239824471b14d",
      "tree": "4b5f8e9e5376ae6a64b9757a62392b89a6316e26",
      "parents": [
        "9a3f236d40a99ea8dca3df40d8ef67631057cad6"
      ],
      "author": {
        "name": "Benjamin Marzinski",
        "email": "bmarzins@redhat.com",
        "time": "Fri Aug 20 00:21:02 2010 -0500"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Sep 20 11:19:17 2010 +0100"
      },
      "message": "GFS2: fallocate support\n\nThis patch adds support for fallocate to gfs2.  Since the gfs2 does not support\nuninitialized data blocks, it must write out zeros to all the blocks.  However,\nsince it does not need to lock any pages to read from, gfs2 can write out the\nzero blocks much more efficiently.  On a moderately full filesystem, fallocate\nworks around 5 times faster on average.  The fallocate call also allows gfs2 to\nadd blocks to the file without changing the filesize, which will make it\npossible for gfs2 to preallocate space for the rindex file, so that gfs2 can\ngrow a completely full filesystem.\n\nSigned-off-by: Benjamin Marzinski \u003cbmarzins@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "9a3f236d40a99ea8dca3df40d8ef67631057cad6",
      "tree": "9249794a803c7df5bcef90038199351f14f09b1d",
      "parents": [
        "820969f353587281d645735c83c7f07d606e67ba"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Aug 23 11:49:34 2010 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Sep 20 11:18:59 2010 +0100"
      },
      "message": "GFS2: Add a bug trap in allocation code\n\nThis adds a check to ensure that if we reach the block allocator\nthat we don\u0027t try and proceed if there is no alloc structure\nhanging off the inode. This should only happen if there is a bug\nin GFS2. The error return code is distinctive in order that it\nwill be easily spotted.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "820969f353587281d645735c83c7f07d606e67ba",
      "tree": "538f8806639b757334ebc399a82170d7f0bf2d3b",
      "parents": [
        "a2e0f79939e09e74698564b88dee709db208e1e2"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Aug 11 09:53:47 2010 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Sep 20 11:18:46 2010 +0100"
      },
      "message": "GFS2: No longer experimental\n\nI think the time has arrvied to remove the experimental tag\nfrom GFS2.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "a2e0f79939e09e74698564b88dee709db208e1e2",
      "tree": "0018e445e3d47c4558901153733899ef672f789e",
      "parents": [
        "ff8f33c8b30d7b7efdcf2548c7f6e64db6a89b29"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Aug 11 09:53:11 2010 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Sep 20 11:18:29 2010 +0100"
      },
      "message": "GFS2: Remove i_disksize\n\nWith the update of the truncate code, ip-\u003ei_disksize and\ninode-\u003ei_size are merely copies of each other. This means\nwe can remove ip-\u003ei_disksize and use inode-\u003ei_size exclusively\nreducing the size of a GFS2 inode by 8 bytes.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "ff8f33c8b30d7b7efdcf2548c7f6e64db6a89b29",
      "tree": "a21bad4d2b48f743dd96277b1c966c35aefe1ce2",
      "parents": [
        "2422084a94fcd5038406261b331672a13c92c050"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Aug 11 09:37:53 2010 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Sep 20 11:18:16 2010 +0100"
      },
      "message": "GFS2: New truncate sequence\n\nThis updates GFS2\u0027s truncate code to use the new truncate\nsequence correctly. This is a stepping stone to being\nable to remove ip-\u003ei_disksize in favour of using i_size\neverywhere now that the two sizes are always identical.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "5f4874903df3562b9d5649fc1cf7b8c6bb238e42",
      "tree": "b66dbafa2fd3f32c6df72752d95cad260abd35bd",
      "parents": [
        "03a7ab083e4d619136d6f07ce70fa9de0bc436fc"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Sep 09 14:45:00 2010 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Sep 17 14:00:10 2010 +0100"
      },
      "message": "GFS2: gfs2_logd should be using interruptible waits\n\nLooks like this crept in, in a recent update.\n\nReported-by:  Krzysztof Urbaniak \u003curban@bash.org.pl\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    }
  ],
  "next": "dd3932eddf428571762596e17b65f5dc92ca361b"
}
