[PATCH] virtiofsd: support per-file DAX
From: Jeffle Xu <jefflexu@linux.alibaba.com>
Date: 2021-07-16 01:52:52
Also in:
linux-fsdevel
Subsystem:
the rest · Maintainer:
Linus Torvalds
An example implementation of supporting per-file DAX flag for virtiofsd, where DAx is enabled for files larger than 1M size. Signed-off-by: Jeffle Xu <jefflexu@linux.alibaba.com> --- contrib/virtiofsd/fuse_kernel.h | 4 +++- contrib/virtiofsd/fuse_lowlevel.c | 3 +++ 2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/contrib/virtiofsd/fuse_kernel.h b/contrib/virtiofsd/fuse_kernel.h
index d2b7ccf96b..9c476b7021 100644
--- a/contrib/virtiofsd/fuse_kernel.h
+++ b/contrib/virtiofsd/fuse_kernel.h@@ -165,6 +165,8 @@ /** The node ID of the root inode */ #define FUSE_ROOT_ID 1 +#define FUSE_ATTR_DAX (1 << 1) + /* Make sure all structures are padded to 64bit boundary, so 32bit userspace works under 64bit kernels */
@@ -184,7 +186,7 @@ struct fuse_attr { uint32_t gid; uint32_t rdev; uint32_t blksize; - uint32_t padding; + uint32_t flags; }; struct fuse_kstatfs {
diff --git a/contrib/virtiofsd/fuse_lowlevel.c b/contrib/virtiofsd/fuse_lowlevel.c
index 046a1b4a02..d8a3873246 100644
--- a/contrib/virtiofsd/fuse_lowlevel.c
+++ b/contrib/virtiofsd/fuse_lowlevel.c@@ -60,6 +60,9 @@ static void convert_stat(const struct stat *stbuf, struct fuse_attr *attr) attr->atimensec = ST_ATIM_NSEC(stbuf); attr->mtimensec = ST_MTIM_NSEC(stbuf); attr->ctimensec = ST_CTIM_NSEC(stbuf); + + if (stbuf->st_size >= 1048576) + attr->flags |= FUSE_ATTR_DAX; } static void convert_attr(const struct fuse_setattr_in *attr, struct stat *stbuf)
--
2.27.0
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization