Lines Matching refs:fi
217 static void sfs_getattr(fuse_req_t req, fuse_ino_t ino, fuse_file_info *fi) {
218 (void)fi;
232 int valid, struct fuse_file_info* fi) {
238 if (fi) {
239 res = fchmod(fi->fh, attr->st_mode);
257 if (fi) {
258 res = ftruncate(fi->fh, attr->st_size);
285 if (fi)
286 res = futimens(fi->fh, tv);
300 return sfs_getattr(req, ino, fi);
308 int valid, fuse_file_info *fi) {
310 do_setattr(req, ino, attr, valid, fi);
641 static DirHandle *get_dir_handle(fuse_file_info *fi) {
642 return reinterpret_cast<DirHandle*>(fi->fh);
646 static void sfs_opendir(fuse_req_t req, fuse_ino_t ino, fuse_file_info *fi) {
671 fi->fh = reinterpret_cast<uint64_t>(d);
673 fi->keep_cache = 1;
674 fi->cache_readdir = 1;
676 fuse_reply_open(req, fi);
695 off_t offset, fuse_file_info *fi, const int plus) {
696 auto d = get_dir_handle(fi);
790 off_t offset, fuse_file_info *fi) {
792 do_readdir(req, ino, size, offset, fi, 0);
797 off_t offset, fuse_file_info *fi) {
799 do_readdir(req, ino, size, offset, fi, 1);
803 static void sfs_releasedir(fuse_req_t req, fuse_ino_t ino, fuse_file_info *fi) {
805 auto d = get_dir_handle(fi);
812 mode_t mode, fuse_file_info *fi) {
816 (fi->flags | O_CREAT) & ~O_NOFOLLOW, mode);
825 fi->fh = fd;
838 fuse_reply_create(req, &e, fi);
843 fuse_file_info *fi) {
846 int fd = dirfd(get_dir_handle(fi)->dp);
855 static void sfs_open(fuse_req_t req, fuse_ino_t ino, fuse_file_info *fi) {
860 if (fs.timeout && (fi->flags & O_ACCMODE) == O_WRONLY) {
861 fi->flags &= ~O_ACCMODE;
862 fi->flags |= O_RDWR;
871 if (fs.timeout && fi->flags & O_APPEND)
872 fi->flags &= ~O_APPEND;
878 auto fd = open(buf, fi->flags & ~O_NOFOLLOW);
889 fi->keep_cache = (fs.timeout != 0);
890 fi->noflush = (fs.timeout == 0 && (fi->flags & O_ACCMODE) == O_RDONLY);
891 fi->fh = fd;
892 fuse_reply_open(req, fi);
896 static void sfs_release(fuse_req_t req, fuse_ino_t ino, fuse_file_info *fi) {
900 close(fi->fh);
905 static void sfs_flush(fuse_req_t req, fuse_ino_t ino, fuse_file_info *fi) {
907 auto res = close(dup(fi->fh));
913 fuse_file_info *fi) {
917 res = fdatasync(fi->fh);
919 res = fsync(fi->fh);
924 static void do_read(fuse_req_t req, size_t size, off_t off, fuse_file_info *fi) {
929 buf.buf[0].fd = fi->fh;
936 fuse_file_info *fi) {
938 do_read(req, size, off, fi);
943 fuse_bufvec *in_buf, fuse_file_info *fi) {
947 out_buf.buf[0].fd = fi->fh;
959 off_t off, fuse_file_info *fi) {
962 do_write_buf(req, size, off, in_buf, fi);
979 off_t offset, off_t length, fuse_file_info *fi) {
986 auto err = posix_fallocate(fi->fh, offset, length);
991 static void sfs_flock(fuse_req_t req, fuse_ino_t ino, fuse_file_info *fi,
994 auto res = flock(fi->fh, op);