diff options
author | Stefan Siegl <stesie@brokenpipe.de> | 2006-08-03 17:45:43 +0000 |
---|---|---|
committer | Stefan Siegl <stesie@brokenpipe.de> | 2006-08-03 17:45:43 +0000 |
commit | fd9ac13b5e13cc9055759fdd8e95319dffc3c46a (patch) | |
tree | faa41e7e4c409664f3fd6d659038187f2d117d48 /src | |
parent | 2acd3621e881e412e00f097992607e3e0471b6cf (diff) |
call open and release callbacks on read/write even in fuse_ops_compat2 mode
Diffstat (limited to 'src')
-rw-r--r-- | src/netfs.c | 40 |
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) |