aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog.rst3
-rw-r--r--include/fuse_lowlevel.h20
-rwxr-xr-xlib/fuse_lowlevel.c40
3 files changed, 33 insertions, 30 deletions
diff --git a/ChangeLog.rst b/ChangeLog.rst
index f4eb6b5..28888bf 100644
--- a/ChangeLog.rst
+++ b/ChangeLog.rst
@@ -1,6 +1,9 @@
Unreleased Changes
==================
+* The ``fuse_lowlevel_notify_*`` functions now all take a `struct
+ fuse_session` parameter instead of a `struct fuse_chan`.
+
* The channel interface (``fuse_chan_*`` functions) has been
made private. The `struct fuse_chan_ops` data structure is now
opaque.
diff --git a/include/fuse_lowlevel.h b/include/fuse_lowlevel.h
index a01dbf6..4ae0b9c 100644
--- a/include/fuse_lowlevel.h
+++ b/include/fuse_lowlevel.h
@@ -1394,14 +1394,14 @@ int fuse_lowlevel_notify_poll(struct fuse_pollhandle *ph);
/**
* Notify to invalidate cache for an inode
*
- * @param ch the channel through which to send the invalidation
+ * @param se the session object
* @param ino the inode number
* @param off the offset in the inode where to start invalidating
* or negative to invalidate attributes only
* @param len the amount of cache to invalidate or 0 for all
* @return zero for success, -errno for failure
*/
-int fuse_lowlevel_notify_inval_inode(struct fuse_chan *ch, fuse_ino_t ino,
+int fuse_lowlevel_notify_inval_inode(struct fuse_session *se, fuse_ino_t ino,
off_t off, off_t len);
/**
@@ -1412,13 +1412,13 @@ int fuse_lowlevel_notify_inval_inode(struct fuse_chan *ch, fuse_ino_t ino,
* don't call it with a lock held that can also be held by a filesystem
* operation.
*
- * @param ch the channel through which to send the invalidation
+ * @param se the session object
* @param parent inode number
* @param name file name
* @param namelen strlen() of file name
* @return zero for success, -errno for failure
*/
-int fuse_lowlevel_notify_inval_entry(struct fuse_chan *ch, fuse_ino_t parent,
+int fuse_lowlevel_notify_inval_entry(struct fuse_session *se, fuse_ino_t parent,
const char *name, size_t namelen);
/**
@@ -1430,14 +1430,14 @@ int fuse_lowlevel_notify_inval_entry(struct fuse_chan *ch, fuse_ino_t parent,
* don't call it with a lock held that can also be held by a filesystem
* operation.
*
- * @param ch the channel through which to send the notification
+ * @param se the session object
* @param parent inode number
* @param child inode number
* @param name file name
* @param namelen strlen() of file name
* @return zero for success, -errno for failure
*/
-int fuse_lowlevel_notify_delete(struct fuse_chan *ch,
+int fuse_lowlevel_notify_delete(struct fuse_session *se,
fuse_ino_t parent, fuse_ino_t child,
const char *name, size_t namelen);
@@ -1455,14 +1455,14 @@ int fuse_lowlevel_notify_delete(struct fuse_chan *ch,
* If this function returns an error, then the store wasn't fully
* completed, but it may have been partially completed.
*
- * @param ch the channel through which to send the invalidation
+ * @param se the session object
* @param ino the inode number
* @param offset the starting offset into the file to store to
* @param bufv buffer vector
* @param flags flags controlling the copy
* @return zero for success, -errno for failure
*/
-int fuse_lowlevel_notify_store(struct fuse_chan *ch, fuse_ino_t ino,
+int fuse_lowlevel_notify_store(struct fuse_session *se, fuse_ino_t ino,
off_t offset, struct fuse_bufvec *bufv,
enum fuse_buf_copy_flags flags);
/**
@@ -1483,14 +1483,14 @@ int fuse_lowlevel_notify_store(struct fuse_chan *ch, fuse_ino_t ino,
* buffer. For dirty pages the write() method will be called
* regardless of having been retrieved previously.
*
- * @param ch the channel through which to send the invalidation
+ * @param se the session object
* @param ino the inode number
* @param size the number of bytes to retrieve
* @param offset the starting offset into the file to retrieve from
* @param cookie user data to supply to the reply callback
* @return zero for success, -errno for failure
*/
-int fuse_lowlevel_notify_retrieve(struct fuse_chan *ch, fuse_ino_t ino,
+int fuse_lowlevel_notify_retrieve(struct fuse_session *se, fuse_ino_t ino,
size_t size, off_t offset, void *cookie);
diff --git a/lib/fuse_lowlevel.c b/lib/fuse_lowlevel.c
index 0e4083c..9b59515 100755
--- a/lib/fuse_lowlevel.c
+++ b/lib/fuse_lowlevel.c
@@ -2112,17 +2112,17 @@ int fuse_lowlevel_notify_poll(struct fuse_pollhandle *ph)
}
}
-int fuse_lowlevel_notify_inval_inode(struct fuse_chan *ch, fuse_ino_t ino,
+int fuse_lowlevel_notify_inval_inode(struct fuse_session *se, fuse_ino_t ino,
off_t off, off_t len)
{
struct fuse_notify_inval_inode_out outarg;
struct fuse_ll *f;
struct iovec iov[2];
- if (!ch)
+ if (!se)
return -EINVAL;
- f = fuse_chan_session(ch)->f;
+ f = se->f;
if (!f)
return -ENODEV;
@@ -2133,20 +2133,20 @@ int fuse_lowlevel_notify_inval_inode(struct fuse_chan *ch, fuse_ino_t ino,
iov[1].iov_base = &outarg;
iov[1].iov_len = sizeof(outarg);
- return send_notify_iov(f, ch, FUSE_NOTIFY_INVAL_INODE, iov, 2);
+ return send_notify_iov(f, se->ch, FUSE_NOTIFY_INVAL_INODE, iov, 2);
}
-int fuse_lowlevel_notify_inval_entry(struct fuse_chan *ch, fuse_ino_t parent,
+int fuse_lowlevel_notify_inval_entry(struct fuse_session *se, fuse_ino_t parent,
const char *name, size_t namelen)
{
struct fuse_notify_inval_entry_out outarg;
struct fuse_ll *f;
struct iovec iov[3];
- if (!ch)
+ if (!se)
return -EINVAL;
- f = fuse_chan_session(ch)->f;
+ f = se->f;
if (!f)
return -ENODEV;
@@ -2159,10 +2159,10 @@ int fuse_lowlevel_notify_inval_entry(struct fuse_chan *ch, fuse_ino_t parent,
iov[2].iov_base = (void *)name;
iov[2].iov_len = namelen + 1;
- return send_notify_iov(f, ch, FUSE_NOTIFY_INVAL_ENTRY, iov, 3);
+ return send_notify_iov(f, se->ch, FUSE_NOTIFY_INVAL_ENTRY, iov, 3);
}
-int fuse_lowlevel_notify_delete(struct fuse_chan *ch,
+int fuse_lowlevel_notify_delete(struct fuse_session *se,
fuse_ino_t parent, fuse_ino_t child,
const char *name, size_t namelen)
{
@@ -2170,10 +2170,10 @@ int fuse_lowlevel_notify_delete(struct fuse_chan *ch,
struct fuse_ll *f;
struct iovec iov[3];
- if (!ch)
+ if (!se)
return -EINVAL;
- f = fuse_chan_session(ch)->f;
+ f = se->f;
if (!f)
return -ENODEV;
@@ -2190,10 +2190,10 @@ int fuse_lowlevel_notify_delete(struct fuse_chan *ch,
iov[2].iov_base = (void *)name;
iov[2].iov_len = namelen + 1;
- return send_notify_iov(f, ch, FUSE_NOTIFY_DELETE, iov, 3);
+ return send_notify_iov(f, se->ch, FUSE_NOTIFY_DELETE, iov, 3);
}
-int fuse_lowlevel_notify_store(struct fuse_chan *ch, fuse_ino_t ino,
+int fuse_lowlevel_notify_store(struct fuse_session *se, fuse_ino_t ino,
off_t offset, struct fuse_bufvec *bufv,
enum fuse_buf_copy_flags flags)
{
@@ -2204,10 +2204,10 @@ int fuse_lowlevel_notify_store(struct fuse_chan *ch, fuse_ino_t ino,
size_t size = fuse_buf_size(bufv);
int res;
- if (!ch)
+ if (!se)
return -EINVAL;
- f = fuse_chan_session(ch)->f;
+ f = se->f;
if (!f)
return -ENODEV;
@@ -2227,7 +2227,7 @@ int fuse_lowlevel_notify_store(struct fuse_chan *ch, fuse_ino_t ino,
iov[1].iov_base = &outarg;
iov[1].iov_len = sizeof(outarg);
- res = fuse_send_data_iov(f, ch, iov, 2, bufv, flags);
+ res = fuse_send_data_iov(f, se->ch, iov, 2, bufv, flags);
if (res > 0)
res = -res;
@@ -2278,7 +2278,7 @@ out:
fuse_ll_clear_pipe(f);
}
-int fuse_lowlevel_notify_retrieve(struct fuse_chan *ch, fuse_ino_t ino,
+int fuse_lowlevel_notify_retrieve(struct fuse_session *se, fuse_ino_t ino,
size_t size, off_t offset, void *cookie)
{
struct fuse_notify_retrieve_out outarg;
@@ -2287,10 +2287,10 @@ int fuse_lowlevel_notify_retrieve(struct fuse_chan *ch, fuse_ino_t ino,
struct fuse_retrieve_req *rreq;
int err;
- if (!ch)
+ if (!se)
return -EINVAL;
- f = fuse_chan_session(ch)->f;
+ f = se->f;
if (!f)
return -ENODEV;
@@ -2316,7 +2316,7 @@ int fuse_lowlevel_notify_retrieve(struct fuse_chan *ch, fuse_ino_t ino,
iov[1].iov_base = &outarg;
iov[1].iov_len = sizeof(outarg);
- err = send_notify_iov(f, ch, FUSE_NOTIFY_RETRIEVE, iov, 2);
+ err = send_notify_iov(f, se->ch, FUSE_NOTIFY_RETRIEVE, iov, 2);
if (err) {
pthread_mutex_lock(&f->lock);
list_del_nreq(&rreq->nreq);