Lines Matching refs:fi

18 static inline bool fuse_is_io_cache_wait(struct fuse_inode *fi)
20 return READ_ONCE(fi->iocachectr) < 0 && !fuse_inode_backing(fi);
32 struct fuse_inode *fi = get_fuse_inode(inode);
38 spin_lock(&fi->lock);
43 while (fuse_is_io_cache_wait(fi)) {
44 set_bit(FUSE_I_CACHE_IO_MODE, &fi->state);
45 spin_unlock(&fi->lock);
46 wait_event(fi->direct_io_waitq, !fuse_is_io_cache_wait(fi));
47 spin_lock(&fi->lock);
54 if (fuse_inode_backing(fi)) {
55 clear_bit(FUSE_I_CACHE_IO_MODE, &fi->state);
56 spin_unlock(&fi->lock);
63 if (fi->iocachectr == 0)
64 set_bit(FUSE_I_CACHE_IO_MODE, &fi->state);
65 fi->iocachectr++;
67 spin_unlock(&fi->lock);
72 struct fuse_inode *fi)
74 spin_lock(&fi->lock);
75 WARN_ON(fi->iocachectr <= 0);
78 fi->iocachectr--;
79 if (fi->iocachectr == 0)
80 clear_bit(FUSE_I_CACHE_IO_MODE, &fi->state);
81 spin_unlock(&fi->lock);
85 int fuse_inode_uncached_io_start(struct fuse_inode *fi, struct fuse_backing *fb)
90 spin_lock(&fi->lock);
92 oldfb = fuse_inode_backing(fi);
97 if (fi->iocachectr > 0) {
101 fi->iocachectr--;
105 oldfb = fuse_inode_backing_set(fi, fb);
111 spin_unlock(&fi->lock);
120 struct fuse_inode *fi = get_fuse_inode(inode);
123 err = fuse_inode_uncached_io_start(fi, fb);
132 void fuse_inode_uncached_io_end(struct fuse_inode *fi)
136 spin_lock(&fi->lock);
137 WARN_ON(fi->iocachectr >= 0);
138 fi->iocachectr++;
139 if (!fi->iocachectr) {
140 wake_up(&fi->direct_io_waitq);
141 oldfb = fuse_inode_backing_set(fi, NULL);
143 spin_unlock(&fi->lock);
150 struct fuse_inode *fi)
154 fuse_inode_uncached_io_end(fi);
200 struct fuse_inode *fi = get_fuse_inode(inode);
215 if (fuse_inode_backing(fi) && !(ff->open_flags & FOPEN_PASSTHROUGH))
259 struct fuse_inode *fi = get_fuse_inode(inode);
270 fuse_file_uncached_io_release(ff, fi);
273 fuse_file_cached_io_release(ff, fi);