diff options
author | Miklos Szeredi <miklos@szeredi.hu> | 2008-10-14 14:37:48 +0000 |
---|---|---|
committer | Miklos Szeredi <miklos@szeredi.hu> | 2008-10-14 14:37:48 +0000 |
commit | b7af77dc1dfb5eb91eb408a0aeaf30783b5974ab (patch) | |
tree | 32d22ec0beb32b8fd99f9ce4cd14e8dcd53ca82c /lib/fuse_lowlevel.c | |
parent | 78e42c17a69736ff19ae3a6a198bbd2bbee01202 (diff) | |
download | android_external_fuse-b7af77dc1dfb5eb91eb408a0aeaf30783b5974ab.tar.gz android_external_fuse-b7af77dc1dfb5eb91eb408a0aeaf30783b5974ab.tar.bz2 android_external_fuse-b7af77dc1dfb5eb91eb408a0aeaf30783b5974ab.zip |
Pass current file flags to read and write operations
Diffstat (limited to 'lib/fuse_lowlevel.c')
-rw-r--r-- | lib/fuse_lowlevel.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/lib/fuse_lowlevel.c b/lib/fuse_lowlevel.c index 048b2cc..df88f26 100644 --- a/lib/fuse_lowlevel.c +++ b/lib/fuse_lowlevel.c @@ -648,6 +648,10 @@ static void do_read(fuse_req_t req, fuse_ino_t nodeid, const void *inarg) memset(&fi, 0, sizeof(fi)); fi.fh = arg->fh; fi.fh_old = fi.fh; + if (req->f->conn.proto_minor >= 9) { + fi.lock_owner = arg->lock_owner; + fi.flags = arg->flags; + } req->f->op.read(req, nodeid, arg->size, arg->offset, &fi); } else fuse_reply_err(req, ENOSYS); @@ -664,10 +668,13 @@ static void do_write(fuse_req_t req, fuse_ino_t nodeid, const void *inarg) fi.fh_old = fi.fh; fi.writepage = arg->write_flags & 1; - if (req->f->conn.proto_minor < 9) + if (req->f->conn.proto_minor < 9) { param = ((char *) arg) + FUSE_COMPAT_WRITE_IN_SIZE; - else + } else { + fi.lock_owner = arg->lock_owner; + fi.flags = arg->flags; param = PARAM(arg); + } if (req->f->op.write) req->f->op.write(req, nodeid, param, arg->size, |