)]}'
{
  "log": [
    {
      "commit": "23d69b09b78c4876e134f104a3814c30747c53f1",
      "tree": "40744de4f4126c21027ce537264524095e0e7979",
      "parents": [
        "e744070fd4ff9d3114277e52d77afa21579adce2",
        "569ff2de2e1c8ac67c8df3a7367d46d0d9460a35"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 07 16:58:04 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 07 16:58:04 2011 -0800"
      },
      "message": "Merge branch \u0027for-2.6.38\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq\n\n* \u0027for-2.6.38\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq: (33 commits)\n  usb: don\u0027t use flush_scheduled_work()\n  speedtch: don\u0027t abuse struct delayed_work\n  media/video: don\u0027t use flush_scheduled_work()\n  media/video: explicitly flush request_module work\n  ioc4: use static work_struct for ioc4_load_modules()\n  init: don\u0027t call flush_scheduled_work() from do_initcalls()\n  s390: don\u0027t use flush_scheduled_work()\n  rtc: don\u0027t use flush_scheduled_work()\n  mmc: update workqueue usages\n  mfd: update workqueue usages\n  dvb: don\u0027t use flush_scheduled_work()\n  leds-wm8350: don\u0027t use flush_scheduled_work()\n  mISDN: don\u0027t use flush_scheduled_work()\n  macintosh/ams: don\u0027t use flush_scheduled_work()\n  vmwgfx: don\u0027t use flush_scheduled_work()\n  tpm: don\u0027t use flush_scheduled_work()\n  sonypi: don\u0027t use flush_scheduled_work()\n  hvsi: don\u0027t use flush_scheduled_work()\n  xen: don\u0027t use flush_scheduled_work()\n  gdrom: don\u0027t use flush_scheduled_work()\n  ...\n\nFixed up trivial conflict in drivers/media/video/bt8xx/bttv-input.c\nas per Tejun.\n"
    },
    {
      "commit": "b7ab39f631f505edc2bbdb86620d5493f995c9da",
      "tree": "62be97ebc7fc69ceb601f23312d335ebb8038ee7",
      "parents": [
        "2304450783dfde7b0b94ae234edd0dbffa865073"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:32 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:21 2011 +1100"
      },
      "message": "fs: dcache scale dentry refcount\n\nMake d_count non-atomic and protect it with d_lock. This allows us to ensure a\n0 refcount dentry remains 0 without dcache_lock. It is also fairly natural when\nwe start protecting many other dentry members with d_lock.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "afe2c511fb2d75f1515081ff1be15bd79cfe722d",
      "tree": "28aa74e9e0c654a95bf3306101e10ac1d16919d1",
      "parents": [
        "2d64672ed38721b7a3815009d79bfb90a1f34a17"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Dec 14 16:21:17 2010 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Dec 15 10:56:11 2010 +0100"
      },
      "message": "workqueue: convert cancel_rearming_delayed_work[queue]() users to cancel_delayed_work_sync()\n\ncancel_rearming_delayed_work[queue]() has been superceded by\ncancel_delayed_work_sync() quite some time ago.  Convert all the\nin-kernel users.  The conversions are completely equivalent and\ntrivial.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nAcked-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\nAcked-by: Evgeniy Polyakov \u003czbr@ioremap.net\u003e\nCc: Jeff Garzik \u003cjgarzik@pobox.com\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Mauro Carvalho Chehab \u003cmchehab@infradead.org\u003e\nCc: netdev@vger.kernel.org\nCc: Anton Vorontsov \u003ccbou@mail.ru\u003e\nCc: David Woodhouse \u003cdwmw2@infradead.org\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Alex Elder \u003caelder@sgi.com\u003e\nCc: xfs-masters@oss.sgi.com\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: netfilter-devel@vger.kernel.org\nCc: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: linux-nfs@vger.kernel.org\n"
    },
    {
      "commit": "c1ac3ffcd0bc7e9617f62be8c7043d53ab84deac",
      "tree": "174842d423f84a5a80cb0caed70815d174b516f9",
      "parents": [
        "ed2849d3ecfa339435818eeff28f6c3424300cec"
      ],
      "author": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Thu Dec 02 11:14:30 2010 +1100"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Wed Dec 08 11:44:04 2010 -0500"
      },
      "message": "nfsd: Fix possible BUG_ON firing in set_change_info\n\nIf vfs_getattr in fill_post_wcc returns an error, we don\u0027t\nset fh_post_change.\nFor NFSv4, this can result in set_change_info triggering a BUG_ON.\ni.e. fh_post_saved being zero isn\u0027t really a bug.\n\nSo:\n - instead of BUGging when fh_post_saved is zero, just clear -\u003eatomic.\n - if vfs_getattr fails in fill_post_wcc, take a copy of i_ctime anyway.\n   This will be used i seg_change_info, but not overly trusted.\n - While we are there, remove the pointless \u0027if\u0027 statements in set_change_info.\n   There is no harm setting all the values.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: stable@kernel.org\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "460781b54253e3ed10a0a2a433bdc548ec952269",
      "tree": "8dc676887724ecebead6f0c2cb67b530017c0b2e",
      "parents": [
        "451a3c24b0135bce54542009b5fde43846c7cf67"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Wed Nov 17 16:26:56 2010 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 17 08:59:32 2010 -0800"
      },
      "message": "BKL: remove references to lock_kernel from comments\n\nLock_kernel is gone from the code, so the comments should be updated,\ntoo.  nfsd now uses lock_flocks instead of lock_kernel to protect\nagainst posix file locks.\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nAcked-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\nCc: linux-nfs@vger.kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "21b75b019983dfa5c2dda588f4b60b4ca69844a4",
      "tree": "c1e0a8c4e136a0de35fc996a7ed6c5db1e6bb9cc",
      "parents": [
        "c8ddb2713c624f432fa5fe3c7ecffcdda46ea0d4"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Tue Oct 26 10:07:17 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Tue Nov 02 17:13:52 2010 -0400"
      },
      "message": "nfsd4: fix 4.1 connection registration race\n\nIf a connection is closed just after a sequence or create_session\nis sent over it, we could end up trying to register a callback that will\nnever get called since the xprt is already marked dead.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "51ee4b84f5c86935b438d6636f34b523edb415a8",
      "tree": "c60e0da8f8b6393477d79ef6d6ce321ee3b8ecaa",
      "parents": [
        "96f935934591b72f5b05fd6923bc8cdcae92f2e5"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Sun Oct 31 08:35:10 2010 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Oct 31 06:35:15 2010 -0700"
      },
      "message": "locks: let the caller free file_lock on -\u003esetlease failure\n\nThe caller allocated it, the caller should free it.\n\nThe only issue so far is that we could change the flp pointer even on an\nerror return if the fl_change callback failed.  But we can simply move\nthe flp assignment after the fl_change invocation, as the callers don\u0027t\ncare about the flp return value if the setlease call failed.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "fcf744a96c66ca6ad7301a372034b771e57f30c4",
      "tree": "4d4094cb2e04b391bd11eedf1466245dc8403704",
      "parents": [
        "05fa3135fdc7b9b510b502a35b6b97d2b38c6f48"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Sat Oct 30 17:31:16 2010 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Oct 30 18:08:15 2010 -0700"
      },
      "message": "nfsd4: initialize delegation pointer to lease\n\nThe NFSv4 server was initializing the dp-\u003edl_flock pointer by the\nsomewhat ridiculous method of a locks_copy_lock callback.\n\nNow that setlease uses the passed-in lock instead of doing a copy,\ndl_flock no longer gets set, resulting in the lock leaking on delegation\nrelease, and later possible hangs (among other problems).\n\nSo, initialize dl_flock and get rid of the callback.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\nAcked-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "fc14f2fef682df677d64a145256dbd263df2aa7b",
      "tree": "74f6b939fbad959a43c04ec646cd0adc8af5f53a",
      "parents": [
        "848b83a59b772b8f102bc5e3f1187c2fa5676959"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jul 25 01:48:30 2010 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Oct 29 04:16:28 2010 -0400"
      },
      "message": "convert get_sb_single() users\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "7420a8c0de8d99b201aeeab6fed16ca95ebf55a5",
      "tree": "0787800f490f98ffd41b958e52ab15732335744e",
      "parents": [
        "12ba8d1e9262ce81a695795410bd9ee5c9407ba1",
        "72f98e72551fad573c6cace8e8551ef094f482dd"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Oct 27 18:13:34 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Oct 27 18:13:34 2010 -0700"
      },
      "message": "Merge branch \u0027flock\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl\n\n* \u0027flock\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl:\n  locks: turn lock_flocks into a spinlock\n  fasync: re-organize fasync entry insertion to allow it under a spinlock\n  locks/nfsd: allocate file lock outside of spinlock\n  lockd: fix nlmsvc_notify_blocked locking\n  lockd: push lock_flocks down\n"
    },
    {
      "commit": "c5b1f0d92c36851aca09ac6c7c0c4f9690ac14f3",
      "tree": "c8aa4ad65aea3b97292135a4c23d512e6071dc8d",
      "parents": [
        "a282a1fa6b23bd21ba0b86e53ed2a316b001836f"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Wed Oct 27 15:46:08 2010 +0200"
      },
      "committer": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Wed Oct 27 21:41:50 2010 +0200"
      },
      "message": "locks/nfsd: allocate file lock outside of spinlock\n\nAs suggested by Christoph Hellwig, this moves allocation\nof new file locks out of generic_setlease into the\ncallers, nfs4_open_delegation and fcntl_setlease in order\nto allow GFP_KERNEL allocations when lock_flocks has\nbecome a spinlock.\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nAcked-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "763641d81202834e9d64de2019d1edec12868f4f",
      "tree": "cabbf932e3f6676bfbce6be27744795700011bfb",
      "parents": [
        "f9ba5375a8aae4aeea6be15df77e24707a429812"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Tue Oct 26 22:55:40 2010 +0200"
      },
      "committer": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Wed Oct 27 21:39:39 2010 +0200"
      },
      "message": "lockd: push lock_flocks down\n\nlockd should use lock_flocks() instead of lock_kernel()\nto lock against posix locks accessing the i_flock list.\n\nThis is a prerequisite to turning lock_flocks into a\nspinlock.\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nAcked-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "426e1f5cec4821945642230218876b0e89aafab1",
      "tree": "2728ace018d0698886989da586210ef1543a7098",
      "parents": [
        "9e5fca251f44832cb996961048ea977f80faf6ea",
        "63997e98a3be68d7cec806d22bf9b02b2e1daabb"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 17:58:44 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 17:58:44 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (52 commits)\n  split invalidate_inodes()\n  fs: skip I_FREEING inodes in writeback_sb_inodes\n  fs: fold invalidate_list into invalidate_inodes\n  fs: do not drop inode_lock in dispose_list\n  fs: inode split IO and LRU lists\n  fs: switch bdev inode bdi\u0027s correctly\n  fs: fix buffer invalidation in invalidate_list\n  fsnotify: use dget_parent\n  smbfs: use dget_parent\n  exportfs: use dget_parent\n  fs: use RCU read side protection in d_validate\n  fs: clean up dentry lru modification\n  fs: split __shrink_dcache_sb\n  fs: improve DCACHE_REFERENCED usage\n  fs: use percpu counter for nr_dentry and nr_dentry_unused\n  fs: simplify __d_free\n  fs: take dcache_lock inside __d_path\n  fs: do not assign default i_ino in new_inode\n  fs: introduce a per-cpu last_ino allocator\n  new helper: ihold()\n  ...\n"
    },
    {
      "commit": "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": "a4dd8dce14014665862ce7911b38cb2c69e366dd",
      "tree": "00e79b2845d5d49abcd83cf253db83a52d482265",
      "parents": [
        "b18cae4224bde7e5a332c19bc99247b2098ea232",
        "411b5e05617593efebc06241dbc56f42150f2abe"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 09:52:09 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 09:52:09 2010 -0700"
      },
      "message": "Merge branch \u0027nfs-for-2.6.37\u0027 of git://git.linux-nfs.org/projects/trondmy/nfs-2.6\n\n* \u0027nfs-for-2.6.37\u0027 of git://git.linux-nfs.org/projects/trondmy/nfs-2.6:\n  net/sunrpc: Use static const char arrays\n  nfs4: fix channel attribute sanity-checks\n  NFSv4.1: Use more sensible names for \u0027initialize_mountpoint\u0027\n  NFSv4.1: pnfs: filelayout: add driver\u0027s LAYOUTGET and GETDEVICEINFO infrastructure\n  NFSv4.1: pnfs: add LAYOUTGET and GETDEVICEINFO infrastructure\n  NFS: client needs to maintain list of inodes with active layouts\n  NFS: create and destroy inode\u0027s layout cache\n  NFSv4.1: pnfs: filelayout: introduce minimal file layout driver\n  NFSv4.1: pnfs: full mount/umount infrastructure\n  NFS: set layout driver\n  NFS: ask for layouttypes during v4 fsinfo call\n  NFS: change stateid to be a union\n  NFSv4.1: pnfsd, pnfs: protocol level pnfs constants\n  SUNRPC: define xdr_decode_opaque_fixed\n  NFSD: remove duplicate NFS4_STATEID_SIZE\n"
    },
    {
      "commit": "c37650161a53c01ddd88587675f9a4adc909a73e",
      "tree": "85821998de9a6723dedc42488b9491db9692d1e3",
      "parents": [
        "81fca444001e5a41ab80ce8cf9a5734c00ec6546"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Wed Oct 06 10:48:20 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 25 21:18:19 2010 -0400"
      },
      "message": "fs: add sync_inode_metadata\n\nAdd a new helper to write out the inode using the writeback code,\nthat is including the correct dirty bit and list manipulation.  A few\nof filesystems already opencode this, and a lot of others should be\nusing it instead of using write_inode_now which also writes out the\ndata.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a663bdd8c5d18d287f7468470816c9e0e66343c1",
      "tree": "9949b3b2b678c1da67e97ee2c312b1a17b98e4c8",
      "parents": [
        "5d18c1c2a9a74e0f966c257520b8b7f5136c87b3"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Thu Oct 21 17:17:31 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Sun Oct 24 21:07:07 2010 -0400"
      },
      "message": "nfsd4: fix connection allocation in sequence()\n\nWe\u0027re doing an allocation under a spinlock, and ignoring the\npossibility of allocation failure.\n\nA better fix wouldn\u0027t require an unnecessary allocation in the common\ncase, but we\u0027ll leave that for later.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "3c9101a0575f6078191dae6bb91a834c6aac3557",
      "tree": "a97b2b27935c6d04f2b9761911252fd31d30e077",
      "parents": [
        "9a84d38031c258a17bb39beed1e500eadee67407"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Wed Oct 20 00:17:53 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Oct 24 18:02:53 2010 -0400"
      },
      "message": "NFSD: remove duplicate NFS4_STATEID_SIZE\n\nAlready accepted by Bruce\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "092e0e7e520a1fca03e13c9f2d157432a8657ff2",
      "tree": "451897252c4c08c4b5a8ef535da156f1e817e80b",
      "parents": [
        "79f14b7c56d3b3ba58f8b43d1f70b9b71477a800",
        "776c163b1b93c8dfa5edba885bc2bfbc2d228a5f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 10:52:56 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 10:52:56 2010 -0700"
      },
      "message": "Merge branch \u0027llseek\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl\n\n* \u0027llseek\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl:\n  vfs: make no_llseek the default\n  vfs: don\u0027t use BKL in default_llseek\n  llseek: automatically add .llseek fop\n  libfs: use generic_file_llseek for simple_attr\n  mac80211: disallow seeks in minstrel debug code\n  lirc: make chardev nonseekable\n  viotape: use noop_llseek\n  raw: use explicit llseek file operations\n  ibmasmfs: use generic_file_llseek\n  spufs: use llseek in all file operations\n  arm/omap: use generic_file_llseek in iommu_debug\n  lkdtm: use generic_file_llseek in debugfs\n  net/wireless: use generic_file_llseek in debugfs\n  drm: use noop_llseek\n"
    },
    {
      "commit": "79f14b7c56d3b3ba58f8b43d1f70b9b71477a800",
      "tree": "3bb53b7806c1baba6cc24b91724a9264cceccd39",
      "parents": [
        "c37927d4359e81b85de644f8fb08878717cf5f3f",
        "6d7bccc2215c37205ede6c9cf84db64e7c4f9443"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 10:52:01 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 10:52:01 2010 -0700"
      },
      "message": "Merge branch \u0027vfs\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl\n\n* \u0027vfs\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl: (30 commits)\n  BKL: remove BKL from freevxfs\n  BKL: remove BKL from qnx4\n  autofs4: Only declare function when CONFIG_COMPAT is defined\n  autofs: Only declare function when CONFIG_COMPAT is defined\n  ncpfs: Lock socket in ncpfs while setting its callbacks\n  fs/locks.c: prepare for BKL removal\n  BKL: Remove BKL from ncpfs\n  BKL: Remove BKL from OCFS2\n  BKL: Remove BKL from squashfs\n  BKL: Remove BKL from jffs2\n  BKL: Remove BKL from ecryptfs\n  BKL: Remove BKL from afs\n  BKL: Remove BKL from USB gadgetfs\n  BKL: Remove BKL from autofs4\n  BKL: Remove BKL from isofs\n  BKL: Remove BKL from fat\n  BKL: Remove BKL from ext2 filesystem\n  BKL: Remove BKL from do_new_mount()\n  BKL: Remove BKL from cgroup\n  BKL: Remove BKL from NTFS\n  ...\n"
    },
    {
      "commit": "5704e44d283e907623e3775c1262f206a2c48cf3",
      "tree": "0a981b24173e90854e7b7d812b35859e1e5f0174",
      "parents": [
        "91151240ed8e97cc4457dae4094153c2744f1eb8",
        "6de5bd128d381ad88ac6d419a5e597048eb468cf"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 10:43:11 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 10:43:11 2010 -0700"
      },
      "message": "Merge branch \u0027config\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl\n\n* \u0027config\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl:\n  BKL: introduce CONFIG_BKL.\n  dabusb: remove the BKL\n  sunrpc: remove the big kernel lock\n  init/main.c: remove BKL notations\n  blktrace: remove the big kernel lock\n  rtmutex-tester: make it build without BKL\n  dvb-core: kill the big kernel lock\n  dvb/bt8xx: kill the big kernel lock\n  tlclk: remove big kernel lock\n  fix rawctl compat ioctls breakage on amd64 and itanic\n  uml: kill big kernel lock\n  parisc: remove big kernel lock\n  cris: autoconvert trivial BKL users\n  alpha: kill big kernel lock\n  isapnp: BKL removal\n  s390/block: kill the big kernel lock\n  hpet: kill BKL, add compat_ioctl\n"
    },
    {
      "commit": "5d18c1c2a9a74e0f966c257520b8b7f5136c87b3",
      "tree": "0529ee5b46a8049eb0af7dbf4c056a7de2369fe8",
      "parents": [
        "8323c3b2a6b6543919d5ebdddc7d52f192126161"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Tue Oct 19 23:00:12 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Thu Oct 21 10:12:14 2010 -0400"
      },
      "message": "nfsd4: only require krb5 principal for NFSv4.0 callbacks\n\nIn the sessions backchannel case, we don\u0027t need a krb5 principal name\nfor the client; we use the already-created forechannel credentials\ninstead.\n\nSome cleanup, while we\u0027re there: make it clearer which code here is 4.0-\nor sessions- specific.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "8323c3b2a6b6543919d5ebdddc7d52f192126161",
      "tree": "35976d6ba2f1917f569e44056c43f2bf724af7ef",
      "parents": [
        "792c95dd519c54d6b0fd6401b3da7ea67b0d6b72"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Tue Oct 19 19:36:51 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Thu Oct 21 10:12:02 2010 -0400"
      },
      "message": "nfsd4: move minorversion to client\n\nThe minorversion seems more a property of the client than the callback\nchannel.\n\nSome time we should probably also enforce consistent minorversion usage\nfrom the client; for now, this is just a cosmetic change.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "792c95dd519c54d6b0fd6401b3da7ea67b0d6b72",
      "tree": "1bd872c92be9fcc8790e5c68d8acb2ababc0b241",
      "parents": [
        "5a3c9d71343cf27b7afef24ed312368d48dada09"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Tue Oct 12 19:55:25 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Thu Oct 21 10:11:56 2010 -0400"
      },
      "message": "nfsd4: delay session removal till free_client\n\nHave unhash_client_locked() remove client and associated sessions from\nglobal hashes, but delay further dismantling till free_client().\n\n(After unhash_client_locked(), the only remaining references outside the\ndestroying thread are from any connections which have xpt_user callbacks\nregistered.)\n\nThis will simplify locking on session destruction.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "5a3c9d71343cf27b7afef24ed312368d48dada09",
      "tree": "f547acfdd49706cfa484dce5dc16339617e6346b",
      "parents": [
        "8b5ce5cd44743af84507721fa2cb4125ae67955c"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Tue Oct 19 17:56:52 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Thu Oct 21 10:11:55 2010 -0400"
      },
      "message": "nfsd4: separate callback change and callback probe\n\nOnly one of the nfsd4_callback_probe callers actually cares about\nchanging the callback information.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "8b5ce5cd44743af84507721fa2cb4125ae67955c",
      "tree": "24a1fa7191204140283803c17780dc4bb4066bba",
      "parents": [
        "d29c374cd20de620898d2936396048518809ae24"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Tue Oct 19 17:31:50 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Thu Oct 21 10:11:54 2010 -0400"
      },
      "message": "nfsd4: callback program number is per-session\n\nThe callback program is allowed to depend on the session which the\ncallback is going over.\n\nNo change in behavior yet, while we still only do callbacks over a\nsingle session for the lifetime of the client.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "d29c374cd20de620898d2936396048518809ae24",
      "tree": "4443f1cd02fa273b563f63b34fe9255aca551c74",
      "parents": [
        "86c3e16cc7aace4d1143952813b6cc2a80c51295"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jun 15 17:34:11 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Thu Oct 21 10:11:53 2010 -0400"
      },
      "message": "nfsd4: track backchannel connections\n\nWe need to keep track of which connections are available for use with\nthe backchannel, which for the forechannel, and which for both.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "86c3e16cc7aace4d1143952813b6cc2a80c51295",
      "tree": "9e05be561cf85e5e5eab57464c0cc63a3cdf7087",
      "parents": [
        "ac7c46f29a44f6d7f6d2e36dc874c0b7056acad2"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Sat Oct 02 17:04:00 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Thu Oct 21 10:11:52 2010 -0400"
      },
      "message": "nfsd4: confirm only on succesful create_session\n\nFollowing rfc 5661, section 18.36.4: \"If the session is not successfully\ncreated, then no changes are made to any client records on the server.\"\nWe shouldn\u0027t be confirming or incrementing the sequence id in this case.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "ac7c46f29a44f6d7f6d2e36dc874c0b7056acad2",
      "tree": "8349c56fbb67cb456fea62fee6ef29df20d6f87b",
      "parents": [
        "90c8145bb6fe1d9e0a808de6a701748967588bbd"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Mon Jun 14 19:01:57 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Thu Oct 21 10:11:51 2010 -0400"
      },
      "message": "nfsd4: make backchannel sequence number per-session\n\nCurrently we don\u0027t deal well with a client that has multiple sessions\nassociated with it (even simultaneously, or serially over the lifetime\nof the client).\n\nIn particular, we don\u0027t attempt to keep the backchannel running after\nthe original session diseappears.\n\nWe will fix that soon.\n\nOnce we do that, we need the slot sequence number to be per-session;\notherwise, for example, we cannot correctly handle a case like this:\n\n\t- All session 1 connections are lost.\n\t- The client creates session 2.  We use it for the backchannel\n\t  (since it\u0027s the only working choice).\n\t- The client gives us a new connection to use with session 1.\n\t- The client destroys session 2.\n\nAt this point our only choice is to go back to using session 1.  When we\ndo so we must use the sequence number that is next for session 1.  We\ntherefore need to maintain multiple sequence number streams.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "90c8145bb6fe1d9e0a808de6a701748967588bbd",
      "tree": "49a1b74340f8369b3d77c705cf5b5f93f44f74b3",
      "parents": [
        "edd76786633a3145661c7a90c9baccae8e3c9e84"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Mon Jun 14 17:49:37 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Thu Oct 21 10:11:50 2010 -0400"
      },
      "message": "nfsd4: use client pointer to backchannel session\n\nInstead of copying the sessionid, use the new cl_cb_session pointer,\nwhich indicates which session we\u0027re using for the backchannel.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "edd76786633a3145661c7a90c9baccae8e3c9e84",
      "tree": "5f3cde6cdfeea3d752df359f800ca8e4fb4df2c4",
      "parents": [
        "cd5b814458e5554457c6e62f17aed122145b065e"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Mon Jun 14 22:26:31 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Thu Oct 21 10:11:49 2010 -0400"
      },
      "message": "nfsd4: move callback setup into session init code\n\nThe backchannel should  be associated with a session, it isn\u0027t really\nglobal to the client.\n\nWe do, however, want a pointer global to the client which tracks which\nsession we\u0027re currently using for client-based callbacks.\n\nThis is a first step in that direction; for now, just reshuffling of\ncode with no significant change in behavior.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "cd5b814458e5554457c6e62f17aed122145b065e",
      "tree": "70b0caa4b10512273be3d40224e83a5a89dba664",
      "parents": [
        "9247685088398cf21bcb513bd2832b4cd42516c4"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Sat Oct 02 17:03:35 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Thu Oct 21 10:11:48 2010 -0400"
      },
      "message": "nfsd4: don\u0027t cache seq_misordered replies\n\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "6de5bd128d381ad88ac6d419a5e597048eb468cf",
      "tree": "7b3a0440f645c6e98367a87b1ca0ed1e0df204dd",
      "parents": [
        "7ff52efdca367d4bfe2449bd3d4a1f8172c5953a"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Sat Sep 11 18:00:57 2010 +0200"
      },
      "committer": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Thu Oct 21 15:44:13 2010 +0200"
      },
      "message": "BKL: introduce CONFIG_BKL.\n\nWith all the patches we have queued in the BKL removal tree, only a\nfew dozen modules are left that actually rely on the BKL, and even\nthere are lots of low-hanging fruit. We need to decide what to do\nabout them, this patch illustrates one of the options:\n\nEvery user of the BKL is marked as \u0027depends on BKL\u0027 in Kconfig,\nand the CONFIG_BKL becomes a user-visible option. If it gets\ndisabled, no BKL using module can be built any more and the BKL\ncode itself is compiled out.\n\nThe one exception is file locking, which is practically always\nenabled and does a \u0027select BKL\u0027 instead. This effectively forces\nCONFIG_BKL to be enabled until we have solved the fs/lockd\nmess and can apply the patch that removes the BKL from fs/locks.c.\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": "b1e86db1de2e8bc2be9fb94fae3451c2a776e8c1",
      "tree": "60405feda18e4145fc335c8c85f46d33816bc9e0",
      "parents": [
        "cb655d0f3d57c23db51b981648e452988c0223f9"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Wed Oct 13 14:46:17 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Wed Oct 13 15:48:55 2010 -0400"
      },
      "message": "nfsd: fix BUG at fs/nfsd/nfsfh.h:199 on unlink\n\nAs of commit 43a9aa64a2f4330a9cb59aaf5c5636566bce067c \"NFSD:\nFill in WCC data for REMOVE, RMDIR, MKNOD, and MKDIR\", we sometimes call\nfh_unlock on a filehandle that isn\u0027t fully initialized.\n\nWe should fix up the callers, but as a quick fix it is also sufficient\njust to remove this assertion.\n\nReported-by: Marius Tolzmann \u003ctolzmann@molgen.mpg.de\u003e\nCc: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "ecec6e34e18660799444c5a163c7313a20fba701",
      "tree": "87b04a3703a6e7ae19c5ebc9b94a6fb6f6810b03",
      "parents": [
        "70dc78da2cc76e7804c597fea3a0aff67ec8d7ad"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Mon Oct 11 16:49:44 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Mon Oct 11 20:00:18 2010 -0400"
      },
      "message": "nfsd4: expire clients more promptly\n\nExpire clients more promptly, at the expense of possibly running the\nlaundromat thread more frequently.\n\nThough it\u0027s not the default, I\u0027d like it to be feasible to run with a\nlease time of just a few seconds, at which point a minimum 10 second\nwait between laundromat runs seems a little much.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "b89f432133851a01c0d28822f11cbdcc15781a75",
      "tree": "a3e9ba638a9b746985148f4525335d360ec7da56",
      "parents": [
        "2e54eb96e2c801f33d95b5dade15212ac4d6c4a5"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Sat Sep 18 15:09:31 2010 +0200"
      },
      "committer": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Tue Oct 05 11:02:04 2010 +0200"
      },
      "message": "fs/locks.c: prepare for BKL removal\n\nThis prepares the removal of the big kernel lock from the\nfile locking code. We still use the BKL as long as fs/lockd\nuses it and ceph might sleep, but we can flip the definition\nto a private spinlock as soon as that\u0027s done.\nAll users outside of fs/lockd get converted to use\nlock_flocks() instead of lock_kernel() where appropriate.\n\nBased on an earlier patch to use a spinlock from Matthew\nWilcox, who has attempted this a few times before, the\nearliest patch from over 10 years ago turned it into\na semaphore, which ended up being slower than the BKL\nand was subsequently reverted.\n\nSomeone should do some serious performance testing when\nthis becomes a spinlock, since this has caused problems\nbefore. Using a spinlock should be at least as good\nas the BKL in theory, but who knows...\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nAcked-by: Matthew Wilcox \u003cwilly@linux.intel.com\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: John Kacur \u003cjkacur@redhat.com\u003e\nCc: Sage Weil \u003csage@newdream.net\u003e\nCc: linux-kernel@vger.kernel.org\nCc: linux-fsdevel@vger.kernel.org\n"
    },
    {
      "commit": "33515142156efc9ab5dbfe93ff8d4765559dc987",
      "tree": "64dc7ef93b822a703d5ffe32aeb8007550d1daa5",
      "parents": [
        "328ead287220711c3ad4490b1f3f691855df4039"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Sat Oct 02 18:42:39 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Sat Oct 02 18:49:33 2010 -0400"
      },
      "message": "nfsd4: return expired on unfound stateid\u0027s\n\nCommit 78155ed75f470710f2aecb3e75e3d97107ba8374 \"nfsd4: distinguish\nexpired from stale stateids\" attempted to distinguish expired and stale\nstateid\u0027s using time information that may not have been completely\nreliable, so I reverted it.\n\nThat was throwing out the baby with the bathwater; we still do want to\nreturn expired, but let\u0027s do that using the simpler approach of just\nassuming any stateid is expired if it looks like it was given out by the\ncurrent server instance, but we can\u0027t find it any more.\n\nThis may help clients that are recovering from network partitions.\n\nReported-by: Bian Naimeng \u003cbiannm@cn.fujitsu.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "328ead287220711c3ad4490b1f3f691855df4039",
      "tree": "5b8d5de0d2a922af7e3e300e9b521ba058d4f8f3",
      "parents": [
        "db90681d6eff89efc1eee523e1cb77eb632a6cf7"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Wed Sep 29 16:11:06 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Fri Oct 01 19:29:45 2010 -0400"
      },
      "message": "nfsd4: add new connections to session\n\nAs long as we\u0027re not implementing any session security, we should just\nautomatically add any new connections that come along to the list of\nsessions associated with the session.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "db90681d6eff89efc1eee523e1cb77eb632a6cf7",
      "tree": "4923aae6dcdaa35c42b4f19f319266437b42d7ce",
      "parents": [
        "19cf5c026f3ee06027523e59478e3fa54f573e5e"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Wed Sep 29 15:29:32 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Fri Oct 01 19:29:45 2010 -0400"
      },
      "message": "nfsd4: refactor connection allocation\n\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "19cf5c026f3ee06027523e59478e3fa54f573e5e",
      "tree": "e1162b69d7a558193b740344794d647a3d15e121",
      "parents": [
        "edc7a894034acb4c7ff8305716ca5df8aaf8e642"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Sun Jun 06 18:37:16 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Fri Oct 01 19:29:44 2010 -0400"
      },
      "message": "nfsd4: use callbacks on svc_xprt_deletion\n\nRemove connections from the list when they go down.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "c7662518c781edc8059cd9737d18168154bf7510",
      "tree": "c622e315c4df927a915f2a7992eb946ae168b3b4",
      "parents": [
        "5b6feee9608dce7afd2646f457c93e612526d1d8"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Sun Jun 06 18:12:14 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Fri Oct 01 19:29:44 2010 -0400"
      },
      "message": "nfsd4: keep per-session list of connections\n\nThe spec requires us in various places to keep track of the connections\nassociated with each session.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "5b6feee9608dce7afd2646f457c93e612526d1d8",
      "tree": "4ccb115bdb8e2f404339bce9a825adefc3e3cbd6",
      "parents": [
        "dd93842457174b847b023314e5a501e5ed45caeb"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Mon Sep 27 17:12:05 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Fri Oct 01 19:29:44 2010 -0400"
      },
      "message": "nfsd4: clean up session allocation\n\nChanges:\n\t- make sure session memory reservation is released on failure\n\t  path.\n\t- use min_t()/min() for more compact code in several places.\n\t- break alloc_init_session into smaller pieces.\n\t- miscellaneous other cleanup.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "dd93842457174b847b023314e5a501e5ed45caeb",
      "tree": "49fb9e43b6ad65b48f735c23070ef9347ccdceec",
      "parents": [
        "c23753dac1d21b39facd2ad3c7340dd275b3022f"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Mon Sep 27 16:26:25 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Fri Oct 01 19:29:44 2010 -0400"
      },
      "message": "nfsd4: fix alloc_init_session return type\n\nThis returns an nfs error, not -ERRNO.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "c23753dac1d21b39facd2ad3c7340dd275b3022f",
      "tree": "d9abf9d9689895b4cbd704fe24e2c1c0b9975372",
      "parents": [
        "6ff8da088766d70f0441feb982b82978a6cbf7ef"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Mon Sep 27 16:22:30 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Fri Oct 01 19:29:44 2010 -0400"
      },
      "message": "nfsd4: fix alloc_init_session BUILD_BUG_ON()\n\nNote we\u0027re allocating an array of nfsd4_slot *\u0027s, not nfsd4_slot\u0027s.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "6ff8da088766d70f0441feb982b82978a6cbf7ef",
      "tree": "7d0e90e4e03323fec67a972cdff60c9b8a96925a",
      "parents": [
        "fb003923263c3f0cb02adbd56a22fe16ef5c0e77"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Jun 04 20:04:45 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Fri Oct 01 19:29:44 2010 -0400"
      },
      "message": "nfsd4: Move callback setup to callback queue\n\nInstead of creating the new rpc client from a regular server thread,\nset a flag, kick off a null call, and allow the null call to do the work\nof setting up the client on the callback workqueue.\n\nUse a spinlock to ensure the callback work gets a consistent view of the\ncallback parameters.\n\nThis allows, for example, changing the callback from contexts where\nsleeping is not allowed.  I hope it will also keep the locking simple as\nwe add more session and trunking features, by serializing most of the\ncallback-specific work.\n\nThis also closes a small race where the the new cb_ident could be used\nwith an old connection (or vice-versa).\n\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "fb003923263c3f0cb02adbd56a22fe16ef5c0e77",
      "tree": "99eefb1d045250e1b871b92660d0e0f084aa67d3",
      "parents": [
        "cee277d92495a9ea49a6137fe7005d7c76b31b5b"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Mon May 31 18:21:37 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Fri Oct 01 19:29:43 2010 -0400"
      },
      "message": "nfsd4: remove separate cb_args struct\n\nI don\u0027t see the point of the separate struct.  It seems to just be\ngetting in the way.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "cee277d92495a9ea49a6137fe7005d7c76b31b5b",
      "tree": "c7e80e31d64038d17761472d9a349330426d8c12",
      "parents": [
        "5878453dbde627a8e1b5a4693087e36cb88d45b1"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Wed May 26 17:52:14 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Fri Oct 01 19:29:43 2010 -0400"
      },
      "message": "nfsd4: use generic callback code in null case\n\nThis will eventually allow us, for example, to kick off null callback\nfrom contexts where we can\u0027t sleep.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "5878453dbde627a8e1b5a4693087e36cb88d45b1",
      "tree": "0cc34915aca412599363af87e59f16fb327a28a3",
      "parents": [
        "1c8556026edac60368ceef446f0febc08014ba78"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Sun May 16 16:47:08 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Fri Oct 01 19:29:43 2010 -0400"
      },
      "message": "nfsd4: generic callback code\n\nMake the recall callback code more generic, so that other callbacks\nwill be able to use it too.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "1c8556026edac60368ceef446f0febc08014ba78",
      "tree": "b87d81088d213d4a8e62e6b76abc4b2ab198acde",
      "parents": [
        "586f36735e1d38c32bbfbb2716461e7178724b15"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Wed May 26 17:46:00 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Fri Oct 01 19:29:43 2010 -0400"
      },
      "message": "nfsd4: rename nfs4_rpc_args-\u003enfsd4_cb_args\n\nWith apologies for the gratuitous rename, the new name seems more\nhelpful to me.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "586f36735e1d38c32bbfbb2716461e7178724b15",
      "tree": "7754079a37b0cc78f95bb32bbd682aa3f821ed2a",
      "parents": [
        "07263f1efe7d5b96e6713471abfa087f41bb2b7c"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Wed May 26 17:40:53 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Fri Oct 01 19:29:43 2010 -0400"
      },
      "message": "nfsd4: combine nfs4_rpc_args and nfsd4_cb_sequence\n\nThese two structs don\u0027t really need to be distinct as far as I can tell.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "07263f1efe7d5b96e6713471abfa087f41bb2b7c",
      "tree": "bb5fb62ff610cd9f4cf6abe50baa4a6c2a9a5194",
      "parents": [
        "1e7af1b8062598a038c04dfaaabd038a0d6e8b6a"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Mon May 31 19:09:40 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Fri Oct 01 19:29:43 2010 -0400"
      },
      "message": "nfsd4: minor variable renaming (cb -\u003e conn)\n\nNow that we have both nfsd4_callback and nfsd4_cb_conn structures, I get\nconfused if variables of both types are always named cb....\n\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "c653ce3f0aee9bb2b221ebf3579385c06f81efcd",
      "tree": "d0f5a8018e2cf959b6bc1549ce75602ed179dca9",
      "parents": [
        "62832c039eab9d03cd28a66427ce8276988f28b0"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@parallels.com",
        "time": "Wed Sep 29 16:04:45 2010 +0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Fri Oct 01 17:18:56 2010 -0400"
      },
      "message": "sunrpc: Add net to rpc_create_args\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "fc5d00b04a3a58cac8620403dfe9f43f72578ec1",
      "tree": "3a8b9a5ae3456b5846fb64c0a74c9389998b3e18",
      "parents": [
        "e204e621b4160c802315bc2d0fa335337c0d62e8"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@parallels.com",
        "time": "Wed Sep 29 16:03:50 2010 +0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Fri Oct 01 17:18:54 2010 -0400"
      },
      "message": "sunrpc: Add net argument to svc_create_xprt\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "2b44f1ba40914777f4b1075254ba97663d4e2574",
      "tree": "1db499fcc1aadc447d11b7c901707db8f7b430d8",
      "parents": [
        "c135e84afb6bcec9cb8ef0492fa4867efbfaad91"
      ],
      "author": {
        "name": "Benny Halevy",
        "email": "bhalevy@panasas.com",
        "time": "Thu Sep 30 20:47:46 2010 +0200"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Fri Oct 01 16:52:24 2010 -0400"
      },
      "message": "nfsd4: adjust buflen for encoded attrs bitmap based on actual bitmap length\n\nThe existing code adjusted it based on the worst case scenario for the returned\nbitmap and the best case scenario for the supported attrs attribute.\n\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[bfields@redhat.com: removed likely/unlikely\u0027s]\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "352114f395bd79353faf0bc1506ead94de393f55",
      "tree": "46d9001aff3738afd13323fc883d89b7e8a74450",
      "parents": [
        "3be4479fdf2fb7eb17a4592917ae4b536058b0c7"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@parallels.com",
        "time": "Mon Sep 27 13:59:48 2010 +0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Mon Sep 27 10:16:11 2010 -0400"
      },
      "message": "sunrpc: Add net to pure API calls\n\nThere are two calls that operate on ip_map_cache and are\ndirectly called from the nfsd code. Other places will be\nhandled in a different way.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "74ec1e1269eba65b5f8e810cf0363ddb7aa64de5",
      "tree": "11b0ab0612f275b0ddff4077be3ba8ee46f78f6c",
      "parents": [
        "049ef27b224ecc33958465fef83d5e4e8a056115"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Fri Sep 24 17:43:59 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Sun Sep 26 14:48:25 2010 -0400"
      },
      "message": "nfsd: fix /proc/net/rpc/nfsd.export/content display\n\nNote with \"first\" always 0, and \"lastflags\" initially 0, we always dump\na spurious set of 0 flags at the start, among other problems.\n\nFix.  And attempt to make the code a little more obvious.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "049ef27b224ecc33958465fef83d5e4e8a056115",
      "tree": "c4bec9c4f6b13958353cb1ee7001865779a5cd1e",
      "parents": [
        "1e1405673e4e40a94ed7620553eb440a21040402"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@parallels.com",
        "time": "Thu Sep 23 18:26:58 2010 +0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Thu Sep 23 10:34:21 2010 -0400"
      },
      "message": "nfsd: Export get_task_comm for nfsd\n\nThe git://linux-nfs.org/~bfields/linux.git nfsd-next branch doesn\u0027t\ncompile when nfsd is a module with the following error:\n\n   ERROR: \"get_task_comm\" [fs/nfsd/nfsd.ko] undefined!\n\nReplace the get_task_comm call with direct comm access, which is\nsafe for current.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "1e1405673e4e40a94ed7620553eb440a21040402",
      "tree": "2553812b11feeefbf2b68c226f45d52e7a12f5b5",
      "parents": [
        "c67874f942e30039442d925b03793e0a46ddcddd"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 22 12:55:07 2010 +1000"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Wed Sep 22 15:33:14 2010 -0400"
      },
      "message": "nfsd: allow deprecated interface to be compiled out.\n\nAdd CONFIG_NFSD_DEPRECATED, default to y.\nOnly include deprecated interface if this is defined.\nThis allows distros to remove this interface before the official\nremoval, and allows developers to test without it.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "c67874f942e30039442d925b03793e0a46ddcddd",
      "tree": "4f5def2f155c74181b015a13d563c1898b64d98a",
      "parents": [
        "e95dffa4304186ad87963255f3e5e96b5c41849f"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 22 12:55:07 2010 +1000"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Wed Sep 22 15:33:13 2010 -0400"
      },
      "message": "nfsd: formally deprecate legacy nfsd syscall interface\n\nThe syscall interface is has been replaced by a more flexible\ninterface since 2.6.0.  It is time to work towards discarding\nthe old interface.\n\nSo add a entry in feature-removal-schedule.txt and print a warning\nwhen the interface is used.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "839049a8732d689d02051e0198fb60a22f7ccb4b",
      "tree": "7ae2ec763232f79f98a0d8122d710ac9887fb8b9",
      "parents": [
        "8ff30fa4eff2ff9e207961c654caa093f0c84873"
      ],
      "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 21 17:08:31 2010 -0400"
      },
      "message": "nfsd/idmap: drop special request deferal in favour of improved default.\n\nThe idmap code manages request deferal by waiting for a reply from\nuserspace rather than putting the NFS request on a queue to be retried\nfrom the start.\nNow that the common deferal code does this there is no need for the\nspecial code in idmap.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "8ff30fa4eff2ff9e207961c654caa093f0c84873",
      "tree": "b25fcb36bf2b276566a69b031b2baea8e216725a",
      "parents": [
        "1ebede86b8abbcf8833830e18e05391758cf2f28"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Aug 12 17:04:07 2010 +1000"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Tue Sep 21 17:02:27 2010 -0400"
      },
      "message": "nfsd: disable deferral for NFSv4\n\nNow that a slight delay in getting a reply to an upcall doesn\u0027t\nrequire deferring of requests, request deferral for all NFSv4\nrequests - the concept doesn\u0027t really fit with the v4 model.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "c88739b373e4930ed082a607cb78bf82616fd076",
      "tree": "251d969aa816dab5a62e6b36208b189b37de6534",
      "parents": [
        "3211af1119174fbe8b676422b74870cdd51d7314",
        "827e3457022d0bb0b1bb8a0eb88501876fe7dcf0"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Sun Sep 19 23:48:00 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Sun Sep 19 23:48:32 2010 -0400"
      },
      "message": "Merge remote branch \u0027trond/bugfixes\u0027 into for-2.6.37\n\nWithout some client-side fixes, server testing is currently difficult.\n"
    },
    {
      "commit": "827e3457022d0bb0b1bb8a0eb88501876fe7dcf0",
      "tree": "d9ed145eb533745bdf043b263b97aac8735abffb",
      "parents": [
        "fbf3fdd2443965d9ba6fb4b5fecd1f6e0847218f"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Sep 12 19:57:50 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Sep 12 19:57:50 2010 -0400"
      },
      "message": "SUNRPC: Fix the NFSv4 and RPCSEC_GSS Kconfig dependencies\n\nThe NFSv4 client\u0027s callback server calls svc_gss_principal(), which\nis defined in the auth_rpcgss.ko\n\nThe NFSv4 server has the same dependency, and in addition calls\nsvcauth_gss_flavor(), gss_mech_get_by_pseudoflavor(),\ngss_pseudoflavor_to_service() and gss_mech_put() from the same module.\n\nThe module auth_rpcgss itself has no dependencies aside from sunrpc,\nso we only need to select RPCSEC_GSS.\n\nReported-by: Uwe Kleine-König \u003cu.kleine-koenig@pengutronix.de\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "4f63e3c5be2ab55d47d89ea1d32d2c27254daf26",
      "tree": "491c6d58ccb246e0b049fa60af4328f649c54089",
      "parents": [
        "e6f901bb85bc0707aaafb3c123c3013c0feaba7d",
        "8f34a430ac16d5fbd9d6b383184d35e152f5a963"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 07 19:21:02 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 07 19:21:02 2010 -0700"
      },
      "message": "Merge branch \u0027for-2.6.36\u0027 of git://linux-nfs.org/~bfields/linux\n\n* \u0027for-2.6.36\u0027 of git://linux-nfs.org/~bfields/linux:\n  nfsd4: mask out non-access bits in nfs4_access_to_omode\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": "17cebf658e088935d4bdebfc7ad9800e9fc4a0b2",
      "tree": "7bc6c1d8de35bce17da188cba13688671d517907",
      "parents": [
        "1132b26029918aa8fb5ba24a81b5c234e61f356c"
      ],
      "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:19 2010 -0400"
      },
      "message": "sunrpc: extract some common sunrpc_cache code from nfsd\n\nRather can duplicating this idiom twice, put it in an inline function.\nThis reduces the usage of \u0027expiry_time\u0027 out side the sunrpc/cache.c\ncode and thus the impact of a change that is about to be made to that\nfield.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "1132b26029918aa8fb5ba24a81b5c234e61f356c",
      "tree": "253bfb658aefaf3e38608c99c0845d52823d590c",
      "parents": [
        "2bfc96a127bc1cc94d26bfaa40159966064f9c8c"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Fri Aug 13 17:31:16 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Tue Sep 07 19:21:18 2010 -0400"
      },
      "message": "nfsd: remove duplicate NFS4_STATEID_SIZE declaration\n\nUse NFS4_STATEID_SIZE from include/linux/nfs4\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "8f34a430ac16d5fbd9d6b383184d35e152f5a963",
      "tree": "34a2cbdacb782fb63a0096c28a1e8ab9d8770153",
      "parents": [
        "f6360efb83cd6dd1476cd758834c8277508c1f15"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Thu Sep 02 15:23:16 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Thu Sep 02 15:25:09 2010 -0400"
      },
      "message": "nfsd4: mask out non-access bits in nfs4_access_to_omode\n\nThis fixes an unnecessary BUG().\n\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "2547d1d20f3a252567f974de8ce1c572a0815d5a",
      "tree": "786404cb38c6ca55ca46a63df570c119ca32561e",
      "parents": [
        "7be0d4f90ad8e0f9591fd311765a212a42e26b13",
        "f6360efb83cd6dd1476cd758834c8277508c1f15"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 28 14:05:55 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 28 14:05:55 2010 -0700"
      },
      "message": "Merge branch \u0027for-2.6.36\u0027 of git://linux-nfs.org/~bfields/linux\n\n* \u0027for-2.6.36\u0027 of git://linux-nfs.org/~bfields/linux:\n  nfsd: fix NULL dereference in nfsd_statfs()\n  nfsd4: fix downgrade/lock logic\n  nfsd4: typo fix in find_any_file\n  nfsd4: bad BUG() in preprocess_stateid_op\n"
    },
    {
      "commit": "f6360efb83cd6dd1476cd758834c8277508c1f15",
      "tree": "e57015159bf6f361d45050f28a8da7beaceaea60",
      "parents": [
        "f632265d0ffb5acf331252d98c64939849d96bb2"
      ],
      "author": {
        "name": "Takashi Iwai",
        "email": "tiwai@suse.de",
        "time": "Fri Aug 13 15:53:49 2010 +0200"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Thu Aug 26 13:23:16 2010 -0400"
      },
      "message": "nfsd: fix NULL dereference in nfsd_statfs()\n\nThe commit ebabe9a9001af0af56c0c2780ca1576246e7a74b\n    pass a struct path to vfs_statfs\nintroduced the struct path initialization, and this seems to trigger\nan Oops on my machine.\n\nfh_dentry field may be NULL and set later in fh_verify(), thus the\ninitialization of path must be after fh_verify().\n\nSigned-off-by: Takashi Iwai \u003ctiwai@suse.de\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "f632265d0ffb5acf331252d98c64939849d96bb2",
      "tree": "31187d9a726bf1ca6ca12e26ad8e7c609eaf4d8b",
      "parents": [
        "7d94784293096c0a46897acdb83be5abd9278ece",
        "da5cabf80e2433131bf0ed8993abc0f7ea618c73"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Thu Aug 26 13:22:27 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Thu Aug 26 13:22:27 2010 -0400"
      },
      "message": "Merge commit \u0027v2.6.36-rc1\u0027 into HEAD\n"
    },
    {
      "commit": "7d94784293096c0a46897acdb83be5abd9278ece",
      "tree": "da2bc54b7d2527b465833610d80ec0285b90c8a7",
      "parents": [
        "18608ad49cffa430cfd0b4e027dedfe3114f916e"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Fri Aug 20 18:09:31 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Thu Aug 26 13:22:02 2010 -0400"
      },
      "message": "nfsd4: fix downgrade/lock logic\n\nIf we already had a RW open for a file, and get a readonly open, we were\npiggybacking on the existing RW open.  That\u0027s inconsistent with the\ndowngrade logic which blows away the RW open assuming you\u0027ll still have\na readonly open.\n\nAlso, make sure there is a readonly or writeonly open available for\nlocking, again to prevent bad behavior in downgrade cases when any RW\nopen may be lost.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "18608ad49cffa430cfd0b4e027dedfe3114f916e",
      "tree": "e821f9abcfc309d65bbbc5df27665c391218d89c",
      "parents": [
        "30c0e1ef0a8a6cab4e0f9357698c81a2f7f73cc5"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Fri Aug 20 18:06:26 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Thu Aug 26 13:21:09 2010 -0400"
      },
      "message": "nfsd4: typo fix in find_any_file\n\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "30c0e1ef0a8a6cab4e0f9357698c81a2f7f73cc5",
      "tree": "3bccc5ba7e8dff301f8dd4536158306d9261244d",
      "parents": [
        "998db52c03cd293d16a457f1b396cea932244147"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Tue Aug 17 18:46:33 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Thu Aug 26 13:20:51 2010 -0400"
      },
      "message": "nfsd4: bad BUG() in preprocess_stateid_op\n\nIt\u0027s OK for this function to return without setting filp--we do it in\nthe special-stateid case.\n\nAnd there\u0027s a legitimate case where we can hit this, since we do permit\nreads on write-only stateid\u0027s.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "763008c4357b73c8d18396dfd8d79dc58fa3f99d",
      "tree": "818add523a6b81b560bebac727c57c6a8ea6fd63",
      "parents": [
        "d1126ad907ce197ff45fbc2369fbeaf8ae6f75a8",
        "0a377cff9428af2da2b293d11e07bc4dbf064ee5"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 18 15:45:23 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 18 15:45:23 2010 -0700"
      },
      "message": "Merge branch \u0027bugfixes\u0027 of git://git.linux-nfs.org/projects/trondmy/nfs-2.6\n\n* \u0027bugfixes\u0027 of git://git.linux-nfs.org/projects/trondmy/nfs-2.6:\n  NFS: Fix an Oops in the NFSv4 atomic open code\n  NFS: Fix the selection of security flavours in Kconfig\n  NFS: fix the return value of nfs_file_fsync()\n  rpcrdma: Fix SQ size calculation when memreg is FRMR\n  xprtrdma: Do not truncate iova_start values in frmr registrations.\n  nfs: Remove redundant NULL check upon kfree()\n  nfs: Add \"lookupcache\" to displayed mount options\n  NFS: allow close-to-open cache semantics to apply to root of NFS filesystem\n  SUNRPC: fix NFS client over TCP hangs due to packet loss (Bug 16494)\n"
    },
    {
      "commit": "df486a25900f4dba9cdc3886c4ac871951c6aef3",
      "tree": "4d13ffd2b4de988c4d1d8863cf60196476ce48c0",
      "parents": [
        "0702099bd86c33c2dcdbd3963433a61f3f503901"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Aug 17 17:42:45 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Aug 17 17:42:45 2010 -0400"
      },
      "message": "NFS: Fix the selection of security flavours in Kconfig\n\nRandy Dunlap reports:\n\nERROR: \"svc_gss_principal\" [fs/nfs/nfs.ko] undefined!\n\n\nbecause in fs/nfs/Kconfig, NFS_V4 selects RPCSEC_GSS_KRB5\nand/or in fs/nfsd/Kconfig, NFSD_V4 selects RPCSEC_GSS_KRB5.\n\nRPCSEC_GSS_KRB5 does 5 selects, but none of these is enforced/followed\nby the fs/nfs[d]/Kconfig configs:\n\n\tselect SUNRPC_GSS\n\tselect CRYPTO\n\tselect CRYPTO_MD5\n\tselect CRYPTO_DES\n\tselect CRYPTO_CBC\n\nReported-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nCc: J. Bruce Fields \u003cbfields@fieldses.org\u003e\nAcked-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "8c8946f509a494769a8c602b5ed189df01917d39",
      "tree": "dfd96bd6ca5ea6803c6d77f65ba37e04f78b2d3b",
      "parents": [
        "5f248c9c251c60af3403902b26e08de43964ea0b",
        "1968f5eed54ce47bde488fd9a450912e4a2d7138"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 10 11:39:13 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 10 11:39:13 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.infradead.org/users/eparis/notify\n\n* \u0027for-linus\u0027 of git://git.infradead.org/users/eparis/notify: (132 commits)\n  fanotify: use both marks when possible\n  fsnotify: pass both the vfsmount mark and inode mark\n  fsnotify: walk the inode and vfsmount lists simultaneously\n  fsnotify: rework ignored mark flushing\n  fsnotify: remove global fsnotify groups lists\n  fsnotify: remove group-\u003emask\n  fsnotify: remove the global masks\n  fsnotify: cleanup should_send_event\n  fanotify: use the mark in handler functions\n  audit: use the mark in handler functions\n  dnotify: use the mark in handler functions\n  inotify: use the mark in handler functions\n  fsnotify: send fsnotify_mark to groups in event handling functions\n  fsnotify: Exchange list heads instead of moving elements\n  fsnotify: srcu to protect read side of inode and vfsmount locks\n  fsnotify: use an explicit flag to indicate fsnotify_destroy_mark has been called\n  fsnotify: use _rcu functions for mark list traversal\n  fsnotify: place marks on object in order of group memory address\n  vfs/fsnotify: fsnotify_close can delay the final work in fput\n  fsnotify: store struct file not struct path\n  ...\n\nFix up trivial delete/modify conflict in fs/notify/inotify/inotify.c.\n"
    },
    {
      "commit": "5f248c9c251c60af3403902b26e08de43964ea0b",
      "tree": "6d3328e72a7e4015a64017eb30be18095c6a3c64",
      "parents": [
        "f6cec0ae58c17522a7bc4e2f39dae19f199ab534",
        "dca332528bc69e05f67161e1ed59929633d5e63d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 10 11:26:52 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 10 11:26:52 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (96 commits)\n  no need for list_for_each_entry_safe()/resetting with superblock list\n  Fix sget() race with failing mount\n  vfs: don\u0027t hold s_umount over close_bdev_exclusive() call\n  sysv: do not mark superblock dirty on remount\n  sysv: do not mark superblock dirty on mount\n  btrfs: remove junk sb_dirt change\n  BFS: clean up the superblock usage\n  AFFS: wait for sb synchronization when needed\n  AFFS: clean up dirty flag usage\n  cifs: truncate fallout\n  mbcache: fix shrinker function return value\n  mbcache: Remove unused features\n  add f_flags to struct statfs(64)\n  pass a struct path to vfs_statfs\n  update VFS documentation for method changes.\n  All filesystems that need invalidate_inode_buffers() are doing that explicitly\n  convert remaining -\u003eclear_inode() to -\u003eevict_inode()\n  Make -\u003edrop_inode() just return whether inode needs to be dropped\n  fs/inode.c:clear_inode() is gone\n  fs/inode.c:evict() doesn\u0027t care about delete vs. non-delete paths now\n  ...\n\nFix up trivial conflicts in fs/nilfs2/super.c\n"
    },
    {
      "commit": "ebabe9a9001af0af56c0c2780ca1576246e7a74b",
      "tree": "b263299f575c650b6e9d95c7c4bdeef958af2fc9",
      "parents": [
        "336fb3b97b78edc65bae0b223b83bf676cfe29e2"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Wed Jul 07 18:53:11 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:48:42 2010 -0400"
      },
      "message": "pass a struct path to vfs_statfs\n\nWe\u0027ll need the path to implement the flags field for statvfs support.\nWe do have it available in all callers except:\n\n - ecryptfs_statfs.  This one doesn\u0027t actually need vfs_statfs but just\n   needs to do a caller to the lower filesystem statfs method.\n - sys_ustat.  Add a non-exported statfs_by_dentry helper for it which\n   doesn\u0027t won\u0027t be able to fill out the flags field later on.\n\nIn addition rename the helpers for statfs vs fstatfs to do_*statfs instead\nof the misleading vfs prefix.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "0d9f9e122c74583de15a86d1c660c08dc298f2c8",
      "tree": "a04ad387e231db43db112753fa2eae23754189a9",
      "parents": [
        "df44f9f4f9b5d362b5a2d1c8444fe7e6d4c42653",
        "998db52c03cd293d16a457f1b396cea932244147"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 07 14:24:41 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 07 14:24:41 2010 -0700"
      },
      "message": "Merge branch \u0027for-2.6.36\u0027 of git://linux-nfs.org/~bfields/linux\n\n* \u0027for-2.6.36\u0027 of git://linux-nfs.org/~bfields/linux: (34 commits)\n  nfsd4: fix file open accounting for RDWR opens\n  nfsd: don\u0027t allow setting maxblksize after svc created\n  nfsd: initialize nfsd versions before creating svc\n  net: sunrpc: removed duplicated #include\n  nfsd41: Fix a crash when a callback is retried\n  nfsd: fix startup/shutdown order bug\n  nfsd: minor nfsd read api cleanup\n  gcc-4.6: nfsd: fix initialized but not read warnings\n  nfsd4: share file descriptors between stateid\u0027s\n  nfsd4: fix openmode checking on IO using lock stateid\n  nfsd4: miscellaneous process_open2 cleanup\n  nfsd4: don\u0027t pretend to support write delegations\n  nfsd: bypass readahead cache when have struct file\n  nfsd: minor nfsd_svc() cleanup\n  nfsd: move more into nfsd_startup()\n  nfsd: just keep single lockd reference for nfsd\n  nfsd: clean up nfsd_create_serv error handling\n  nfsd: fix error handling in __write_ports_addxprt\n  nfsd: fix error handling when starting nfsd with rpcbind down\n  nfsd4: fix v4 state shutdown error paths\n  ...\n"
    },
    {
      "commit": "998db52c03cd293d16a457f1b396cea932244147",
      "tree": "6546b0752c402c458723242e3a03723e2083040b",
      "parents": [
        "7fa53cc872332b265bc5ba1266f39586f218ad4a"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@pad.home.fieldses.org",
        "time": "Sat Aug 07 09:21:41 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@pad.home.fieldses.org",
        "time": "Sat Aug 07 09:50:05 2010 -0400"
      },
      "message": "nfsd4: fix file open accounting for RDWR opens\n\nCommit f9d7562fdb9dc0ada3a7aba5dbbe9d965e2a105d \"nfsd4: share file\ndescriptors between stateid\u0027s\" didn\u0027t correctly account for O_RDWR opens.\nSymptoms include leaked files, resulting in failures to unmount and/or\nwarnings about orphaned inodes on reboot.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "7fa53cc872332b265bc5ba1266f39586f218ad4a",
      "tree": "0583a66f8665581a7a9b613f30000e9093c9ff84",
      "parents": [
        "e844a7b9805a2b74cfd34c8604f5bba3e0869305"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Fri Aug 06 18:00:33 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Fri Aug 06 18:00:33 2010 -0400"
      },
      "message": "nfsd: don\u0027t allow setting maxblksize after svc created\n\nIt\u0027s harmless to set this after the server is created, but also\nineffective, since the value is only used at the time of\nsvc_create_pooled().  So fail the attempt, in keeping with the pattern\nset by write_versions, write_{lease,grace}time and write_recoverydir.\n\n(This could break userspace that tried to write to nfsd/max_block_size\nbetween setting up sockets and starting the server.  However, such code\nwouldn\u0027t have worked anyway, and I don\u0027t know of any examples--rpc.nfsd\nin nfs-utils, probably the only user of the interface, doesn\u0027t do that.)\n\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "e844a7b9805a2b74cfd34c8604f5bba3e0869305",
      "tree": "f0270f65da19a0f6ebc50787dd9edce6a8def9d3",
      "parents": [
        "e2aa7f8304b3b5656ded8699216cc65138d03b64"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Fri Aug 06 15:48:03 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Fri Aug 06 17:05:40 2010 -0400"
      },
      "message": "nfsd: initialize nfsd versions before creating svc\n\nCommit 59db4a0c102e0de226a3395dbf25ea51bf845937 \"nfsd: move more into\nnfsd_startup()\" inadvertently moved nfsd_versions after\nnfsd_create_svc().  On older distributions using an rpc.nfsd that does\nnot explicitly set the list of nfsd versions, this results in\nsvc-create_pooled() being called with an empty versions array.  The\nresulting incomplete initialization leads to a NULL dereference in\nsvc_process_common() the first time a client accesses the server.\n\nMove nfsd_reset_versions() back before the svc_create_pooled(); this\ntime, put it closer to the svc_create_pooled() call, to make this\nmistake more difficult in the future.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "c18c821fd40ad0ffc199a55be874e556bf999416",
      "tree": "ba1830c90160a4f85a32552425a556b70e56bae1",
      "parents": [
        "774f8bbd9ef2e71d4ef4b89933d292091d31ca98"
      ],
      "author": {
        "name": "Boaz Harrosh",
        "email": "bharrosh@panasas.com",
        "time": "Tue Jun 29 14:33:55 2010 +0300"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Fri Aug 06 17:05:39 2010 -0400"
      },
      "message": "nfsd41: Fix a crash when a callback is retried\n\nIf a callback is retried at nfsd4_cb_recall_done() due to\nsome error, the returned rpc reply crashes here:\n\n@@ -514,6 +514,7 @@ decode_cb_sequence(struct xdr_stream *xdr, struct nfsd4_cb_sequence *res,\n \tu32 dummy;\n \t__be32 *p;\n\n +\tBUG_ON(!res);\n \tif (res-\u003ecbs_minorversion \u003d\u003d 0)\n \t\treturn 0;\n\n[BUG_ON added for demonstration]\n\nThis is because the nfsd4_cb_done_sequence() has NULLed out\nthe task-\u003etk_msg.rpc_resp pointer.\n\nAlso eventually the rpc would use the new slot without making\nsure it is free by calling nfsd41_cb_setup_sequence().\n\nThis problem was introduced by a 4.1 protocol addition patch:\n\t[0421b5c5] nfsd41: Backchannel: Implement cb_recall over NFSv4.1\n\nWhich was overlooking the possibility of an RPC callback retries.\nFor not-4.1 case redoing the _prepare is harmless.\n\nSigned-off-by: Boaz Harrosh \u003cbharrosh@panasas.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "774f8bbd9ef2e71d4ef4b89933d292091d31ca98",
      "tree": "bbc4afb785f31727b61279b1a026768d5953d60f",
      "parents": [
        "039a87ca536a85bc169ce092e44bd57adfa1f563"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Mon Aug 02 14:12:44 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Fri Aug 06 17:05:30 2010 -0400"
      },
      "message": "nfsd: fix startup/shutdown order bug\n\nWe must create the server before we can call init_socks or check the\nnumber of threads.\n\nSymptoms were a NULL pointer dereference in nfsd_svc().  Problem\nidentified by Jeff Layton.\n\nAlso fix a minor cleanup-on-error case in nfsd_startup().\n\nReported-by: Tetsuo Handa \u003cpenguin-kernel@I-love.SAKURA.ne.jp\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "039a87ca536a85bc169ce092e44bd57adfa1f563",
      "tree": "015ddd79fb489241b0171ce3c863353ae6c03522",
      "parents": [
        "69049961014992f50b10d6c3cd3cd172d4aae5ac"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Fri Jul 30 11:33:32 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Fri Jul 30 12:54:54 2010 -0400"
      },
      "message": "nfsd: minor nfsd read api cleanup\n\nChristoph points that the NFSv2/v3 callers know which case they want\nhere, so we may as well just call the file\u003dNULL case directly instead of\nmaking this conditional.\n\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "69049961014992f50b10d6c3cd3cd172d4aae5ac",
      "tree": "d6717d7bc3eae733374cc9acb3a278a82498dced",
      "parents": [
        "f9d7562fdb9dc0ada3a7aba5dbbe9d965e2a105d"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "andi@firstfloor.org",
        "time": "Tue Jul 20 15:24:27 2010 -0700"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Thu Jul 29 19:32:17 2010 -0400"
      },
      "message": "gcc-4.6: nfsd: fix initialized but not read warnings\n\nFixes at least one real minor bug: the nfs4 recovery dir sysctl\nwould not return its status properly.\n\nAlso I finished Al\u0027s 1e41568d7378d (\"Take ima_path_check() in nfsd\npast dentry_open() in nfsd_open()\") commit, it moved the IMA\ncode, but left the old path initializer in there.\n\nThe rest is just dead code removed I think, although I was not\nfully sure about the \"is_borc\" stuff. Some more review\nwould be still good.\n\nFound by gcc 4.6\u0027s new warnings.\n\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "f9d7562fdb9dc0ada3a7aba5dbbe9d965e2a105d",
      "tree": "bbeb32b2cc49b6c6dafae57331a680b906017b6e",
      "parents": [
        "02921914170e3b7fea1cd82dac9713685d2de5e2"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Thu Jul 08 11:02:09 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Thu Jul 29 18:19:23 2010 -0400"
      },
      "message": "nfsd4: share file descriptors between stateid\u0027s\n\nThe vfs doesn\u0027t really allow us to \"upgrade\" a file descriptor from\nread-only to read-write, and our attempt to do so in nfs4_upgrade_open\nis ugly and incomplete.\n\nMove to a different scheme where we keep multiple opens, shared between\nopen stateid\u0027s, in the nfs4_file struct.  Each file will be opened at\nmost 3 times (for read, write, and read-write), and those opens will be\nshared between all clients and openers.  On upgrade we will do another\nopen if necessary instead of attempting to upgrade an existing open.\nWe keep count of the number of readers and writers so we know when to\nclose the shared files.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "02921914170e3b7fea1cd82dac9713685d2de5e2",
      "tree": "623710431d4416022594d1a2a473f3ca64bf7490",
      "parents": [
        "21fb4016bd592409bc8f95737e365ac82413b795"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Thu Jul 29 15:16:59 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Thu Jul 29 16:37:12 2010 -0400"
      },
      "message": "nfsd4: fix openmode checking on IO using lock stateid\n\nIt is legal to perform a write using the lock stateid that was\noriginally associated with a read lock, or with a file that was\noriginally opened for read, but has since been upgraded.\n\nSo, when checking the openmode, check the mode associated with the\nopen stateid from which the lock was derived.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "21fb4016bd592409bc8f95737e365ac82413b795",
      "tree": "1d32bc2bc709dec0ffbd8453f6eb1f50871b99db",
      "parents": [
        "c3e480808685dd13f03af1a8fdda581dcb54d92c"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Wed Jul 28 12:21:23 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Thu Jul 29 16:34:29 2010 -0400"
      },
      "message": "nfsd4: miscellaneous process_open2 cleanup\n\nMove more work into helper functions.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "c3e480808685dd13f03af1a8fdda581dcb54d92c",
      "tree": "80dc34d9cec1992a7aee96146ce668384aa7d30a",
      "parents": [
        "fa0a21269f807bb2e95b8b642c4a739714780172"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Wed Jul 28 10:08:57 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Thu Jul 29 16:05:51 2010 -0400"
      },
      "message": "nfsd4: don\u0027t pretend to support write delegations\n\nThe delegation code mostly pretends to support either read or write\ndelegations.  However, correct support for write delegations would\nrequire, for example, breaking of delegations (and/or implementation of\ncb_getattr) on stat.  Currently all that stops us from handing out\ndelegations is a subtle reference-counting issue.\n\nAvoid confusion by adding an earlier check that explicitly refuses write\ndelegations.\n\nFor now, though, I\u0027m not going so far as to rip out existing\nhalf-support for write delegations, in case we get around to using that\nsoon.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "2a12a9d7814631e918dec93abad856e692d5286d",
      "tree": "12817004ae9667bf83f869606f38050636edeb61",
      "parents": [
        "8112e2d6a7356e8c3ff1f7f3c86f375ed0305705"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:21 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:32 2010 -0400"
      },
      "message": "fsnotify: pass a file instead of an inode to open, read, and write\n\nfanotify, the upcoming notification system actually needs a struct path so it can\ndo opens in the context of listeners, and it needs a file so it can get f_flags\nfrom the original process.  Close was the only operation that already was passing\na struct file to the notification hook.  This patch passes a file for access,\nmodify, and open as well as they are easily available to these hooks.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "fa0a21269f807bb2e95b8b642c4a739714780172",
      "tree": "ce469ff0ce6bcc7373b17fc90d1451cb93883bf2",
      "parents": [
        "af4718f3f996925f770e540004ec9224243d1682"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Tue Jul 27 16:48:54 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Tue Jul 27 18:15:54 2010 -0400"
      },
      "message": "nfsd: bypass readahead cache when have struct file\n\nThe readahead cache compensates for the fact that the NFS server\ncurrently does an open and close on every IO operation in the NFSv2 and\nNFSv3 case.\n\nIn the NFSv4 case we have long-lived struct files associated with client\nopens, so there\u0027s no need for this.  In fact, concurrent IO\u0027s using\ntrying to modify the same file-\u003ef_ra may cause problems.\n\nSo, don\u0027t bother with the readahead cache in that case.\n\nNote eventually we\u0027ll likely do this in the v2/v3 case as well by\nkeeping a cache of struct files instead of struct file_ra_state\u0027s.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "af4718f3f996925f770e540004ec9224243d1682",
      "tree": "38f81e3257cb9732ac09df98604bd77a5a42bc7b",
      "parents": [
        "59db4a0c102e0de226a3395dbf25ea51bf845937"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Wed Jul 21 18:31:42 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Fri Jul 23 08:51:27 2010 -0400"
      },
      "message": "nfsd: minor nfsd_svc() cleanup\n\nMore idiomatic to put the error case in the if clause.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "59db4a0c102e0de226a3395dbf25ea51bf845937",
      "tree": "368532c7540cdec8df175b668cc9abef48b8bc11",
      "parents": [
        "ac77efbe2b4d2a1e571a4f1e5b6e47de72a7d737"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Wed Jul 21 18:29:25 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Fri Jul 23 08:51:26 2010 -0400"
      },
      "message": "nfsd: move more into nfsd_startup()\n\nThis is just cleanup--it\u0027s harmless to call nfsd_rachache_init,\nnfsd_init_socks, and nfsd_reset_versions more than once.  But there\u0027s no\npoint to it.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "ac77efbe2b4d2a1e571a4f1e5b6e47de72a7d737",
      "tree": "2ebb9f5178a3b81e357f95966f1e2eb0269e8e35",
      "parents": [
        "628b368728e23188ac41b3f00411b02be8e697f1"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Tue Jul 20 14:10:22 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Fri Jul 23 08:51:26 2010 -0400"
      },
      "message": "nfsd: just keep single lockd reference for nfsd\n\nRight now, nfsd keeps a lockd reference for each socket that it has\nopen. This is unnecessary and complicates the error handling on\nstartup and shutdown. Change it to just do a lockd_up when starting\nthe first nfsd thread just do a single lockd_down when taking down the\nlast nfsd thread. Because of the strange way the sv_count is handled\nthis requires an extra flag to tell whether the nfsd_serv holds a\nreference for lockd or not.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "628b368728e23188ac41b3f00411b02be8e697f1",
      "tree": "84fe4d9af9c9ef7415b79060d8caa10d7b020779",
      "parents": [
        "0cd14a061e32d4ddaadad24d86d06cc860010591"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Wed Jul 21 16:40:08 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Fri Jul 23 08:51:25 2010 -0400"
      },
      "message": "nfsd: clean up nfsd_create_serv error handling\n\nThere doesn\u0027t seem to be any need to reset the nfssvc_boot time if the\nnfsd startup failed.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "0cd14a061e32d4ddaadad24d86d06cc860010591",
      "tree": "db6a42968f9069b17ad64200f7e7cd7c90c303bb",
      "parents": [
        "78a8d7c8ca3f0cb5cd2a276c6fc17c8c006d0b3c"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Mon Jul 19 16:50:06 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Fri Jul 23 08:51:24 2010 -0400"
      },
      "message": "nfsd: fix error handling in __write_ports_addxprt\n\n__write_ports_addxprt calls nfsd_create_serv. That increases the\nrefcount of nfsd_serv (which is tracked in sv_nrthreads). The service\nonly decrements the thread count on error, not on success like\n__write_ports_addfd does, so using this interface leaves the nfsd\nthread count high.\n\nFix this by having this function call svc_destroy() on error to release\nthe reference (and possibly to tear down the service) and simply\ndecrement the refcount without tearing down the service on success.\n\nThis makes the sv_threads handling work basically the same in both\n__write_ports_addxprt and __write_ports_addfd.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "78a8d7c8ca3f0cb5cd2a276c6fc17c8c006d0b3c",
      "tree": "852f2db0fe35f7e88bedd9b4a182cb8b045b3c27",
      "parents": [
        "4ad9a344be2291b1e594a4a5aee25c5a5df34a97"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Mon Jul 19 16:50:05 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Fri Jul 23 08:51:23 2010 -0400"
      },
      "message": "nfsd: fix error handling when starting nfsd with rpcbind down\n\nThe refcounting for nfsd is a little goofy. What happens is that we\ncreate the nfsd RPC service, attach sockets to it but don\u0027t actually\nstart the threads until someone writes to the \"threads\" procfile. To do\nthis, __write_ports_addfd will create the nfsd service and then will\ndecrement the refcount when exiting but won\u0027t actually destroy the\nservice.\n\nThis is fine when there aren\u0027t errors, but when there are this can\ncause later attempts to start nfsd to fail. nfsd_serv will be set,\nand that causes __write_versions to return EBUSY.\n\nFix this by calling svc_destroy on nfsd_serv when this function is\ngoing to return error.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    }
  ],
  "next": "4ad9a344be2291b1e594a4a5aee25c5a5df34a97"
}
