From d735af94fa54a5555ce725f1d4e6b97b812b6603 Mon Sep 17 00:00:00 2001 From: Yuri Per Date: Sun, 3 Nov 2019 11:44:31 +0200 Subject: Implement lseek operation (#457) --- include/fuse_lowlevel.h | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'include/fuse_lowlevel.h') diff --git a/include/fuse_lowlevel.h b/include/fuse_lowlevel.h index 2073460..18c6363 100644 --- a/include/fuse_lowlevel.h +++ b/include/fuse_lowlevel.h @@ -1218,6 +1218,27 @@ struct fuse_lowlevel_ops { fuse_ino_t ino_out, off_t off_out, struct fuse_file_info *fi_out, size_t len, int flags); + + /** + * Find next data or hole after the specified offset + * + * If this request is answered with an error code of ENOSYS, this is + * treated as a permanent failure, i.e. all future lseek() requests will + * fail with the same error code without being send to the filesystem + * process. + * + * Valid replies: + * fuse_reply_lseek + * fuse_reply_err + * + * @param req request handle + * @param ino the inode number + * @param off offset to start search from + * @param whence either SEEK_DATA or SEEK_HOLE + * @param fi file information + */ + void (*lseek) (fuse_req_t req, fuse_ino_t ino, off_t off, int whence, + struct fuse_file_info *fi); }; /** @@ -1569,6 +1590,18 @@ int fuse_reply_ioctl_iov(fuse_req_t req, int result, const struct iovec *iov, */ int fuse_reply_poll(fuse_req_t req, unsigned revents); +/** + * Reply with offset + * + * Possible requests: + * lseek + * + * @param req request handle + * @param off offset of next data or hole + * @return zero for success, -errno for failure to send reply + */ +int fuse_reply_lseek(fuse_req_t req, off_t off); + /* ----------------------------------------------------------- * * Notification * * ----------------------------------------------------------- */ -- cgit v1.2.3