> From: Miklos Szeredi <mszer...@redhat.com> > > Signed-off-by: Miklos Szeredi <mszer...@redhat.com> > --- > tools/virtiofsd/helper.c | 3 +++ > tools/virtiofsd/passthrough_ll.c | 7 ++++++- > 2 files changed, 9 insertions(+), 1 deletion(-) > > diff --git a/tools/virtiofsd/helper.c b/tools/virtiofsd/helper.c > index c8cb88afdd..36eb273d8e 100644 > --- a/tools/virtiofsd/helper.c > +++ b/tools/virtiofsd/helper.c > @@ -154,6 +154,9 @@ void fuse_cmdline_help(void) > " allowed (default: 10)\n" > " -o norace disable racy fallback\n" > " default: false\n" > + " -o readdirplus|no_readdirplus\n" > + " enable/disable readirplus\n" > + " default: readdirplus\n"
Actually, default behavior is 1. no_readdirplus if cache=none 2. readdirplus otherwise. So help message should be fixed. other than that Reviewed-by: Misono Tomohiro <misono.tomoh...@jp.fujitsu.com> > ); > } > > diff --git a/tools/virtiofsd/passthrough_ll.c > b/tools/virtiofsd/passthrough_ll.c > index ae364a4825..b15633a044 100644 > --- a/tools/virtiofsd/passthrough_ll.c > +++ b/tools/virtiofsd/passthrough_ll.c > @@ -117,6 +117,8 @@ struct lo_data { > double timeout; > int cache; > int timeout_set; > + int readdirplus_set; > + int readdirplus_clear; > struct lo_inode root; /* protected by lo->mutex */ > struct lo_map ino_map; /* protected by lo->mutex */ > struct lo_map dirp_map; /* protected by lo->mutex */ > @@ -140,6 +142,8 @@ static const struct fuse_opt lo_opts[] = { > { "cache=auto", offsetof(struct lo_data, cache), CACHE_NORMAL }, > { "cache=always", offsetof(struct lo_data, cache), CACHE_ALWAYS }, > { "norace", offsetof(struct lo_data, norace), 1 }, > + { "readdirplus", offsetof(struct lo_data, readdirplus_set), 1 }, > + { "no_readdirplus", offsetof(struct lo_data, readdirplus_clear), 1 }, > FUSE_OPT_END > }; > static bool use_syslog = false; > @@ -478,7 +482,8 @@ 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 (lo->cache == CACHE_NEVER) { > + if ((lo->cache == CACHE_NEVER && !lo->readdirplus_set) || > + lo->readdirplus_clear) { > fuse_log(FUSE_LOG_DEBUG, "lo_init: disabling readdirplus\n"); > conn->want &= ~FUSE_CAP_READDIRPLUS; > } > -- > 2.24.1