From: Masayoshi Mizuma <msys.mizuma@gmail.com>
To: "Dr. David Alan Gilbert (git)" <dgilbert@redhat.com>
Cc: qemu-devel@nongnu.org, stefanha@redhat.com, vgoyal@redhat.com
Subject: Re: [PATCH 085/104] virtiofsd: Support remote posix locks
Date: Wed, 15 Jan 2020 18:38:31 -0500 [thread overview]
Message-ID: <20200115233831.mw6sttmepespg4kk@gabell> (raw)
In-Reply-To: <20191212163904.159893-86-dgilbert@redhat.com>
On Thu, Dec 12, 2019 at 04:38:45PM +0000, Dr. David Alan Gilbert (git) wrote:
> From: Vivek Goyal <vgoyal@redhat.com>
>
> Doing posix locks with-in guest kernel are not sufficient if a file/dir
> is being shared by multiple guests. So we need the notion of daemon doing
> the locks which are visible to rest of the guests.
>
> Given posix locks are per process, one can not call posix lock API on host,
> otherwise bunch of basic posix locks properties are broken. For example,
> If two processes (A and B) in guest open the file and take locks on different
> sections of file, if one of the processes closes the fd, it will close
> fd on virtiofsd and all posix locks on file will go away. This means if
> process A closes the fd, then locks of process B will go away too.
>
> Similar other problems exist too.
>
> This patch set tries to emulate posix locks while using open file
> description locks provided on Linux.
>
> Daemon provides two options (-o posix_lock, -o no_posix_lock) to enable
> or disable posix locking in daemon. By default it is enabled.
>
> There are few issues though.
>
> - GETLK() returns pid of process holding lock. As we are emulating locks
> using OFD, and these locks are not per process and don't return pid
> of process, so GETLK() in guest does not reuturn process pid.
>
> - As of now only F_SETLK is supported and not F_SETLKW. We can't block
> the thread in virtiofsd for arbitrary long duration as there is only
> one thread serving the queue. That means unlock request will not make
> it to daemon and F_SETLKW will block infinitely and bring virtio-fs
> to a halt. This is a solvable problem though and will require significant
> changes in virtiofsd and kernel. Left as a TODO item for now.
>
> Signed-off-by: Vivek Goyal <vgoyal@redhat.com>
> ---
> tools/virtiofsd/passthrough_ll.c | 190 +++++++++++++++++++++++++++++++
> 1 file changed, 190 insertions(+)
>
> diff --git a/tools/virtiofsd/passthrough_ll.c b/tools/virtiofsd/passthrough_ll.c
> index fbcc222860..fc79d5ac43 100644
> --- a/tools/virtiofsd/passthrough_ll.c
> +++ b/tools/virtiofsd/passthrough_ll.c
> @@ -68,6 +68,13 @@
> #include "seccomp.h"
>
> #define HAVE_POSIX_FALLOCATE 1
> +
> +/* Keep track of inode posix locks for each owner. */
> +struct lo_inode_plock {
> + uint64_t lock_owner;
> + int fd; /* fd for OFD locks */
> +};
> +
> struct lo_map_elem {
> union {
> struct lo_inode *inode;
> @@ -96,6 +103,8 @@ struct lo_inode {
> struct lo_key key;
> uint64_t refcount; /* protected by lo->mutex */
> fuse_ino_t fuse_ino;
> + pthread_mutex_t plock_mutex;
> + GHashTable *posix_locks; /* protected by lo_inode->plock_mutex */
> };
>
> struct lo_cred {
> @@ -115,6 +124,7 @@ struct lo_data {
> int norace;
> int writeback;
> int flock;
> + int posix_lock;
> int xattr;
> const char *source;
> double timeout;
> @@ -138,6 +148,8 @@ static const struct fuse_opt lo_opts[] = {
> { "source=%s", offsetof(struct lo_data, source), 0 },
> { "flock", offsetof(struct lo_data, flock), 1 },
> { "no_flock", offsetof(struct lo_data, flock), 0 },
> + { "posix_lock", offsetof(struct lo_data, posix_lock), 1 },
> + { "no_posix_lock", offsetof(struct lo_data, posix_lock), 0 },
> { "xattr", offsetof(struct lo_data, xattr), 1 },
> { "no_xattr", offsetof(struct lo_data, xattr), 0 },
> { "timeout=%lf", offsetof(struct lo_data, timeout), 0 },
> @@ -486,6 +498,17 @@ static void lo_init(void *userdata, struct fuse_conn_info *conn)
> fuse_log(FUSE_LOG_DEBUG, "lo_init: activating flock locks\n");
> conn->want |= FUSE_CAP_FLOCK_LOCKS;
> }
> +
> + if (conn->capable & FUSE_CAP_POSIX_LOCKS) {
> + if (lo->posix_lock) {
> + fuse_log(FUSE_LOG_DEBUG, "lo_init: activating posix locks\n");
> + conn->want |= FUSE_CAP_POSIX_LOCKS;
> + } else {
> + fuse_log(FUSE_LOG_DEBUG, "lo_init: disabling posix locks\n");
> + conn->want &= ~FUSE_CAP_POSIX_LOCKS;
> + }
> + }
> +
> if ((lo->cache == CACHE_NONE && !lo->readdirplus_set) ||
> lo->readdirplus_clear) {
> fuse_log(FUSE_LOG_DEBUG, "lo_init: disabling readdirplus\n");
> @@ -773,6 +796,19 @@ static struct lo_inode *lo_find(struct lo_data *lo, struct stat *st)
> return p;
> }
>
> +/* value_destroy_func for posix_locks GHashTable */
> +static void posix_locks_value_destroy(gpointer data)
> +{
> + struct lo_inode_plock *plock = data;
> +
> + /*
> + * We had used open() for locks and had only one fd. So
> + * closing this fd should release all OFD locks.
> + */
> + close(plock->fd);
> + free(plock);
> +}
> +
> static int lo_do_lookup(fuse_req_t req, fuse_ino_t parent, const char *name,
> struct fuse_entry_param *e)
> {
> @@ -826,6 +862,9 @@ static int lo_do_lookup(fuse_req_t req, fuse_ino_t parent, const char *name,
> newfd = -1;
> inode->key.ino = e->attr.st_ino;
> inode->key.dev = e->attr.st_dev;
> + pthread_mutex_init(&inode->plock_mutex, NULL);
> + inode->posix_locks = g_hash_table_new_full(
> + g_direct_hash, g_direct_equal, NULL, posix_locks_value_destroy);
>
> pthread_mutex_lock(&lo->mutex);
> inode->fuse_ino = lo_add_inode_mapping(req, inode);
> @@ -1192,6 +1231,11 @@ static void unref_inode_lolocked(struct lo_data *lo, struct lo_inode *inode,
> if (!inode->refcount) {
> lo_map_remove(&lo->ino_map, inode->fuse_ino);
> g_hash_table_remove(lo->inodes, &inode->key);
> + if (g_hash_table_size(inode->posix_locks)) {
> + fuse_log(FUSE_LOG_WARNING, "Hash table is not empty\n");
> + }
> + g_hash_table_destroy(inode->posix_locks);
> + pthread_mutex_destroy(&inode->plock_mutex);
> pthread_mutex_unlock(&lo->mutex);
> close(inode->fd);
> free(inode);
> @@ -1548,6 +1592,136 @@ out:
> }
> }
>
> +/* Should be called with inode->plock_mutex held */
> +static struct lo_inode_plock *lookup_create_plock_ctx(struct lo_data *lo,
> + struct lo_inode *inode,
> + uint64_t lock_owner,
> + pid_t pid, int *err)
> +{
> + struct lo_inode_plock *plock;
> + char procname[64];
> + int fd;
> +
> + plock =
> + g_hash_table_lookup(inode->posix_locks, GUINT_TO_POINTER(lock_owner));
> +
> + if (plock) {
> + return plock;
> + }
> +
> + plock = malloc(sizeof(struct lo_inode_plock));
> + if (!plock) {
> + *err = ENOMEM;
> + return NULL;
> + }
> +
> + /* Open another instance of file which can be used for ofd locks. */
> + sprintf(procname, "%i", inode->fd);
> +
> + /* TODO: What if file is not writable? */
> + fd = openat(lo->proc_self_fd, procname, O_RDWR);
> + if (fd == -1) {
> + *err = -errno;
I think the errno is positive value, so the minus isn't needed?
*err = errno;
Otherwise looks good to me.
Reviewed-by: Masayoshi Mizuma <m.mizuma@jp.fujitsu.com>
Thanks,
Masa
> + free(plock);
> + return NULL;
> + }
> +
> + plock->lock_owner = lock_owner;
> + plock->fd = fd;
> + g_hash_table_insert(inode->posix_locks, GUINT_TO_POINTER(plock->lock_owner),
> + plock);
> + return plock;
> +}
> +
> +static void lo_getlk(fuse_req_t req, fuse_ino_t ino, struct fuse_file_info *fi,
> + struct flock *lock)
> +{
> + struct lo_data *lo = lo_data(req);
> + struct lo_inode *inode;
> + struct lo_inode_plock *plock;
> + int ret, saverr = 0;
> +
> + fuse_log(FUSE_LOG_DEBUG,
> + "lo_getlk(ino=%" PRIu64 ", flags=%d)"
> + " owner=0x%lx, l_type=%d l_start=0x%lx"
> + " l_len=0x%lx\n",
> + ino, fi->flags, fi->lock_owner, lock->l_type, lock->l_start,
> + lock->l_len);
> +
> + inode = lo_inode(req, ino);
> + if (!inode) {
> + fuse_reply_err(req, EBADF);
> + return;
> + }
> +
> + pthread_mutex_lock(&inode->plock_mutex);
> + plock =
> + lookup_create_plock_ctx(lo, inode, fi->lock_owner, lock->l_pid, &ret);
> + if (!plock) {
> + pthread_mutex_unlock(&inode->plock_mutex);
> + fuse_reply_err(req, ret);
> + return;
> + }
> +
> + ret = fcntl(plock->fd, F_OFD_GETLK, lock);
> + if (ret == -1) {
> + saverr = errno;
> + }
> + pthread_mutex_unlock(&inode->plock_mutex);
> +
> + if (saverr) {
> + fuse_reply_err(req, saverr);
> + } else {
> + fuse_reply_lock(req, lock);
> + }
> +}
> +
> +static void lo_setlk(fuse_req_t req, fuse_ino_t ino, struct fuse_file_info *fi,
> + struct flock *lock, int sleep)
> +{
> + struct lo_data *lo = lo_data(req);
> + struct lo_inode *inode;
> + struct lo_inode_plock *plock;
> + int ret, saverr = 0;
> +
> + fuse_log(FUSE_LOG_DEBUG,
> + "lo_setlk(ino=%" PRIu64 ", flags=%d)"
> + " cmd=%d pid=%d owner=0x%lx sleep=%d l_whence=%d"
> + " l_start=0x%lx l_len=0x%lx\n",
> + ino, fi->flags, lock->l_type, lock->l_pid, fi->lock_owner, sleep,
> + lock->l_whence, lock->l_start, lock->l_len);
> +
> + if (sleep) {
> + fuse_reply_err(req, EOPNOTSUPP);
> + return;
> + }
> +
> + inode = lo_inode(req, ino);
> + if (!inode) {
> + fuse_reply_err(req, EBADF);
> + return;
> + }
> +
> + pthread_mutex_lock(&inode->plock_mutex);
> + plock =
> + lookup_create_plock_ctx(lo, inode, fi->lock_owner, lock->l_pid, &ret);
> +
> + if (!plock) {
> + pthread_mutex_unlock(&inode->plock_mutex);
> + fuse_reply_err(req, ret);
> + return;
> + }
> +
> + /* TODO: Is it alright to modify flock? */
> + lock->l_pid = 0;
> + ret = fcntl(plock->fd, F_OFD_SETLK, lock);
> + if (ret == -1) {
> + saverr = errno;
> + }
> + pthread_mutex_unlock(&inode->plock_mutex);
> + fuse_reply_err(req, saverr);
> +}
> +
> static void lo_fsyncdir(fuse_req_t req, fuse_ino_t ino, int datasync,
> struct fuse_file_info *fi)
> {
> @@ -1649,6 +1823,19 @@ static void lo_flush(fuse_req_t req, fuse_ino_t ino, struct fuse_file_info *fi)
> {
> int res;
> (void)ino;
> + struct lo_inode *inode;
> +
> + inode = lo_inode(req, ino);
> + if (!inode) {
> + fuse_reply_err(req, EBADF);
> + return;
> + }
> +
> + /* An fd is going away. Cleanup associated posix locks */
> + pthread_mutex_lock(&inode->plock_mutex);
> + g_hash_table_remove(inode->posix_locks, GUINT_TO_POINTER(fi->lock_owner));
> + pthread_mutex_unlock(&inode->plock_mutex);
> +
> res = close(dup(lo_fi_fd(req, fi)));
> fuse_reply_err(req, res == -1 ? errno : 0);
> }
> @@ -2111,6 +2298,8 @@ static struct fuse_lowlevel_ops lo_oper = {
> .releasedir = lo_releasedir,
> .fsyncdir = lo_fsyncdir,
> .create = lo_create,
> + .getlk = lo_getlk,
> + .setlk = lo_setlk,
> .open = lo_open,
> .release = lo_release,
> .flush = lo_flush,
> @@ -2466,6 +2655,7 @@ int main(int argc, char *argv[])
> struct lo_data lo = {
> .debug = 0,
> .writeback = 0,
> + .posix_lock = 1,
> .proc_self_fd = -1,
> };
> struct lo_map_elem *root_elem;
> --
> 2.23.0
>
>
next prev parent reply other threads:[~2020-01-15 23:39 UTC|newest]
Thread overview: 307+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-12-12 16:37 [PATCH 000/104] virtiofs daemon [all] Dr. David Alan Gilbert (git)
2019-12-12 16:37 ` [PATCH 001/104] virtiofsd: Pull in upstream headers Dr. David Alan Gilbert (git)
2020-01-03 11:54 ` Daniel P. Berrangé
2020-01-15 17:38 ` Philippe Mathieu-Daudé
2019-12-12 16:37 ` [PATCH 002/104] virtiofsd: Pull in kernel's fuse.h Dr. David Alan Gilbert (git)
2020-01-03 11:56 ` Daniel P. Berrangé
2019-12-12 16:37 ` [PATCH 003/104] virtiofsd: Add auxiliary .c's Dr. David Alan Gilbert (git)
2020-01-03 11:57 ` Daniel P. Berrangé
2019-12-12 16:37 ` [PATCH 004/104] virtiofsd: Add fuse_lowlevel.c Dr. David Alan Gilbert (git)
2020-01-03 11:58 ` Daniel P. Berrangé
2019-12-12 16:37 ` [PATCH 005/104] virtiofsd: Add passthrough_ll Dr. David Alan Gilbert (git)
2020-01-03 12:01 ` Daniel P. Berrangé
2020-01-03 12:15 ` Dr. David Alan Gilbert
2020-01-03 12:33 ` Daniel P. Berrangé
2020-01-03 14:37 ` Dr. David Alan Gilbert
2019-12-12 16:37 ` [PATCH 006/104] virtiofsd: Trim down imported files Dr. David Alan Gilbert (git)
2020-01-03 12:02 ` Daniel P. Berrangé
2020-01-21 9:58 ` Xiao Yang
2020-01-21 10:51 ` Dr. David Alan Gilbert
2020-01-22 0:57 ` Xiao Yang
2019-12-12 16:37 ` [PATCH 007/104] virtiofsd: Format imported files to qemu style Dr. David Alan Gilbert (git)
2020-01-03 12:04 ` Daniel P. Berrangé
2020-01-09 12:21 ` Aleksandar Markovic
2019-12-12 16:37 ` [PATCH 008/104] virtiofsd: remove mountpoint dummy argument Dr. David Alan Gilbert (git)
2020-01-03 12:12 ` Daniel P. Berrangé
2019-12-12 16:37 ` [PATCH 009/104] virtiofsd: remove unused notify reply support Dr. David Alan Gilbert (git)
2020-01-03 12:14 ` Daniel P. Berrangé
2019-12-12 16:37 ` [PATCH 010/104] virtiofsd: Fix fuse_daemonize ignored return values Dr. David Alan Gilbert (git)
2020-01-03 12:18 ` Daniel P. Berrangé
2019-12-12 16:37 ` [PATCH 011/104] virtiofsd: Fix common header and define for QEMU builds Dr. David Alan Gilbert (git)
2020-01-03 12:22 ` Daniel P. Berrangé
2020-01-06 16:29 ` Dr. David Alan Gilbert
2019-12-12 16:37 ` [PATCH 012/104] virtiofsd: Trim out compatibility code Dr. David Alan Gilbert (git)
2020-01-03 12:26 ` Daniel P. Berrangé
2019-12-12 16:37 ` [PATCH 013/104] virtiofsd: Make fsync work even if only inode is passed in Dr. David Alan Gilbert (git)
2020-01-03 15:13 ` Daniel P. Berrangé
2019-12-12 16:37 ` [PATCH 014/104] virtiofsd: Add options for virtio Dr. David Alan Gilbert (git)
2020-01-03 15:18 ` Daniel P. Berrangé
2020-01-10 16:01 ` Dr. David Alan Gilbert
2019-12-12 16:37 ` [PATCH 015/104] virtiofsd: add -o source=PATH to help output Dr. David Alan Gilbert (git)
2020-01-03 15:18 ` Daniel P. Berrangé
2019-12-12 16:37 ` [PATCH 016/104] virtiofsd: Open vhost connection instead of mounting Dr. David Alan Gilbert (git)
2020-01-03 15:21 ` Daniel P. Berrangé
2020-01-21 6:57 ` Misono Tomohiro
2020-01-21 11:38 ` Dr. David Alan Gilbert
2019-12-12 16:37 ` [PATCH 017/104] virtiofsd: Start wiring up vhost-user Dr. David Alan Gilbert (git)
2020-01-03 15:25 ` Daniel P. Berrangé
2019-12-12 16:37 ` [PATCH 018/104] virtiofsd: Add main virtio loop Dr. David Alan Gilbert (git)
2020-01-03 15:26 ` Daniel P. Berrangé
2019-12-12 16:37 ` [PATCH 019/104] virtiofsd: get/set features callbacks Dr. David Alan Gilbert (git)
2020-01-03 15:26 ` Daniel P. Berrangé
2019-12-12 16:37 ` [PATCH 020/104] virtiofsd: Start queue threads Dr. David Alan Gilbert (git)
2020-01-03 15:27 ` Daniel P. Berrangé
2019-12-12 16:37 ` [PATCH 021/104] virtiofsd: Poll kick_fd for queue Dr. David Alan Gilbert (git)
2020-01-03 15:33 ` Daniel P. Berrangé
2019-12-12 16:37 ` [PATCH 022/104] virtiofsd: Start reading commands from queue Dr. David Alan Gilbert (git)
2020-01-03 15:34 ` Daniel P. Berrangé
2019-12-12 16:37 ` [PATCH 023/104] virtiofsd: Send replies to messages Dr. David Alan Gilbert (git)
2020-01-03 15:36 ` Daniel P. Berrangé
2019-12-12 16:37 ` [PATCH 024/104] virtiofsd: Keep track of replies Dr. David Alan Gilbert (git)
2020-01-03 15:41 ` Daniel P. Berrangé
2019-12-12 16:37 ` [PATCH 025/104] virtiofsd: Add Makefile wiring for virtiofsd contrib Dr. David Alan Gilbert (git)
2019-12-13 16:02 ` Liam Merwick
2019-12-13 16:56 ` Dr. David Alan Gilbert
2020-01-03 15:41 ` Daniel P. Berrangé
2019-12-12 16:37 ` [PATCH 026/104] virtiofsd: Fast path for virtio read Dr. David Alan Gilbert (git)
2020-01-17 18:54 ` Masayoshi Mizuma
2020-01-20 12:32 ` Dr. David Alan Gilbert
2019-12-12 16:37 ` [PATCH 027/104] virtiofsd: add --fd=FDNUM fd passing option Dr. David Alan Gilbert (git)
2020-01-06 14:12 ` Daniel P. Berrangé
2019-12-12 16:37 ` [PATCH 028/104] virtiofsd: make -f (foreground) the default Dr. David Alan Gilbert (git)
2020-01-06 14:19 ` Daniel P. Berrangé
2019-12-12 16:37 ` [PATCH 029/104] virtiofsd: add vhost-user.json file Dr. David Alan Gilbert (git)
2020-01-06 14:19 ` Daniel P. Berrangé
2019-12-12 16:37 ` [PATCH 030/104] virtiofsd: add --print-capabilities option Dr. David Alan Gilbert (git)
2020-01-06 14:20 ` Daniel P. Berrangé
2019-12-12 16:37 ` [PATCH 031/104] virtiofs: Add maintainers entry Dr. David Alan Gilbert (git)
2020-01-06 14:21 ` Daniel P. Berrangé
2020-01-15 17:19 ` Philippe Mathieu-Daudé
2019-12-12 16:37 ` [PATCH 032/104] virtiofsd: passthrough_ll: create new files in caller's context Dr. David Alan Gilbert (git)
2020-01-06 14:30 ` Daniel P. Berrangé
2020-01-06 19:00 ` Dr. David Alan Gilbert
2020-01-06 19:08 ` Dr. David Alan Gilbert
2020-01-07 9:22 ` Daniel P. Berrangé
2020-01-10 13:05 ` Dr. David Alan Gilbert
2019-12-12 16:37 ` [PATCH 033/104] virtiofsd: passthrough_ll: add lo_map for ino/fh indirection Dr. David Alan Gilbert (git)
2020-01-17 21:44 ` Masayoshi Mizuma
2019-12-12 16:37 ` [PATCH 034/104] virtiofsd: passthrough_ll: add ino_map to hide lo_inode pointers Dr. David Alan Gilbert (git)
2020-01-17 21:45 ` Masayoshi Mizuma
2019-12-12 16:37 ` [PATCH 035/104] virtiofsd: passthrough_ll: add dirp_map to hide lo_dirp pointers Dr. David Alan Gilbert (git)
2020-01-17 13:58 ` Philippe Mathieu-Daudé
2019-12-12 16:37 ` [PATCH 036/104] virtiofsd: passthrough_ll: add fd_map to hide file descriptors Dr. David Alan Gilbert (git)
2020-01-17 22:32 ` Masayoshi Mizuma
2019-12-12 16:37 ` [PATCH 037/104] virtiofsd: passthrough_ll: add fallback for racy ops Dr. David Alan Gilbert (git)
2020-01-18 16:22 ` Masayoshi Mizuma
2020-01-20 13:26 ` Dr. David Alan Gilbert
2019-12-12 16:37 ` [PATCH 038/104] virtiofsd: validate path components Dr. David Alan Gilbert (git)
2020-01-06 14:32 ` Daniel P. Berrangé
2019-12-12 16:37 ` [PATCH 039/104] virtiofsd: Plumb fuse_bufvec through to do_write_buf Dr. David Alan Gilbert (git)
2020-01-17 21:01 ` Masayoshi Mizuma
2019-12-12 16:38 ` [PATCH 040/104] virtiofsd: Pass write iov's all the way through Dr. David Alan Gilbert (git)
2020-01-19 8:08 ` Xiao Yang
2020-01-20 8:24 ` Philippe Mathieu-Daudé
2020-01-20 13:28 ` Dr. David Alan Gilbert
2019-12-12 16:38 ` [PATCH 041/104] virtiofsd: add fuse_mbuf_iter API Dr. David Alan Gilbert (git)
2020-01-16 14:17 ` Sergio Lopez
2019-12-12 16:38 ` [PATCH 042/104] virtiofsd: validate input buffer sizes in do_write_buf() Dr. David Alan Gilbert (git)
2020-01-16 14:19 ` Sergio Lopez
2019-12-12 16:38 ` [PATCH 043/104] virtiofsd: check input buffer size in fuse_lowlevel.c ops Dr. David Alan Gilbert (git)
2020-01-16 14:25 ` Sergio Lopez
2019-12-12 16:38 ` [PATCH 044/104] virtiofsd: prevent ".." escape in lo_do_lookup() Dr. David Alan Gilbert (git)
2020-01-16 14:33 ` Sergio Lopez
2019-12-12 16:38 ` [PATCH 045/104] virtiofsd: prevent ".." escape in lo_do_readdir() Dr. David Alan Gilbert (git)
2020-01-16 14:35 ` Sergio Lopez
2019-12-12 16:38 ` [PATCH 046/104] virtiofsd: use /proc/self/fd/ O_PATH file descriptor Dr. David Alan Gilbert (git)
2020-01-15 18:09 ` Philippe Mathieu-Daudé
2020-01-17 9:42 ` Dr. David Alan Gilbert
2019-12-12 16:38 ` [PATCH 047/104] virtiofsd: sandbox mount namespace Dr. David Alan Gilbert (git)
2020-01-06 14:36 ` Daniel P. Berrangé
2019-12-12 16:38 ` [PATCH 048/104] virtiofsd: move to an empty network namespace Dr. David Alan Gilbert (git)
2020-01-06 14:37 ` Daniel P. Berrangé
2019-12-12 16:38 ` [PATCH 049/104] virtiofsd: move to a new pid namespace Dr. David Alan Gilbert (git)
2020-01-06 14:40 ` Daniel P. Berrangé
2019-12-12 16:38 ` [PATCH 050/104] virtiofsd: add seccomp whitelist Dr. David Alan Gilbert (git)
2020-01-06 14:56 ` Daniel P. Berrangé
2020-01-06 18:54 ` Dr. David Alan Gilbert
2019-12-12 16:38 ` [PATCH 051/104] virtiofsd: Parse flag FUSE_WRITE_KILL_PRIV Dr. David Alan Gilbert (git)
2020-01-15 12:06 ` Misono Tomohiro
2020-01-15 14:34 ` Dr. David Alan Gilbert
2020-01-16 14:37 ` Sergio Lopez
2019-12-12 16:38 ` [PATCH 052/104] virtiofsd: cap-ng helpers Dr. David Alan Gilbert (git)
2020-01-06 14:58 ` Daniel P. Berrangé
2019-12-12 16:38 ` [PATCH 053/104] virtiofsd: Drop CAP_FSETID if client asked for it Dr. David Alan Gilbert (git)
2020-01-16 4:41 ` Misono Tomohiro
2020-01-16 15:21 ` Sergio Lopez
2019-12-12 16:38 ` [PATCH 054/104] virtiofsd: set maximum RLIMIT_NOFILE limit Dr. David Alan Gilbert (git)
2020-01-06 15:00 ` Daniel P. Berrangé
2020-01-15 17:09 ` Philippe Mathieu-Daudé
2020-01-15 17:38 ` Dr. David Alan Gilbert
2019-12-12 16:38 ` [PATCH 055/104] virtiofsd: fix libfuse information leaks Dr. David Alan Gilbert (git)
2020-01-06 15:01 ` Daniel P. Berrangé
2020-01-15 17:07 ` Philippe Mathieu-Daudé
2019-12-12 16:38 ` [PATCH 056/104] virtiofsd: add security guide document Dr. David Alan Gilbert (git)
2020-01-06 15:03 ` Daniel P. Berrangé
2020-01-06 17:53 ` Dr. David Alan Gilbert
2020-01-07 10:05 ` Daniel P. Berrangé
2020-01-09 17:02 ` Dr. David Alan Gilbert
2019-12-12 16:38 ` [PATCH 057/104] virtiofsd: add --syslog command-line option Dr. David Alan Gilbert (git)
2020-01-06 15:05 ` Daniel P. Berrangé
2019-12-12 16:38 ` [PATCH 058/104] virtiofsd: print log only when priority is high enough Dr. David Alan Gilbert (git)
2020-01-06 15:10 ` Daniel P. Berrangé
2020-01-06 17:05 ` Dr. David Alan Gilbert
2020-01-06 17:20 ` Daniel P. Berrangé
2020-01-06 17:27 ` Dr. David Alan Gilbert
2019-12-12 16:38 ` [PATCH 059/104] virtiofsd: Add ID to the log with FUSE_LOG_DEBUG level Dr. David Alan Gilbert (git)
2020-01-06 15:18 ` Daniel P. Berrangé
2020-01-06 17:47 ` Dr. David Alan Gilbert
2019-12-12 16:38 ` [PATCH 060/104] virtiofsd: Add timestamp " Dr. David Alan Gilbert (git)
2020-01-07 11:11 ` Daniel P. Berrangé
2019-12-12 16:38 ` [PATCH 061/104] virtiofsd: Handle reinit Dr. David Alan Gilbert (git)
2020-01-07 11:12 ` Daniel P. Berrangé
2019-12-12 16:38 ` [PATCH 062/104] virtiofsd: Handle hard reboot Dr. David Alan Gilbert (git)
2020-01-07 11:14 ` Daniel P. Berrangé
2020-01-10 15:43 ` Dr. David Alan Gilbert
2020-01-20 6:46 ` Misono Tomohiro
2020-01-22 18:28 ` Dr. David Alan Gilbert
2019-12-12 16:38 ` [PATCH 063/104] virtiofsd: Kill threads when queues are stopped Dr. David Alan Gilbert (git)
2020-01-07 11:16 ` Daniel P. Berrangé
2019-12-12 16:38 ` [PATCH 064/104] vhost-user: Print unexpected slave message types Dr. David Alan Gilbert (git)
2020-01-07 11:18 ` Daniel P. Berrangé
2019-12-12 16:38 ` [PATCH 065/104] contrib/libvhost-user: Protect slave fd with mutex Dr. David Alan Gilbert (git)
2020-01-07 11:19 ` Daniel P. Berrangé
2019-12-12 16:38 ` [PATCH 066/104] virtiofsd: passthrough_ll: add renameat2 support Dr. David Alan Gilbert (git)
2020-01-07 11:21 ` Daniel P. Berrangé
2020-01-10 9:52 ` Dr. David Alan Gilbert
2020-01-13 20:06 ` Dr. David Alan Gilbert
2020-01-14 8:29 ` Daniel P. Berrangé
2020-01-14 10:07 ` Dr. David Alan Gilbert
2020-01-14 10:12 ` Daniel P. Berrangé
2019-12-12 16:38 ` [PATCH 067/104] virtiofsd: passthrough_ll: disable readdirplus on cache=never Dr. David Alan Gilbert (git)
2020-01-07 11:22 ` Daniel P. Berrangé
2019-12-12 16:38 ` [PATCH 068/104] virtiofsd: passthrough_ll: control readdirplus Dr. David Alan Gilbert (git)
2020-01-07 11:23 ` Daniel P. Berrangé
2020-01-10 15:04 ` Dr. David Alan Gilbert
2020-01-10 15:13 ` Miklos Szeredi
2020-01-10 15:18 ` Daniel P. Berrangé
2020-01-10 15:30 ` Miklos Szeredi
2020-01-10 15:40 ` Vivek Goyal
2020-01-10 16:00 ` Miklos Szeredi
2019-12-12 16:38 ` [PATCH 069/104] virtiofsd: rename unref_inode() to unref_inode_lolocked() Dr. David Alan Gilbert (git)
2020-01-07 11:23 ` Daniel P. Berrangé
2019-12-12 16:38 ` [PATCH 070/104] virtiofsd: fail when parent inode isn't known in lo_do_lookup() Dr. David Alan Gilbert (git)
2020-01-16 7:17 ` Misono Tomohiro
2020-01-20 10:08 ` Sergio Lopez
2019-12-12 16:38 ` [PATCH 071/104] virtiofsd: extract root inode init into setup_root() Dr. David Alan Gilbert (git)
2020-01-16 7:20 ` Misono Tomohiro
2020-01-16 15:51 ` Dr. David Alan Gilbert
2020-01-20 10:09 ` Sergio Lopez
2019-12-12 16:38 ` [PATCH 072/104] virtiofsd: passthrough_ll: fix refcounting on remove/rename Dr. David Alan Gilbert (git)
2020-01-16 11:56 ` Misono Tomohiro
2020-01-16 16:45 ` Dr. David Alan Gilbert
2020-01-17 10:19 ` Miklos Szeredi
2020-01-17 11:37 ` Dr. David Alan Gilbert
2020-01-17 18:43 ` Dr. David Alan Gilbert
2020-01-20 10:17 ` Sergio Lopez
2020-01-20 10:56 ` Dr. David Alan Gilbert
2019-12-12 16:38 ` [PATCH 073/104] virtiofsd: passthrough_ll: clean up cache related options Dr. David Alan Gilbert (git)
2020-01-07 11:24 ` Daniel P. Berrangé
2019-12-12 16:38 ` [PATCH 074/104] virtiofsd: passthrough_ll: use hashtable Dr. David Alan Gilbert (git)
2020-01-07 11:28 ` Daniel P. Berrangé
2019-12-12 16:38 ` [PATCH 075/104] virtiofsd: Clean up inodes on destroy Dr. David Alan Gilbert (git)
2020-01-07 11:29 ` Daniel P. Berrangé
2019-12-12 16:38 ` [PATCH 076/104] virtiofsd: support nanosecond resolution for file timestamp Dr. David Alan Gilbert (git)
2020-01-07 11:30 ` Daniel P. Berrangé
2019-12-12 16:38 ` [PATCH 077/104] virtiofsd: fix error handling in main() Dr. David Alan Gilbert (git)
2020-01-07 11:30 ` Daniel P. Berrangé
2019-12-12 16:38 ` [PATCH 078/104] virtiofsd: cleanup allocated resource in se Dr. David Alan Gilbert (git)
2020-01-07 11:34 ` Daniel P. Berrangé
2019-12-12 16:38 ` [PATCH 079/104] virtiofsd: fix memory leak on lo.source Dr. David Alan Gilbert (git)
2020-01-07 11:37 ` Daniel P. Berrangé
2020-01-09 17:38 ` Dr. David Alan Gilbert
2019-12-12 16:38 ` [PATCH 080/104] virtiofsd: add helper for lo_data cleanup Dr. David Alan Gilbert (git)
2020-01-07 11:40 ` Daniel P. Berrangé
2020-01-09 17:41 ` Dr. David Alan Gilbert
2019-12-12 16:38 ` [PATCH 081/104] virtiofsd: Prevent multiply running with same vhost_user_socket Dr. David Alan Gilbert (git)
2020-01-07 11:43 ` Daniel P. Berrangé
2019-12-12 16:38 ` [PATCH 082/104] virtiofsd: enable PARALLEL_DIROPS during INIT Dr. David Alan Gilbert (git)
2020-01-07 11:44 ` Daniel P. Berrangé
2019-12-12 16:38 ` [PATCH 083/104] virtiofsd: fix incorrect error handling in lo_do_lookup Dr. David Alan Gilbert (git)
2020-01-07 11:45 ` Daniel P. Berrangé
2019-12-12 16:38 ` [PATCH 084/104] Virtiofsd: fix memory leak on fuse queueinfo Dr. David Alan Gilbert (git)
2020-01-15 11:20 ` Misono Tomohiro
2020-01-15 16:57 ` Dr. David Alan Gilbert
2020-01-16 0:54 ` misono.tomohiro
2020-01-16 12:19 ` Dr. David Alan Gilbert
2020-01-20 10:24 ` Sergio Lopez
2020-01-20 10:54 ` Dr. David Alan Gilbert
2019-12-12 16:38 ` [PATCH 085/104] virtiofsd: Support remote posix locks Dr. David Alan Gilbert (git)
2020-01-15 23:38 ` Masayoshi Mizuma [this message]
2020-01-16 13:26 ` Vivek Goyal
2020-01-17 9:27 ` Dr. David Alan Gilbert
2019-12-12 16:38 ` [PATCH 086/104] virtiofsd: use fuse_lowlevel_is_virtio() in fuse_session_destroy() Dr. David Alan Gilbert (git)
2020-01-07 12:01 ` Daniel P. Berrangé
2020-01-07 13:24 ` Dr. David Alan Gilbert
2019-12-12 16:38 ` [PATCH 087/104] virtiofsd: prevent fv_queue_thread() vs virtio_loop() races Dr. David Alan Gilbert (git)
2020-01-07 12:02 ` Daniel P. Berrangé
2019-12-12 16:38 ` [PATCH 088/104] virtiofsd: make lo_release() atomic Dr. David Alan Gilbert (git)
2020-01-07 12:03 ` Daniel P. Berrangé
2019-12-12 16:38 ` [PATCH 089/104] virtiofsd: prevent races with lo_dirp_put() Dr. David Alan Gilbert (git)
2020-01-17 13:52 ` Philippe Mathieu-Daudé
2019-12-12 16:38 ` [PATCH 090/104] virtiofsd: rename inode->refcount to inode->nlookup Dr. David Alan Gilbert (git)
2020-01-17 13:54 ` Philippe Mathieu-Daudé
2019-12-12 16:38 ` [PATCH 091/104] libvhost-user: Fix some memtable remap cases Dr. David Alan Gilbert (git)
2020-01-17 13:58 ` Marc-André Lureau
2020-01-20 15:50 ` Dr. David Alan Gilbert
2019-12-12 16:38 ` [PATCH 092/104] virtiofsd: add man page Dr. David Alan Gilbert (git)
2019-12-13 14:33 ` Liam Merwick
2019-12-13 15:26 ` Dr. David Alan Gilbert
2020-01-07 12:13 ` Daniel P. Berrangé
2020-01-09 20:02 ` Dr. David Alan Gilbert
2020-01-10 9:30 ` Daniel P. Berrangé
2020-01-10 11:06 ` Dr. David Alan Gilbert
2019-12-12 16:38 ` [PATCH 093/104] virtiofsd: introduce inode refcount to prevent use-after-free Dr. David Alan Gilbert (git)
2020-01-16 12:25 ` Misono Tomohiro
2020-01-16 17:21 ` Stefan Hajnoczi
2020-01-16 17:42 ` Dr. David Alan Gilbert
2020-01-17 0:47 ` misono.tomohiro
2020-01-20 10:28 ` Sergio Lopez
2019-12-12 16:38 ` [PATCH 094/104] virtiofsd: do not always set FUSE_FLOCK_LOCKS Dr. David Alan Gilbert (git)
2020-01-17 8:50 ` Misono Tomohiro
2020-01-20 10:31 ` Sergio Lopez
2019-12-12 16:38 ` [PATCH 095/104] virtiofsd: convert more fprintf and perror to use fuse log infra Dr. David Alan Gilbert (git)
2020-01-07 12:16 ` Daniel P. Berrangé
2020-01-16 12:29 ` Misono Tomohiro
2020-01-16 16:32 ` Dr. David Alan Gilbert
2019-12-12 16:38 ` [PATCH 096/104] virtiofsd: Reset O_DIRECT flag during file open Dr. David Alan Gilbert (git)
2020-01-07 12:17 ` Daniel P. Berrangé
2019-12-12 16:38 ` [PATCH 097/104] virtiofsd: Fix data corruption with O_APPEND wirte in writeback mode Dr. David Alan Gilbert (git)
2020-01-07 12:20 ` Daniel P. Berrangé
2020-01-07 13:27 ` Dr. David Alan Gilbert
2019-12-12 16:38 ` [PATCH 098/104] virtiofsd: add definition of fuse_buf_writev() Dr. David Alan Gilbert (git)
2020-01-07 12:21 ` Daniel P. Berrangé
2019-12-12 16:38 ` [PATCH 099/104] virtiofsd: use fuse_buf_writev to replace fuse_buf_write for better performance Dr. David Alan Gilbert (git)
2020-01-07 12:23 ` Daniel P. Berrangé
2020-01-10 13:15 ` Dr. David Alan Gilbert
2019-12-12 16:39 ` [PATCH 100/104] virtiofsd: process requests in a thread pool Dr. David Alan Gilbert (git)
2020-01-20 12:54 ` Misono Tomohiro
2019-12-12 16:39 ` [PATCH 101/104] virtiofsd: prevent FUSE_INIT/FUSE_DESTROY races Dr. David Alan Gilbert (git)
2020-01-15 23:05 ` Masayoshi Mizuma
2020-01-16 12:24 ` Dr. David Alan Gilbert
2020-01-17 13:40 ` Philippe Mathieu-Daudé
2020-01-17 15:28 ` Dr. David Alan Gilbert
2020-01-17 15:30 ` Philippe Mathieu-Daudé
2019-12-12 16:39 ` [PATCH 102/104] virtiofsd: fix lo_destroy() resource leaks Dr. David Alan Gilbert (git)
2020-01-17 13:43 ` Philippe Mathieu-Daudé
2019-12-12 16:39 ` [PATCH 103/104] virtiofsd: add --thread-pool-size=NUM option Dr. David Alan Gilbert (git)
2020-01-07 12:25 ` Daniel P. Berrangé
2020-01-17 13:35 ` Philippe Mathieu-Daudé
2019-12-12 16:39 ` [PATCH 104/104] virtiofsd: Convert lo_destroy to take the lo->mutex lock itself Dr. David Alan Gilbert (git)
2020-01-17 13:33 ` Philippe Mathieu-Daudé
2019-12-12 18:21 ` [PATCH 000/104] virtiofs daemon [all] no-reply
2020-01-17 11:32 ` Dr. David Alan Gilbert
2020-01-17 13:32 ` [PATCH 105/104] virtiofsd: Unref old/new inodes with the same mutex lock in lo_rename() Philippe Mathieu-Daudé
2020-01-19 8:35 ` Xiao Yang
2020-01-20 8:27 ` Philippe Mathieu-Daudé
2020-01-20 18:52 ` Dr. David Alan Gilbert
2020-01-20 18:55 ` Philippe Mathieu-Daudé
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200115233831.mw6sttmepespg4kk@gabell \
--to=msys.mizuma@gmail.com \
--cc=dgilbert@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@redhat.com \
--cc=vgoyal@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).