summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Siegl <stesie@brokenpipe.de>2006-08-03 17:45:43 +0000
committerStefan Siegl <stesie@brokenpipe.de>2006-08-03 17:45:43 +0000
commitfd9ac13b5e13cc9055759fdd8e95319dffc3c46a (patch)
treefaa41e7e4c409664f3fd6d659038187f2d117d48
parent2acd3621e881e412e00f097992607e3e0471b6cf (diff)
call open and release callbacks on read/write even in fuse_ops_compat2 mode
-rw-r--r--src/netfs.c40
1 files changed, 27 insertions, 13 deletions
diff --git a/src/netfs.c b/src/netfs.c
index dd6ca32e2..dfca2e817 100644
--- a/src/netfs.c
+++ b/src/netfs.c
@@ -1012,10 +1012,14 @@ error_t netfs_attempt_write (struct iouser *cred, struct node *node,
node->nn->info.compat22.writepage = 0; /* cannot distinct on the Hurd :( */
- if(fuse_ops_compat22 && fuse_ops_compat22->open)
- if((err = fuse_ops_compat22->open(node->nn->path,
- &node->nn->info.compat22)))
- goto out;
+ if(fuse_ops_compat2 && fuse_ops_compat2->open
+ && (err = fuse_ops_compat2->open(node->nn->path,
+ node->nn->info.compat22.flags)))
+ goto out;
+ else if(fuse_ops_compat22 && fuse_ops_compat22->open
+ && (err = fuse_ops_compat22->open(node->nn->path,
+ &node->nn->info.compat22)))
+ goto out;
int sz = fuse_ops_compat22 ?
(fuse_ops_compat22->write(node->nn->path, data, *len,
@@ -1032,10 +1036,13 @@ error_t netfs_attempt_write (struct iouser *cred, struct node *node,
if(sz >= 0 && fuse_ops_compat22 && fuse_ops_compat22->flush)
err = fuse_ops_compat22->flush(node->nn->path, &node->nn->info.compat22);
- if(fuse_ops_compat22 && fuse_ops_compat22->open
- && fuse_ops_compat22->release)
+ if(fuse_ops_compat2 && fuse_ops_compat2->open && fuse_ops_compat2->release)
+ fuse_ops_compat2->release(node->nn->path, node->nn->info.compat22.flags);
+
+ else if(fuse_ops_compat22 && fuse_ops_compat22->open
+ && fuse_ops_compat22->release)
fuse_ops_compat22->release(node->nn->path, &node->nn->info.compat22);
-
+
if(sz < 0)
err = -sz;
else
@@ -1112,10 +1119,14 @@ error_t netfs_attempt_read (struct iouser *cred, struct node *node,
goto out;
}
- if(fuse_ops_compat22 && fuse_ops_compat22->open)
- if((err = fuse_ops_compat22->open(node->nn->path,
- &node->nn->info.compat22)))
- goto out;
+ if(fuse_ops_compat2 && fuse_ops_compat2->open
+ && (err = fuse_ops_compat2->open(node->nn->path,
+ node->nn->info.compat22.flags)))
+ goto out;
+ else if(fuse_ops_compat22 && fuse_ops_compat22->open
+ && (err = fuse_ops_compat22->open(node->nn->path,
+ &node->nn->info.compat22)))
+ goto out;
int sz = fuse_ops_compat22 ?
(fuse_ops_compat22->read(node->nn->path, data, *len,
@@ -1132,8 +1143,11 @@ error_t netfs_attempt_read (struct iouser *cred, struct node *node,
if(sz >= 0 && fuse_ops_compat22 && fuse_ops_compat22->flush)
err = fuse_ops_compat22->flush(node->nn->path, &node->nn->info.compat22);
- if(fuse_ops_compat22 && fuse_ops_compat22->open
- && fuse_ops_compat22->release)
+ if(fuse_ops_compat2 && fuse_ops_compat2->open && fuse_ops_compat2->release)
+ fuse_ops_compat2->release(node->nn->path, node->nn->info.compat22.flags);
+
+ else if(fuse_ops_compat22 && fuse_ops_compat22->open
+ && fuse_ops_compat22->release)
fuse_ops_compat22->release(node->nn->path, &node->nn->info.compat22);
if(sz < 0)