aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/fs/fuse/fuse_internal.c1
-rw-r--r--sys/fs/fuse/fuse_node.c7
-rw-r--r--tests/sys/fs/fusefs/getattr.cc15
-rw-r--r--tests/sys/fs/fusefs/lookup.cc15
4 files changed, 25 insertions, 13 deletions
diff --git a/sys/fs/fuse/fuse_internal.c b/sys/fs/fuse/fuse_internal.c
index e2351e4ac24a..2d1c729a395a 100644
--- a/sys/fs/fuse/fuse_internal.c
+++ b/sys/fs/fuse/fuse_internal.c
@@ -326,7 +326,6 @@ fuse_internal_cache_attrs(struct vnode *vp, struct fuse_attr *attr,
else
return;
- vattr_null(vp_cache_at);
vp_cache_at->va_fsid = mp->mnt_stat.f_fsid.val[0];
vp_cache_at->va_fileid = attr->ino;
vp_cache_at->va_mode = attr->mode & ~S_IFMT;
diff --git a/sys/fs/fuse/fuse_node.c b/sys/fs/fuse/fuse_node.c
index 6a7f2e88831c..1ff67ecf74e4 100644
--- a/sys/fs/fuse/fuse_node.c
+++ b/sys/fs/fuse/fuse_node.c
@@ -156,7 +156,14 @@ fuse_vnode_init(struct vnode *vp, struct fuse_vnode_data *fvdat,
{
fvdat->nid = nodeid;
LIST_INIT(&fvdat->handles);
+
vattr_null(&fvdat->cached_attrs);
+ fvdat->cached_attrs.va_birthtime.tv_sec = -1;
+ fvdat->cached_attrs.va_birthtime.tv_nsec = 0;
+ fvdat->cached_attrs.va_fsid = VNOVAL;
+ fvdat->cached_attrs.va_gen = 0;
+ fvdat->cached_attrs.va_rdev = NODEV;
+
if (nodeid == FUSE_ROOT_ID) {
vp->v_vflag |= VV_ROOT;
}
diff --git a/tests/sys/fs/fusefs/getattr.cc b/tests/sys/fs/fusefs/getattr.cc
index 1795f29a5d76..98a757fdff94 100644
--- a/tests/sys/fs/fusefs/getattr.cc
+++ b/tests/sys/fs/fusefs/getattr.cc
@@ -246,12 +246,15 @@ TEST_F(Getattr, ok)
EXPECT_EQ(ino, sb.st_ino);
EXPECT_EQ(S_IFREG | 0644, sb.st_mode);
- //st_birthtim and st_flags are not supported by protocol 7.8. They're
- //only supported as OS-specific extensions to OSX.
- //EXPECT_EQ(, sb.st_birthtim);
- //EXPECT_EQ(, sb.st_flags);
-
- //FUSE can't set st_blksize until protocol 7.9
+ /*
+ * st_birthtim and st_flags are not supported by the fuse protocol.
+ * They're only supported as OS-specific extensions to OSX. For
+ * birthtime, the convention for "not supported" is "negative one
+ * second".
+ */
+ EXPECT_EQ(-1, sb.st_birthtim.tv_sec);
+ EXPECT_EQ(0, sb.st_birthtim.tv_nsec);
+ EXPECT_EQ(0u, sb.st_flags);
}
/*
diff --git a/tests/sys/fs/fusefs/lookup.cc b/tests/sys/fs/fusefs/lookup.cc
index 549df0369fa7..6d506c1ab700 100644
--- a/tests/sys/fs/fusefs/lookup.cc
+++ b/tests/sys/fs/fusefs/lookup.cc
@@ -112,12 +112,15 @@ TEST_F(Lookup, attr_cache)
// fuse(4) does not _yet_ support inode generations
//EXPECT_EQ(generation, sb.st_gen);
- //st_birthtim and st_flags are not supported by protocol 7.8. They're
- //only supported as OS-specific extensions to OSX.
- //EXPECT_EQ(, sb.st_birthtim);
- //EXPECT_EQ(, sb.st_flags);
-
- //FUSE can't set st_blksize until protocol 7.9
+ /*
+ * st_birthtim and st_flags are not supported by the fuse protocol.
+ * They're only supported as OS-specific extensions to OSX. For
+ * birthtime, the convention for "not supported" is "negative one
+ * second".
+ */
+ EXPECT_EQ(-1, sb.st_birthtim.tv_sec);
+ EXPECT_EQ(0, sb.st_birthtim.tv_nsec);
+ EXPECT_EQ(0u, sb.st_flags);
}
/*