)]}'
{
  "log": [
    {
      "commit": "b9ca67b2ddf021491a3741d9555e8ff59b2175ba",
      "tree": "170010fef4f0b36ff01f1f9375d9beb9677178c7",
      "parents": [
        "595afaf9e6ee1b48e13ec4b8bcc8c7dee888161a"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Sep 07 13:42:41 2010 +0200"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Sep 07 13:42:41 2010 +0200"
      },
      "message": "fuse: fix lock annotations\n\nSparse doesn\u0027t understand lock annotations of the form\n__releases(\u0026foo-\u003elock).  Change them to __releases(foo-\u003elock).  Same\nfor __acquires().\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n"
    },
    {
      "commit": "595afaf9e6ee1b48e13ec4b8bcc8c7dee888161a",
      "tree": "18ec100cfce992b61aaca2e0a8d0897e67c72300",
      "parents": [
        "2bfc96a127bc1cc94d26bfaa40159966064f9c8c"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Sep 07 13:42:41 2010 +0200"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Sep 07 13:42:41 2010 +0200"
      },
      "message": "fuse: flush background queue on connection close\n\nDavid Bartly reported that fuse can hang in fuse_get_req_nofail() when\nthe connection to the filesystem server is no longer active.\n\nIf bg_queue is not empty then flush_bg_queue() called from\nrequest_end() can put more requests on to the pending queue.  If this\nhappens while ending requests on the processing queue then those\nbackground requests will be queued to the pending list and never\nended.\n\nAnother problem is that fuse_dev_release() didn\u0027t wake up processes\nsleeping on blocked_waitq.\n\nSolve this by:\n\n a) flushing the background queue before calling end_requests() on the\n    pending and processing queues\n\n b) setting blocked \u003d 0 and waking up processes waiting on\n    blocked_waitq()\n\nThanks to David for an excellent bug report.\n\nReported-by: David Bartley \u003candareed@gmail.com\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nCC: stable@kernel.org\n"
    },
    {
      "commit": "2d45ba381a74a743eeaa2b06c7c5c0d2bf73ba1a",
      "tree": "8a195d072cab99c088004b74ac5889252f348542",
      "parents": [
        "a1d75f258230b75d46aecdf28b2e732413028863"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Mon Jul 12 14:41:40 2010 +0200"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Mon Jul 12 14:41:40 2010 +0200"
      },
      "message": "fuse: add retrieve request\n\nUserspace filesystem can request data to be retrieved from the inode\u0027s\nmapping.  This request is synchronous and the retrieved data is queued\nas a new request.  If the write to the fuse device returns an error\nthen the retrieve request was not completed and a reply will not be\nsent.\n\nOnly present pages are returned in the retrieve reply.  Retrieving\nstops when it finds a non-present page and only data prior to that is\nreturned.\n\nThis request doesn\u0027t change the dirty state of pages.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n"
    },
    {
      "commit": "a1d75f258230b75d46aecdf28b2e732413028863",
      "tree": "2ab11fc692c8426551045b7ab9a290dfa770821c",
      "parents": [
        "7909b1c64078087ac153fb47a2f50793fe3ee7d0"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Mon Jul 12 14:41:40 2010 +0200"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Mon Jul 12 14:41:40 2010 +0200"
      },
      "message": "fuse: add store request\n\nUserspace filesystem can request data to be stored in the inode\u0027s\nmapping.  This request is synchronous and has no reply.  If the write\nto the fuse device returns an error then the store request was not\nfully completed (but may have updated some pages).\n\nIf the stored data overflows the current file size, then the size is\nextended, similarly to a write(2) on the filesystem.\n\nPages which have been completely stored are marked uptodate.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n"
    },
    {
      "commit": "7909b1c64078087ac153fb47a2f50793fe3ee7d0",
      "tree": "83367ca6286f3ebfee8b94533152848e7529e9fb",
      "parents": [
        "815c4163b6c8ebf8152f42b0a5fd015cfdcedc78"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Mon Jul 12 14:41:40 2010 +0200"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Mon Jul 12 14:41:40 2010 +0200"
      },
      "message": "fuse: don\u0027t use atomic kmap\n\nDon\u0027t use atomic kmap for mapping userspace buffers in device\nread/write/splice.\n\nThis is necessary because the next patch (adding store notify)\nrequires that caller of fuse_copy_page() may sleep between\ninvocations.  The simplest way to ensure this is to change the atomic\nkmaps to non-atomic ones.\n\nThankfully architectures where kmap() is not a no-op are going out of\nfashion, so we can ignore the (probably negligible) performance impact\nof this change.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n"
    },
    {
      "commit": "003386fff3e02e51cea882e60f7d28290113964c",
      "tree": "253001a9a0fc609b757362708edc2dcaab9e2a14",
      "parents": [
        "092405cdb66f060918160ae730640b449ed7b827",
        "51921cb746f56983db5a373ca68deb2b0d3ddf01"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 30 09:16:14 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 30 09:16:14 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse:\n  mm: export generic_pipe_buf_*() to modules\n  fuse: support splice() reading from fuse device\n  fuse: allow splice to move pages\n  mm: export remove_from_page_cache() to modules\n  mm: export lru_cache_add_*() to modules\n  fuse: support splice() writing to fuse device\n  fuse: get page reference for readpages\n  fuse: use get_user_pages_fast()\n  fuse: remove unneeded variable\n"
    },
    {
      "commit": "578454ff7eab61d13a26b568f99a89a2c9edc881",
      "tree": "6abdaf9acdd797767c92cb53e04574d3c755779e",
      "parents": [
        "ec96e2fe954c23a54bfdf2673437a39e193a1822"
      ],
      "author": {
        "name": "Kay Sievers",
        "email": "kay.sievers@vrfy.org",
        "time": "Thu May 20 18:07:20 2010 +0200"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Tue May 25 15:08:26 2010 -0700"
      },
      "message": "driver core: add devname module aliases to allow module on-demand auto-loading\n\nThis adds:\n  alias: devname:\u003cname\u003e\nto some common kernel modules, which will allow the on-demand loading\nof the kernel module when the device node is accessed.\n\nIdeally all these modules would be compiled-in, but distros seems too\nmuch in love with their modularization that we need to cover the common\ncases with this new facility. It will allow us to remove a bunch of pretty\nuseless init scripts and modprobes from init scripts.\n\nThe static device node aliases will be carried in the module itself. The\nprogram depmod will extract this information to a file in the module directory:\n  $ cat /lib/modules/2.6.34-00650-g537b60d-dirty/modules.devname\n  # Device nodes to trigger on-demand module loading.\n  microcode cpu/microcode c10:184\n  fuse fuse c10:229\n  ppp_generic ppp c108:0\n  tun net/tun c10:200\n  dm_mod mapper/control c10:235\n\nUdev will pick up the depmod created file on startup and create all the\nstatic device nodes which the kernel modules specify, so that these modules\nget automatically loaded when the device node is accessed:\n  $ /sbin/udevd --debug\n  ...\n  static_dev_create_from_modules: mknod \u0027/dev/cpu/microcode\u0027 c10:184\n  static_dev_create_from_modules: mknod \u0027/dev/fuse\u0027 c10:229\n  static_dev_create_from_modules: mknod \u0027/dev/ppp\u0027 c108:0\n  static_dev_create_from_modules: mknod \u0027/dev/net/tun\u0027 c10:200\n  static_dev_create_from_modules: mknod \u0027/dev/mapper/control\u0027 c10:235\n  udev_rules_apply_static_dev_perms: chmod \u0027/dev/net/tun\u0027 0666\n  udev_rules_apply_static_dev_perms: chmod \u0027/dev/fuse\u0027 0666\n\nA few device nodes are switched to statically allocated numbers, to allow\nthe static nodes to work. This might also useful for systems which still run\na plain static /dev, which is completely unsafe to use with any dynamic minor\nnumbers.\n\nNote:\nThe devname aliases must be limited to the *common* and *single*instance*\ndevice nodes, like the misc devices, and never be used for conceptually limited\nsystems like the loop devices, which should rather get fixed properly and get a\ncontrol node for losetup to talk to, instead of creating a random number of\ndevice nodes in advance, regardless if they are ever used.\n\nThis facility is to hide the mess distros are creating with too modualized\nkernels, and just to hide that these modules are not compiled-in, and not to\npaper-over broken concepts. Thanks! :)\n\nCc: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\nCc: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Alasdair G Kergon \u003cagk@redhat.com\u003e\nCc: Tigran Aivazian \u003ctigran@aivazian.fsnet.co.uk\u003e\nCc: Ian Kent \u003craven@themaw.net\u003e\nSigned-Off-By: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "c3021629a0d820247ee12b6c5192a1d5380e21c6",
      "tree": "eceb75197a9871e99b0b696af8047357686e4223",
      "parents": [
        "ce534fb052928ce556639d7ecf01cbf4e01321e1"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue May 25 15:06:07 2010 +0200"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue May 25 15:06:07 2010 +0200"
      },
      "message": "fuse: support splice() reading from fuse device\n\nAllow userspace filesystem implementation to use splice() to read from\nthe fuse device.\n\nThe userspace filesystem can now transfer data coming from a WRITE\nrequest to an arbitrary file descriptor (regular file, block device or\nsocket) without having to go through a userspace buffer.\n\nThe semantics of using splice() to read messages are:\n\n 1)  with a single splice() call move the whole message from the fuse\n     device to a temporary pipe\n 2)  read the header from the pipe and determine the message type\n 3a) if message is a WRITE then splice data from pipe to destination\n 3b) else read rest of message to userspace buffer\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n"
    },
    {
      "commit": "ce534fb052928ce556639d7ecf01cbf4e01321e1",
      "tree": "c09f7c592a41d635d7f2f54fc7fe10594f332b69",
      "parents": [
        "a52116aba5b3eed0ee41f70b794cc1937acd5cb8"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue May 25 15:06:07 2010 +0200"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue May 25 15:06:07 2010 +0200"
      },
      "message": "fuse: allow splice to move pages\n\nWhen splicing buffers to the fuse device with SPLICE_F_MOVE, try to\nmove pages from the pipe buffer into the page cache.  This allows\npopulating the fuse filesystem\u0027s cache without ever touching the page\ncontents, i.e. zero copy read capability.\n\nThe following steps are performed when trying to move a page into the\npage cache:\n\n - buf-\u003eops-\u003econfirm() to make sure the new page is uptodate\n - buf-\u003eops-\u003esteal() to try to remove the new page from it\u0027s previous place\n - remove_from_page_cache() on the old page\n - add_to_page_cache_locked() on the new page\n\nIf any of the above steps fail (non fatally) then the code falls back\nto copying the page.  In particular -\u003esteal() will fail if there are\nexternal references (other than the page cache and the pipe buffer) to\nthe page.\n\nAlso since the remove_from_page_cache() + add_to_page_cache_locked()\nare non-atomic it is possible that the page cache is repopulated in\nbetween the two and add_to_page_cache_locked() will fail.  This could\nbe fixed by creating a new atomic replace_page_cache_page() function.\n\nfuse_readpages_end() needed to be reworked so it works even if\npage-\u003emapping is NULL for some or all pages which can happen if the\nadd_to_page_cache_locked() failed.\n\nA number of sanity checks were added to make sure the stolen pages\ndon\u0027t have weird flags set, etc...  These could be moved into generic\nsplice/steal code.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n"
    },
    {
      "commit": "dd3bb14f44a6382de2508ec387c7e5569ad2d4f1",
      "tree": "4c84a75f9f40a55f7f7d6da0e3c83b2f073bf4e8",
      "parents": [
        "b5dd328537edeb4c1d2e71e344b6c443e0874d90"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue May 25 15:06:06 2010 +0200"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue May 25 15:06:06 2010 +0200"
      },
      "message": "fuse: support splice() writing to fuse device\n\nAllow userspace filesystem implementation to use splice() to write to\nthe fuse device.  The semantics of using splice() are:\n\n 1) buffer the message header and data in a temporary pipe\n 2) with a *single* splice() call move the message from the temporary pipe\n    to the fuse device\n\nThe READ reply message has the most interesting use for this, since\nnow the data from an arbitrary file descriptor (which could be a\nregular file, a block device or a socket) can be tranferred into the\nfuse device without having to go through a userspace buffer.  It will\nalso allow zero copy moving of pages.\n\nOne caveat is that the protocol on the fuse device requires the length\nof the whole message to be written into the header.  But the length of\nthe data transferred into the temporary pipe may not be known in\nadvance.  The current library implementation works around this by\nusing vmplice to write the header and modifying the header after\nsplicing the data into the pipe (error handling omitted):\n\n\tstruct fuse_out_header out;\n\n\tiov.iov_base \u003d \u0026out;\n\tiov.iov_len \u003d sizeof(struct fuse_out_header);\n\tvmsplice(pip[1], \u0026iov, 1, 0);\n\tlen \u003d splice(input_fd, input_offset, pip[1], NULL, len, 0);\n\t/* retrospectively modify the header: */\n\tout.len \u003d len + sizeof(struct fuse_out_header);\n\tsplice(pip[0], NULL, fuse_chan_fd(req-\u003ech), NULL, out.len, flags);\n\nThis works since vmsplice only saves a pointer to the data, it does\nnot copy the data itself.\n\nSince pipes are currently limited to 16 pages and messages need to be\nspliced atomically, the length of the data is limited to 15 pages (or\n60kB for 4k pages).\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n"
    },
    {
      "commit": "1bf94ca73ea524228b864275efa44373ebb939a0",
      "tree": "6ad0f17f4da1f1dd8a1aae2c77e5865fb5f42f33",
      "parents": [
        "4aa0edd294f69e3100973a0ecfa1e6b5ab42d83a"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue May 25 15:06:06 2010 +0200"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue May 25 15:06:06 2010 +0200"
      },
      "message": "fuse: use get_user_pages_fast()\n\nReplace uses of get_user_pages() with get_user_pages_fast().  It looks\nnicer and should be faster in most cases.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n"
    },
    {
      "commit": "b2d82ee3c8b2193ee5bc7eca4687ee9be30abd34",
      "tree": "41986357886eda7e8e92c33ed32a743afee3f3e6",
      "parents": [
        "b21dda438baa450a76a375a35653ae0377793fab"
      ],
      "author": {
        "name": "Fang Wenqi",
        "email": "anton.fang@gmail.com",
        "time": "Wed Dec 30 18:37:13 2009 +0800"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Fri Feb 05 12:08:31 2010 +0100"
      },
      "message": "fuse: fix large stack use\n\ngcc 4.4 warns about:\n  fs/fuse/dev.c: In function ‘fuse_notify_inval_entry’:\n  fs/fuse/dev.c:925: warning: the frame size of 1060 bytes is larger than 1024 bytes\n\nThe problem is we declare two structures and a large array on the stack,\nI move the array alway from the stack and allocate memory for it dynamically.\n\nSigned-off-by: Fang Wenqi \u003cantonf@turbolinux.com.cn\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n"
    },
    {
      "commit": "b21dda438baa450a76a375a35653ae0377793fab",
      "tree": "879c11086ca038c8ca1ccd8e829c40a317675b94",
      "parents": [
        "abe94c756c08d50566c09a65b9c7fe72f83071c5"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Fri Feb 05 12:08:31 2010 +0100"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Fri Feb 05 12:08:31 2010 +0100"
      },
      "message": "fuse: cleanup in fuse_notify_inval_...()\n\nSmall cleanup in fuse_notify_inval_inode() and\nfuse_notify_inval_entry().\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n"
    },
    {
      "commit": "9eead2a8115d2a6aecf267c292f751f7761fa5f8",
      "tree": "133cc2c9616bbc53b92fdf68137621a11e3c80c6",
      "parents": [
        "6f130478e24d810078c3f0ee292bcc4ec034dcce",
        "79a9d99434b104c562f30f21b75317667f444793"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Sep 18 09:23:03 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Sep 18 09:23:03 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse:\n  fuse: add fusectl interface to max_background\n  fuse: limit user-specified values of max background requests\n  fuse: use drop_nlink() instead of direct nlink manipulation\n  fuse: document protocol version negotiation\n  fuse: make the number of max background requests and congestion threshold tunable\n"
    },
    {
      "commit": "81e4e1ba7ed4a1fdcf0e2ee944f1575010471464",
      "tree": "a97bd3c8ec33dd18598169db83555bf5bd237b91",
      "parents": [
        "373c0a7ed3ea3b34efedb7c83ffb521adff7c894"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 11 11:22:34 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 11 11:22:34 2009 -0700"
      },
      "message": "Revert \"fuse: Fix build error\" as unnecessary\n\nThis reverts commit 097041e576ee3a50d92dd643ee8ca65bf6a62e21.\n\nTrond had a better fix, which is the parent of this one (\"Fix compile\nerror due to congestion_wait() changes\")\n\nRequested-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nAcked-by: Larry Finger \u003cLarry.Finger@lwfinger.net\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "097041e576ee3a50d92dd643ee8ca65bf6a62e21",
      "tree": "103bb259744701fb702015d539ecb4fe12a0fb83",
      "parents": [
        "69ca06c9454169c4a9303e8834adae9080f94859"
      ],
      "author": {
        "name": "Larry Finger",
        "email": "Larry.Finger@lwfinger.net",
        "time": "Fri Jul 10 20:06:42 2009 -0500"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 10 19:09:46 2009 -0700"
      },
      "message": "fuse: Fix build error\n\nWhen building v2.6.31-rc2-344-g69ca06c, the following build errors are\nfound due to missing includes:\n\n CC [M]  fs/fuse/dev.o\nfs/fuse/dev.c: In function ‘request_end’:\nfs/fuse/dev.c:289: error: ‘BLK_RW_SYNC’ undeclared (first use in this function)\n...\nfs/nfs/write.c: In function ‘nfs_set_page_writeback’:\nfs/nfs/write.c:207: error: ‘BLK_RW_ASYNC’ undeclared (first use in this function)\n\nSigned-off-by: Larry Finger@lwfinger.net\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8aa7e847d834ed937a9ad37a0f2ad5b8584c1ab0",
      "tree": "76c8b4f1362a928d426f2201790ab5d128f57724",
      "parents": [
        "c2cc49a2f8a479dde96a599646d30b6cc9dbed78"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Jul 09 14:52:32 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@carl.(none)",
        "time": "Fri Jul 10 20:31:53 2009 +0200"
      },
      "message": "Fix congestion_wait() sync/async vs read/write confusion\n\nCommit 1faa16d22877f4839bd433547d770c676d1d964c accidentally broke\nthe bdi congestion wait queue logic, causing us to wait on congestion\nfor WRITE (\u003d\u003d 1) when we really wanted BLK_RW_ASYNC (\u003d\u003d 0) instead.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "7a6d3c8b3049d07123628f2bf57127bba2cc878f",
      "tree": "bfa09bd7e87753eb777699e0566e396ae639532c",
      "parents": [
        "8e4a718ff38d8539938ec3421935904c27e00c39"
      ],
      "author": {
        "name": "Csaba Henk",
        "email": "csaba@gluster.com",
        "time": "Wed Jul 01 17:28:41 2009 -0700"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Jul 07 17:28:52 2009 +0200"
      },
      "message": "fuse: make the number of max background requests and congestion threshold tunable\n\nThe practical values for these limits depend on the design of the\nfilesystem server so let userspace set them at initialization time.\n\nSigned-off-by: Csaba Henk \u003ccsaba@gluster.com\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n"
    },
    {
      "commit": "3b463ae0c6264f70e5d4c0a9c46af20fed43c96e",
      "tree": "03c6abdd0671d74452cbd1f6fc6d637363eb6389",
      "parents": [
        "e0a43ddcc08c34dbd666d93600fd23914505f4aa"
      ],
      "author": {
        "name": "John Muir",
        "email": "muirj@nortel.com",
        "time": "Sun May 31 11:13:57 2009 -0400"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Jun 30 20:12:24 2009 +0200"
      },
      "message": "fuse: invalidation reverse calls\n\nAdd notification messages that allow the filesystem to invalidate VFS\ncaches.\n\nTwo notifications are added:\n\n 1) inode invalidation\n\n   - invalidate cached attributes\n   - invalidate a range of pages in the page cache (this is optional)\n\n 2) dentry invalidation\n\n   - try to invalidate a subtree in the dentry cache\n\nCare must be taken while accessing the \u0027struct super_block\u0027 for the\nmount, as it can go away while an invalidation is in progress.  To\nprevent this, introduce a rw-semaphore, that is taken for read during\nthe invalidation and taken for write in the -\u003ekill_sb callback.\n\nCc: Csaba Henk \u003ccsaba@gluster.com\u003e\nCc: Anand Avati \u003cavati@zresearch.com\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n"
    },
    {
      "commit": "b4c458b3a23d76936e76678f2074b1528f129f7a",
      "tree": "5b256bf81066e41442fa776cb668156bb4d58804",
      "parents": [
        "28d0325ce6e0a52f53d8af687e6427fee59004d3"
      ],
      "author": {
        "name": "Csaba Henk",
        "email": "csaba@gluster.com",
        "time": "Mon Jun 29 03:26:53 2009 +0200"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Jun 30 20:06:23 2009 +0200"
      },
      "message": "fuse: fix return value of fuse_dev_write()\n\nOn 64 bit systems -- where sizeof(ssize_t) \u003e sizeof(int) -- the following test\nexposes a bug due to a non-careful return of an int or unsigned value:\n\nimplement a FUSE filesystem which sends an unsolicited notification to\nthe kernel with invalid opcode. The respective write to /dev/fuse\nwill return (1 \u003c\u003c 32) - EINVAL with errno \u003d\u003d 0 instead of -1 with\nerrno \u003d\u003d EINVAL.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nCC: stable@kernel.org\n"
    },
    {
      "commit": "08cbf542bf24fb0481a54526b177347ae4046f5e",
      "tree": "75ac556b4fb464172f9e1f4deca7e2d3b7649802",
      "parents": [
        "a325f9b92273d6c64ec56167905b951b9827ec33"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Apr 14 10:54:53 2009 +0900"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Apr 28 16:56:42 2009 +0200"
      },
      "message": "fuse: export symbols to be used by CUSE\n\nExport the following symbols for CUSE.\n\nfuse_conn_put()\nfuse_conn_get()\nfuse_conn_kill()\nfuse_send_init()\nfuse_do_open()\nfuse_sync_release()\nfuse_direct_io()\nfuse_do_ioctl()\nfuse_file_poll()\nfuse_request_alloc()\nfuse_get_req()\nfuse_put_request()\nfuse_request_send()\nfuse_abort_conn()\nfuse_dev_release()\nfuse_dev_operations\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n"
    },
    {
      "commit": "a325f9b92273d6c64ec56167905b951b9827ec33",
      "tree": "05c80627acf609f12c8117c254c3e1feb2ec5689",
      "parents": [
        "797759aaf31351a1ab1b9130c4f180ce496f46c5"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Apr 14 10:54:52 2009 +0900"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Apr 28 16:56:41 2009 +0200"
      },
      "message": "fuse: update fuse_conn_init() and separate out fuse_conn_kill()\n\nUpdate fuse_conn_init() such that it doesn\u0027t take @sb and move bdi\nregistration into a separate function.  Also separate out\nfuse_conn_kill() from fuse_put_super().\n\nThese will be used to implement cuse.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n"
    },
    {
      "commit": "f6d47a1761896dcd89e3184399a8962dff17267d",
      "tree": "60a7f1eee203f07db6f2a9d890b8ec78f190ea57",
      "parents": [
        "26c3679101dbccc054dcf370143941844ba70531"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Mon Jan 26 15:00:59 2009 +0100"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.de",
        "time": "Mon Jan 26 15:00:59 2009 +0100"
      },
      "message": "fuse: fix poll notify\n\nMove fuse_copy_finish() to before calling fuse_notify_poll_wakeup().\nThis is not a big issue because fuse_notify_poll_wakeup() should be\natomic, but it\u0027s cleaner this way, and later uses of notification will\nneed to be able to finish the copying before performing some actions.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n"
    },
    {
      "commit": "26c3679101dbccc054dcf370143941844ba70531",
      "tree": "983066c18cacdd2d96534040d076dd66310acfe5",
      "parents": [
        "c2b8f006909b9bf9e165dfdf3c378527938c4497"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Mon Jan 26 15:00:59 2009 +0100"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.de",
        "time": "Mon Jan 26 15:00:59 2009 +0100"
      },
      "message": "fuse: destroy bdi on umount\n\nIf a fuse filesystem is unmounted but the device file descriptor\nremains open and a new mount reuses the old device number, then the\nmount fails with EEXIST and the following warning is printed in the\nkernel log:\n\n  WARNING: at fs/sysfs/dir.c:462 sysfs_add_one+0x35/0x3d()\n  sysfs: duplicate filename \u00270:15\u0027 can not be created\n\nThe cause is that the bdi belonging to the fuse filesystem was\ndestoryed only after the device file was released.  Fix this by\ncalling bdi_destroy() from fuse_put_super() instead.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nCC: stable@kernel.org\n"
    },
    {
      "commit": "5fec8bdbf9a1c4df4ad3f20e52aa2d8caed490c8",
      "tree": "e8c1b1a9f3ea6b6a0edb972f082d0d7338c98af4",
      "parents": [
        "59e3af21e94bd56f6a31ba774786a2bfc753581b",
        "5d9ec854bfb6f1e122b1d96b344164a71eac5be8"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 17:01:20 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 17:01:20 2009 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse:\n  fuse: clean up annotations of fc-\u003elock\n  fuse: fix sparse warning in ioctl\n  fuse: update interface version\n  fuse: add fuse_conn-\u003erelease()\n  fuse: separate out fuse_conn_init() from new_conn()\n  fuse: add fuse_ prefix to several functions\n  fuse: implement poll support\n  fuse: implement unsolicited notification\n  fuse: add file kernel handle\n  fuse: implement ioctl support\n  fuse: don\u0027t let fuse_req-\u003eend() put the base reference\n  fuse: move FUSE_MINOR to miscdevice.h\n  fuse: style fixes\n"
    },
    {
      "commit": "5d9ec854bfb6f1e122b1d96b344164a71eac5be8",
      "tree": "ed74270562b414a35919da5b0fa372e10ebaf254",
      "parents": [
        "c9f0523d88fd208ce094995a0ac63f7c04e56bab"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Tue Dec 02 14:49:42 2008 +0100"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.de",
        "time": "Tue Dec 02 14:49:42 2008 +0100"
      },
      "message": "fuse: clean up annotations of fc-\u003elock\n\nMakes the existing annotations match the more common one per line style\nand adds a few missing annotations.\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n"
    },
    {
      "commit": "b93f858ab2a4bee779c360002f313ad6c3504cdc",
      "tree": "0523108e8c76035f35a3712ced5bf8e329731c78",
      "parents": [
        "95668a69a4bb862063c4d28a746e55107dee7b98"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Nov 26 12:03:55 2008 +0100"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Wed Nov 26 12:03:55 2008 +0100"
      },
      "message": "fuse: add fuse_ prefix to several functions\n\nAdd fuse_ prefix to request_send*() and get_root_inode() as some of\nthose functions will be exported for CUSE.  With or without CUSE\nexport, having the function names scoped is a good idea for\ndebuggability.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n"
    },
    {
      "commit": "95668a69a4bb862063c4d28a746e55107dee7b98",
      "tree": "0679e0f43274648bad70e694a9efb8bcfed55adc",
      "parents": [
        "8599396b5062bf6bd2a0b433503849e2322df1c2"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Nov 26 12:03:55 2008 +0100"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Wed Nov 26 12:03:55 2008 +0100"
      },
      "message": "fuse: implement poll support\n\nImplement poll support.  Polled files are indexed using kh in a RB\ntree rooted at fuse_conn-\u003epolled_files.\n\nClient should send FUSE_NOTIFY_POLL notification once after processing\nFUSE_POLL which has FUSE_POLL_SCHEDULE_NOTIFY set.  Sending\nnotification unconditionally after the latest poll or everytime file\ncontent might have changed is inefficient but won\u0027t cause malfunction.\n\nfuse_file_poll() can sleep and requires patches from the following\nthread which allows f_op-\u003epoll() to sleep.\n\n  http://thread.gmane.org/gmane.linux.kernel/726176\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n"
    },
    {
      "commit": "8599396b5062bf6bd2a0b433503849e2322df1c2",
      "tree": "8ce5f253eaf5fe28324c497db780d824ea60bb5c",
      "parents": [
        "acf99433d98c2570a619d8fb8b51abce4e532059"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Nov 26 12:03:55 2008 +0100"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Wed Nov 26 12:03:55 2008 +0100"
      },
      "message": "fuse: implement unsolicited notification\n\nClients always used to write only in response to read requests.  To\nimplement poll efficiently, clients should be able to issue\nunsolicited notifications.  This patch implements basic notification\nsupport.\n\nZero fuse_out_header.unique is now accepted and considered unsolicited\nnotification and the error field contains notification code.  This\npatch doesn\u0027t implement any actual notification.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n"
    },
    {
      "commit": "e9bb09dd6c5b8ec6a971ed6251df5eba3a4c8d3c",
      "tree": "5012a2046330c00f41fd65dc20867b01b80eee5d",
      "parents": [
        "193da6092764ab693da7170c5badbf60d7758c1d"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Nov 26 12:03:54 2008 +0100"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Wed Nov 26 12:03:54 2008 +0100"
      },
      "message": "fuse: don\u0027t let fuse_req-\u003eend() put the base reference\n\nfuse_req-\u003eend() was supposed to be put the base reference but there\u0027s\nno reason why it should.  It only makes things more complex.  Move it\nout of -\u003eend() and make it the responsibility of request_end().\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n"
    },
    {
      "commit": "1729a16c2c92bbd9e54ac7cad3101fea2e073aa5",
      "tree": "6814c8f122d6e7e6993d3af6ea427b3958b9a4f2",
      "parents": [
        "ed313489badef16d700f5a3be50e8fd8f8294bc8"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Wed Nov 26 12:03:54 2008 +0100"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Wed Nov 26 12:03:54 2008 +0100"
      },
      "message": "fuse: style fixes\n\nFix coding style errors reported by checkpatch and others.  Uptdate\ncopyright date to 2008.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n"
    },
    {
      "commit": "2186a71cbcddda946dd3cfccd5285e210ec3af10",
      "tree": "8e996f7d8c227184508a2ca09502a53e9e015764",
      "parents": [
        "f0ce7ee3a8ec1e80b6f460983ef1f26e603026f5"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Nov 14 10:38:53 2008 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri Nov 14 10:38:53 2008 +1100"
      },
      "message": "CRED: Wrap task credential accesses in the FUSE filesystem\n\nWrap access to task credentials so that they can be separated more easily from\nthe task_struct during the introduction of COW creds.\n\nChange most current-\u003e(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id().\n\nChange some task-\u003ee?[ug]id to task_e?[ug]id().  In some places it makes more\nsense to use RCU directly rather than a convenient wrapper; these will be\naddressed by later patches.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nReviewed-by: James Morris \u003cjmorris@namei.org\u003e\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nCc: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nCc: fuse-devel@lists.sourceforge.net\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "233e70f4228e78eb2f80dc6650f65d3ae3dbf17c",
      "tree": "4e18fbe1851e6d2161b7f18265cb21f8a61e3ce7",
      "parents": [
        "3318a386e4ca68c76e0294363d29bdc46fcad670"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ZenIV.linux.org.uk",
        "time": "Fri Oct 31 23:28:30 2008 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Nov 01 09:49:46 2008 -0700"
      },
      "message": "saner FASYNC handling on file close\n\nAs it is, all instances of -\u003erelease() for files that have -\u003efasync()\nneed to remember to evict file from fasync lists; forgetting that\ncreates a hole and we actually have a bunch that *does* forget.\n\nSo let\u0027s keep our lives simple - let __fput() check FASYNC in\nfile-\u003ef_flags and call -\u003efasync() there if it\u0027s been set.  And lose that\ncrap in -\u003erelease() instances - leaving it there is still valid, but we\ndon\u0027t have to bother anymore.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4dbf930ed6c1f8aa992937d0461f8f70d4004aad",
      "tree": "978e8da5bbc97a3cfc9b44b810b0f9521154886e",
      "parents": [
        "5559b8f4d1f630b8614b6c8e13b8bf6c9c45d7d7"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Wed Apr 30 00:54:45 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:51 2008 -0700"
      },
      "message": "fuse: fix sparse warnings\n\nfs/fuse/dev.c:306:2: warning: context imbalance in \u0027wait_answer_interruptible\u0027 - unexpected unlock\nfs/fuse/dev.c:361:2: warning: context imbalance in \u0027request_wait_answer\u0027 - unexpected unlock\nfs/fuse/dev.c:1002:4: warning: context imbalance in \u0027end_io_requests\u0027 - unexpected unlock\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3be5a52b30aa5cf9d795b7634f728f612197b1c4",
      "tree": "5a78251a351e273cf2061a527a381c7ba256fc15",
      "parents": [
        "b88473f73e6d7b6af9cfc4ecc349d82c75d9a6af"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Wed Apr 30 00:54:41 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:50 2008 -0700"
      },
      "message": "fuse: support writable mmap\n\nQuoting Linus (3 years ago, FUSE inclusion discussions):\n\n  \"User-space filesystems are hard to get right. I\u0027d claim that they\n   are almost impossible, unless you limit them somehow (shared\n   writable mappings are the nastiest part - if you don\u0027t have those,\n   you can reasonably limit your problems by limiting the number of\n   dirty pages you accept through normal \"write()\" calls).\"\n\nInstead of attempting the impossible, I\u0027ve just waited for the dirty page\naccounting infrastructure to materialize (thanks to Peter Zijlstra and\nothers).  This nicely solved the biggest problem: limiting the number of pages\nused for write caching.\n\nSome small details remained, however, which this largish patch attempts to\naddress.  It provides a page writeback implementation for fuse, which is\ncompletely safe against VM related deadlocks.  Performance may not be very\ngood for certain usage patterns, but generally it should be acceptable.\n\nIt has been tested extensively with fsx-linux and bash-shared-mapping.\n\nFuse page writeback design\n--------------------------\n\nfuse_writepage() allocates a new temporary page with GFP_NOFS|__GFP_HIGHMEM.\nIt copies the contents of the original page, and queues a WRITE request to the\nuserspace filesystem using this temp page.\n\nThe writeback is finished instantly from the MM\u0027s point of view: the page is\nremoved from the radix trees, and the PageDirty and PageWriteback flags are\ncleared.\n\nFor the duration of the actual write, the NR_WRITEBACK_TEMP counter is\nincremented.  The per-bdi writeback count is not decremented until the actual\nwrite completes.\n\nOn dirtying the page, fuse waits for a previous write to finish before\nproceeding.  This makes sure, there can only be one temporary page used at a\ntime for one cached page.\n\nThis approach is wasteful in both memory and CPU bandwidth, so why is this\ncomplication needed?\n\nThe basic problem is that there can be no guarantee about the time in which\nthe userspace filesystem will complete a write.  It may be buggy or even\nmalicious, and fail to complete WRITE requests.  We don\u0027t want unrelated parts\nof the system to grind to a halt in such cases.\n\nAlso a filesystem may need additional resources (particularly memory) to\ncomplete a WRITE request.  There\u0027s a great danger of a deadlock if that\nallocation may wait for the writepage to finish.\n\nCurrently there are several cases where the kernel can block on page\nwriteback:\n\n  - allocation order is larger than PAGE_ALLOC_COSTLY_ORDER\n  - page migration\n  - throttle_vm_writeout (through NR_WRITEBACK)\n  - sync(2)\n\nOf course in some cases (fsync, msync) we explicitly want to allow blocking.\nSo for these cases new code has to be added to fuse, since the VM is not\ntracking writeback pages for us any more.\n\nAs an extra safetly measure, the maximum dirty ratio allocated to a single\nfuse filesystem is set to 1% by default.  This way one (or several) buggy or\nmalicious fuse filesystems cannot slow down the rest of the system by hogging\ndirty memory.\n\nWith appropriate privileges, this limit can be raised through\n\u0027/sys/class/bdi/\u003cbdi\u003e/max_ratio\u0027.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d12def1bcb809b6172ee207a24e00a0a4398df1d",
      "tree": "96e151de1e80cacd9202a00b77654533a9754207",
      "parents": [
        "b57d426445c98789265de6a9338cdb06462d15fb"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Wed Feb 06 01:38:39 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Feb 06 10:41:13 2008 -0800"
      },
      "message": "fuse: limit queued background requests\n\nLibfuse basically creates a new thread for each new request.  This is fine for\nsynchronous requests, which are naturally limited.  However background\nrequests (especially writepage) can cause a thread creation storm.\n\nTo avoid this, limit the number of background requests available to userspace.\n\nThis is done by introducing another queue for background requests, and a\ncounter for the number of \"active\" requests, which are currently available for\nuserspace.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c9c9d7df5f8aed8b738f1ace45700e2001c1faeb",
      "tree": "04b7ef11d49758152c80c010f6a287f83d53299d",
      "parents": [
        "a131de0a482ac95e6469f56981c7b063593fdc5d"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Oct 16 23:31:05 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:43:04 2007 -0700"
      },
      "message": "fuse: no ENOENT from fuse device read\n\nDon\u0027t return -ENOENT for a read() on the fuse device when the request was\naborted.  Instead return -ENODEV, meaning the filesystem has been\nforce-umounted or aborted.\n\nPreviously ENOENT meant that the request was interrupted, but now the\n\u0027aborted\u0027 flag is not set in case of interrupts.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a131de0a482ac95e6469f56981c7b063593fdc5d",
      "tree": "0799985119f15525cc8c3c93a4cacad307405a5a",
      "parents": [
        "819c4b3b4009275caae973691378235c177a1429"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Oct 16 23:31:04 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:43:04 2007 -0700"
      },
      "message": "fuse: no abort on interrupt\n\nDon\u0027t set \u0027aborted\u0027 flag on a request if it\u0027s interrupted.  We have to wait\nfor the answer anyway, and this would only a very little time while copying\nthe reply.\n\nThis means, that write() on the fuse device will not return -ENOENT during\nnormal operation, only if the filesystem is aborted by a forced umount or\nthrough the fusectl interface.\n\nThis could simplify userspace code somewhat when backward compatibility with\nearlier kernel versions is not required.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "819c4b3b4009275caae973691378235c177a1429",
      "tree": "a959e68702db2359f52ffdf23644c3aa0be176ce",
      "parents": [
        "ebc14c4dbeb56195950058db9aa32de06c22de0d"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Oct 16 23:31:04 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:43:04 2007 -0700"
      },
      "message": "fuse: cleanup in release\n\nMove dput/mntput pair from request_end() to fuse_release_end(), because\nthere\u0027s no other place they are used.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c756e0a4d79202535774806f148026e40466a5eb",
      "tree": "aa769ecfe2204e2e1969108d2c391b88b95e983b",
      "parents": [
        "de5e3dec421c44c999071b8f7e0580ad2ade92ae"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Oct 16 23:31:00 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:43:03 2007 -0700"
      },
      "message": "fuse: add reference counting to fuse_file\n\nMake lifetime of \u0027struct fuse_file\u0027 independent from \u0027struct file\u0027 by adding a\nreference counter and destructor.\n\nThis will enable asynchronous page writeback, where it cannot be guaranteed,\nthat the file is not released while a request with this file handle is being\nserved.\n\nThe actual RELEASE request is only sent when there are no more references to\nthe fuse_file.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "de5e3dec421c44c999071b8f7e0580ad2ade92ae",
      "tree": "c327562a78335346704c382c5b220b13c9208589",
      "parents": [
        "f92b99b9dccb61760b345baf40ed37f59b91f8af"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Oct 16 23:31:00 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:43:03 2007 -0700"
      },
      "message": "fuse: fix reserved request wake up\n\nUse wake_up_all instead of wake_up in put_reserved_req(), otherwise it is\npossible that the right task is not woken up.\n\nAlso create a separate reserved_req_waitq in addition to the blocked_waitq,\nsince they fulfill totally separate functions.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f92b99b9dccb61760b345baf40ed37f59b91f8af",
      "tree": "1460ac391186be79beb79a6d4030cc387239681c",
      "parents": [
        "fdc1ca8abae72c5829e099fd35626b83ecb12666"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Oct 16 23:30:59 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:43:03 2007 -0700"
      },
      "message": "fuse: update backing_dev_info congestion state\n\nSet the read and write congestion state if the request queue is close to\nblocking, and clear it when it\u0027s not.\n\nThis prevents unnecessary blocking in readahead and (when writable mmaps are\nallowed) writeback.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "20c2df83d25c6a95affe6157a4c9cac4cf5ffaac",
      "tree": "415c4453d2b17a50abe7a3e515177e1fa337bd67",
      "parents": [
        "64fb98fc40738ae1a98bcea9ca3145b89fb71524"
      ],
      "author": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Fri Jul 20 10:11:58 2007 +0900"
      },
      "committer": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Fri Jul 20 10:11:58 2007 +0900"
      },
      "message": "mm: Remove slab destructors from kmem_cache_create().\n\nSlab destructors were no longer supported after Christoph\u0027s\nc59def9f222d44bb7e2f0a559f2906191a0862d7 change. They\u0027ve been\nBUGs for both slab and slub, and slob never supported them\neither.\n\nThis rips out support for the dtor pointer from kmem_cache_create()\ncompletely and fixes up every single callsite in the kernel (there were\nabout 224, not including the slab allocator definitions themselves,\nor the documentation references).\n\nSigned-off-by: Paul Mundt \u003clethal@linux-sh.org\u003e\n"
    },
    {
      "commit": "e18b890bb0881bbab6f4f1a6cd20d9c60d66b003",
      "tree": "4828be07e1c24781c264b42c5a75bcd968223c3f",
      "parents": [
        "441e143e95f5aa1e04026cb0aa71c801ba53982f"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed Dec 06 20:33:20 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:25 2006 -0800"
      },
      "message": "[PATCH] slab: remove kmem_cache_t\n\nReplace all uses of kmem_cache_t with struct kmem_cache.\n\nThe patch was generated using the following script:\n\n\t#!/bin/sh\n\t#\n\t# Replace one string by another in all the kernel sources.\n\t#\n\n\tset -e\n\n\tfor file in `find * -name \"*.c\" -o -name \"*.h\"|xargs grep -l $1`; do\n\t\tquilt add $file\n\t\tsed -e \"1,\\$s/$1/$2/g\" $file \u003e/tmp/$$\n\t\tmv /tmp/$$ $file\n\t\tquilt refresh\n\tdone\n\nThe script was run like this\n\n\tsh replace kmem_cache_t \"struct kmem_cache\"\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e94b1766097d53e6f3ccfb36c8baa562ffeda3fc",
      "tree": "93fa0a8ab84976d4e89c50768ca8b8878d642a0d",
      "parents": [
        "54e6ecb23951b195d02433a741c7f7cb0b796c78"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed Dec 06 20:33:17 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:24 2006 -0800"
      },
      "message": "[PATCH] slab: remove SLAB_KERNEL\n\nSLAB_KERNEL is an alias of GFP_KERNEL.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "ee0b3e671baff681d69fbf0db33b47603c0a8280",
      "tree": "3202ff815b2196c6c353bc5b28d7a2800df273ec",
      "parents": [
        "027445c37282bc1ed26add45e573ad2d3e4860a5"
      ],
      "author": {
        "name": "Badari Pulavarty",
        "email": "pbadari@us.ibm.com",
        "time": "Sat Sep 30 23:28:47 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Oct 01 00:39:28 2006 -0700"
      },
      "message": "[PATCH] Remove readv/writev methods and use aio_read/aio_write instead\n\nThis patch removes readv() and writev() methods and replaces them with\naio_read()/aio_write() methods.\n\nSigned-off-by: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "105f4d7a813e9ef6be58549f5d2a49af1764da19",
      "tree": "8dcb1f371f05ff8699919eebe7e187c8f74c5844",
      "parents": [
        "99fc705996285ed2746c0c8ae8313d0a04d62ec9"
      ],
      "author": {
        "name": "Josh Triplett",
        "email": "josht@us.ibm.com",
        "time": "Fri Sep 29 01:59:25 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Sep 29 09:18:08 2006 -0700"
      },
      "message": "[PATCH] fuse: add lock annotations to request_end and fuse_read_interrupt\n\nrequest_end and fuse_read_interrupt release fc-\u003elock.  Add lock annotations\nto these two functions so that sparse can check callers for lock pairing,\nand so that sparse will not complain about these functions since they\nintentionally use locks in this manner.\n\nSigned-off-by: Josh Triplett \u003cjosh@freedesktop.org\u003e\nAcked-by: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "a4d27e75ffb7b8ecb7eed0c7db0df975525f3fd7",
      "tree": "2353706a33196438547ed4651afd9f2d81dd96e8",
      "parents": [
        "f9a2842e5612b93fa20a624a8baa6c2a7ecea504"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Sun Jun 25 05:48:54 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Jun 25 10:01:19 2006 -0700"
      },
      "message": "[PATCH] fuse: add request interruption\n\nAdd synchronous request interruption.  This is needed for file locking\noperations which have to be interruptible.  However filesystem may implement\ninterruptibility of other operations (e.g.  like NFS \u0027intr\u0027 mount option).\n\nSigned-off-by: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f9a2842e5612b93fa20a624a8baa6c2a7ecea504",
      "tree": "cc6865cc0a60a35b2f1740662313d288d9a20353",
      "parents": [
        "33649c91a3df57c1090a657637d44b896de367e7"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Sun Jun 25 05:48:53 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Jun 25 10:01:19 2006 -0700"
      },
      "message": "[PATCH] fuse: rename the interrupted flag\n\nRename the \u0027interrupted\u0027 flag to \u0027aborted\u0027, since it indicates exactly that,\nand next patch will introduce an \u0027interrupted\u0027 flag for a\n\nSigned-off-by: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "33649c91a3df57c1090a657637d44b896de367e7",
      "tree": "1ee4871a65f2b37a931c796463eb39737a32cbaa",
      "parents": [
        "7142125937e1482ad3ae4366594c6586153dfc86"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Sun Jun 25 05:48:52 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Jun 25 10:01:19 2006 -0700"
      },
      "message": "[PATCH] fuse: ensure FLUSH reaches userspace\n\nAll POSIX locks owned by the current task are removed on close().  If the\nFLUSH request resulting initiated by close() fails to reach userspace, there\nmight be locks remaining, which cannot be removed.\n\nThe only reason it could fail, is if allocating the request fails.  In this\ncase use the request reserved for RELEASE, or if that is currently used by\nanother FLUSH, wait for it to become available.\n\nSigned-off-by: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "bafa96541b250a7051e3fbc5de6e8369daf8ffec",
      "tree": "9b758c424fcda2d263c71f25358bb65a0abc15d4",
      "parents": [
        "51eb01e73599efb88c6c20b1c226d20309a75450"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Sun Jun 25 05:48:51 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Jun 25 10:01:19 2006 -0700"
      },
      "message": "[PATCH] fuse: add control filesystem\n\nAdd a control filesystem to fuse, replacing the attributes currently exported\nthrough sysfs.  An empty directory \u0027/sys/fs/fuse/connections\u0027 is still created\nin sysfs, and mounting the control filesystem here provides backward\ncompatibility.\n\nAdvantages of the control filesystem over the previous solution:\n\n  - allows the object directory and the attributes to be owned by the\n    filesystem owner, hence letting unpriviled users abort the\n    filesystem connection\n\n  - does not suffer from module unload race\n\n[akpm@osdl.org: fix this fs for recent dhowells depredations]\n[akpm@osdl.org: fix 64-bit printk warnings]\nSigned-off-by: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "51eb01e73599efb88c6c20b1c226d20309a75450",
      "tree": "c37e7a61ce7c049a4615dfb2ee994866d3c85bd6",
      "parents": [
        "3e8c54fad89144b8d63cc41619f363df1ec7cc42"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Sun Jun 25 05:48:50 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Jun 25 10:01:19 2006 -0700"
      },
      "message": "[PATCH] fuse: no backgrounding on interrupt\n\nDon\u0027t put requests into the background when a fatal interrupt occurs while the\nrequest is in userspace.  This removes a major wart from the implementation.\n\nBackgrounding of requests was introduced to allow breaking of deadlocks.\nHowever now the same can be achieved by aborting the filesystem through the\n\u0027abort\u0027 sysfs attribute.\n\nThis is a change in the interface, but should not cause problems, since these\nkinds of deadlocks never happen during normal operation.\n\nSigned-off-by: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "6dbbcb120570d747b00783820ee02d1e1bcf63de",
      "tree": "9be2938cea30b1f2ce93ed59b8806fdfac62fd1e",
      "parents": [
        "5a5fb1ea74d8b82ca1461b885a1334fb21e037be"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Wed Apr 26 10:49:06 2006 +0200"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Wed Apr 26 10:49:06 2006 +0200"
      },
      "message": "[fuse] fix deadlock between fuse_put_super() and request_end(), try #2\n\nA deadlock was possible, when the last reference to the superblock was\nheld due to a background request containing a file reference.\n\nReleasing the file would release the vfsmount which in turn would\nrelease the superblock.  Since sbput_sem is held during the fput() and\nfuse_put_super() tries to acquire this same semaphore, a deadlock\nresults.\n\nThe solution is to move the fput() outside the region protected by\nsbput_sem.\n\nSigned-off-by: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\n"
    },
    {
      "commit": "5a5fb1ea74d8b82ca1461b885a1334fb21e037be",
      "tree": "f6e823d4a8e09ce0780d891f8f38f033ccbd7da2",
      "parents": [
        "4d5c34ec7b007cfb0771a36996b009f194acbb2f"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Wed Apr 26 10:48:55 2006 +0200"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Wed Apr 26 10:48:55 2006 +0200"
      },
      "message": "Revert \"[fuse] fix deadlock between fuse_put_super() and request_end()\"\n\nThis reverts 73ce8355c243a434524a34c05cc417dd0467996e commit.\n\nIt was wrong, because it didn\u0027t take into account the requirement,\nthat iput() for background requests must be performed synchronously\nwith -\u003eput_super(), otherwise active inodes may remain after unmount.\n\nThe right solution is to keep the sbput_sem and perform iput() within\nthe locked region, but move fput() outside sbput_sem.\n\nSigned-off-by: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\n"
    },
    {
      "commit": "4858cae4f0904681eab58a16891c22397618a2a2",
      "tree": "013642eeb6520ca9517fc94dbe881da614502ef2",
      "parents": [
        "9bc5dddad1294955e70eeb87325ba1505fb5fe2e"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Tue Apr 11 21:16:38 2006 +0200"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Tue Apr 11 21:16:38 2006 +0200"
      },
      "message": "[fuse] Don\u0027t init request twice\n\nRequest is already initialized in fuse_request_alloc() so no need to\ndo it again in fuse_get_req().\n\nSigned-off-by: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\n"
    },
    {
      "commit": "9bc5dddad1294955e70eeb87325ba1505fb5fe2e",
      "tree": "9b32783daaccf670d7abadc80fd66cf598da0725",
      "parents": [
        "73ce8355c243a434524a34c05cc417dd0467996e"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Tue Apr 11 21:16:09 2006 +0200"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Tue Apr 11 21:16:09 2006 +0200"
      },
      "message": "[fuse] Fix accounting the number of waiting requests\n\nProperly accounting the number of waiting requests was forgotten in\n\"clean up request accounting\" patch.\n\nSigned-off-by: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\n"
    },
    {
      "commit": "73ce8355c243a434524a34c05cc417dd0467996e",
      "tree": "a5bc5bfb31c41a5806caf763533943e7411e6543",
      "parents": [
        "2514395ef88b46e895726a8d40966cb83de7940c"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Tue Apr 11 21:14:26 2006 +0200"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Tue Apr 11 21:14:26 2006 +0200"
      },
      "message": "[fuse] fix deadlock between fuse_put_super() and request_end()\n\nA deadlock was possible, when the last reference to the superblock was\nheld due to a background request containing a file reference.\n\nReleasing the file would release the vfsmount which in turn would\nrelease the superblock.  Since sbput_sem is held during the fput() and\nfuse_put_super() tries to acquire this same semaphore, a deadlock\nresults.\n\nThe chosen soltuion is to get rid of sbput_sem, and instead use the\nspinlock to ensure the referenced inodes/file are released only once.\nSince the actual release may sleep, defer these outside the locked\nregion, but using local variables instead of the structure members.\n\nThis is a much more rubust solution.\n\nSigned-off-by: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\n"
    },
    {
      "commit": "08a53cdce62d37d918530bbbf726cc01b21dc3d1",
      "tree": "2db5e37737da91f1b2b32136e4e10ad540d8dc09",
      "parents": [
        "ce1d5a491f0ee50560416a73faa5e4ddbab074bd"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Mon Apr 10 22:54:59 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Apr 11 06:18:49 2006 -0700"
      },
      "message": "[PATCH] fuse: account background requests\n\nThe previous patch removed limiting the number of outstanding requests.  This\npatch adds a much simpler limiting, that is also compatible with file locking\noperations.\n\nA task may have at most one synchronous request allocated.  So these requests\nneed not be otherwise limited.\n\nHowever the number of background requests (release, forget, asynchronous\nreads, interrupted requests) can grow indefinitely.  This can be used by a\nmalicous user to cause FUSE to allocate arbitrary amounts of unswappable\nkernel memory, denying service.\n\nFor this reason add a limit for the number of background requests, and block\nallocations of new requests until the number goes bellow the limit.\n\nAlso use this mechanism to block all requests until the INIT reply is\nreceived.\n\nSigned-off-by: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "ce1d5a491f0ee50560416a73faa5e4ddbab074bd",
      "tree": "21f91d983b467ad05df0213f54fe00aad84e5761",
      "parents": [
        "a87046d822f2d982d25b24c4a644d34f22d4888a"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Mon Apr 10 22:54:58 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Apr 11 06:18:49 2006 -0700"
      },
      "message": "[PATCH] fuse: clean up request accounting\n\nFUSE allocated most requests from a fixed size pool filled at mount time.\nHowever in some cases (release/forget) non-pool requests were used.  File\nlocking operations aren\u0027t well served by the request pool, since they may\nblock indefinetly thus exhausting the pool.\n\nThis patch removes the request pool and always allocates requests on demand.\n\nSigned-off-by: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "a87046d822f2d982d25b24c4a644d34f22d4888a",
      "tree": "582a3a2a89015bf09ad9a73df8d06cd7272b3b46",
      "parents": [
        "d713311464bcca73c990d1a1b5c9467eae87f5b4"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Mon Apr 10 22:54:56 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Apr 11 06:18:48 2006 -0700"
      },
      "message": "[PATCH] fuse: consolidate device errors\n\nReturn consistent error values for the case when the opened device file has no\nmount associated yet.\n\nSigned-off-by: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d713311464bcca73c990d1a1b5c9467eae87f5b4",
      "tree": "d049e9655bebed5212cd3534961d354e51c2769f",
      "parents": [
        "0720b315976447cba3f0c3e211223b8cb82b0f93"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Mon Apr 10 22:54:55 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Apr 11 06:18:48 2006 -0700"
      },
      "message": "[PATCH] fuse: use a per-mount spinlock\n\nRemove the global spinlock in favor of a per-mount one.\n\nThis patch is basically find \u0026 replace.  The difficult part has already been\ndone by the previous patch.\n\nSigned-off-by: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "0720b315976447cba3f0c3e211223b8cb82b0f93",
      "tree": "b8013f53bca7a72670961ea6f439612d1c631283",
      "parents": [
        "e5ac1d1e70a8c19a65a959d73650203df7a2e168"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Mon Apr 10 22:54:55 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Apr 11 06:18:48 2006 -0700"
      },
      "message": "[PATCH] fuse: simplify locking\n\nThis is in preparation for removing the global spinlock in favor of a\nper-mount one.\n\nThe only critical part is the interaction between fuse_dev_release() and\nfuse_fill_super(): fuse_dev_release() must see the assignment to\nfile-\u003eprivate_data, otherwise it will leak the reference to fuse_conn.\n\nThis is ensured by the fput() operation, which will synchronize the assignment\nwith other CPU\u0027s that may do a final fput() soon after this.\n\nAlso redundant locking is removed from fuse_fill_super(), where exclusion is\nalready ensured by the BKL held for this function by the VFS.\n\nSigned-off-by: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e5ac1d1e70a8c19a65a959d73650203df7a2e168",
      "tree": "e3efd114e3350c270d3693266d38d07eaedae757",
      "parents": [
        "385a17bfc3cb035333c8a91eddc78a6e04c4625e"
      ],
      "author": {
        "name": "Jeff Dike",
        "email": "jdike@addtoit.com",
        "time": "Mon Apr 10 22:54:53 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Apr 11 06:18:48 2006 -0700"
      },
      "message": "[PATCH] fuse: add O_NONBLOCK support to FUSE device\n\nI don\u0027t like duplicating the connected and list_empty tests in fuse_dev_readv,\nbut this seemed cleaner than adding the f_flags test to request_wait.\n\nSigned-off-by: Jeff Dike \u003cjdike@addtoit.com\u003e\nSigned-off-by: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "385a17bfc3cb035333c8a91eddc78a6e04c4625e",
      "tree": "7a9fde77c95f0e4cc86f31e8b1f5d23b6d815634",
      "parents": [
        "7025d9ad10a38dadef8b286e0092731c2d3cdc53"
      ],
      "author": {
        "name": "Jeff Dike",
        "email": "jdike@addtoit.com",
        "time": "Mon Apr 10 22:54:52 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Apr 11 06:18:48 2006 -0700"
      },
      "message": "[PATCH] fuse: add O_ASYNC support to FUSE device\n\nThis adds asynchronous notification to FUSE - a FUSE server can request\nO_ASYNC on a /dev/fuse file descriptor and receive SIGIO when there is input\navailable.\n\nOne subtlety - fuse_dev_fasync, which is called when O_ASYNC is requested,\ndoes no locking, unlink the other methods.  I think it\u0027s unnecessary, as the\nfuse_conn.fasync list is manipulated only by fasync_helper and kill_fasync,\nwhich provide their own locking.  It would also be wrong to use the fuse_lock,\nas it\u0027s a spin lock and fasync_helper can sleep.  My one concern with this is\nthe fuse_conn going away underneath fuse_dev_fasync - sys_fcntl takes a\nreference on the file struct, so this seems not to be a problem.\n\nSigned-off-by: Jeff Dike \u003cjdike@addtoit.com\u003e\nSigned-off-by: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "7025d9ad10a38dadef8b286e0092731c2d3cdc53",
      "tree": "054f5ce4a0b7a0d3793e66f094af4905a68d1896",
      "parents": [
        "d3406ffa4af8af1d7c14cff06e003eb0a557d4ad"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Mon Apr 10 22:54:50 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Apr 11 06:18:47 2006 -0700"
      },
      "message": "[PATCH] fuse: fix fuse_dev_poll() return value\n\nfuse_dev_poll() returned an error value instead of a poll mask.  Luckily (or\nunluckily) -ENODEV does contain the POLLERR bit.\n\nThere\u0027s also a race if filesystem is unmounted between fuse_get_conn() and\nspin_lock(), in which case this event will be missed by poll().\n\nSigned-off-by: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4b6f5d20b04dcbc3d888555522b90ba6d36c4106",
      "tree": "420f271eaef7d3def7d4433b151c3cb6d7a54770",
      "parents": [
        "99ac48f54a91d02140c497edc31dc57d4bc5c85d"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@infradead.org",
        "time": "Tue Mar 28 01:56:42 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Mar 28 09:16:06 2006 -0800"
      },
      "message": "[PATCH] Make most file operations structs in fs/ const\n\nThis is a conversion to make the various file_operations structs in fs/\nconst.  Basically a regexp job, with a few manual fixups\n\nThe goal is both to increase correctness (harder to accidentally write to\nshared datastructures) and reducing the false sharing of cachelines with\nthings that get dirty in .data (while .rodata is nicely read only and thus\ncache clean)\n\nSigned-off-by: Arjan van de Ven \u003carjan@infradead.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "77e7f250f88cd62844e24c42aff4d0e95969c746",
      "tree": "ee14c76d87f8ac141d2fee43e40278b5fcadadd8",
      "parents": [
        "a8534adb74e23374889b84b3d97eb18da542a1b5"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Fri Feb 17 13:52:52 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Feb 17 13:59:27 2006 -0800"
      },
      "message": "[PATCH] fuse: fix bug in aborted fuse_release_end()\n\nThere\u0027s a rather theoretical case of the BUG triggering in\nfuse_reset_request():\n\n  - iget() fails because of OOM after a successful CREATE_OPEN request\n  - during IO on the resulting RELEASE request the connection is aborted\n\nFix and add warning to fuse_reset_request().\n\nSigned-off-by: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "7128ec2a747d7a5f3c764c37bef17081ccc2374c",
      "tree": "10781a63d46811789e1cd26964f1d0a9eb963ce2",
      "parents": [
        "e22bec266cd6f540da2a61db216914c3473135cc"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Sat Feb 04 23:27:40 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Feb 05 11:06:51 2006 -0800"
      },
      "message": "[PATCH] fuse: fix request_end() vs fuse_reset_request() race\n\nThe last fix for this function in fact opened up a much more often\ntriggering race.\n\nIt was uncommented tricky code, that was buggy.  Add comment, make it less\ntricky and fix bug.\n\nSigned-off-by: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "9b9a04693fa2d9e60933154e4c4aca83c219ef0a",
      "tree": "c68562dfcf224e32c7bbbfdcad70caa758616881",
      "parents": [
        "64c6d8ed4c55f0a99b1b81558851da80c8d58244"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Mon Jan 16 22:14:44 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jan 16 23:15:31 2006 -0800"
      },
      "message": "[PATCH] fuse: move INIT handling to inode.c\n\nNow the INIT requests can be completely handled in inode.c and the\nfuse_send_init() function need not be global any more.\n\nSigned-off-by: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "64c6d8ed4c55f0a99b1b81558851da80c8d58244",
      "tree": "b8cfa96b8de4357e969e9492bfea65b22b0cca88",
      "parents": [
        "69a53bf267fa58b89aa659d121dfe38436562a30"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Mon Jan 16 22:14:42 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jan 16 23:15:31 2006 -0800"
      },
      "message": "[PATCH] fuse: add asynchronous request support\n\nAdd possibility for requests to run asynchronously and call an \u0027end\u0027 callback\nwhen finished.\n\nWith this, the special handling of the INIT and RELEASE requests can be\ncleaned up too.\n\nSigned-off-by: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "69a53bf267fa58b89aa659d121dfe38436562a30",
      "tree": "36276fdbf7bfdc787708e8d5b2d4b79a0b5a4c56",
      "parents": [
        "0cd5b88553acf0611474dbaf8e43770eed268060"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Mon Jan 16 22:14:41 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jan 16 23:15:30 2006 -0800"
      },
      "message": "[PATCH] fuse: add connection aborting\n\nAdd ability to abort a filesystem connection.\n\nWith the introduction of asynchronous reads, the ability to interrupt any\nrequest is not enough to dissolve deadlocks, since now waiting for the request\ncompletion (page unlocked) is independent of the actual request, so in a\ndeadlock all threads will be uninterruptible.\n\nThe solution is to make it possible to abort all requests, even those\ncurrently undergoing I/O to/from userspace.  The natural interface for this is\n\u0027mount -f mountpoint\u0027, but that only works as long as the filesystem is\nattached.  So also add an \u0027abort\u0027 attribute to the sysfs view of the\nconnection.\n\nSigned-off-by: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nCc: Greg KH \u003cgreg@kroah.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "0cd5b88553acf0611474dbaf8e43770eed268060",
      "tree": "f3b08ab3a4a1cb42d92e2997f60f30d945601600",
      "parents": [
        "f543f253f3aa721a24557d7df8259145bb01b734"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Mon Jan 16 22:14:38 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jan 16 23:15:30 2006 -0800"
      },
      "message": "[PATCH] fuse: add number of waiting requests attribute\n\nThis patch adds the \u0027waiting\u0027 attribute which indicates how many filesystem\nrequests are currently waiting to be completed.  A non-zero value without any\nfilesystem activity indicates a hung or deadlocked filesystem.\n\nSigned-off-by: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f543f253f3aa721a24557d7df8259145bb01b734",
      "tree": "173fbfc0c90a2a615e1bd8a2bc49726c1824349c",
      "parents": [
        "9ba7cbba100bdaca7316d71d6c6298e61191f8b2"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Mon Jan 16 22:14:35 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jan 16 23:15:30 2006 -0800"
      },
      "message": "[PATCH] fuse: make fuse connection a kobject\n\nKobjectify fuse_conn, and make it visible under /sys/fs/fuse/connections.\n\nLacking any natural naming, connections are numbered.\n\nThis patch doesn\u0027t add any attributes, just the infrastructure.\n\nSigned-off-by: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nCc: Greg KH \u003cgreg@kroah.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "9ba7cbba100bdaca7316d71d6c6298e61191f8b2",
      "tree": "999e964132731388ff312df78623020600fe32e2",
      "parents": [
        "d77a1d5b611742c538364f041ff4610d27b14fe7"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Mon Jan 16 22:14:34 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jan 16 23:15:30 2006 -0800"
      },
      "message": "[PATCH] fuse: extend semantics of connected flag\n\nThe -\u003econnected flag for a fuse_conn object previously only indicated whether\nthe device file for this connection is currently open or not.\n\nChange it\u0027s meaning so that it indicates whether the connection is active or\nnot: now either umount or device release will clear the flag.\n\nThe separate -\u003emounted flag is still needed for handling background requests.\n\nSigned-off-by: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d77a1d5b611742c538364f041ff4610d27b14fe7",
      "tree": "c18cf2c112ad17e07a3e0d0459c55f04b257e3e3",
      "parents": [
        "83cfd4935124b165e942c317dc3e9ebb0a3e6a63"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Mon Jan 16 22:14:31 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jan 16 23:15:30 2006 -0800"
      },
      "message": "[PATCH] fuse: introduce list for requests under I/O\n\nCreate a new list for requests in the process of being transfered to/from\nuserspace.  This will be needed to be able to abort all requests even those\ncurrently under I/O\n\nSigned-off-by: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "83cfd4935124b165e942c317dc3e9ebb0a3e6a63",
      "tree": "6b6276dde7fbe07dd9e5d44332eef5f2b9451d4c",
      "parents": [
        "6383bdaa2ed2d461d9f4d369dfaa9d610fc972e3"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Mon Jan 16 22:14:31 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jan 16 23:15:30 2006 -0800"
      },
      "message": "[PATCH] fuse: introduce unified request state\n\nThe state of request was made up of 2 bitfields (-\u003esent and -\u003efinished) and of\nthe fact that the request was on a list or not.\n\nUnify this into a single state field.\n\nSigned-off-by: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "6383bdaa2ed2d461d9f4d369dfaa9d610fc972e3",
      "tree": "2bdbc25280c0666c2f2f5869c5487541fa670579",
      "parents": [
        "8bfc016d2e2fff71c6843257f0fd0b60876331ed"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Mon Jan 16 22:14:29 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jan 16 23:15:30 2006 -0800"
      },
      "message": "[PATCH] fuse: miscellaneous cleanup\n\n - remove some unneeded assignments\n\n - use kzalloc instead of kmalloc + memset\n\n - simplify setting sb-\u003es_fs_info\n\n - in fuse_send_init() use fuse_get_request() instead of\n   do_get_request() helper\n\nSigned-off-by: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "8bfc016d2e2fff71c6843257f0fd0b60876331ed",
      "tree": "c12cff675fcd734a93a274545d93ef153939ad9f",
      "parents": [
        "b3bebd94bbe4e59dfa23d85b0296a4ce8ebcc6c7"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Mon Jan 16 22:14:28 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jan 16 23:15:29 2006 -0800"
      },
      "message": "[PATCH] fuse: uninline some functions\n\nInline keyword is unnecessary in most cases.  Clean them up.\n\nSigned-off-by: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "b3bebd94bbe4e59dfa23d85b0296a4ce8ebcc6c7",
      "tree": "87618ca8f6eb1a0317262610dd588af76201b186",
      "parents": [
        "f43b155a5a8a95b06bc0b4474fbb7311c7e9709a"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Mon Jan 16 22:14:27 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jan 16 23:15:29 2006 -0800"
      },
      "message": "[PATCH] fuse: handle error INIT reply\n\nHandle the case when the INIT request is answered with an error.\n\nSigned-off-by: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f43b155a5a8a95b06bc0b4474fbb7311c7e9709a",
      "tree": "482a03476b71498939adb9aa7ec1a4c072902927",
      "parents": [
        "222f1d69183f10d70a37de5785698fe0aa363c12"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Mon Jan 16 22:14:26 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jan 16 23:15:29 2006 -0800"
      },
      "message": "[PATCH] fuse: fix request_end()\n\nThis function used the request object after decrementing its reference count\nand releasing the lock.  This could in theory lead to all sorts of problems.\n\nFix and simplify at the same time.\n\nSigned-off-by: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "222f1d69183f10d70a37de5785698fe0aa363c12",
      "tree": "14eeb42423e9feb390a52ce2cf0453c346e92b98",
      "parents": [
        "f87fd4c2a0c4f3baad28057360b36a59591ef751"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Mon Jan 16 22:14:25 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jan 16 23:15:29 2006 -0800"
      },
      "message": "[PATCH] fuse: fuse_copy_finish() order fix\n\nfuse_copy_finish() must be called before request_end(), since the later might\nsleep, and no sleeping is allowed between fuse_copy_one() and\nfuse_copy_finish() because of kmap_atomic()/kunmap_atomic() used in them.\n\nSigned-off-by: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "3ec870d524c9150add120475c8ddcfa50574f98e",
      "tree": "62918ff93aac09bc13d4730208a8c8bc1fec4e40",
      "parents": [
        "1d3d752b471d2a3a1d5e4fe177e5e7d52abb4e4c"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Fri Jan 06 00:19:41 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jan 06 08:33:56 2006 -0800"
      },
      "message": "[PATCH] fuse: make maximum write data configurable\n\nMake the maximum size of write data configurable by the filesystem.  The\nprevious fixed 4096 limit only worked on architectures where the page size is\nless or equal to this.  This change make writing work on other architectures\ntoo, and also lets the filesystem receive bigger write requests in direct_io\nmode.\n\nNormal writes which go through the page cache are still limited to a page\nsized chunk per request.\n\nSigned-off-by: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1d3d752b471d2a3a1d5e4fe177e5e7d52abb4e4c",
      "tree": "05c6c99ca02118e2c80199c36f4f6263cdf7986b",
      "parents": [
        "248d86e87d12da19eee602075f05a49a5215288b"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Fri Jan 06 00:19:40 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jan 06 08:33:56 2006 -0800"
      },
      "message": "[PATCH] fuse: clean up request size limit checking\n\nChange the way a too large request is handled.  Until now in this case the\ndevice read returned -EINVAL and the operation returned -EIO.\n\nMake it more flexibible by not returning -EINVAL from the read, but restarting\nit instead.\n\nAlso remove the fixed limit on setxattr data and let the filesystem provide as\nlarge a read buffer as it needs to handle the extended attribute data.\n\nThe symbolic link length is already checked by VFS to be less than PATH_MAX,\nso the extra check against FUSE_SYMLINK_MAX is not needed.\n\nThe check in fuse_create_open() against FUSE_NAME_MAX is not needed, since the\ndentry has already been looked up, and hence the name already checked.\n\nSigned-off-by: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "45714d65618407bce1fd0271bc58303ce14b0785",
      "tree": "f1f53819fc9dcc04fb9bc7145fcaddc6f8b81fe9",
      "parents": [
        "4633a22e7added835fd1d4b072dbcc4474aa3017"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Fri Jan 06 00:19:36 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jan 06 08:33:55 2006 -0800"
      },
      "message": "[PATCH] fuse: bump interface version\n\nChange interface version to 7.4.\n\nFollowing changes will need backward compatibility support, so store the minor\nversion returned by userspace.\n\nSigned-off-by: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "fd72faac95d7e47610e981d7ed7b3c1529e55c88",
      "tree": "65cde1eb6958f410c4b4c72e322fd59db463150f",
      "parents": [
        "31d40d74b402a6fa18a006fb3745f64609f35b77"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Mon Nov 07 00:59:51 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Nov 07 07:53:42 2005 -0800"
      },
      "message": "[PATCH] FUSE: atomic create+open\n\nThis patch adds an atomic create+open operation.  This does not yet work if\nthe file type changes between lookup and create+open, but solves the\npermission checking problems for the separte create and open methods.\n\nSigned-off-by: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1779381dea3bada407396742c56bee31ffa8544e",
      "tree": "bf24990d1ba97eed5a60d9a795ba35620cace757",
      "parents": [
        "2a38bccd0c63a4954ea4e1357cbff404aa321afb"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Sun Oct 30 15:02:51 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Oct 30 17:37:24 2005 -0800"
      },
      "message": "[PATCH] fuse: spelling fixes\n\nCorrect some typos and inconsistent use of \"initialise\" vs \"initialize\" in\ncomments.  Reported by Ioannis Barkas.\n\nSigned-off-by: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "7c352bdf048811b8128019ffc1e886161e09c11c",
      "tree": "74c48298b67d37295433d9b2bb08d590a5f97a78",
      "parents": [
        "8254798199332966e2ab647380c990193af7e854"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Fri Sep 09 13:10:39 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Sep 09 14:03:48 2005 -0700"
      },
      "message": "[PATCH] FUSE: don\u0027t allow restarting of system calls\n\nThis patch removes ability to interrupt and restart operations while there\nhasn\u0027t been any side-effect.\n\nThe reason: applications.  There are some apps it seems that generate\nsignals at a fast rate.  This means, that if the operation cannot make\nenough progress between two signals, it will be restarted for ever.  This\nbug actually manifested itself with \u0027krusader\u0027 trying to open a file for\nwriting under sshfs.  Thanks to Eduard Czimbalmos for the report.\n\nThe problem can be solved just by making open() uninterruptible, because in\nthis case it was the truncate operation that slowed down the progress.  But\nit\u0027s better to solve this by simply not allowing interrupts at all (except\nSIGKILL), because applications don\u0027t expect file operations to be\ninterruptible anyway.  As an added bonus the code is simplified somewhat.\n\nSigned-off-by: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "04730fef1f9c7277e5c730b193e681ac095b0507",
      "tree": "3694ea435eb38f10dadc5c8b6abd603a7e10f52e",
      "parents": [
        "413ef8cb302511d8e995e2b0e5517ee1a65b9c77"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Fri Sep 09 13:10:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Sep 09 14:03:47 2005 -0700"
      },
      "message": "[PATCH] fuse: transfer readdir data through device\n\nThis patch removes a long lasting \"hack\" in FUSE, which used a separate\nchannel (a file descriptor refering to a disk-file) to transfer directory\ncontents from userspace to the kernel.\n\nThe patch adds three new operations (OPENDIR, READDIR, RELEASEDIR), which\nhave semantics and implementation exactly maching the respective file\noperations (OPEN, READ, RELEASE).\n\nThis simplifies the directory reading code.  Also disk space is not\nnecessary, which can be important in embedded systems.\n\nSigned-off-by: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1e9a4ed9396e9c31139721b639550ffb1df17065",
      "tree": "213566cf1294f5dd8f6ff62ceb3557b5f5b6c59c",
      "parents": [
        "b6aeadeda22a9aa322fdfcd3f4c69ccf0da5cbdd"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Fri Sep 09 13:10:31 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Sep 09 14:03:45 2005 -0700"
      },
      "message": "[PATCH] FUSE - mount options\n\nThis patch adds miscellaneous mount options to the FUSE filesystem.\n\nThe following mount options are added:\n\n o default_permissions:  check permissions with generic_permission()\n o allow_other:          allow other users to access files\n o allow_root:           allow root to access files\n o kernel_cache:         don\u0027t invalidate page cache on open\n\nSigned-off-by: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e5e5558e923f35839108a12718494ecb73fb782f",
      "tree": "c410d6826e9df13f7ea9e382a26589b66ec0989c",
      "parents": [
        "334f485df85ac7736ebe14940bf0a059c5f26d7d"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Fri Sep 09 13:10:28 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Sep 09 14:03:45 2005 -0700"
      },
      "message": "[PATCH] FUSE - read-only operations\n\nThis patch adds the read-only filesystem operations of FUSE.\n\nThis contains the following files:\n\n o dir.c\n    - directory, symlink and file-inode operations\n\nThe following operations are added:\n\n o lookup\n o getattr\n o readlink\n o follow_link\n o directory open\n o readdir\n o directory release\n o permission\n o dentry revalidate\n o statfs\n\nSigned-off-by: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "334f485df85ac7736ebe14940bf0a059c5f26d7d",
      "tree": "754e5528289048a7104f4c1b431cebc1df16e2ce",
      "parents": [
        "d8a5ba45457e4a22aa39c939121efd7bb6c76672"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Fri Sep 09 13:10:27 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Sep 09 14:03:44 2005 -0700"
      },
      "message": "[PATCH] FUSE - device functions\n\nThis adds the FUSE device handling functions.\n\nThis contains the following files:\n\n o dev.c\n    - fuse device operations (read, write, release, poll)\n    - registers misc device\n    - support for sending requests to userspace\n\nSigned-off-by: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    }
  ]
}
