From: Darrick J. Wong <djwong@xxxxxxxxxx> In iomap mode, we can support the strictatime/lazytime mount options. Add them to fuse2fs. Signed-off-by: "Darrick J. Wong" <djwong@xxxxxxxxxx> --- misc/fuse2fs.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/misc/fuse2fs.c b/misc/fuse2fs.c index e71fcbaeeaf0c6..b5f665ada36991 100644 --- a/misc/fuse2fs.c +++ b/misc/fuse2fs.c @@ -262,6 +262,7 @@ struct fuse2fs { uint8_t unmount_in_destroy; uint8_t noblkdev; uint8_t can_hardlink; + uint8_t iomap_passthrough_options; enum fuse2fs_opstate opstate; int blocklog; @@ -1370,6 +1371,10 @@ static void *op_init(struct fuse_conn_info *conn err_printf(ff, "%s\n", _("could not enable iomap.")); goto mount_fail; } + if (ff->iomap_passthrough_options && !fuse2fs_iomap_enabled(ff)) { + err_printf(ff, "%s\n", _("some mount options require iomap.")); + goto mount_fail; + } #endif #if defined(HAVE_FUSE_IOMAP) && defined(FUSE_CAP_IOMAP_DIRECTIO) if (fuse2fs_iomap_enabled(ff)) @@ -6228,6 +6233,7 @@ enum { FUSE2FS_ERRORS_BEHAVIOR, #ifdef HAVE_FUSE_IOMAP FUSE2FS_IOMAP, + FUSE2FS_IOMAP_PASSTHROUGH, #endif }; @@ -6251,6 +6257,17 @@ static struct fuse_opt fuse2fs_opts[] = { FUSE2FS_OPT("lockfile=%s", lockfile, 0), FUSE2FS_OPT("noblkdev", noblkdev, 1), +#ifdef HAVE_FUSE_IOMAP +#ifdef MS_LAZYTIME + FUSE_OPT_KEY("lazytime", FUSE2FS_IOMAP_PASSTHROUGH), + FUSE_OPT_KEY("nolazytime", FUSE2FS_IOMAP_PASSTHROUGH), +#endif +#ifdef MS_STRICTATIME + FUSE_OPT_KEY("strictatime", FUSE2FS_IOMAP_PASSTHROUGH), + FUSE_OPT_KEY("nostrictatime", FUSE2FS_IOMAP_PASSTHROUGH), +#endif +#endif + FUSE_OPT_KEY("user_xattr", FUSE2FS_IGNORED), FUSE_OPT_KEY("noblock_validity", FUSE2FS_IGNORED), FUSE_OPT_KEY("nodelalloc", FUSE2FS_IGNORED), @@ -6277,6 +6294,12 @@ static int fuse2fs_opt_proc(void *data, const char *arg, struct fuse2fs *ff = data; switch (key) { +#ifdef HAVE_FUSE_IOMAP + case FUSE2FS_IOMAP_PASSTHROUGH: + ff->iomap_passthrough_options = 1; + /* pass through to libfuse */ + return 1; +#endif case FUSE2FS_DIRSYNC: ff->dirsync = 1; /* pass through to libfuse */