kernel interface changes
diff --git a/lib/fuse.c b/lib/fuse.c
index 9d0783d..27e331a 100644
--- a/lib/fuse.c
+++ b/lib/fuse.c
@@ -19,6 +19,9 @@
#define FUSE_MAX_PATH 4096
#define PARAM(inarg) (((char *)(inarg)) + sizeof(*inarg))
+#define ENTRY_REVALIDATE_TIME 1 /* sec */
+#define ATTR_REVALIDATE_TIME 1 /* sec */
+
static const char *opname(enum fuse_opcode opcode)
{
switch(opcode) {
@@ -407,7 +410,7 @@
}
static int lookup_path(struct fuse *f, fino_t ino, int version, char *name,
- const char *path, struct fuse_lookup_out *arg)
+ const char *path, struct fuse_entry_out *arg)
{
int res;
struct stat buf;
@@ -416,11 +419,15 @@
if(res == 0) {
struct node *node;
- memset(arg, 0, sizeof(struct fuse_lookup_out));
+ memset(arg, 0, sizeof(struct fuse_entry_out));
convert_stat(&buf, &arg->attr);
node = find_node(f, ino, name, &arg->attr, version);
arg->ino = node->ino;
arg->generation = node->generation;
+ arg->entry_valid = ENTRY_REVALIDATE_TIME;
+ arg->entry_valid_nsec = 0;
+ arg->attr_valid = ATTR_REVALIDATE_TIME;
+ arg->attr_valid_nsec = 0;
if(f->flags & FUSE_DEBUG) {
printf(" INO: %li\n", arg->ino);
fflush(stdout);
@@ -433,7 +440,7 @@
{
int res;
char *path;
- struct fuse_lookup_out arg;
+ struct fuse_entry_out arg;
res = -ENOENT;
path = get_path_name(f, in->ino, name);
@@ -465,7 +472,7 @@
int res;
char *path;
struct stat buf;
- struct fuse_getattr_out arg;
+ struct fuse_attr_out arg;
res = -ENOENT;
path = get_path(f, in->ino);
@@ -477,7 +484,9 @@
}
if(res == 0) {
- memset(&arg, 0, sizeof(struct fuse_getattr_out));
+ memset(&arg, 0, sizeof(struct fuse_attr_out));
+ arg.attr_valid = ATTR_REVALIDATE_TIME;
+ arg.attr_valid_nsec = 0;
convert_stat(&buf, &arg.attr);
}
@@ -541,7 +550,7 @@
char *path;
int valid = arg->valid;
struct fuse_attr *attr = &arg->attr;
- struct fuse_setattr_out outarg;
+ struct fuse_attr_out outarg;
res = -ENOENT;
path = get_path(f, in->ino);
@@ -562,7 +571,9 @@
struct stat buf;
res = f->op.getattr(path, &buf);
if(!res) {
- memset(&outarg, 0, sizeof(struct fuse_setattr_out));
+ memset(&outarg, 0, sizeof(struct fuse_attr_out));
+ outarg.attr_valid = ATTR_REVALIDATE_TIME;
+ outarg.attr_valid_nsec = 0;
convert_stat(&buf, &outarg.attr);
}
}
@@ -622,7 +633,7 @@
int res;
char *path;
char *name = PARAM(inarg);
- struct fuse_lookup_out outarg;
+ struct fuse_entry_out outarg;
res = -ENOENT;
path = get_path_name(f, in->ino, name);
@@ -648,7 +659,7 @@
int res;
char *path;
char *name = PARAM(inarg);
- struct fuse_lookup_out outarg;
+ struct fuse_entry_out outarg;
res = -ENOENT;
path = get_path_name(f, in->ino, name);
@@ -711,7 +722,7 @@
{
int res;
char *path;
- struct fuse_lookup_out outarg;
+ struct fuse_entry_out outarg;
res = -ENOENT;
path = get_path_name(f, in->ino, name);
@@ -766,7 +777,7 @@
char *oldpath;
char *newpath;
char *name = PARAM(arg);
- struct fuse_lookup_out outarg;
+ struct fuse_entry_out outarg;
res = -ENOENT;
oldpath = get_path(f, in->ino);