aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBernd Schubert <bschubert@ddn.com>2024-08-26 19:33:47 +0200
committerBernd Schubert <bernd.schubert@fastmail.fm>2024-09-12 18:21:25 +0200
commit0a76670183f484461cf7d69c2761cfd65547500f (patch)
treeaa97a12fc2e834e4810ea5409e760042eb9a2ca0
parent373ddc7eae7b0c684fc4ab29d8addfa3b9e99e1e (diff)
downloadlibfuse-0a76670183f484461cf7d69c2761cfd65547500f.tar.gz
getattr: Make use of FUSE_GETATTR_FH in lowlevel examples
High level examples were already using it, but not lowlevel. Also update the documentation.
-rw-r--r--example/passthrough_hp.cc10
-rw-r--r--example/passthrough_ll.c3
-rw-r--r--include/fuse_lowlevel.h2
3 files changed, 8 insertions, 7 deletions
diff --git a/example/passthrough_hp.cc b/example/passthrough_hp.cc
index 4dab544..e75c749 100644
--- a/example/passthrough_hp.cc
+++ b/example/passthrough_hp.cc
@@ -226,12 +226,12 @@ static void sfs_init(void *userdata, fuse_conn_info *conn) {
}
-static void sfs_getattr(fuse_req_t req, fuse_ino_t ino, fuse_file_info *fi) {
- (void)fi;
- Inode& inode = get_inode(ino);
+static void sfs_getattr(fuse_req_t req, fuse_ino_t ino, fuse_file_info *fi)
+{
struct stat attr;
- auto res = fstatat(inode.fd, "", &attr,
- AT_EMPTY_PATH | AT_SYMLINK_NOFOLLOW);
+ int fd = fi ? fi->fh : get_inode(ino).fd;
+
+ auto res = fstatat(fd, "", &attr, AT_EMPTY_PATH | AT_SYMLINK_NOFOLLOW);
if (res == -1) {
fuse_reply_err(req, errno);
return;
diff --git a/example/passthrough_ll.c b/example/passthrough_ll.c
index 87c18a2..62a42f4 100644
--- a/example/passthrough_ll.c
+++ b/example/passthrough_ll.c
@@ -204,10 +204,11 @@ static void lo_getattr(fuse_req_t req, fuse_ino_t ino,
int res;
struct stat buf;
struct lo_data *lo = lo_data(req);
+ int fd = fi ? fi->fh : lo_fd(req, ino);
(void) fi;
- res = fstatat(lo_fd(req, ino), "", &buf, AT_EMPTY_PATH | AT_SYMLINK_NOFOLLOW);
+ res = fstatat(fd, "", &buf, AT_EMPTY_PATH | AT_SYMLINK_NOFOLLOW);
if (res == -1)
return (void) fuse_reply_err(req, errno);
diff --git a/include/fuse_lowlevel.h b/include/fuse_lowlevel.h
index e62e24c..e5c308c 100644
--- a/include/fuse_lowlevel.h
+++ b/include/fuse_lowlevel.h
@@ -303,7 +303,7 @@ struct fuse_lowlevel_ops {
*
* @param req request handle
* @param ino the inode number
- * @param fi for future use, currently always NULL
+ * @param fi file information, or NULL
*/
void (*getattr) (fuse_req_t req, fuse_ino_t ino,
struct fuse_file_info *fi);