[GIT PULL] fuse update for 4.2

From: Miklos Szeredi
Date: Thu Jul 02 2015 - 05:10:08 EST

Hi Linus,

Please pull from:

git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse.git for-linus

This is the start of improving fuse scalability.

An input queue and a processing queue is split out from the monolithic fuse
connection, each of those having their own spinlock. The end of the patchset
adds the ability to clone a fuse connection. This means, that instead of having
to read/write requests/answers on a single fuse device fd, the fuse daemon can
have multiple distinct file descriptors open. Each of those can be used to
receive requests and send answers, currently the only constraint is that a
request must be answered on the same fd as it was read from.

This can be extended further to allow binding a device clone to a specific CPU
or NUMA node.

Based on a patchset by Srinivas Eeda and Ashish Samant. Thanks to Ashish for
the review of this series.

(While the commits seem young, this has been in for-next for a month at least,
only the Reviewed-by tags were added recently).


Miklos Szeredi (40):
fuse: initialize fc->release before calling it
fuse: fix background request if not connected
fuse: reset waiting
fuse: account as waiting before queuing for background
fuse: check conn_error earlier
fuse: fold fuse_request_send_nowait() into single caller
fuse: call fuse_abort_conn() in dev release
fuse: simplify request abort
fuse: req use bitops
fuse: use per req lock for lock/unlock_request()
fuse: fold helpers into abort
fuse: rework abort
fuse: simplify unique ctr
fuse: don't hold lock over request_wait_answer()
fuse: simplify req states
fuse: req state use flags
fuse: separate out input queue
fuse: duplicate ->connected in iqueue
fuse: abort: group iqueue accesses
fuse: dev read: split list_move
fuse: iqueue locking
fuse: allow interrupt queuing without fc->lock
fuse: no fc->lock for iqueue parts
fuse: simplify request_wait()
fuse: separate out processing queue
fuse: duplicate ->connected in pqueue
fuse: move list_del_init() from request_end() into callers
fuse: cleanup fuse_dev_do_read()
fuse: abort: group pqueue accesses
fuse: pqueue locking
fuse: add req flag for private list
fuse: request_end(): do once
fuse: cleanup request_end()
fuse: no fc->lock in request_end()
fuse: no fc->lock for pqueue parts
fuse: abort: no fc->lock needed for request ending
fuse: device fd clone
fuse: introduce per-instance fuse_dev structure
fuse: separate pqueue for clones
fuse: update MAINTAINERS entry

Documentation/ioctl/ioctl-number.txt | 1 +
fs/fuse/cuse.c | 15 +-
fs/fuse/dev.c | 825 ++++++++++++++++++-----------------
fs/fuse/file.c | 20 +-
fs/fuse/fuse_i.h | 167 ++++---
fs/fuse/inode.c | 86 +++-
include/uapi/linux/fuse.h | 3 +
8 files changed, 630 insertions(+), 489 deletions(-)
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/