}
-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;
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);
*
* @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);