fs/fuse/fuse_i.h
Source file repositories/reference/linux-study-clean/fs/fuse/fuse_i.h
File Facts
- System
- Linux kernel
- Corpus path
fs/fuse/fuse_i.h- Extension
.h- Size
- 34972 bytes
- Lines
- 1333
- Domain
- Core OS
- Bucket
- VFS And Filesystem Core
- Inferred role
- Core OS: operation-table or driver-model contract
- Status
- pattern implementation candidate
Why This File Exists
Core operating-system implementation surface: boot, tasks, memory, VFS, syscall-facing interfaces, synchronization, credentials, and isolation.
- Core operating-system implementation surface: boot, tasks, memory, VFS, syscall-facing interfaces, synchronization, credentials, and isolation.
- Defines an operation table; this is where Linux turns generic core objects into subsystem-specific behavior.
- Uses kernel synchronization; read lock ordering, sleepability, and interrupt context assumptions before translating.
- Allocates kernel memory; connect allocation flags and lifetime to context constraints.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
args.hlinux/fuse.hlinux/fs.hlinux/mount.hlinux/wait.hlinux/list.hlinux/spinlock.hlinux/mm.hlinux/backing-dev.hlinux/mutex.hlinux/rwsem.hlinux/rbtree.hlinux/poll.hlinux/workqueue.hlinux/kref.hlinux/xattr.hlinux/pid_namespace.hlinux/refcount.hlinux/user_namespace.h
Detected Declarations
struct fuse_forget_linkstruct fuse_submount_lookupstruct fuse_backingstruct fuse_inodestruct fuse_connstruct fuse_mountstruct fuse_filestruct fuse_release_argsstruct fuse_io_privstruct fuse_fs_contextstruct fuse_sync_bucketstruct fuse_connstruct fuse_mountstruct fuse_zero_headerstruct fuse_io_argsstruct posix_aclenum fuse_dax_modefunction fuse_is_inode_dax_modefunction fuse_set_zero_arg0function get_node_idfunction invalid_nodeidfunction fuse_get_attr_versionfunction fuse_get_evict_ctrfunction fuse_stale_inodefunction fuse_make_badfunction fuse_is_badfunction fuse_inode_is_exclusivefunction fuse_folio_descs_length_initfunction fuse_sync_bucket_decfunction fuse_simple_requestfunction fuse_simple_idmap_requestfunction fuse_backing_put
Annotated Snippet
extern const struct file_operations fuse_dev_operations;
extern const struct dentry_operations fuse_dentry_operations;
/*
* Get a filled in inode
*/
struct inode *fuse_iget(struct super_block *sb, u64 nodeid,
int generation, struct fuse_attr *attr,
u64 attr_valid, u64 attr_version,
u64 evict_ctr);
int fuse_lookup_name(struct super_block *sb, u64 nodeid, const struct qstr *name,
struct fuse_entry_out *outarg, struct inode **inode);
/*
* Initialize READ or READDIR request
*/
struct fuse_io_args {
union {
struct {
struct fuse_read_in in;
u64 attr_ver;
} read;
struct {
struct fuse_write_in in;
struct fuse_write_out out;
bool folio_locked;
} write;
};
struct fuse_args_pages ap;
struct fuse_io_priv *io;
struct fuse_file *ff;
};
void fuse_read_args_fill(struct fuse_io_args *ia, struct file *file, loff_t pos,
size_t count, int opcode);
struct fuse_file *fuse_file_alloc(struct fuse_mount *fm, bool release);
void fuse_file_free(struct fuse_file *ff);
int fuse_finish_open(struct inode *inode, struct file *file);
void fuse_sync_release(struct fuse_inode *fi, struct fuse_file *ff,
unsigned int flags);
/*
* Send RELEASE or RELEASEDIR request
*/
void fuse_release_common(struct file *file, bool isdir);
/*
* Send FSYNC or FSYNCDIR request
*/
int fuse_fsync_common(struct file *file, loff_t start, loff_t end,
int datasync, int opcode);
/*
* Notify poll wakeup
*/
int fuse_notify_poll_wakeup(struct fuse_conn *fc,
struct fuse_notify_poll_wakeup_out *outarg);
/*
* Initialize file operations on a regular file
*/
void fuse_init_file_inode(struct inode *inode, unsigned int flags);
/*
* Initialize inode operations on regular files and special files
*/
void fuse_init_common(struct inode *inode);
/*
* Initialize inode and file operations on a directory
*/
void fuse_init_dir(struct inode *inode);
/*
* Initialize inode operations on a symlink
*/
void fuse_init_symlink(struct inode *inode);
/*
* Change attributes of an inode
*/
void fuse_change_attributes(struct inode *inode, struct fuse_attr *attr,
struct fuse_statx *sx,
u64 attr_valid, u64 attr_version);
Annotation
- Immediate include surface: `args.h`, `linux/fuse.h`, `linux/fs.h`, `linux/mount.h`, `linux/wait.h`, `linux/list.h`, `linux/spinlock.h`, `linux/mm.h`.
- Detected declarations: `struct fuse_forget_link`, `struct fuse_submount_lookup`, `struct fuse_backing`, `struct fuse_inode`, `struct fuse_conn`, `struct fuse_mount`, `struct fuse_file`, `struct fuse_release_args`, `struct fuse_io_priv`, `struct fuse_fs_context`.
- Atlas domain: Core OS / VFS And Filesystem Core.
- Implementation status: pattern implementation candidate.
- Synchronization appears in or near this file; preserve lock ordering, sleepability, and interrupt-context constraints.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.