static const struct file_operations fuse_file_operations = {.llseek = fuse_file_llseek,.read_iter = fuse_file_read_iter,.write_iter = fuse_file_write_iter,.mmap = fuse_file_mmap,.open = fuse_open,.flush = fuse_flush,.release = fuse_release,.fsync = fuse_fsync,.lock = fuse_file_lock,.flock = fuse_file_flock,.splice_read = generic_file_splice_read,.unlocked_ioctl = fuse_file_ioctl,.compat_ioctl = fuse_file_compat_ioctl,.poll = fuse_file_poll,.fallocate = fuse_file_fallocate,};
static void fuse_init_inode(struct inode *inode, struct fuse_attr *attr){inode->i_mode = attr->mode & S_IFMT;inode->i_size = attr->size;inode->i_mtime.tv_sec = attr->mtime;inode->i_mtime.tv_nsec = attr->mtimensec;inode->i_ctime.tv_sec = attr->ctime;inode->i_ctime.tv_nsec = attr->ctimensec;if (S_ISREG(inode->i_mode)) {fuse_init_common(inode);fuse_init_file_inode(inode);} else if (S_ISDIR(inode->i_mode))fuse_init_dir(inode);else if (S_ISLNK(inode->i_mode))fuse_init_symlink(inode);else if (S_ISCHR(inode->i_mode) || S_ISBLK(inode->i_mode) ||S_ISFIFO(inode->i_mode) || S_ISSOCK(inode->i_mode)) {fuse_init_common(inode);init_special_inode(inode, inode->i_mode,new_decode_dev(attr->rdev));} elseBUG();}
USER Space
static ssize_t fuse_dev_do_read(struct fuse_dev *fud, struct file *file, struct fuse_copy_state *cs, size_t nbytes)
fuse_do_work
