)]}'
{
  "log": [
    {
      "commit": "fdef7aa5d4020fd94ffcbf0078d6bd9e5a111e19",
      "tree": "270c2b03e9cb5cf5451b0e229c5a328727ef743a",
      "parents": [
        "6bab93f87ec703bf6650875881b11f9f27d7da56"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Tue Jan 04 14:12:47 2011 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Tue Jan 04 16:49:25 2011 -0500"
      },
      "message": "svcrpc: ensure cache_check caller sees updated entry\n\nSupposes cache_check runs simultaneously with an update on a different\nCPU:\n\n\tcache_check\t\t\ttask doing update\n\t^^^^^^^^^^^\t\t\t^^^^^^^^^^^^^^^^^\n\n\t1. test for CACHE_VALID\t\t1\u0027. set entry-\u003edata\n\t   \u0026 !CACHE_NEGATIVE\n\n\t2. use entry-\u003edata\t\t2\u0027. set CACHE_VALID\n\nIf the two memory writes performed in step 1\u0027 and 2\u0027 appear misordered\nwith respect to the reads in step 1 and 2, then the caller could get\nstale data at step 2 even though it saw CACHE_VALID set on the cache\nentry.\n\nAdd memory barriers to prevent this.\n\nReviewed-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "6bab93f87ec703bf6650875881b11f9f27d7da56",
      "tree": "1042182b79c43747404fe91b03b3b958246c3a9c",
      "parents": [
        "da165dd60e136d0609e0a2c0c2a9b9a5372200d6"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Mon Jan 03 15:10:27 2011 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Tue Jan 04 16:49:24 2011 -0500"
      },
      "message": "svcrpc: take lock on turning entry NEGATIVE in cache_check\n\nWe attempt to turn a cache entry negative in place.  But that entry may\nalready have been filled in by some other task since we last checked\nwhether it was valid, so we could be modifying an already-valid entry.\nIf nothing else there\u0027s a likely leak in such a case when the entry is\neventually put() and contents are not freed because it has\nCACHE_NEGATIVE set.\n\nSo, take the cache_lock just as sunrpc_cache_update() does.\n\nReviewed-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "d76d1815f3e72fb627ad7f95ef63120b0a557c9c",
      "tree": "e639629aabf50fe9b5441286ff12cfc4ec77de98",
      "parents": [
        "3beb6cd1d448e7ded938bbd676493e6a08e9a6cd"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Sun Jan 02 21:28:34 2011 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Tue Jan 04 16:49:21 2011 -0500"
      },
      "message": "svcrpc: avoid double reply caused by deferral race\n\nCommit d29068c431599fa \"sunrpc: Simplify cache_defer_req and related\nfunctions.\" asserted that cache_check() could determine success or\nfailure of cache_defer_req() by checking the CACHE_PENDING bit.\n\nThis isn\u0027t quite right.\n\nWe need to know whether cache_defer_req() created a deferred request,\nin which case sending an rpc reply has become the responsibility of the\ndeferred request, and it is important that we not send our own reply,\nresulting in two different replies to the same request.\n\nAnd the CACHE_PENDING bit doesn\u0027t tell us that; we could have\nsuccesfully created a deferred request at the same time as another\nthread cleared the CACHE_PENDING bit.\n\nSo, partially revert that commit, to ensure that cache_check() returns\n-EAGAIN if and only if a deferred request has been created.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\nAcked-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "4390110fef9e5c64e10c6ca19d586932242c9a8a",
      "tree": "f2f26fe291c8b4e424b97ac57370b33e0c006568",
      "parents": [
        "a4dd8dce14014665862ce7911b38cb2c69e366dd",
        "42d7ba3d6d56a6cbc773284896108b1e2ebcee81"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 09:55:25 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 09:55:25 2010 -0700"
      },
      "message": "Merge branch \u0027for-2.6.37\u0027 of git://linux-nfs.org/~bfields/linux\n\n* \u0027for-2.6.37\u0027 of git://linux-nfs.org/~bfields/linux: (99 commits)\n  svcrpc: svc_tcp_sendto XPT_DEAD check is redundant\n  svcrpc: no need for XPT_DEAD check in svc_xprt_enqueue\n  svcrpc: assume svc_delete_xprt() called only once\n  svcrpc: never clear XPT_BUSY on dead xprt\n  nfsd4: fix connection allocation in sequence()\n  nfsd4: only require krb5 principal for NFSv4.0 callbacks\n  nfsd4: move minorversion to client\n  nfsd4: delay session removal till free_client\n  nfsd4: separate callback change and callback probe\n  nfsd4: callback program number is per-session\n  nfsd4: track backchannel connections\n  nfsd4: confirm only on succesful create_session\n  nfsd4: make backchannel sequence number per-session\n  nfsd4: use client pointer to backchannel session\n  nfsd4: move callback setup into session init code\n  nfsd4: don\u0027t cache seq_misordered replies\n  SUNRPC: Properly initialize sock_xprt.srcaddr in all cases\n  SUNRPC: Use conventional switch statement when reclassifying sockets\n  sunrpc/xprtrdma: clean up workqueue usage\n  sunrpc: Turn list_for_each-s into the ..._entry-s\n  ...\n\nFix up trivial conflicts (two different deprecation notices added in\nseparate branches) in Documentation/feature-removal-schedule.txt\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": "a6f8dbc654c3dddc5ac98cf59a88447a90e99ece",
      "tree": "ef4244528cd4a975bca2d00ac1b5e5430a1eac45",
      "parents": [
        "1fa4f3b57cf0c525027ea61011312de139b04f9b"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Mon Oct 04 21:18:23 2010 +0200"
      },
      "committer": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Tue Oct 19 11:29:59 2010 +0200"
      },
      "message": "sunrpc: remove the big kernel lock\n\nThe sunrpc cache_ioctl function does not need the big kernel lock\nbecause it uses its own queue_lock already.\n\nrpc_pipe_ioctl apparently should be using i_lock like the other\noperations on the pipe file descriptor do.\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\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": "e33534d54f1fde3e541f64fa5ad0dd379fc45fa7",
      "tree": "d7136fd857a84576a984f2441b7ee03fc9afd24e",
      "parents": [
        "d29068c431599fa96729556846562eb18429092d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 07 15:29:46 2010 +1100"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Mon Oct 11 19:30:28 2010 -0400"
      },
      "message": "sunrpc/cache: centralise handling of size limit on deferred list.\n\nWe limit the number of \u0027defer\u0027 requests to DFR_MAX.\n\nThe imposition of this limit is spread about a bit - sometime we don\u0027t\nadd new things to the list, sometimes we remove old things.\n\nAlso it is currently applied to requests which we are \u0027waiting\u0027 for\nrather than \u0027deferring\u0027.  This doesn\u0027t seem ideal as \u0027waiting\u0027\nrequests are naturally limited by the number of threads.\n\nSo gather the DFR_MAX handling code to one place and only apply it to\nrequests that are actually being deferred.\n\nThis means that not all \u0027cache_deferred_req\u0027 structures go on the\n\u0027cache_defer_list, so we need to be careful when adding and removing\nthings.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "d29068c431599fa96729556846562eb18429092d",
      "tree": "6330502e1a6247de1cb785fe44ab599662cb369c",
      "parents": [
        "33515142156efc9ab5dbfe93ff8d4765559dc987"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 07 15:29:46 2010 +1100"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Mon Oct 11 19:30:27 2010 -0400"
      },
      "message": "sunrpc: Simplify cache_defer_req and related functions.\n\nThe return value from cache_defer_req is somewhat confusing.\nVarious different error codes are returned, but the single caller is\nonly interested in success or failure.\n\nIn fact it can measure this success or failure itself by checking\nCACHE_PENDING, which makes the point of the code more explicit.\n\nSo change cache_defer_req to return \u0027void\u0027 and test CACHE_PENDING\nafter it completes, to see if the request was actually deferred or\nnot.\n\nSimilarly setup_deferral and cache_wait_req don\u0027t need a return value,\nso make them void and remove some code.\n\nThe call to cache_revisit_request (to guard against a race) is only\nneeded for the second call to setup_deferral, so move it out of\nsetup_deferral to after that second call.  With the first call the\nrace is handled differently (by explicitly calling\n\u0027wait_for_completion\u0027).\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "277f68dbba397997c7f3dc843d14afa1654bb80e",
      "tree": "7c9856840c40a3f08bef3a965a9f3c39937c9e99",
      "parents": [
        "14ec63c3336af7ea5445e0d8f4d26ba3041e40b3"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 22 12:55:06 2010 +1000"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Fri Oct 01 18:09:54 2010 -0400"
      },
      "message": "sunrpc: fix race in new cache_wait code.\n\nIf we set up to wait for a cache item to be filled in, and then find\nthat it is no longer pending, it could be that some other thread is\nin \u0027cache_revisit_request\u0027 and has moved our request to its \u0027pending\u0027 list.\nSo when our setup_deferral calls cache_revisit_request it will find nothing to\nput on the pending list, and do nothing.\n\nWe then return from cache_wait_req, thus leaving the \u0027sleeper\u0027\non-stack structure open to being corrupted by subsequent stack usage.\n\nHowever that \u0027sleeper\u0027 could still be on the \u0027pending\u0027 list that the\nother thread is looking at and so any corruption could cause it to behave badly.\n\nTo avoid this race we simply take the same path as if the\n\u0027wait_for_completion_interruptible_timeout\u0027 was interrupted and if the\nsleeper is no longer on the list (which it won\u0027t be) we wait on the\ncompletion - which will ensure that any other cache_revisit_request\nwill have let go of the sleeper.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "4f42d0d53ca4737f82937edb0efc83564c124853",
      "tree": "487cbc8e7bc9ed643fbbfb2216230c15ed3b1552",
      "parents": [
        "2f72c9b73730c335381b13e2bd221abe1acea394"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@parallels.com",
        "time": "Mon Sep 27 14:01:58 2010 +0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Mon Sep 27 10:16:12 2010 -0400"
      },
      "message": "sunrpc: Make the /proc/net/rpc appear in net namespaces\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "593ce16b943ea37d4ec62c377b32d7f3f4085e84",
      "tree": "d8e161541e89f69e0de4416d76655cf11d9ecaa8",
      "parents": [
        "352114f395bd79353faf0bc1506ead94de393f55"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@parallels.com",
        "time": "Mon Sep 27 14:00:15 2010 +0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Mon Sep 27 10:16:11 2010 -0400"
      },
      "message": "sunrpc: Add routines that allow registering per-net caches\n\nExisting calls do the same, but for the init_net.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "e95dffa4304186ad87963255f3e5e96b5c41849f",
      "tree": "c5e382e2272b8ef8d7edfc480060608cd5bb493d",
      "parents": [
        "f904be9cc77f361d37d71468b13ff3d1a1823dea"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 22 12:55:06 2010 +1000"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Wed Sep 22 15:33:12 2010 -0400"
      },
      "message": "sunrpc/cache: fix recent breakage of cache_clean_deferred\n\ncommit 6610f720e9e8103c22d1f1ccf8fbb695550a571f\nbroke cache_clean_deferred as entries are no longer added to the\npending list for subsequent revisiting.\n\nSo put those requests back on the pending list.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "e7f483eabea8ef6d2b5ce1b74c8184cc06819f15",
      "tree": "5c3e397ed7e31886d39e1140bb6aa278e138f36f",
      "parents": [
        "1117449276bb909b029ed0b9ba13f53e4784db9d"
      ],
      "author": {
        "name": "Andy Shevchenko",
        "email": "andy.shevchenko@gmail.com",
        "time": "Tue Sep 21 09:40:25 2010 +0300"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Tue Sep 21 22:45:07 2010 -0400"
      },
      "message": "sunrpc/cache: don\u0027t use custom hex_to_bin() converter\n\nSigned-off-by: Andy Shevchenko \u003candy.shevchenko@gmail.com\u003e\nCc: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: linux-nfs@vger.kernel.org\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "1117449276bb909b029ed0b9ba13f53e4784db9d",
      "tree": "14b119924ac54165e6b18f3772cfe966b6883245",
      "parents": [
        "2ed5282cd9b44686a6e718269abb5c5cd332d8f1"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Aug 12 17:04:08 2010 +1000"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Tue Sep 21 21:51:11 2010 -0400"
      },
      "message": "sunrpc/cache: change deferred-request hash table to use hlist.\n\nBeing a hash table, hlist is the best option.\n\nThere is currently some ugliness were we treat \"-\u003enext \u003d\u003d NULL\" as\na special case to avoid having to initialise the whole array.\nThis change nicely gets rid of that case.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "06497524589f2a7717da33969d541674e0a27da6",
      "tree": "3d7d21b9dd325c36e11a923f186059f587d7724d",
      "parents": [
        "c88739b373e4930ed082a607cb78bf82616fd076"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Sun Sep 19 22:55:06 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Sun Sep 19 23:49:30 2010 -0400"
      },
      "message": "nfsd4: fix hang on fast-booting nfs servers\n\nThe last_close field of a cache_detail is initialized to zero, so the\ncondition\n\n\tdetail-\u003elast_close \u003c seconds_since_boot() - 30\n\nmay be false even for a cache that was never opened.\n\nHowever, we want to immediately fail upcalls to caches that were never\nopened: in the case of the auth_unix_gid cache, especially, which may\nnever be opened by mountd (if the --manage-gids option is not set), we\nwant to fail the upcall immediately.  Otherwise client requests will be\ndropped unnecessarily on reboot.\n\nAlso document these conditions.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "3211af1119174fbe8b676422b74870cdd51d7314",
      "tree": "d5ad448787a9f32cb30aed6c43bc1bbbac77c600",
      "parents": [
        "6610f720e9e8103c22d1f1ccf8fbb695550a571f"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Thu Aug 26 16:56:23 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Tue Sep 07 20:20:31 2010 -0400"
      },
      "message": "svcrpc: cache deferral cleanup\n\nAttempt to make obvious the first-try-sleeping-then-try-deferral logic\nby putting that logic into a top-level function that calls helpers.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "6610f720e9e8103c22d1f1ccf8fbb695550a571f",
      "tree": "6177d8f5e15ce007f4a3b29c16f31d97f3b58c59",
      "parents": [
        "f16b6e8d838b2e2bb4561201311c66ac02ad67df"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Thu Aug 26 13:19:52 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Tue Sep 07 20:19:12 2010 -0400"
      },
      "message": "svcrpc: minor cache cleanup\n\nPull out some code into helper functions, fix a typo.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "f16b6e8d838b2e2bb4561201311c66ac02ad67df",
      "tree": "92c4ab62aa566029ce25989ef7dc8e3634365f63",
      "parents": [
        "c5b29f885afe890f953f7f23424045cdad31d3e4"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Aug 12 17:04:06 2010 +1000"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Tue Sep 07 19:22:07 2010 -0400"
      },
      "message": "sunrpc/cache: allow threads to block while waiting for cache update.\n\nThe current practice of waiting for cache updates by queueing the\nwhole request to be retried has (at least) two problems.\n\n1/ With NFSv4, requests can be quite complex and re-trying a whole\n  request when a later part fails should only be a last-resort, not a\n  normal practice.\n\n2/ Large requests, and in particular any \u0027write\u0027 request, will not be\n  queued by the current code and doing so would be undesirable.\n\nIn many cases only a very sort wait is needed before the cache gets\nvalid data.\n\nSo, providing the underlying transport permits it by setting\n -\u003ethread_wait,\narrange to wait briefly for an upcall to be completed (as reflected in\nthe clearing of CACHE_PENDING).\nIf the short wait was not long enough and CACHE_PENDING is still set,\nfall back on the old approach.\n\nThe \u0027thread_wait\u0027 value is set to 5 seconds when there are spare\nthreads, and 1 second when there are no spare threads.\n\nThese values are probably much higher than needed, but will ensure\nsome forward progress.\n\nNote that as we only request an update for a non-valid item, and as\nnon-valid items are updated in place it is extremely unlikely that\ncache_check will return -ETIMEDOUT.  Normally cache_defer_req will\nsleep for a short while and then find that the item is_valid.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "c5b29f885afe890f953f7f23424045cdad31d3e4",
      "tree": "cc2016f256da966974b4ed7a24ff9378a77facb2",
      "parents": [
        "17cebf658e088935d4bdebfc7ad9800e9fc4a0b2"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Aug 12 16:55:22 2010 +1000"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Tue Sep 07 19:21:20 2010 -0400"
      },
      "message": "sunrpc: use seconds since boot in expiry cache\n\nThis protects us from confusion when the wallclock time changes.\n\nWe convert to and from wallclock when  setting or reading expiry\ntimes.\n\nAlso use seconds since boot for last_clost time.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "e2aa7f8304b3b5656ded8699216cc65138d03b64",
      "tree": "a7bcb0f3d96a5d2b5d6d3fa36f9cf5b1aa9d7343",
      "parents": [
        "c18c821fd40ad0ffc199a55be874e556bf999416"
      ],
      "author": {
        "name": "Andrea Gelmini",
        "email": "andrea.gelmini@gelma.net",
        "time": "Thu Aug 05 15:51:36 2010 +0200"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Fri Aug 06 17:05:39 2010 -0400"
      },
      "message": "net: sunrpc: removed duplicated #include\n\nSigned-off-by: Andrea Gelmini \u003candrea.gelmini@gelma.net\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "8eab945c5616fc984e97b922d6a2559be93f39a1",
      "tree": "13ad5889aae1f8f3541a5a49e9decf42240e445c",
      "parents": [
        "cba9ba4b902270c22f8b9c5149a284216b633fc1"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Thu Jul 01 18:05:56 2010 +0300"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jul 06 12:27:48 2010 -0400"
      },
      "message": "sunrpc: make the cache cleaner workqueue deferrable\n\nThis patch makes the cache_cleaner workqueue deferrable, to prevent\nunnecessary system wake-ups, which is very important for embedded\nbattery-powered devices.\n\ndo_cache_clean() is called every 30 seconds at the moment, and often\nmakes the system wake up from its power-save sleep state. With this\nchange, when the workqueue uses a deferrable timer, the\ndo_cache_clean() invocation will be delayed and combined with the\nclosest \"real\" wake-up. This improves the power consumption situation.\n\nNote, I tried to create a DECLARE_DELAYED_WORK_DEFERRABLE() helper\nmacro, similar to DECLARE_DELAYED_WORK(), but failed because of the\nway the timer wheel core stores the deferrable flag (it is the\nLSBit in the time-\u003ebase pointer). My attempt to define a static\nvariable with this bit set ended up with the \"initializer element is\nnot constant\" error.\n\nThus, I have to use run-time initialization, so I created a new\ncache_initialize() function which is called once when sunrpc is\nbeing initialized.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "f13771187b9423b824f32518319f6da85d819003",
      "tree": "c431cf16c286065a302d5f3fb43fc1abac7e4047",
      "parents": [
        "15953654cc312429740fd58fb37a5a3d63a54376",
        "9f37af654fda88a8dcca74c785f6c20e52758866"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon May 24 08:01:10 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon May 24 08:01:10 2010 -0700"
      },
      "message": "Merge branch \u0027bkl/ioctl\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing\n\n* \u0027bkl/ioctl\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing:\n  uml: Pushdown the bkl from harddog_kern ioctl\n  sunrpc: Pushdown the bkl from sunrpc cache ioctl\n  sunrpc: Pushdown the bkl from ioctl\n  autofs4: Pushdown the bkl from ioctl\n  uml: Convert to unlocked_ioctls to remove implicit BKL\n  ncpfs: BKL ioctl pushdown\n  coda: Clean-up whitespace problems in pioctl.c\n  coda: BKL ioctl pushdown\n  drivers: Push down BKL into various drivers\n  isdn: Push down BKL into ioctl functions\n  scsi: Push down BKL into ioctl functions\n  dvb: Push down BKL into ioctl functions\n  smbfs: Push down BKL into ioctl function\n  coda/psdev: Remove BKL from ioctl function\n  um/mmapper: Remove BKL usage\n  sn_hwperf: Kill BKL usage\n  hfsplus: Push down BKL into ioctl function\n"
    },
    {
      "commit": "9918ff26b301e9a57f25fb12b44a46ad0c1e8f8f",
      "tree": "1b9795fc5d6e7f085b48d8a3cd853a5668f772d5",
      "parents": [
        "674b604cdd389252d89a14133b6ebf80165d1d55"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed May 19 15:08:17 2010 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sat May 22 17:44:20 2010 +0200"
      },
      "message": "sunrpc: Pushdown the bkl from sunrpc cache ioctl\n\nPushdown the bkl to cache_ioctl_pipefs.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Nfs \u003clinux-nfs@vger.kernel.org\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: John Kacur \u003cjkacur@redhat.com\u003e\nCc: Arnd Bergmann \u003carnd@arndb.de\u003e\n"
    },
    {
      "commit": "f72caf7e496465182eeda842ac66a5e75404ddf1",
      "tree": "682e2e4b34d6240ea5dbc516d368dd14b21de182",
      "parents": [
        "6a6be470c3071559970c5659354484d4f664050e",
        "e4e83ea47babd9d4bf95a13aed87f8ef51e46472"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 19 17:24:54 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 19 17:24:54 2010 -0700"
      },
      "message": "Merge branch \u0027for-2.6.35\u0027 of git://linux-nfs.org/~bfields/linux\n\n* \u0027for-2.6.35\u0027 of git://linux-nfs.org/~bfields/linux: (45 commits)\n  Revert \"nfsd4: distinguish expired from stale stateids\"\n  nfsd: safer initialization order in find_file()\n  nfs4: minor callback code simplification, comment\n  NFSD: don\u0027t report compiled-out versions as present\n  nfsd4: implement reclaim_complete\n  nfsd4: nfsd4_destroy_session must set callback client under the state lock\n  nfsd4: keep a reference count on client while in use\n  nfsd4: mark_client_expired\n  nfsd4: introduce nfs4_client.cl_refcount\n  nfsd4: refactor expire_client\n  nfsd4: extend the client_lock to cover cl_lru\n  nfsd4: use list_move in move_to_confirmed\n  nfsd4: fold release_session into expire_client\n  nfsd4: rename sessionid_lock to client_lock\n  nfsd4: fix bare destroy_session null dereference\n  nfsd4: use local variable in nfs4svc_encode_compoundres\n  nfsd: further comment typos\n  sunrpc: centralise most calls to svc_xprt_received\n  nfsd4: fix unlikely race in session replay case\n  nfsd4: fix filehandle comment\n  ...\n"
    },
    {
      "commit": "99df95a22f7cfcf85405d4edc07c2d953542f0dd",
      "tree": "9bdcd20f1b7191268ded5feb0d1122685e2df44c",
      "parents": [
        "c2f980500a81006173daf3048284b28832858616"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Apr 13 22:46:36 2010 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon May 17 03:06:31 2010 +0200"
      },
      "message": "sunrpc: Include missing smp_lock.h\n\nNow that cache_ioctl_procfs() calls the bkl explicitly, we need to\ninclude the relevant header as well.\n\nThis fixes the following build error:\n\n\tnet/sunrpc/cache.c: In function \u0027cache_ioctl_procfs\u0027:\n\tnet/sunrpc/cache.c:1355: error: implicit declaration of function \u0027lock_kernel\u0027\n\tnet/sunrpc/cache.c:1359: error: implicit declaration of function \u0027unlock_kernel\u0027\n\nReported-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "d79b6f4de5db0103ceb4734e42ad101d836d61d9",
      "tree": "42fada62898eb8d70faff151d87c16575dbabd58",
      "parents": [
        "73296bc611cee009f3be6b451e827d1425b9c10f"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Mar 30 07:27:50 2010 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon May 17 03:06:12 2010 +0200"
      },
      "message": "procfs: Push down the bkl from ioctl\n\nPush down the bkl from procfs\u0027s ioctl main handler to its users.\nOnly three procfs users implement an ioctl (non unlocked) handler.\nTurn them into unlocked_ioctl and push down the Devil inside.\n\nv2: PDE(inode)-\u003edata doesn\u0027t need to be under bkl\nv3: And don\u0027t forget to git-add the result\nv4: Use wrappers to pushdown instead of an invasive and error prone\n    handlers surgery.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nAcked-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: John Kacur \u003cjkacur@redhat.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\n"
    },
    {
      "commit": "a5990ea1254cd186b38744507aeec3136a0c1c95",
      "tree": "d194df4b090b30d28075ac02f39a3dbc10628a2f",
      "parents": [
        "91885258e8343bb65c08f668d7e6c16563eb4284"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Mar 11 14:08:10 2010 -0800"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Wed Mar 24 10:40:46 2010 -0400"
      },
      "message": "sunrpc/cache: fix module refcnt leak in a failure path\n\nDon\u0027t forget to release the module refcnt if seq_open() returns failure.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: J. Bruce Fields \u003cbfields@fieldses.org\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "d202cce8963d9268ff355a386e20243e8332b308",
      "tree": "df95cd2ee9b5fc9663b8fa97e81a4ff1387f2d6e",
      "parents": [
        "2f50d8b63dd6e5320a9d223298df19df3502da29"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Feb 03 17:31:31 2010 +1100"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Sun Mar 14 21:48:52 2010 -0400"
      },
      "message": "sunrpc: never return expired entries in sunrpc_cache_lookup\n\nIf sunrpc_cache_lookup finds an expired entry, remove it from\nthe cache and return a freshly created non-VALID entry instead.\nThis ensures that we only ever get a usable entry, or an\nentry that will become usable once an update arrives.\ni.e. we will never need to repeat the lookup.\n\nThis allows us to remove the \u0027is_expired\u0027 test from cache_check\n(i.e. from cache_is_valid).  cache_check should never get an expired\nentry as \u0027lookup\u0027 will never return one.  If it does happen - due to\ninconvenient timing - then just accept it as still valid, it won\u0027t be\nvery much past it\u0027s use-by date.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "2f50d8b63dd6e5320a9d223298df19df3502da29",
      "tree": "c1b9aa6c882151bcdadd994233d7b8f33a43b9fb",
      "parents": [
        "3af4974eb2c7867d6e160977195dfde586d0e564"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Feb 03 17:31:31 2010 +1100"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Sun Mar 14 18:08:37 2010 -0400"
      },
      "message": "sunrpc/cache: factor out cache_is_expired\n\nThis removes a tiny bit of code duplication, but more important\nprepares for following patch which will perform the expiry check in\ncache_lookup and the rest of the validity check in cache_check.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "3af4974eb2c7867d6e160977195dfde586d0e564",
      "tree": "ec9f0bcadbeab55ccc3a0bf8cf512ebf80c72e9a",
      "parents": [
        "e739cf1da48e841bc5d744a99764c1a668b4bdd2"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Feb 03 17:31:31 2010 +1100"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Sun Mar 14 18:03:54 2010 -0400"
      },
      "message": "sunrpc: don\u0027t keep expired entries in the auth caches.\n\ncurrently expired entries remain in the auth caches as long\nas there is a reference.\nThis was needed long ago when the auth_domain cache used the same\ncache infrastructure.  But since that (being a very different sort\nof cache) was separated, this test is no longer needed.\n\nSo remove the test on refcnt and tidy up the surrounding code.\n\nThis allows the cache_dequeue call (which needed to be there to\ndrop a potentially awkward reference) can be moved outside of the\nspinlock which is a better place for it.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "f64f9e719261a87818dd192a3a2352e5b20fbd0f",
      "tree": "b2d5cbaef3df615295f6061d8c4d6a912690556c",
      "parents": [
        "152b6a62aea2d43359dd37004e9c218bf7bdeb3b"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Sun Nov 29 16:55:45 2009 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Nov 29 16:55:45 2009 -0800"
      },
      "message": "net: Move \u0026\u0026 and || to end of previous line\n\nNot including net/atm/\n\nCompiled tested x86 allyesconfig only\nAdded a \u003e 80 column line or two, which I ignored.\nExisting checkpatch plaints willfully, cheerfully ignored.\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "cd68c374ea9ce202ae7c6346777d10078e243d49",
      "tree": "0aa206d2605c57c6944f7461c6eb1576a9d1f987",
      "parents": [
        "67e7328f1577230ef3a1430c1a7e5c07978c6e51"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 09 16:32:54 2009 +1000"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Sep 18 17:01:12 2009 -0400"
      },
      "message": "sunrpc/cache: avoid variable over-loading in cache_defer_req\n\nIn cache_defer_req, \u0027dreq\u0027 is used for two significantly different\nvalues that happen to be of the same type.\n\nThis is both confusing, and makes it hard to extend the range of one of\nthe values as we will in the next patch.\nSo introduce \u0027discard\u0027 to take one of the values.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "67e7328f1577230ef3a1430c1a7e5c07978c6e51",
      "tree": "6b160d46c8bfbc5b04b4d532f0ad99067feab49e",
      "parents": [
        "c0826574ddc0df486ecfc2d655e08904c6513209"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 09 16:32:54 2009 +1000"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Sep 18 11:47:49 2009 -0400"
      },
      "message": "sunrpc/cache: use list_del_init for the list_head entries in cache_deferred_req\n\nUsing list_del_init is generally safer than list_del, and it will\nallow us, in a subsequent patch, to see if an entry has already been\nprocessed or not.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "908329f2c08b8b5af7b394f709b0ee9c43b93041",
      "tree": "2a1940cebcde4659b6eccd0f054511d2d5f28d59",
      "parents": [
        "9e4c6379a62d94d3362b12c7a00f2105df6d7eeb"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 09 16:32:54 2009 +1000"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Sep 11 17:08:54 2009 -0400"
      },
      "message": "sunrpc/cache: simplify cache_fresh_locked and cache_fresh_unlocked.\n\nThe extra call to cache_revisit_request in cache_fresh_unlocked is not\nneeded, as should have been fairly clear at the time of\n   commit 4013edea9a0b6cdcb1fdf5d4011e47e068fd6efb\n\nIf there are requests to be revisited, then we can be sure that\nCACHE_PENDING is set, so the second call is sufficient.\n\nSo remove the first call.\nThen remove the \u0027new\u0027 parameter,\nthen remove the return value for cache_fresh_locked which is only used\nto provide the value for \u0027new\u0027.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "9e4c6379a62d94d3362b12c7a00f2105df6d7eeb",
      "tree": "457b1b5c1a28752d4fa878b2d4b1ed0517f0c78f",
      "parents": [
        "4cfc7e6019caa3e97d2a81c48c8d575d7b38d751"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 09 16:32:54 2009 +1000"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Sep 11 17:03:27 2009 -0400"
      },
      "message": "sunrpc/cache: change cache_defer_req to return -ve error, not boolean.\n\nAs \"cache_defer_req\" does not sound like a predicate, having it return\na boolean value can be confusing.  It is more consistent to return\n0 for success and negative for error.\n\nExactly what error code to return is not important as we don\u0027t\ndifferentiate between reasons why the request wasn\u0027t deferred,\nwe only care about whether it was deferred or not.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "e9dc122166b8d863d3057a66ada04838e5548e52",
      "tree": "749e15bf719b64bf9113db7acd8e043d9742cb26",
      "parents": [
        "560ab42ef923aaf2e4347315bdfcc74b2708972c",
        "405d8f8b1d936414da2093d4149ff790ff3f84a5"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Aug 21 11:27:29 2009 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Aug 21 11:27:29 2009 -0400"
      },
      "message": "Merge branch \u0027nfs-for-2.6.32\u0027 of git://git.linux-nfs.org/projects/trondmy/nfs-2.6 into for-2.6.32-incoming\n\nConflicts:\n\tnet/sunrpc/cache.c\n"
    },
    {
      "commit": "f7e86ab92f2198d30828a1a327ad2085e4a7ff7d",
      "tree": "d4bb64c7ae10c67c0292af6b1a2b7d1e25f19480",
      "parents": [
        "7d7ea882898f23989209d0359691b356f73240dc"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Aug 19 18:13:00 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Aug 19 18:22:16 2009 -0400"
      },
      "message": "SUNRPC: cache must take a reference to the cache detail\u0027s module on open()\n\nOtherwise we Oops if the module containing the cache detail is removed\nbefore all cache readers have closed the file.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "8854e82d9accc80f43c0bc3ff06b5979ac858185",
      "tree": "957a42c2959e52f9df2acd7a23c10bf5d6cbeaf0",
      "parents": [
        "173912a6add00f4715774dcecf9ee53274c5924c"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Aug 09 15:14:30 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Aug 09 15:14:30 2009 -0400"
      },
      "message": "SUNRPC: Add an rpc_pipefs front end for the sunrpc cache code\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "173912a6add00f4715774dcecf9ee53274c5924c",
      "tree": "cdcade8fe7a9ffd4a54143995ddc56cf1f6a1e82",
      "parents": [
        "bc74b4f5e63a09fb78e245794a0de1e5a2716bbe"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Aug 09 15:14:29 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Aug 09 15:14:29 2009 -0400"
      },
      "message": "SUNRPC: Move procfs-specific stuff out of the generic sunrpc cache code\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "bc74b4f5e63a09fb78e245794a0de1e5a2716bbe",
      "tree": "5e96e63fd69303162456549f12bff5f9b2ee2a22",
      "parents": [
        "da77005f0d64486cd760f43d9b7cc2379262a363"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Aug 09 15:14:29 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Aug 09 15:14:29 2009 -0400"
      },
      "message": "SUNRPC: Allow the cache_detail to specify alternative upcall mechanisms\n\nFor events that are rare, such as referral DNS lookups, it makes limited\nsense to have a daemon constantly listening for upcalls on a channel. An\nalternative in those cases might simply be to run the app that fills the\ncache using call_usermodehelper_exec() and friends.\n\nThe following patch allows the cache_detail to specify alternative upcall\nmechanisms for these particular cases.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "da77005f0d64486cd760f43d9b7cc2379262a363",
      "tree": "fa64dac28c47940dd730fff68f692fd5bbd73d78",
      "parents": [
        "5b7a1b9f9214cb89dd164b43ca3fab7af4058e06"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Aug 09 15:14:28 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Aug 09 15:14:28 2009 -0400"
      },
      "message": "SUNRPC: Remove the global temporary write buffer in net/sunrpc/cache.c\n\nWhile we do want to protect against multiple concurrent readers and writers\non each upcall/downcall pipe, we don\u0027t want to limit concurrent reading and\nwriting to separate caches.\n\nThis patch therefore replaces the static buffer \u0027write_buf\u0027, which can only\nbe used by one writer at a time, with use of the page cache as the\ntemporary buffer for downcalls. We still fall back to using the the old\nglobal buffer if the downcall is larger than PAGE_CACHE_SIZE, since this is\napparently needed by the SPKM security context initialisation.\n\nIt then replaces the use of the global \u0027queue_io_mutex\u0027 with the\ninode-\u003ei_mutex in cache_read() and cache_write().\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5b7a1b9f9214cb89dd164b43ca3fab7af4058e06",
      "tree": "f39343aeedb1973eddac30ef84ec1bbf73f1fe14",
      "parents": [
        "2da8ca26c6bfad685bfddf39728eac1c83906aa9"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Aug 09 15:14:27 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Aug 09 15:14:27 2009 -0400"
      },
      "message": "SUNRPC: Ensure we initialise the cache_detail before creating procfs files\n\nAlso ensure that we destroy those files before we destroy the cache_detail.\nOtherwise, user processes might attempt to write into uninitialised caches.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "2da8ca26c6bfad685bfddf39728eac1c83906aa9",
      "tree": "77d0d4ed305009bd5bf82b1456d4ed5ab1db5002",
      "parents": [
        "e57aed77ad48d28ac617ba157ad2f665f5301b30"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Aug 09 15:14:26 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Aug 09 15:14:26 2009 -0400"
      },
      "message": "NFSD: Clean up the idmapper warning...\n\nWhat part of \u0027internal use\u0027 is so hard to understand?\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "989a19b9b10635eeb91c08cefe6cf82986bd4ee2",
      "tree": "dc18e7d07558c7a217daed108ec9d62ec9be4836",
      "parents": [
        "5c4d26390341732a8d614141a4cf4663610a1698"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Aug 04 15:22:38 2009 +1000"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Aug 04 16:21:44 2009 -0400"
      },
      "message": "sunrpc/cache: recheck cache validity after cache_defer_req\n\nIf cache_defer_req did not leave the request on a queue, then it could\npossibly have waited long enough that the cache became valid.  So check the\nstatus after the call.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "5c4d26390341732a8d614141a4cf4663610a1698",
      "tree": "1361af921aadc75c1a1fa1a23eb83292dcad8130",
      "parents": [
        "f866a8194f7cbabb9135b98b9ac7d26237b88367"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Aug 04 15:22:38 2009 +1000"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Aug 04 11:03:01 2009 -0400"
      },
      "message": "sunrpc/cache: make sure deferred requests eventually get revisited.\n\nWhile deferred requests normally get revisited quite quickly,\nit is possible for a request to remain in the deferral queue\nwhen the cache item is discarded.  We can easily make sure that\ndoesn\u0027t happen by calling cache_revisit_request just before\nthe final \u0027put\u0027.\n\nAlso there is a small chance that a race would cause one thread to\ndefer a request against a cache item while another thread is failing\nto queue an upcall for that item.  So when the upcall fails, make\nsure to revisit all deferred requests.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "f866a8194f7cbabb9135b98b9ac7d26237b88367",
      "tree": "40970053fc04f2c23a4d3cbde5c246e289c67ce9",
      "parents": [
        "abfabf8cafa60e7876a7193fb344f739f690071d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Aug 04 15:22:38 2009 +1000"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Aug 04 09:14:30 2009 -0400"
      },
      "message": "sunrpc/cache: rename queue_loose to cache_dequeue\n\n\u0027loose\u0027 was a mis-spelling of \u0027lose\u0027, and even that wasn\u0027t a good\nword choice.\nSo give this function a more useful name.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "6aad89c8376e432231b78d1bdbcc10ef7708b011",
      "tree": "0c71efcde67329f40af9a8d662915f64d6f90e59",
      "parents": [
        "48e03bc515cff75718de5460458680a230ae997e"
      ],
      "author": {
        "name": "Anton Blanchard",
        "email": "anton@samba.org",
        "time": "Wed Jun 10 12:52:21 2009 -0700"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Mon Jun 15 18:14:58 2009 -0700"
      },
      "message": "sunrpc: align cache_clean work\u0027s timer\n\nAlign cache_clean work.\n\nSigned-off-by: Anton Blanchard \u003canton@samba.org\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "99b76233803beab302123d243eea9e41149804f3",
      "tree": "398178210fe66845ccd6fa4258ba762a87e023ad",
      "parents": [
        "3dec7f59c370c7b58184d63293c3dc984d475840"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Wed Mar 25 22:48:06 2009 +0300"
      },
      "committer": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Tue Mar 31 01:14:44 2009 +0400"
      },
      "message": "proc 2/2: remove struct proc_dir_entry::owner\n\nSetting -\u003eowner as done currently (pde-\u003eowner \u003d THIS_MODULE) is racy\nas correctly noted at bug #12454. Someone can lookup entry with NULL\n-\u003eowner, thus not pinning enything, and release it later resulting\nin module refcount underflow.\n\nWe can keep -\u003eowner and supply it at registration time like -\u003eproc_fops\nand -\u003edata.\n\nBut this leaves -\u003eowner as easy-manipulative field (just one C assignment)\nand somebody will forget to unpin previous/pin current module when\nswitching -\u003eowner. -\u003eproc_fops is declared as \"const\" which should give\nsome thoughts.\n\n-\u003eread_proc/-\u003ewrite_proc were just fixed to not require -\u003eowner for\nprotection.\n\nrmmod\u0027ed directories will be empty and return \".\" and \"..\" -- no harm.\nAnd directories with tricky enough readdir and lookup shouldn\u0027t be modular.\nWe definitely don\u0027t want such modular code.\n\nRemoving -\u003eowner will also make PDE smaller.\n\nSo, let\u0027s nuke it.\n\nKudos to Jeff Layton for reminding about this, let\u0027s say, oversight.\n\nhttp://bugzilla.kernel.org/show_bug.cgi?id\u003d12454\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\n"
    },
    {
      "commit": "24c3767e41a6a59d32bb45abe899eb194e6bf1b8",
      "tree": "bf44f3f90e51b8cbbae89e9740cce9d56e8eb515",
      "parents": [
        "22945e4a1c7454c97f5d8aee1ef526c83fef3223"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 16:30:12 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Wed Jan 07 17:18:42 2009 -0500"
      },
      "message": "SUNRPC: The sunrpc server code should not be used by out-of-tree modules\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "e7fe23363bab0488c7ce09626900e7d621ea2292",
      "tree": "c49c2f3915c5ce0e26b1f6342a3458a2ef4eddd4",
      "parents": [
        "fb65f180e02dde224af256b43d3ab2c28b9689d7"
      ],
      "author": {
        "name": "Denis V. Lunev",
        "email": "den@openvz.org",
        "time": "Fri May 02 02:44:36 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri May 02 02:44:36 2008 -0700"
      },
      "message": "sunrpc: assign PDE-\u003edata before gluing PDE into /proc tree\n\nSimply replace proc_create and further data assigned with proc_create_data.\n\nSigned-off-by: Denis V. Lunev \u003cden@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "67eb6ff610d50da231a37beb634d6dea4b5025ab",
      "tree": "5a14b4e8ca8ed716f541bb681d5fdc0f0b07f767",
      "parents": [
        "6a85fa3adddd3a74bd5b94c4b72668d307b88377"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Thu Jan 31 16:14:54 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Wed Apr 23 16:13:37 2008 -0400"
      },
      "message": "svcrpc: move unused field from cache_deferred_req\n\nThis field is set once and never used; probably some artifact of an\nearlier implementation idea.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "2ce8f047d5f3c0d782838bd2ecb6e4c440268e6d",
      "tree": "8c8f667f23e194e31dd9b82acaf5e3c0aa4238f1",
      "parents": [
        "64758bd7927be1f755e7a08edb2253d37e4b2445"
      ],
      "author": {
        "name": "Wang Chen",
        "email": "wangchen@cn.fujitsu.com",
        "time": "Thu Feb 28 14:00:59 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Feb 28 14:00:59 2008 -0800"
      },
      "message": "[SUNRPC]: Use proc_create() to setup -\u003eproc_fops first\n\nUse proc_create() to make sure that -\u003eproc_fops be setup before gluing\nPDE to main tree.\n\nSigned-off-by: Wang Chen \u003cwangchen@cn.fujitsu.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d2f7e79e3bad31b3d52c405085b9e01e5f6c01e0",
      "tree": "a7247bf6849ecd2df43fcceca1f296c88af9866e",
      "parents": [
        "d801b861681116ea23a7fb87a70bf463d29c8b9c"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jul 14 15:39:58 2007 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Feb 01 17:01:24 2008 -0500"
      },
      "message": "SUNRPC: Move exported symbol definitions after function declaration part 2\n\nDo it for the server code...\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "dbf847ecb6318d3a22c6758fe39696d00f39063a",
      "tree": "2b71e776ca98bc94258f3539bd7f0ea53d2733a8",
      "parents": [
        "ffe9386b6e08e7132cb7730025d0ea310e08a182"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Thu Nov 08 17:20:34 2007 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Feb 01 16:42:05 2008 -0500"
      },
      "message": "knfsd: allow cache_register to return error on failure\n\nNewer server features such as nfsv4 and gss depend on proc to work, so a\nfailure to initialize the proc files they need should be treated as\nfatal.\n\nThanks to Andrew Morton for style fix and compile fix in case where\nCONFIG_NFSD_V4 is undefined.\n\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nAcked-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "ffe9386b6e08e7132cb7730025d0ea310e08a182",
      "tree": "9189fca685067e105c4fbaf9f22d568e16639080",
      "parents": [
        "e331f606a85a2a9e84e9c63c94d43c0517136139"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Mon Nov 12 17:04:29 2007 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Feb 01 16:42:04 2008 -0500"
      },
      "message": "nfsd: move cache proc (un)registration to separate function\n\nJust some minor cleanup.\n\nAlso I don\u0027t see much point in trying to register further proc entries\nif initial entries fail; so just stop trying in that case.\n\nAcked-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "df95a9d4fb91d819d3fb55dd437056df59e7f15e",
      "tree": "9c35b2617a202c029803791c19d55a0483d9d225",
      "parents": [
        "d5c3428b2cb26d605fddc4878f4fcc03c23df89f"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Thu Nov 08 16:09:59 2007 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Feb 01 16:42:04 2008 -0500"
      },
      "message": "knfsd: cache unregistration needn\u0027t return error\n\nThere\u0027s really nothing much the caller can do if cache unregistration\nfails.  And indeed, all any caller does in this case is print an error\nand continue.  So just return void and move the printk\u0027s inside\ncache_unregister.\n\nAcked-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "a490c681cbcf65d548138c377bb691c85824d323",
      "tree": "c95c06f827f3e8c0738c285556cc4919afbd0571",
      "parents": [
        "48b4ba3fdd7af319e90ade395162430934ee7b87"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Nov 06 14:15:19 2007 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Feb 01 16:42:03 2008 -0500"
      },
      "message": "knfsd: fix cache.c comment\n\nThe path here must be left over from some earlier draft; fix it.  And do\nsome more minor cleanup while we\u0027re there.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "01b2969a8528b926f5e4d98161ae37053234475c",
      "tree": "942fbf141743721476a3d79aa7b920ab9e72910f",
      "parents": [
        "d4395e03fec0895d01451904b8a2276ceda663c9"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri Oct 26 13:31:20 2007 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Feb 01 16:42:02 2008 -0500"
      },
      "message": "SUNRPC: Prevent length underflow in read_flush()\n\nMake sure we compare an unsigned length to an unsigned count in\nread_flush().\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "9a429c4983deae020f1e757ecc8f547b6d4e2f2b",
      "tree": "172e27a5866e182b902cd77506df1755aafadb60",
      "parents": [
        "b950dfcf504842a0f2bb142a33ef938f1c00d300"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Tue Jan 01 21:58:02 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 15:00:31 2008 -0800"
      },
      "message": "[NET]: Add some acquires/releases sparse annotations.\n\nAdd __acquires() and __releases() annotations to suppress some sparse\nwarnings.\n\nexample of warnings :\n\nnet/ipv4/udp.c:1555:14: warning: context imbalance in \u0027udp_seq_start\u0027 - wrong\ncount at exit\nnet/ipv4/udp.c:1571:13: warning: context imbalance in \u0027udp_seq_stop\u0027 -\nunexpected unlock\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ec931035194709d0cde647d1c347bbf9634eec25",
      "tree": "d4194d3e63fa5db76afe23f4b64d2356cb4226b3",
      "parents": [
        "a662d4cb50d3976d2c9c9bac34119d0036e31d21"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Wed Oct 10 02:31:07 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:55:36 2007 -0700"
      },
      "message": "[SUNRPC]: Make the sunrpc use the seq_open_private()\n\nJust switch to the consolidated code.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "4011cd97886dd04b90fef8b671b9936cd39ab983",
      "tree": "8933e97a2215498fd096502005dbf763527ded2a",
      "parents": [
        "3d39c691ff486142dd9aaeac12f553f4476b7a62"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Aug 07 15:33:01 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Aug 07 16:13:01 2007 -0400"
      },
      "message": "SUNRPC: Replace flush_workqueue() with cancel_work_sync() and friends\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "56b3d975bbce65f655c5612b4822da671f9fd9b2",
      "tree": "7e29d70405d9c8e28ddee3b03a07157477fc780f",
      "parents": [
        "3be550f34b03e5eb762f74d447ebbeba97efbd6d"
      ],
      "author": {
        "name": "Philippe De Muyter",
        "email": "phdm@macqel.be",
        "time": "Tue Jul 10 23:07:31 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jul 10 23:07:31 2007 -0700"
      },
      "message": "[NET]: Make all initialized struct seq_operations const.\n\nMake all initialized struct seq_operations in net/ const\n\nSigned-off-by: Philippe De Muyter \u003cphdm@macqel.be\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "14690fc649f4c59712f497135f7323eb8ceceaaf",
      "tree": "2158421b144cde2c239458f74afb46b70cb28b65",
      "parents": [
        "f8a6d97043f9adc25889876b681998b77f543bfa"
      ],
      "author": {
        "name": "Martin Peschke",
        "email": "mp3@de.ibm.com",
        "time": "Thu Apr 26 01:03:43 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Apr 26 01:03:43 2007 -0700"
      },
      "message": "[SUNRPC]: cleanup: use seq_release_private() where appropriate\n\nWe can save some lines of code by using seq_release_private().\n\nSigned-off-by: Martin Peschke \u003cmp3@de.ibm.com\u003e\nAcked-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d9bc125caf592b7d081021f32ce5b717efdf70c8",
      "tree": "263b7066ba22ddce21db610c0300f6eaac6f2064",
      "parents": [
        "43d78ef2ba5bec26d0315859e8324bfc0be23766",
        "ec2f9d1331f658433411c58077871e1eef4ee1b4"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Feb 12 22:43:25 2007 -0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Feb 12 22:43:25 2007 -0800"
      },
      "message": "Merge branch \u0027master\u0027 of /home/trondmy/kernel/linux-2.6/\n\nConflicts:\n\n\tnet/sunrpc/auth_gss/gss_krb5_crypto.c\n\tnet/sunrpc/auth_gss/gss_spkm3_token.c\n\tnet/sunrpc/clnt.c\n\nMerge with mainline and fix conflicts.\n"
    },
    {
      "commit": "da7071d7e32d15149cc513f096a3638097b66387",
      "tree": "f56fb200090ad55b2e2a72c379b1eeea29795670",
      "parents": [
        "9a32144e9d7b4e21341174b1a83b82a82353be86"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Mon Feb 12 00:55:36 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Feb 12 09:48:46 2007 -0800"
      },
      "message": "[PATCH] mark struct file_operations const 8\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": "cca5172a7ec10dfdb0b787cd8e9d5b0b8f179793",
      "tree": "1b9e86cf95ab5e1e2b3180ebe59be2a05ebbe1bf",
      "parents": [
        "d808ad9ab8b1109239027c248c4652503b9d3029"
      ],
      "author": {
        "name": "YOSHIFUJI Hideaki",
        "email": "yoshfuji@linux-ipv6.org",
        "time": "Fri Feb 09 15:38:13 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Sat Feb 10 23:20:13 2007 -0800"
      },
      "message": "[NET] SUNRPC: Fix whitespace errors.\n\nSigned-off-by: YOSHIFUJI Hideaki \u003cyoshfuji@linux-ipv6.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "46121cf7d85869bfe9588bac7ccf55aa0bc7f278",
      "tree": "51172f1b47dd8aa99e6f96c495fe7f8e2c0bbc34",
      "parents": [
        "8885cb367f86ce02bed3bf18192d74a53ac3b81f"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Jan 31 12:14:08 2007 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Feb 03 15:35:10 2007 -0800"
      },
      "message": "SUNRPC: fix print format for tk_pid\n\nThe tk_pid field is an unsigned short.  The proper print format specifier for\nthat type is %5u, not %4d.\n\nAlso clean up some miscellaneous print formatting nits.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "01f3bd1f03599470e4695392b6ae055ed8506978",
      "tree": "4935c734d984b8e932b7555c70c6f45e8d342d6e",
      "parents": [
        "e0bb89ef031f76dcb9c9d920d18b13948f1418da"
      ],
      "author": {
        "name": "J.Bruce Fields",
        "email": "bfields@fieldses.org",
        "time": "Wed Dec 13 00:35:26 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Wed Dec 13 09:05:54 2006 -0800"
      },
      "message": "[PATCH] knfsd: svcrpc: remove another silent drop from deferral code\n\nThere\u0027s no point deferring something just to immediately fail the deferral,\nespecially now that we can do something more useful in the failure case by\nreturning an error.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e0bb89ef031f76dcb9c9d920d18b13948f1418da",
      "tree": "6016032b160db2cf697eea19cd0f12ace946c7cc",
      "parents": [
        "021d3a72459191a76e8e482ee4937ba6bc9fd712"
      ],
      "author": {
        "name": "J.Bruce Fields",
        "email": "bfields@fieldses.org",
        "time": "Wed Dec 13 00:35:25 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Wed Dec 13 09:05:54 2006 -0800"
      },
      "message": "[PATCH] knfsd: nfsd: don\u0027t drop silently on upcall deferral\n\nTo avoid tying up server threads when nfsd makes an upcall (to mountd, to get\nexport options, to idmapd, for nfsv4 name\u003c-\u003eid mapping, etc.), we temporarily\n\"drop\" the request and save enough information so that we can revisit it\nlater.\n\nCertain failures during the deferral process can cause us to really drop the\nrequest and never revisit it.\n\nThis is often less than ideal, and is unacceptable in the NFSv4 case--rfc 3530\nforbids the server from dropping a request without also closing the\nconnection.\n\nAs a first step, we modify the deferral code to return -ETIMEDOUT (which is\ntranslated to nfserr_jukebox in the v3 and v4 cases, and remains a drop in the\nv2 case).\n\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "303b46bb77a4b1679fd39d7ab5597630743e0ff5",
      "tree": "92581d460c21dfccdd4458122c553c90ecbcb014",
      "parents": [
        "1250ca4c8f48de482ec7c476cb024fe93ad1fbb3"
      ],
      "author": {
        "name": "Josef Sipek",
        "email": "jsipek@fsl.cs.sunysb.edu",
        "time": "Fri Dec 08 02:37:42 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Dec 08 08:28:50 2006 -0800"
      },
      "message": "[PATCH] struct path: convert sunrpc\n\nSigned-off-by: Josef Sipek \u003cjsipek@fsl.cs.sunysb.edu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "65f27f38446e1976cc98fd3004b110fedcddd189",
      "tree": "68f8be93feae31dfa018c22db392a05546b63ee1",
      "parents": [
        "365970a1ea76d81cb1ad2f652acb605f06dae256"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Wed Nov 22 14:55:48 2006 +0000"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Wed Nov 22 14:55:48 2006 +0000"
      },
      "message": "WorkStruct: Pass the work_struct pointer instead of context data\n\nPass the work_struct pointer to the work function rather than context data.\nThe work function can use container_of() to work out the data.\n\nFor the cases where the container of the work_struct may go away the moment the\npending bit is cleared, it is made possible to defer the release of the\nstructure by deferring the clearing of the pending bit.\n\nTo make this work, an extra flag is introduced into the management side of the\nwork_struct.  This governs auto-release of the structure upon execution.\n\nOrdinarily, the work queue executor would release the work_struct for further\nscheduling or deallocation by clearing the pending bit prior to jumping to the\nwork function.  This means that, unless the driver makes some guarantee itself\nthat the work_struct won\u0027t go away, the work function may not access anything\nelse in the work_struct or its container lest they be deallocated..  This is a\nproblem if the auxiliary data is taken away (as done by the last patch).\n\nHowever, if the pending bit is *not* cleared before jumping to the work\nfunction, then the work function *may* access the work_struct and its container\nwith no problems.  But then the work function must itself release the\nwork_struct by calling work_release().\n\nIn most cases, automatic release is fine, so this is the default.  Special\ninitiators exist for the non-auto-release case (ending in _NAR).\n\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\n"
    },
    {
      "commit": "52bad64d95bd89e08c49ec5a071fa6dcbe5a1a9c",
      "tree": "5849b4e3c17daa70a7e81cfdeaddac9ac8a0e953",
      "parents": [
        "0f9005a6f7a82f4aacbd72f7b92322a8ca1c3f97"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Wed Nov 22 14:54:01 2006 +0000"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Wed Nov 22 14:54:01 2006 +0000"
      },
      "message": "WorkStruct: Separate delayable and non-delayable events.\n\nSeparate delayable work items from non-delayable work items be splitting them\ninto a separate structure (delayed_work), which incorporates a work_struct and\nthe timer_list removed from work_struct.\n\nThe work_struct struct is huge, and this limits it\u0027s usefulness.  On a 64-bit\narchitecture it\u0027s nearly 100 bytes in size.  This reduces that by half for the\nnon-delayable type of event.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\n"
    },
    {
      "commit": "2f34931fdc78b4895553aaa33748939cc7697c99",
      "tree": "c94736005fd9b9b67515c9e5518b3543d58ff488",
      "parents": [
        "9b7f750d446a717d4c8346fbb165b62661019b92"
      ],
      "author": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Sat Aug 05 12:14:29 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Aug 06 08:57:47 2006 -0700"
      },
      "message": "[PATCH] knfsd: fix race related problem when adding items to and svcrpc auth cache\n\nIf we don\u0027t find the item we are lookng for, we allocate a new one, and\nthen grab the lock again and search to see if it has been added while we\ndid the alloc.  If it had been added we need to \u0027cache_put\u0027 the newly\ncreated item that we are never going to use.  But as it hasn\u0027t been\ninitialised properly, putting it can cause an oops.\n\nSo move the -\u003einit call earlier to that it will always be fully initilised\nif we have to put it.\n\nThanks to Philipp Matthias Hahn \u003cpmhahn@svs.Informatik.Uni-Oldenburg.de\u003e\nfor reporting the problem.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f2d395865faa2a7cd4620b07178e58cbb160ba08",
      "tree": "01d3b090a4ce73eb346a2c55d99fe12d07d52906",
      "parents": [
        "e46e490368f87032a6e54969194413339b35a385"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 22 22:35:25 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue May 23 10:35:31 2006 -0700"
      },
      "message": "[PATCH] knfsd: Fix two problems that can cause rmmod nfsd to die\n\nBoth cause the \u0027entries\u0027 count in the export cache to be non-zero at module\nremoval time, so unregistering that cache fails and results in an oops.\n\n1/ exp_pseudoroot (used for NFSv4 only) leaks a reference to an export\n   entry.\n2/ sunrpc_cache_update doesn\u0027t increment the entries count when it adds\n   an entry.\n\nThanks to \"david m.  richter\" \u003crichterd@citi.umich.edu\u003e for triggering the\nproblem and finding one of the bugs.\n\nCc: \"david m. richter\" \u003crichterd@citi.umich.edu\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "74cae61ab45f19a3e8c4d9f53c0e94df129c7915",
      "tree": "73ad8b7c562c5e790777b4c93352f739b521f382",
      "parents": [
        "baab935ff3bdac20c558809da0d8e8f761840219"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Mon Mar 27 01:15:10 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Mar 27 08:44:43 2006 -0800"
      },
      "message": "[PATCH] fs/nfsd/export.c,net/sunrpc/cache.c: make needlessly global code static\n\nWe can now make some code static.\n\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "baab935ff3bdac20c558809da0d8e8f761840219",
      "tree": "a22c3189505fe8e7ab3820c988ffd771c0b64fa6",
      "parents": [
        "ebd0cb1af3be2729cc1f574681dfba01fcf458d9"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 27 01:15:09 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Mar 27 08:44:43 2006 -0800"
      },
      "message": "[PATCH] knfsd: Convert sunrpc_cache to use krefs\n\n.. it makes some of the code nicer.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "ebd0cb1af3be2729cc1f574681dfba01fcf458d9",
      "tree": "ed97a94406ed973573576fca585e1c87c15a4d05",
      "parents": [
        "4d90452cb23b08a9a9dd001010f0ee6b1ee83a45"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 27 01:15:08 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Mar 27 08:44:43 2006 -0800"
      },
      "message": "[PATCH] knfsd: Unexport cache_fresh and fix a small race\n\nCache_fresh is now only used in cache.c, so unexport it.\n\nPart of cache_fresh (setting CACHE_VALID) should really be done under the\nlock, while part (calling cache_revisit_request etc) must be done outside the\nlock.  So we split it up appropriately.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4013edea9a0b6cdcb1fdf5d4011e47e068fd6efb",
      "tree": "19ea135919b899ba11552c155c4b403ed38204da",
      "parents": [
        "f9ecc921b5b5e135050e7f22fef873c249aee3fc"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 27 01:15:07 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Mar 27 08:44:42 2006 -0800"
      },
      "message": "[PATCH] knfsd: An assortment of little fixes to the sunrpc cache code\n\n- in cache_check, h must be non-NULL as it has been de-referenced,\n  so don\u0027t bother checking for NULL.\n\n- When a cache-item is updated, we need to call cache_revisit_request to see\n  if there is a pending request waiting for that item.  We were using\n  a transition to CACHE_VALID to see if that was needed, however that is\n  wrong as an expired entry will still be marked \u0027valid\u0027 (as the data is valid\n  and will need to be released).  So instead use an off transition for\n  CACHE_PENDING which is exactly the right thing to test.\n\n- Add a little bit more debugging info.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "15a5f6bd23eddd5b3be80366f364be04fb1c1c99",
      "tree": "e3c4fa8eb9e8b21ebca33370b7a93eab11662a5d",
      "parents": [
        "7d317f2c9f1e9dcf4f632fa98f91d1d4a36c4cae"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 27 01:15:02 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Mar 27 08:44:41 2006 -0800"
      },
      "message": "[PATCH] knfsd: Create cache_lookup function instead of using a macro to declare one\n\nThe C++-like \u0027template\u0027 approach proves to be too ugly and hard to work with.\n\nThe old \u0027template\u0027 won\u0027t go away until all users are updated.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4a3e2f711a00a1feb72ae12fdc749da10179d185",
      "tree": "76ced9d3270dea4b864da71fa1d4415d2e3c8b11",
      "parents": [
        "d4ccd08cdfa8d34f4d25b62041343c52fc79385f"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@infradead.org",
        "time": "Mon Mar 20 22:33:17 2006 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Mar 20 22:33:17 2006 -0800"
      },
      "message": "[NET] sem2mutex: net/\n\nSemaphore to mutex conversion.\n\nThe conversion was generated via scripts, and the result was validated\nautomatically via a script as well.\n\nSigned-off-by: Arjan van de Ven \u003carjan@infradead.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "09a626600b437d91f6b13ade5c7c4b374893c54e",
      "tree": "a6de3c2a33b7d896cd22a3fe799d1b40d28daf40",
      "parents": [
        "4bba3925924148c24fb0c7636a04ad69a6a56b84"
      ],
      "author": {
        "name": "Kris Katterjohn",
        "email": "kjak@users.sourceforge.net",
        "time": "Sun Jan 08 22:24:28 2006 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Mon Jan 09 14:16:18 2006 -0800"
      },
      "message": "[NET]: Change some \"if (x) BUG();\" to \"BUG_ON(x);\"\n\nThis changes some simple \"if (x) BUG();\" statements to \"BUG_ON(x);\"\n\nSigned-off-by: Kris Katterjohn \u003ckjak@users.sourceforge.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "f35279d3f713e5c97b98cbdbf47d98f79942c11f",
      "tree": "cdf9acab7e7fda7ae1eae152861d4048b7f6dffc",
      "parents": [
        "d013a068a5675ecd8e71f585a44e7af0798a4307"
      ],
      "author": {
        "name": "Bruce Allan",
        "email": "bwa@us.ibm.com",
        "time": "Tue Sep 06 15:17:08 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 07 16:57:25 2005 -0700"
      },
      "message": "[PATCH] sunrpc: cache_register can use wrong module reference\n\nWhen registering an RPC cache, cache_register() always sets the owner as the\nsunrpc module.  However, there are RPC caches owned by other modules.  With\nthe incorrect owner setting, the real owning module can be removed potentially\nwith an open reference to the cache from userspace.\n\nFor example, if one were to stop the nfs server and unmount the nfsd\nfilesystem, the nfsd module could be removed eventhough rpc.idmapd had\nreferences to the idtoname and nametoid caches (i.e.\n/proc/net/rpc/nfs4.\u003ccachename\u003e/channel is still open).  This resulted in a\nsystem panic on one of our machines when attempting to restart the nfs\nservices after reloading the nfsd module.\n\nThe following patch adds a \u0027struct module *owner\u0027 field in struct\ncache_detail.  The owner is further assigned to the struct proc_dir_entry\nin cache_register() so that the module cannot be unloaded while user-space\ndaemons have an open reference on the associated file under /proc.\n\nSigned-off-by: Bruce Allan \u003cbwa@us.ibm.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: Neil Brown \u003cneilb@cse.unsw.edu.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
      "tree": "0bba044c4ce775e45a88a51686b5d9f90697ea9d",
      "parents": [],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "message": "Linux-2.6.12-rc2\n\nInitial git repository build. I\u0027m not bothering with the full history,\neven though we have it. We can create a separate \"historical\" git\narchive of that later if we want to, and in the meantime it\u0027s about\n3.2GB when imported into git - space that would just make the early\ngit days unnecessarily complicated, when we don\u0027t have a lot of good\ninfrastructure for it.\n\nLet it rip!\n"
    }
  ]
}
