)]}'
{
  "log": [
    {
      "commit": "8fb47a4fbf858a164e973b8ea8ef5e83e61f2e50",
      "tree": "d3b55fbce0e7ba5708a55b91b1ab4079ad192db6",
      "parents": [
        "c46556c6be057da79f51b1a8325ec4c27938bd49"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Wed Jul 20 20:21:59 2011 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Wed Jul 20 20:23:19 2011 -0400"
      },
      "message": "locks: rename lock-manager ops\n\nBoth the filesystem and the lock manager can associate operations with a\nlock.  Confusingly, one of them (fl_release_private) actually has the\nsame name in both operation structures.\n\nIt would save some confusion to give the lock-manager ops different\nnames.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "901025d2f3194b4868980c8ba80df4cc0aa1282c",
      "tree": "66df1472a10def86391b124ea69d6f182aef98db",
      "parents": [
        "2a7ce0edd661b3144c7b916ecf1eba0967b6d4a5"
      ],
      "author": {
        "name": "David Teigland",
        "email": "teigland@redhat.com",
        "time": "Wed Mar 02 14:20:04 2011 -0600"
      },
      "committer": {
        "name": "David Teigland",
        "email": "teigland@redhat.com",
        "time": "Mon May 23 10:47:06 2011 -0500"
      },
      "message": "dlm: make plock operation killable\n\nAllow processes blocked on plock requests to be interrupted\nwhen they are killed.  This leaves the problem of cleaning\nup the lock state in userspace.  This has three parts:\n\n1. Add a flag to unlock operations sent to userspace\nindicating the file is being closed.  Userspace will\nthen look for and clear any waiting plock operations that\nwere abandoned by an interrupted process.\n\n2. Queue an unlock-close operation (like in 1) to clean up\nuserspace from an interrupted plock request.  This is needed\nbecause the vfs will not send a cleanup-unlock if it sees no\nlocks on the file, which it won\u0027t if the interrupted operation\nwas the only one.\n\n3. Do not use replies from userspace for unlock-close operations\nbecause they are unnecessary (they are just cleaning up for the\nprocess which did not make an unlock call).  This also simplifies\nthe new unlock-close generated from point 2.\n\nSigned-off-by: David Teigland \u003cteigland@redhat.com\u003e\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": "5a0e3ad6af8660be21ca98a971cd00f331318c05",
      "tree": "5bfb7be11a03176a87296a43ac6647975c00a1d1",
      "parents": [
        "ed391f4ebf8f701d3566423ce8f17e614cde9806"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 24 17:04:11 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 30 22:02:32 2010 +0900"
      },
      "message": "include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h\n\npercpu.h is included by sched.h and module.h and thus ends up being\nincluded when building most .c files.  percpu.h includes slab.h which\nin turn includes gfp.h making everything defined by the two files\nuniversally available and complicating inclusion dependencies.\n\npercpu.h -\u003e slab.h dependency is about to be removed.  Prepare for\nthis change by updating users of gfp and slab facilities include those\nheaders directly instead of assuming availability.  As this conversion\nneeds to touch large number of source files, the following script is\nused as the basis of conversion.\n\n  http://userweb.kernel.org/~tj/misc/slabh-sweep.py\n\nThe script does the followings.\n\n* Scan files for gfp and slab usages and update includes such that\n  only the necessary includes are there.  ie. if only gfp is used,\n  gfp.h, if slab is used, slab.h.\n\n* When the script inserts a new include, it looks at the include\n  blocks and try to put the new include such that its order conforms\n  to its surrounding.  It\u0027s put in the include block which contains\n  core kernel includes, in the same order that the rest are ordered -\n  alphabetical, Christmas tree, rev-Xmas-tree or at the end if there\n  doesn\u0027t seem to be any matching order.\n\n* If the script can\u0027t find a place to put a new include (mostly\n  because the file doesn\u0027t have fitting include block), it prints out\n  an error message indicating which .h file needs to be added to the\n  file.\n\nThe conversion was done in the following steps.\n\n1. The initial automatic conversion of all .c files updated slightly\n   over 4000 files, deleting around 700 includes and adding ~480 gfp.h\n   and ~3000 slab.h inclusions.  The script emitted errors for ~400\n   files.\n\n2. Each error was manually checked.  Some didn\u0027t need the inclusion,\n   some needed manual addition while adding it to implementation .h or\n   embedding .c file was more appropriate for others.  This step added\n   inclusions to around 150 files.\n\n3. The script was run again and the output was compared to the edits\n   from #2 to make sure no file was left behind.\n\n4. Several build tests were done and a couple of problems were fixed.\n   e.g. lib/decompress_*.c used malloc/free() wrappers around slab\n   APIs requiring slab.h to be added manually.\n\n5. The script was run on all .h files but without automatically\n   editing them as sprinkling gfp.h and slab.h inclusions around .h\n   files could easily lead to inclusion dependency hell.  Most gfp.h\n   inclusion directives were ignored as stuff from gfp.h was usually\n   wildly available and often used in preprocessor macros.  Each\n   slab.h inclusion directive was examined and added manually as\n   necessary.\n\n6. percpu.h was updated not to include slab.h.\n\n7. Build test were done on the following configurations and failures\n   were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my\n   distributed build env didn\u0027t work with gcov compiles) and a few\n   more options had to be turned off depending on archs to make things\n   build (like ipr on powerpc/64 which failed due to missing writeq).\n\n   * x86 and x86_64 UP and SMP allmodconfig and a custom test config.\n   * powerpc and powerpc64 SMP allmodconfig\n   * sparc and sparc64 SMP allmodconfig\n   * ia64 SMP allmodconfig\n   * s390 SMP allmodconfig\n   * alpha SMP allmodconfig\n   * um on x86_64 SMP allmodconfig\n\n8. percpu.h modifications were reverted so that it could be applied as\n   a separate patch and serve as bisection point.\n\nGiven the fact that I had only a couple of failures from tests on step\n6, I\u0027m fairly confident about the coverage of this conversion patch.\nIf there is a breakage, it\u0027s likely to be something in one of the arch\nheaders which should be easily discoverable easily on most builds of\nthe specific arch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nGuess-its-ok-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\n"
    },
    {
      "commit": "02412f49f6a7e35753d9af49d92662fb562fc9fa",
      "tree": "ecf4c573ff8944227ca04e342e97ab17493cda5c",
      "parents": [
        "4515c3069da5bfb6f08dbfca499464b4cbdfcb50",
        "573c24c4af6664ffcd9aa7ba617a35fde2b95534"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 10 09:33:59 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 10 09:33:59 2009 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/teigland/dlm\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/teigland/dlm:\n  dlm: always use GFP_NOFS\n"
    },
    {
      "commit": "af901ca181d92aac3a7dc265144a9081a86d8f39",
      "tree": "380054af22521144fbe1364c3bcd55ad24c9bde4",
      "parents": [
        "972b94ffb90ea6d20c589d9a47215df103388ddd"
      ],
      "author": {
        "name": "André Goddard Rosa",
        "email": "andre.goddard@gmail.com",
        "time": "Sat Nov 14 13:09:05 2009 -0200"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Fri Dec 04 15:39:55 2009 +0100"
      },
      "message": "tree-wide: fix assorted typos all over the place\n\nThat is \"success\", \"unknown\", \"through\", \"performance\", \"[re|un]mapping\"\n, \"access\", \"default\", \"reasonable\", \"[con]currently\", \"temperature\"\n, \"channel\", \"[un]used\", \"application\", \"example\",\"hierarchy\", \"therefore\"\n, \"[over|under]flow\", \"contiguous\", \"threshold\", \"enough\" and others.\n\nSigned-off-by: André Goddard Rosa \u003candre.goddard@gmail.com\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "573c24c4af6664ffcd9aa7ba617a35fde2b95534",
      "tree": "9222c0c8921fda5b842c2d1007d911d47bd4fe7c",
      "parents": [
        "a8a8a669ea13d792296737505adc43ccacf3a648"
      ],
      "author": {
        "name": "David Teigland",
        "email": "teigland@redhat.com",
        "time": "Mon Nov 30 16:34:43 2009 -0600"
      },
      "committer": {
        "name": "David Teigland",
        "email": "teigland@redhat.com",
        "time": "Mon Nov 30 16:34:43 2009 -0600"
      },
      "message": "dlm: always use GFP_NOFS\n\nReplace all GFP_KERNEL and ls_allocation with GFP_NOFS.\nls_allocation would be GFP_KERNEL for userland lockspaces\nand GFP_NOFS for file system lockspaces.\n\nIt was discovered that any lockspaces on the system can\naffect all others by triggering memory reclaim in the\nfile system which could in turn call back into the dlm\nto acquire locks, deadlocking dlm threads that were\nshared by all lockspaces, like dlm_recv.\n\nSigned-off-by: David Teigland \u003cteigland@redhat.com\u003e\n"
    },
    {
      "commit": "c78a87d0a1fc885dfdbe21fd5e07787691dfb068",
      "tree": "73f6056f87cd9183e04f3b9f6a4245876cf0cb23",
      "parents": [
        "a566a6b11c86147fe9fc9db7ab15f9eecca3e862"
      ],
      "author": {
        "name": "David Teigland",
        "email": "teigland@redhat.com",
        "time": "Thu Jun 18 13:20:24 2009 -0500"
      },
      "committer": {
        "name": "David Teigland",
        "email": "teigland@redhat.com",
        "time": "Thu Jun 18 13:42:42 2009 -0500"
      },
      "message": "dlm: fix plock use-after-free\n\nFix a regression from the original addition of nfs lock support\n586759f03e2e9031ac5589912a51a909ed53c30a.  When a synchronous\n(non-nfs) plock completes, the waiting thread will wake up and\nfree the op struct.  This races with the user thread in\ndev_write() which goes on to read the op\u0027s callback field to\ncheck if the lock is async and needs a callback.  This check\ncan happen on the freed op.  The fix is to note the callback\nvalue before the op can be freed.\n\nSigned-off-by: David Teigland \u003cteigland@redhat.com\u003e\n"
    },
    {
      "commit": "20d5a39929232a715f29e6cb7e3f0d0c790f41eb",
      "tree": "6662d2a65f470526a8d6ec591b8429a2ca6024fb",
      "parents": [
        "24179f488092267c9a033d7e25ce7a58af50ff79"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Wed Jan 21 11:34:50 2009 -0500"
      },
      "committer": {
        "name": "David Teigland",
        "email": "teigland@redhat.com",
        "time": "Wed Jan 21 15:28:45 2009 -0600"
      },
      "message": "dlm: initialize file_lock struct in GETLK before copying conflicting lock\n\ndlm_posix_get fills out the relevant fields in the file_lock before\nreturning when there is a lock conflict, but doesn\u0027t clean out any of\nthe other fields in the file_lock.\n\nWhen nfsd does a NFSv4 lockt call, it sets the fl_lmops to\nnfsd_posix_mng_ops before calling the lower fs. When the lock comes back\nafter testing a lock on GFS2, it still has that field set. This confuses\nnfsd into thinking that the file_lock is a nfsd4 lock.\n\nFix this by making DLM reinitialize the file_lock before copying the\nfields from the conflicting lock.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: David Teigland \u003cteigland@redhat.com\u003e\n"
    },
    {
      "commit": "24179f488092267c9a033d7e25ce7a58af50ff79",
      "tree": "a4f4fc6a038ba8240350a4b47d9a1f405790e78f",
      "parents": [
        "f3b8436ad9a8ad36b3c9fa1fe030c7f38e5d3d0b"
      ],
      "author": {
        "name": "David Teigland",
        "email": "teigland@redhat.com",
        "time": "Mon Jan 19 13:13:33 2009 -0600"
      },
      "committer": {
        "name": "David Teigland",
        "email": "teigland@redhat.com",
        "time": "Wed Jan 21 15:28:45 2009 -0600"
      },
      "message": "dlm: fix plock notify callback to lockd\n\nWe should use the original copy of the file_lock, fl, instead\nof the copy, flc in the lockd notify callback.  The range in flc has\nbeen modified by posix_lock_file(), so it will not match a copy of the\nlock in lockd.\n\nSigned-off-by: David Teigland \u003cteigland@redhat.com\u003e\n"
    },
    {
      "commit": "bde74e4bc64415b142e556a34d295a52a1b7da9d",
      "tree": "b6bd229307ccab9b1ad03ffbc75f1f9960cd49e4",
      "parents": [
        "cc77b1521d06be07c9bb1a4a3e1f775dcaa15093"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Fri Jul 25 01:48:57 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:47 2008 -0700"
      },
      "message": "locks: add special return value for asynchronous locks\n\nUse a special error value FILE_LOCK_DEFERRED to mean that a locking\noperation returned asynchronously.  This is returned by\n\n  posix_lock_file() for sleeping locks to mean that the lock has been\n  queued on the block list, and will be woken up when it might become\n  available and needs to be retried (either fl_lmops-\u003efl_notify() is\n  called or fl_wait is woken up).\n\n  f_op-\u003elock() to mean either the above, or that the filesystem will\n  call back with fl_lmops-\u003efl_grant() when the result of the locking\n  operation is known.  The filesystem can do this for sleeping as well\n  as non-sleeping locks.\n\nThis is to make sure, that return values of -EAGAIN and -EINPROGRESS by\nfilesystems are not mistaken to mean an asynchronous locking.\n\nThis also makes error handling in fs/locks.c and lockd/svclock.c slightly\ncleaner.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nCc: Matthew Wilcox \u003cmatthew@wil.cx\u003e\nCc: David Teigland \u003cteigland@redhat.com\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "817d10bad56f2fdfa321b4a864a21295226b123a",
      "tree": "a8072d7f82e04a88ea37f474661e33f45c112e15",
      "parents": [
        "0035a4b14931eb62a5f8a7762284c18e7ab14289"
      ],
      "author": {
        "name": "David Teigland",
        "email": "teigland@redhat.com",
        "time": "Tue May 13 14:28:26 2008 -0500"
      },
      "committer": {
        "name": "David Teigland",
        "email": "teigland@redhat.com",
        "time": "Mon May 19 15:37:27 2008 -0500"
      },
      "message": "dlm: fix plock dev_write return value\n\nThe return value on writes to the plock device should be\nthe number of bytes written.  It was returning 0 instead\nwhen an nfs lock callback was involved.\n\nReported-by: Nathan Straz \u003cnstraz@redhat.com\u003e\nSigned-off-by: David Teigland \u003cteigland@redhat.com\u003e\n"
    },
    {
      "commit": "2402211a8389282fd2942fad4511f02c0eeeffc5",
      "tree": "853e5818a29816e642689d7e793a845d2519711b",
      "parents": [
        "d44e0fc704143624b3e88fbf8fbcfda7a83fd299"
      ],
      "author": {
        "name": "David Teigland",
        "email": "teigland@redhat.com",
        "time": "Fri Mar 14 15:09:15 2008 -0500"
      },
      "committer": {
        "name": "David Teigland",
        "email": "teigland@redhat.com",
        "time": "Mon Apr 21 11:22:28 2008 -0500"
      },
      "message": "dlm: move plock code from gfs2\n\nMove the code that handles cluster posix locks from gfs2 into the dlm\nso that it can be used by both gfs2 and ocfs2.\n\nSigned-off-by: David Teigland \u003cteigland@redhat.com\u003e\n"
    },
    {
      "commit": "2066b58b0a038d7aedd24133677efb8856cac3a1",
      "tree": "0afb8a5ee7a9c1a0e4f618b818f8bd05ccd8c3a9",
      "parents": [
        "dbee2199c37336e89060fbe9abdfd1ca8454372a"
      ],
      "author": {
        "name": "David Teigland",
        "email": "teigland@redhat.com",
        "time": "Thu Dec 06 09:35:25 2007 -0600"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Jan 25 08:08:23 2008 +0000"
      },
      "message": "[GFS2] use pid for plock owner for nfs clients\n\nThe fl_owner is that of lockd when posix locks arrive from nfs\nclients, so it can\u0027t be used to distinguish between lock holders.\nUse fl_pid as owner instead; it\u0027s the pid of the process on the\nnfs client.\n\nSigned-off-by: David Teigland \u003cteigland@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "cee23c79d08c57bbbb9923703409af3b17518c58",
      "tree": "57a09aa5c4d846a1fc65e8c576b5fd9bfbe8bc4f",
      "parents": [
        "6760bdcd03a12d7d082794311ccbaf44bfc23b06"
      ],
      "author": {
        "name": "Denis Cheng",
        "email": "crquan@gmail.com",
        "time": "Wed Jul 25 17:53:58 2007 +0800"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Oct 10 08:54:58 2007 +0100"
      },
      "message": "[GFS2] use an temp variable to reduce a spin_unlock\n\nthis is more clear.\n\nSigned-off-by: Denis Cheng \u003ccrquan@gmail.com\u003e\nSigned-off-by: David Teigland \u003cteigland@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "a7a2ff8a951ab373732116e7c31e2e1fe025d5e0",
      "tree": "aec05033231051f07af384f2e89dd500ff3d7a66",
      "parents": [
        "d88101d4d82ea09433692af30618c3b7afb7da02"
      ],
      "author": {
        "name": "David Teigland",
        "email": "teigland@redhat.com",
        "time": "Fri Jun 08 17:01:40 2007 -0500"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Jul 09 08:23:33 2007 +0100"
      },
      "message": "[GFS2] return conflicts for GETLK\n\nWe weren\u0027t returning the correct result when GETLK found a conflict,\nwhich is indicated by userspace passing back a 1.\n\nSigned-off-by: Abhijith Das \u003cadas redhat com\u003e\nSigned-off-by: David Teigland \u003cteigland redhat com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "d88101d4d82ea09433692af30618c3b7afb7da02",
      "tree": "fcf0763671852d48ec8aac356017c5be0f68dead",
      "parents": [
        "037bcbb7564e35aef937c54799550cd27735aac6"
      ],
      "author": {
        "name": "David Teigland",
        "email": "teigland@redhat.com",
        "time": "Fri Jun 08 16:00:22 2007 -0500"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Jul 09 08:23:31 2007 +0100"
      },
      "message": "[GFS2] set plock owner in GETLK info\n\nSet the owner field in the plock info sent to userspace for GETLK.\nWithout this, gfs_controld won\u0027t correctly see when the GETLK from a\nprocess matches one of the process\u0027s existing locks.\n\nSigned-off-by: David Teigland \u003cteigland@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "586759f03e2e9031ac5589912a51a909ed53c30a",
      "tree": "5c788be0c13fb6d0baf3824e29a6bb6b195bf61a",
      "parents": [
        "1a8322b2b02071b0c7ac37a28357b93e6362f13e"
      ],
      "author": {
        "name": "Marc Eshel",
        "email": "eshel@almaden.ibm.com",
        "time": "Tue Nov 14 16:37:25 2006 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Sun May 06 20:38:50 2007 -0400"
      },
      "message": "gfs2: nfs lock support for gfs2\n\nAdd NFS lock support to GFS2.\n\nSigned-off-by: Marc Eshel \u003ceshel@almaden.ibm.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\nAcked-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "00977a59b951207d38380c75f03a36829950265c",
      "tree": "26933feafebffca95df02c19df03f5e56aada47e",
      "parents": [
        "d54b1fdb1d9f82e375a299e22bd366aad52d4c34"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Mon Feb 12 00:55:34 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Feb 12 09:48:45 2007 -0800"
      },
      "message": "[PATCH] mark struct file_operations const 6\n\nMany struct file_operations in the kernel can be \"const\".  Marking them const\nmoves these to the .rodata section, which avoids false sharing with potential\ndirty data.  In addition it\u0027ll catch accidental writes at compile time to\nthese shared resources.\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bd01f843c3368dcee735c19603251669f23f4477",
      "tree": "3cb848f5577ff7c7cbb21982d81fa4baabc6a7b5",
      "parents": [
        "a1f8e7f7fb9d7e2cbcb53170edca7c0ac4680697"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Oct 19 17:23:57 2006 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Dec 04 02:00:31 2006 -0500"
      },
      "message": "[PATCH] severing skbuff.h -\u003e poll.h\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "9b47c11d1cbedcba685c9bd90c73fd41acdfab0e",
      "tree": "799f05877bd8973262da54852b7b8bf9a9916998",
      "parents": [
        "a2c4580797f62b0dd9a48f1e0ce3fe8b8fd76262"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Sep 08 10:17:58 2006 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Sep 08 10:17:58 2006 -0400"
      },
      "message": "[GFS2] Use void * instead of typedef for locking module interface\n\nAs requested by Jan Engelhardt, this removes the typedefs in the\nlocking module interface and replaces them with void *. Also\nsince we are changing the interface, I\u0027ve added a few consts\nas well.\n\nCc: Jan Engelhardt \u003cjengelh@linux01.gwdg.de\u003e\nCc: David Teigland \u003cteigland@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "e9fc2aa091ab8fa46e60d4c9d06a89305c441652",
      "tree": "8cdf5fcc4adba8cd53c51f824b5d8107ce0f4bba",
      "parents": [
        "c6e6f0ba8fc1dea99c7bd020916f24d533b62697"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Sep 01 11:05:15 2006 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Sep 01 11:05:15 2006 -0400"
      },
      "message": "[GFS2] Update copyright, tidy up incore.h\n\nAs per comments from Jan Engelhardt \u003cjengelh@linux01.gwdg.de\u003e this\nupdates the copyright message to say \"version\" in full rather than\n\"v.2\". Also incore.h has been updated to remove forward structure\ndeclarations which are not required.\n\nThe gfs2_quota_lvb structure has now had endianess annotations added\nto it. Also quota.c has been updated so that we now store the\nlvb data locally in endian independant format to avoid needing\na structure in host endianess too. As a result the endianess\nconversions are done as required at various points and thus the\nconversion routines in lvb.[ch] are no longer required. I\u0027ve\nmoved the one remaining constant in lvb.h thats used into lm.h\nand removed the unused lvb.[ch].\n\nI have not changed the HIF_ constants. That is left to a later patch\nwhich I hope will unify the gh_flags and gh_iflags fields of the\nstruct gfs2_holder.\n\nCc: Jan Engelhardt \u003cjengelh@linux01.gwdg.de\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "08eac93a689ca05c7b7413f6d362c7d38b5fd5b1",
      "tree": "8511ce6587dba063dee9dad5c6ff85cbd108967f",
      "parents": [
        "3120ec541eafc6ed19bacb395adf08c5872143bf"
      ],
      "author": {
        "name": "David Teigland",
        "email": "teigland@redhat.com",
        "time": "Fri Aug 04 16:19:20 2006 -0500"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Aug 07 08:46:51 2006 -0400"
      },
      "message": "[GFS2] match plock result with correct request\n\nWhen the result of a posix lock request is read it needs to be matched up\nwith the correct waiting request.  The owner field needs to be used in the\ncomparison since more than one process may be waiting for locks on the\nsame file.\n\nSigned-off-by: David Teigland \u003cteigland@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "de9b75d31e81e87685d8cc70052a003c654f1e8e",
      "tree": "0af16068399368810bf4358893e477b64271ff4b",
      "parents": [
        "420b9e5e45d33355471c8d2d593bb0e5d6c77421"
      ],
      "author": {
        "name": "David Teigland",
        "email": "teigland@redhat.com",
        "time": "Fri Jul 28 14:00:20 2006 -0500"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Jul 31 15:44:29 2006 -0400"
      },
      "message": "[GFS2] add plock owner\n\nWe need to use fl_owner instead of fl_pid to track the owner of a posix\nlock.  Pass the owner value out to user space where cluster plocks are\nmanaged.\n\nSigned-off-by: David Teigland \u003cteigland@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "9229f013495dcdae76e9942ebc2cfc69851fe10a",
      "tree": "46c3b25ea005fd2fdbc17a510d30d40e3abd39e1",
      "parents": [
        "90cdd2083aea9a536ecdef62840db01fff2e645d"
      ],
      "author": {
        "name": "David Teigland",
        "email": "teigland@redhat.com",
        "time": "Wed May 24 09:21:30 2006 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed May 24 09:21:30 2006 -0400"
      },
      "message": "[GFS2] Cast 64 bit printk args to unsigned long long.\n\nSigned-off-by: David Teigland \u003cteigland@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "3a2a9c96ac129d17aad1a5c46988ad28f72564b0",
      "tree": "5cc5be39b85f1caebb25043781f331fcf1d2a119",
      "parents": [
        "373b5a453255b6a013b9d20116918f09a1ceeccc"
      ],
      "author": {
        "name": "David Teigland",
        "email": "teigland@redhat.com",
        "time": "Tue Apr 25 15:45:51 2006 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Apr 25 15:45:51 2006 -0400"
      },
      "message": "[GFS2] Update plock code in DLM locking module\n\nWe should be using fl_pid not fl_owner.\n\nSigned-off-by: David Teigland \u003cteigland@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "d92a8d48085df863032110d9ccb221cde98d14e1",
      "tree": "faf03d9c10e104f3ab3fb8264e70b4662bae5d33",
      "parents": [
        "2fcb4a1278ec41508d76786f4c5d23bff3b378ee"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Feb 27 10:57:14 2006 -0500"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Feb 27 10:57:14 2006 -0500"
      },
      "message": "[GFS2] Audit printk and kmalloc\n\nAll printk calls now have KERN_ set where required and a couple of\nkmalloc(), memset(.., 0, ...) calls changed to kzalloc().\n\nThis is in response to comments from:\nPekka Enberg \u003cpenberg@cs.helsinki.fi\u003e and\nEric Sesterhenn \u003csnakebyte@gmx.de\u003e\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "869d81df53ad28ce78fc92504b3365b8196a2fa1",
      "tree": "4062f1b13ef32445f1e554d15d59765f88de5ba6",
      "parents": [
        "a8f2d64728d8b706392fc1cb0f2fd6852a5e27ae"
      ],
      "author": {
        "name": "David Teigland",
        "email": "teigland@redhat.com",
        "time": "Tue Jan 17 08:47:12 2006 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Jan 17 08:47:12 2006 +0000"
      },
      "message": "[GFS2] An update of the GFS2 lock modules\n\nThis brings the lock modules uptodate and removes the stray\n.mod.c file which accidently got included in the last check in.\n\nSigned-off-by: David Teigland \u003cteigland@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    }
  ]
}
