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