fs/afs/internal.h
Source file repositories/reference/linux-study-clean/fs/afs/internal.h
File Facts
- System
- Linux kernel
- Corpus path
fs/afs/internal.h- Extension
.h- Size
- 68994 bytes
- Lines
- 1971
- 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
linux/compiler.hlinux/kernel.hlinux/ktime.hlinux/fs.hlinux/filelock.hlinux/pagemap.hlinux/rxrpc.hlinux/key.hlinux/workqueue.hlinux/sched.hlinux/fscache.hlinux/backing-dev.hlinux/uuid.hlinux/mm_types.hlinux/dns_resolver.hcrypto/krb5.hnet/net_namespace.hnet/netns/generic.hnet/sock.hnet/af_rxrpc.hafs.hafs_vl.htrace/events/afs.h
Detected Declarations
struct afs_callstruct afs_vnodestruct afs_server_probestruct afs_fs_contextstruct afs_addr_preferencestruct afs_addr_preference_liststruct afs_addressstruct afs_addr_liststruct afs_callstruct afs_call_typestruct afs_wb_keystruct afs_filestruct afs_super_infostruct afs_sysnamesstruct afs_netstruct afs_cellstruct afs_vlserverstruct afs_vlserver_entrystruct afs_vlserver_liststruct afs_vldb_entrystruct afs_endpoint_statestruct afs_serverstruct afs_server_entrystruct afs_server_liststruct afs_volumestruct afs_vnodestruct afs_permitstruct afs_permitsstruct afs_symlinkstruct afs_errorstruct afs_vl_cursorstruct afs_server_statestruct afs_operation_opsstruct afs_vnode_paramstruct afs_operationstruct afs_vnode_cache_auxstruct afs_dir_iterstruct afs_aclstruct yfs_aclenum afs_flock_modeenum afs_call_stateenum afs_cell_stateenum afs_ro_replicatingenum afs_lock_stateenum afs_lookup_cell_forfunction afs_vnode_set_cachefunction afs_set_cache_auxfunction afs_invalidate_cache
Annotated Snippet
extern const struct file_operations afs_dir_file_operations;
extern const struct inode_operations afs_dir_inode_operations;
extern const struct address_space_operations afs_dir_aops;
extern const struct dentry_operations afs_fs_dentry_operations;
ssize_t afs_read_dir(struct afs_vnode *dvnode, struct file *file)
__acquires(&dvnode->validate_lock);
extern void afs_d_release(struct dentry *);
extern void afs_check_for_remote_deletion(struct afs_operation *);
/*
* dir_edit.c
*/
extern void afs_edit_dir_add(struct afs_vnode *, const struct qstr *, struct afs_fid *,
enum afs_edit_dir_reason);
extern void afs_edit_dir_remove(struct afs_vnode *, const struct qstr *, enum afs_edit_dir_reason);
void afs_edit_dir_update(struct afs_vnode *vnode, const struct qstr *name,
struct afs_vnode *new_dvnode, enum afs_edit_dir_reason why);
void afs_mkdir_init_dir(struct afs_vnode *dvnode, struct afs_vnode *parent_vnode);
/*
* dir_search.c
*/
unsigned int afs_dir_hash_name(const struct qstr *name);
bool afs_dir_init_iter(struct afs_dir_iter *iter, const struct qstr *name);
union afs_xdr_dir_block *afs_dir_find_block(struct afs_dir_iter *iter, size_t block);
int afs_dir_search_bucket(struct afs_dir_iter *iter, const struct qstr *name,
struct afs_fid *_fid);
int afs_dir_search(struct afs_vnode *dvnode, const struct qstr *name,
struct afs_fid *_fid, afs_dataversion_t *_dir_version);
/*
* dir_silly.c
*/
extern int afs_sillyrename(struct afs_vnode *, struct afs_vnode *,
struct dentry *, struct key *);
extern int afs_silly_iput(struct dentry *, struct inode *);
/*
* dynroot.c
*/
extern const struct inode_operations afs_dynroot_inode_operations;
extern const struct dentry_operations afs_dynroot_dentry_operations;
struct inode *afs_dynroot_iget_root(struct super_block *sb);
/*
* file.c
*/
extern const struct address_space_operations afs_file_aops;
extern const struct inode_operations afs_file_inode_operations;
extern const struct file_operations afs_file_operations;
extern const struct afs_operation_ops afs_fetch_data_operation;
extern const struct netfs_request_ops afs_req_ops;
extern int afs_cache_wb_key(struct afs_vnode *, struct afs_file *);
extern void afs_put_wb_key(struct afs_wb_key *);
extern int afs_open(struct inode *, struct file *);
extern int afs_release(struct inode *, struct file *);
void afs_fetch_data_async_rx(struct work_struct *work);
void afs_fetch_data_immediate_cancel(struct afs_call *call);
void afs_set_i_size(struct afs_vnode *vnode, loff_t new_i_size);
/*
* flock.c
*/
extern struct workqueue_struct *afs_lock_manager;
extern void afs_lock_op_done(struct afs_call *);
extern void afs_lock_work(struct work_struct *);
extern void afs_lock_may_be_available(struct afs_vnode *);
extern int afs_lock(struct file *, int, struct file_lock *);
extern int afs_flock(struct file *, int, struct file_lock *);
/*
* fsclient.c
*/
extern void afs_fs_fetch_status(struct afs_operation *);
extern void afs_fs_fetch_data(struct afs_operation *);
extern void afs_fs_create_file(struct afs_operation *);
extern void afs_fs_make_dir(struct afs_operation *);
extern void afs_fs_remove_file(struct afs_operation *);
extern void afs_fs_remove_dir(struct afs_operation *);
extern void afs_fs_link(struct afs_operation *);
extern void afs_fs_symlink(struct afs_operation *);
extern void afs_fs_rename(struct afs_operation *);
extern void afs_fs_store_data(struct afs_operation *);
extern void afs_fs_setattr(struct afs_operation *);
extern void afs_fs_get_volume_status(struct afs_operation *);
extern void afs_fs_set_lock(struct afs_operation *);
Annotation
- Immediate include surface: `linux/compiler.h`, `linux/kernel.h`, `linux/ktime.h`, `linux/fs.h`, `linux/filelock.h`, `linux/pagemap.h`, `linux/rxrpc.h`, `linux/key.h`.
- Detected declarations: `struct afs_call`, `struct afs_vnode`, `struct afs_server_probe`, `struct afs_fs_context`, `struct afs_addr_preference`, `struct afs_addr_preference_list`, `struct afs_address`, `struct afs_addr_list`, `struct afs_call`, `struct afs_call_type`.
- 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.