struct fuse_forget_link;
-/* Submount lookup tracking */
+/**
+ * struct fuse_submount_lookup - Submount lookup tracking
+ */
struct fuse_submount_lookup {
- /** Refcount */
+ /** @count: Refcount */
refcount_t count;
- /** Unique ID, which identifies the inode between userspace
- * and kernel */
+ /**
+ * @nodeid: Unique ID, which identifies the inode between userspace
+ * and kernel
+ */
u64 nodeid;
- /** The request used for sending the FORGET message */
+ /** @forget: The request used for sending the FORGET message */
struct fuse_forget_link *forget;
};
-/** Container for data related to mapping to backing file */
+/* Container for data related to mapping to backing file */
struct fuse_backing {
struct file *file;
struct cred *cred;
- /** refcount */
+ /* refcount */
refcount_t count;
struct rcu_head rcu;
};
-/** FUSE inode */
+/**
+ * struct fuse_inode - FUSE inode
+ */
struct fuse_inode {
- /** Inode data */
+ /** @inode: Inode data */
struct inode inode;
- /** Unique ID, which identifies the inode between userspace
- * and kernel */
+ /**
+ * @nodeid: Unique ID, which identifies the inode between userspace
+ * and kernel
+ */
u64 nodeid;
- /** Number of lookups on this inode */
+ /** @nlookup: Number of lookups on this inode */
u64 nlookup;
- /** The request used for sending the FORGET message */
+ /** @forget: The request used for sending the FORGET message */
struct fuse_forget_link *forget;
- /** Time in jiffies until the file attributes are valid */
+ /** @i_time: Time in jiffies until the file attributes are valid */
u64 i_time;
- /* Which attributes are invalid */
+ /** @inval_mask: Which attributes are invalid */
u32 inval_mask;
- /** The sticky bit in inode->i_mode may have been removed, so
- preserve the original mode */
+ /**
+ * @orig_i_mode: The sticky bit in inode->i_mode may have been removed,
+ * so preserve the original mode
+ */
umode_t orig_i_mode;
- /* Cache birthtime */
+ /** @i_btime: Cache birthtime */
struct timespec64 i_btime;
- /** 64 bit inode number */
+ /** @orig_ino: 64-bit inode number */
u64 orig_ino;
- /** Version of last attribute change */
+ /** @attr_version: Version of last attribute change */
u64 attr_version;
union {
/* read/write io cache (regular file only) */
struct {
- /* Files usable in writepage. Protected by fi->lock */
+ /**
+ * @write_files: Files usable in writepage.
+ * Protected by fi->lock
+ */
struct list_head write_files;
- /* Writepages pending on truncate or fsync */
+ /**
+ * @queued_writes: Writepages pending on truncate or
+ * fsync
+ */
struct list_head queued_writes;
- /* Number of sent writes, a negative bias
- * (FUSE_NOWRITE) means more writes are blocked */
+ /**
+ * @writectr: Number of sent writes, a negative bias
+ * (FUSE_NOWRITE) means more writes are blocked
+ */
int writectr;
- /** Number of files/maps using page cache */
+ /** @iocachectr: Number of files/maps using page cache */
int iocachectr;
- /* Waitq for writepage completion */
+ /** @page_waitq: Waitq for writepage completion */
wait_queue_head_t page_waitq;
- /* waitq for direct-io completion */
+ /** @direct_io_waitq: waitq for direct-io completion */
wait_queue_head_t direct_io_waitq;
};
- /* readdir cache (directory only) */
+ /** @rdc: readdir cache (directory only) */
struct {
- /* true if fully cached */
+ /** @cached: true if fully cached */
bool cached;
- /* size of cache */
+ /** @size: size of cache */
loff_t size;
- /* position at end of cache (position of next entry) */
+ /**
+ * @pos: position at end of cache (position of next
+ * entry)
+ */
loff_t pos;
- /* version of the cache */
+ /** @version: version of the cache */
u64 version;
- /* modification time of directory when cache was
- * started */
+ /**
+ * @mtime: modification time of directory when cache was
+ * started
+ */
struct timespec64 mtime;
- /* iversion of directory when cache was started */
+ /**
+ * @iversion: iversion of directory when cache was
+ * started
+ */
u64 iversion;
- /* protects above fields */
+ /** @lock: protects above fields */
spinlock_t lock;
} rdc;
};
- /** Miscellaneous bits describing inode state */
+ /** @state: Miscellaneous bits describing inode state */
unsigned long state;
- /** Lock for serializing lookup and readdir for back compatibility*/
+ /**
+ * @mutex: Lock for serializing lookup and readdir for back
+ * compatibility
+ */
struct mutex mutex;
- /** Lock to protect write related fields */
+ /** @lock: Lock to protect write-related fields */
spinlock_t lock;
#ifdef CONFIG_FUSE_DAX
- /*
- * Dax specific inode data
+ /**
+ * @dax: Dax specific inode data
*/
struct fuse_inode_dax *dax;
#endif
- /** Submount specific lookup tracking */
+ /** @submount_lookup: Submount specific lookup tracking */
struct fuse_submount_lookup *submount_lookup;
#ifdef CONFIG_FUSE_PASSTHROUGH
- /** Reference to backing file in passthrough mode */
+ /** @fb: Reference to backing file in passthrough mode */
struct fuse_backing *fb;
#endif
- /*
- * The underlying inode->i_blkbits value will not be modified,
- * so preserve the blocksize specified by the server.
+ /**
+ * @cached_i_blkbits: The underlying inode->i_blkbits value will not
+ * be modified, so preserve the blocksize specified by the server.
*/
u8 cached_i_blkbits;
};
struct fuse_mount;
union fuse_file_args;
-/** FUSE specific file data */
+/**
+ * struct fuse_file - FUSE-specific file data
+ */
struct fuse_file {
- /** Fuse connection for this file */
+ /** @fm: Fuse connection for this file */
struct fuse_mount *fm;
- /* Argument space reserved for open/release */
+ /** @args: Argument space reserved for open/release */
union fuse_file_args *args;
- /** Kernel file handle guaranteed to be unique */
+ /** @kh: Kernel file handle guaranteed to be unique */
u64 kh;
- /** File handle used by userspace */
+ /** @fh: File handle used by userspace */
u64 fh;
- /** Node id of this file */
+ /** @nodeid: Node id of this file */
u64 nodeid;
- /** Refcount */
+ /** @count: Refcount */
refcount_t count;
- /** FOPEN_* flags returned by open */
+ /** @open_flags: FOPEN_* flags returned by open */
u32 open_flags;
- /** Entry on inode's write_files list */
+ /** @write_entry: Entry on inode's write_files list */
struct list_head write_entry;
- /* Readdir related */
+ /** @readdir: Readdir-related */
struct {
- /* Dir stream position */
+ /** @pos: Dir stream position */
loff_t pos;
- /* Offset in cache */
+ /** @cache_off: Offset in cache */
loff_t cache_off;
- /* Version of cache we are reading */
+ /** @version: Version of cache we are reading */
u64 version;
} readdir;
- /** RB node to be linked on fuse_conn->polled_files */
+ /** @polled_node: RB node to be linked on fuse_conn->polled_files */
struct rb_node polled_node;
- /** Wait queue head for poll */
+ /** @poll_wait: Wait queue head for poll */
wait_queue_head_t poll_wait;
- /** Does file hold a fi->iocachectr refcount? */
+ /** @iomode: Does file hold a fi->iocachectr refcount? */
enum { IOM_NONE, IOM_CACHED, IOM_UNCACHED } iomode;
#ifdef CONFIG_FUSE_PASSTHROUGH
- /** Reference to backing file in passthrough mode */
+ /** @passthrough: Reference to backing file in passthrough mode */
struct file *passthrough;
+ /** @cred: passthrough file credentials */
const struct cred *cred;
#endif
- /** Has flock been performed on this file? */
+ /** @flock: Has flock been performed on this file? */
bool flock:1;
};
};
/**
- * A Fuse connection.
+ * struct fuse_conn - A Fuse connection.
*
* This structure is created, when the root filesystem is mounted, and
* is destroyed, when the client device is closed and the last
* fuse_mount is destroyed.
*/
struct fuse_conn {
- /** Lock protecting:
- - polled_files
- - backing_files_map
- - curr_bucket
+ /**
+ * @lock: Lock protecting:
+ * - polled_files
+ * - backing_files_map
+ * - curr_bucket
*/
spinlock_t lock;
- /** Refcount */
+ /** @count: Refcount */
refcount_t count;
- /** Current epoch for up-to-date dentries */
+ /** @epoch: Current epoch for up-to-date dentries */
atomic_t epoch;
+ /** @epoch_work: Used to invalidate dentries from old epochs */
struct work_struct epoch_work;
+ /** @rcu: Used to delay freeing fuse_conn, making it safe */
struct rcu_head rcu;
- /** The user id for this mount */
+ /** @user_id: The user id for this mount */
kuid_t user_id;
- /** The group id for this mount */
+ /** @group_id: The group id for this mount */
kgid_t group_id;
- /** The pid namespace for this mount */
+ /** @pid_ns: The pid namespace for this mount */
struct pid_namespace *pid_ns;
- /** The user namespace for this mount */
+ /** @user_ns: The user namespace for this mount */
struct user_namespace *user_ns;
- /** Maximum read size */
+ /** @max_read: Maximum read size */
unsigned max_read;
- /** Maximum write size */
+ /** @max_write: Maximum write size */
unsigned max_write;
- /** Maximum number of pages that can be used in a single request */
+ /**
+ * @max_pages: Maximum number of pages that can be used in a
+ * single request
+ */
unsigned int max_pages;
- /** Constrain ->max_pages to this value during feature negotiation */
+ /**
+ * @max_pages_limit: Constrain ->max_pages to this value during
+ * feature negotiation
+ */
unsigned int max_pages_limit;
- /* transport layer object */
+ /** @chan: transport layer object */
struct fuse_chan *chan;
- /** The next unique kernel file handle */
+ /** @khctr: The next unique kernel file handle */
atomic64_t khctr;
- /** rbtree of fuse_files waiting for poll events indexed by ph */
+ /**
+ * @polled_files: rbtree of fuse_files waiting for poll events
+ * indexed by ph
+ */
struct rb_root polled_files;
- /** Number of background requests at which congestion starts */
+ /**
+ * @congestion_threshold: Number of background requests at which
+ * congestion starts
+ */
unsigned congestion_threshold;
- /** Connection failed (version mismatch). Cannot race with
- setting other bitfields since it is only set once in INIT
- reply, before any other request, and never cleared */
+ /**
+ * @conn_error: Connection failed (version mismatch). Cannot race with
+ * setting other bitfields since it is only set once in INIT
+ * reply, before any other request, and never cleared
+ */
unsigned conn_error:1;
- /** Connection successful. Only set in INIT */
+ /** @conn_init: Connection successful. Only set in INIT */
unsigned conn_init:1;
- /** Do readahead asynchronously? Only set in INIT */
+ /** @async_read: Do readahead asynchronously? Only set in INIT */
unsigned async_read:1;
- /** Return an unique read error after abort. Only set in INIT */
+ /**
+ * @abort_err: Return an unique read error after abort.
+ * Only set in INIT
+ */
unsigned abort_err:1;
- /** Do not send separate SETATTR request before open(O_TRUNC) */
+ /**
+ * @atomic_o_trunc: Do not send separate SETATTR request before
+ * open(O_TRUNC)
+ */
unsigned atomic_o_trunc:1;
- /** Filesystem supports NFS exporting. Only set in INIT */
+ /**
+ * @export_support: Filesystem supports NFS exporting.
+ * Only set in INIT
+ */
unsigned export_support:1;
- /** write-back cache policy (default is write-through) */
+ /** @writeback_cache: write-back cache policy (default is write-through) */
unsigned writeback_cache:1;
- /** allow parallel lookups and readdir (default is serialized) */
+ /**
+ * @parallel_dirops: allow parallel lookups and readdir (default is
+ * serialized)
+ */
unsigned parallel_dirops:1;
- /** handle fs handles killing suid/sgid/cap on write/chown/trunc */
+ /**
+ * @handle_killpriv: handle fs handles killing suid/sgid/cap on
+ * write/chown/trunc
+ */
unsigned handle_killpriv:1;
- /** cache READLINK responses in page cache */
+ /** @cache_symlinks: cache READLINK responses in page cache */
unsigned cache_symlinks:1;
- /* show legacy mount options */
+ /** @legacy_opts_show: show legacy mount options */
unsigned int legacy_opts_show:1;
- /*
+ /**
+ * @handle_killpriv_v2:
* fs kills suid/sgid/cap on write/chown/trunc. suid is killed on
* write/trunc only if caller did not have CAP_FSETID. sgid is killed
* on write/truncate only if caller did not have CAP_FSETID as well as
* and hence races in setting them will not cause malfunction
*/
- /** Is open/release not implemented by fs? */
+ /** @no_open: Is open/release not implemented by fs? */
unsigned no_open:1;
- /** Is opendir/releasedir not implemented by fs? */
+ /** @no_opendir: Is opendir/releasedir not implemented by fs? */
unsigned no_opendir:1;
- /** Is fsync not implemented by fs? */
+ /** @no_fsync: Is fsync not implemented by fs? */
unsigned no_fsync:1;
- /** Is fsyncdir not implemented by fs? */
+ /** @no_fsyncdir: Is fsyncdir not implemented by fs? */
unsigned no_fsyncdir:1;
- /** Is flush not implemented by fs? */
+ /** @no_flush: Is flush not implemented by fs? */
unsigned no_flush:1;
- /** Is setxattr not implemented by fs? */
+ /** @no_setxattr: Is setxattr not implemented by fs? */
unsigned no_setxattr:1;
- /** Does file server support extended setxattr */
+ /** @setxattr_ext: Does file server support extended setxattr */
unsigned setxattr_ext:1;
- /** Is getxattr not implemented by fs? */
+ /** @no_getxattr: Is getxattr not implemented by fs? */
unsigned no_getxattr:1;
- /** Is listxattr not implemented by fs? */
+ /** @no_listxattr: Is listxattr not implemented by fs? */
unsigned no_listxattr:1;
- /** Is removexattr not implemented by fs? */
+ /** @no_removexattr: Is removexattr not implemented by fs? */
unsigned no_removexattr:1;
- /** Are posix file locking primitives not implemented by fs? */
+ /** @no_lock: Are posix file locking primitives not implemented by fs? */
unsigned no_lock:1;
- /** Is access not implemented by fs? */
+ /** @no_access: Is access not implemented by fs? */
unsigned no_access:1;
- /** Is create not implemented by fs? */
+ /** @no_create: Is create not implemented by fs? */
unsigned no_create:1;
- /** Is bmap not implemented by fs? */
+ /** @no_bmap: Is bmap not implemented by fs? */
unsigned no_bmap:1;
- /** Is poll not implemented by fs? */
+ /** @no_poll: Is poll not implemented by fs? */
unsigned no_poll:1;
- /** Do multi-page cached writes */
+ /** @big_writes: Do multi-page cached writes */
unsigned big_writes:1;
- /** Don't apply umask to creation modes */
+ /** @dont_mask: Don't apply umask to creation modes */
unsigned dont_mask:1;
- /** Are BSD file locking primitives not implemented by fs? */
+ /** @no_flock: Are BSD file locking primitives not implemented by fs? */
unsigned no_flock:1;
- /** Is fallocate not implemented by fs? */
+ /** @no_fallocate: Is fallocate not implemented by fs? */
unsigned no_fallocate:1;
- /** Is rename with flags implemented by fs? */
+ /** @no_rename2: Is rename with flags implemented by fs? */
unsigned no_rename2:1;
- /** Use enhanced/automatic page cache invalidation. */
+ /** @auto_inval_data: Use enhanced/automatic page cache invalidation. */
unsigned auto_inval_data:1;
- /** Filesystem is fully responsible for page cache invalidation. */
+ /**
+ * @explicit_inval_data: Filesystem is fully responsible for page cache
+ * invalidation.
+ */
unsigned explicit_inval_data:1;
- /** Does the filesystem support readdirplus? */
+ /** @do_readdirplus: Does the filesystem support readdirplus? */
unsigned do_readdirplus:1;
- /** Does the filesystem want adaptive readdirplus? */
+ /** @readdirplus_auto: Does the filesystem want adaptive readdirplus? */
unsigned readdirplus_auto:1;
- /** Does the filesystem support asynchronous direct-IO submission? */
+ /**
+ * @async_dio: Does the filesystem support asynchronous direct-IO
+ * submission?
+ */
unsigned async_dio:1;
- /** Is lseek not implemented by fs? */
+ /** @no_lseek: Is lseek not implemented by fs? */
unsigned no_lseek:1;
- /** Does the filesystem support posix acls? */
+ /** @posix_acl: Does the filesystem support posix acls? */
unsigned posix_acl:1;
- /** Check permissions based on the file mode or not? */
+ /**
+ * @default_permissions: Check permissions based on the file mode
+ * or not?
+ */
unsigned default_permissions:1;
- /** Allow other than the mounter user to access the filesystem ? */
+ /**
+ * @allow_other: Allow other than the mounter user to access the
+ * filesystem ?
+ */
unsigned allow_other:1;
- /** Does the filesystem support copy_file_range? */
+ /** @no_copy_file_range: Does the filesystem support copy_file_range? */
unsigned no_copy_file_range:1;
- /** Does the filesystem support copy_file_range_64? */
+ /**
+ * @no_copy_file_range_64: Does the filesystem support
+ * copy_file_range_64?
+ */
unsigned no_copy_file_range_64:1;
- /* Send DESTROY request */
+ /** @destroy: Send DESTROY request */
unsigned int destroy:1;
- /* Delete dentries that have gone stale */
+ /** @delete_stale: Delete dentries that have gone stale */
unsigned int delete_stale:1;
- /** Do not create entry in fusectl fs */
+ /** @no_control: Do not create entry in fusectl fs */
unsigned int no_control:1;
- /** Do not allow MNT_FORCE umount */
+ /** @no_force_umount: Do not allow MNT_FORCE umount */
unsigned int no_force_umount:1;
- /* Auto-mount submounts announced by the server */
+ /** @auto_submounts: Auto-mount submounts announced by the server */
unsigned int auto_submounts:1;
- /* Propagate syncfs() to server */
+ /** @sync_fs: Propagate syncfs() to server */
unsigned int sync_fs:1;
- /* Initialize security xattrs when creating a new inode */
+ /** @init_security: Initialize security xattrs when creating a new inode */
unsigned int init_security:1;
- /* Add supplementary group info when creating a new inode */
+ /**
+ * @create_supp_group: Add supplementary group info when creating
+ * a new inode
+ */
unsigned int create_supp_group:1;
- /* Does the filesystem support per inode DAX? */
+ /** @inode_dax: Does the filesystem support per inode DAX? */
unsigned int inode_dax:1;
- /* Is tmpfile not implemented by fs? */
+ /** @no_tmpfile: Is tmpfile not implemented by fs? */
unsigned int no_tmpfile:1;
- /* Relax restrictions to allow shared mmap in FOPEN_DIRECT_IO mode */
+ /**
+ * @direct_io_allow_mmap: Relax restrictions to allow shared mmap
+ * in FOPEN_DIRECT_IO mode
+ */
unsigned int direct_io_allow_mmap:1;
- /* Is statx not implemented by fs? */
+ /** @no_statx: Is statx not implemented by fs? */
unsigned int no_statx:1;
- /** Passthrough support for read/write IO */
+ /** @passthrough: Passthrough support for read/write IO */
unsigned int passthrough:1;
- /* Use pages instead of pointer for kernel I/O */
+ /** @use_pages_for_kvec_io: Use pages instead of pointer for kernel I/O */
unsigned int use_pages_for_kvec_io:1;
- /* Is link not implemented by fs? */
+ /** @no_link: Is link not implemented by fs? */
unsigned int no_link:1;
- /* Is synchronous FUSE_INIT allowed? */
+ /** @sync_init: Is synchronous FUSE_INIT allowed? */
unsigned int sync_init:1;
- /** Maximum stack depth for passthrough backing files */
+ /** @max_stack_depth: Maximum stack depth for passthrough backing files */
int max_stack_depth;
- /** Negotiated minor version */
+ /** @minor: Negotiated minor version */
unsigned minor;
- /** Entry on the fuse_conn_list */
+ /** @entry: Entry on the fuse_conn_list */
struct list_head entry;
- /** Device ID from the root super block */
+ /** @dev: Device ID from the root super block */
dev_t dev;
- /** Key for lock owner ID scrambling */
+ /** @scramble_key: Key for lock owner ID scrambling */
u32 scramble_key[4];
- /** Version counter for attribute changes */
+ /** @attr_version: Version counter for attribute changes */
atomic64_t attr_version;
- /** Version counter for evict inode */
+ /** @evict_ctr: Version counter for evict inode */
atomic64_t evict_ctr;
- /* maximum file name length */
+ /** @name_max: maximum file name length */
u32 name_max;
- /** Called on final put */
+ /** @release: Called on final put */
void (*release)(struct fuse_conn *);
/**
- * Read/write semaphore to hold when accessing the sb of any
+ * @killsb: Read/write semaphore to hold when accessing the sb of any
* fuse_mount belonging to this connection
*/
struct rw_semaphore killsb;
#ifdef CONFIG_FUSE_DAX
- /* Dax mode */
+ /** @dax_mode: Dax mode */
enum fuse_dax_mode dax_mode;
- /* Dax specific conn data, non-NULL if DAX is enabled */
+ /** @dax: Dax specific conn data, non-NULL if DAX is enabled */
struct fuse_conn_dax *dax;
#endif
- /** List of filesystems using this connection */
+ /** @mounts: List of filesystems using this connection */
struct list_head mounts;
- /* New writepages go into this bucket */
+ /** @curr_bucket: New writepages go into this bucket */
struct fuse_sync_bucket __rcu *curr_bucket;
#ifdef CONFIG_FUSE_PASSTHROUGH
- /** IDR for backing files ids */
+ /** @backing_files_map: IDR for backing files ids */
struct idr backing_files_map;
#endif
};
extern const struct dentry_operations fuse_dentry_operations;
-/**
+/*
* Get a filled in inode
*/
struct inode *fuse_iget(struct super_block *sb, u64 nodeid,
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,
int fuse_ctl_init(void);
void __exit fuse_ctl_cleanup(void);
-/**
+/*
* Simple request sending that does request allocation and freeing
*/
ssize_t __fuse_simple_request(struct mnt_idmap *idmap,
void fuse_epoch_work(struct work_struct *work);
-/**
+/*
* Invalidate inode attributes
*/
void fuse_change_entry_timeout(struct dentry *entry, struct fuse_entry_out *o);
-/**
+/*
* Initialize fuse_conn
*/
void fuse_conn_init(struct fuse_conn *fc, struct fuse_mount *fm,
int fuse_send_init(struct fuse_mount *fm);
/**
- * Fill in superblock and initialize fuse connection
+ * fuse_fill_super_common - Fill in superblock and initialize fuse connection
* @sb: partially-initialized superblock to fill in
* @ctx: mount context
*/
int fuse_fill_super_common(struct super_block *sb, struct fuse_fs_context *ctx);
-/*
- * Remove the mount from the connection
+/**
+ * fuse_mount_remove - Remove the mount from the connection
+ * @fm: fuse_mount to remove
*
- * Returns whether this was the last mount
+ * Returns: whether this was the last mount
*/
bool fuse_mount_remove(struct fuse_mount *fm);
void fuse_mount_destroy(struct fuse_mount *fm);
/**
- * Add connection to control filesystem
+ * fuse_ctl_add_conn - Add connection to control filesystem
+ * @fc: Fuse connection to add
*/
int fuse_ctl_add_conn(struct fuse_conn *fc);
/**
- * Remove connection from control filesystem
+ * fuse_ctl_remove_conn - Remove connection from control filesystem
+ * @fc: Fuse connection to remove
*/
void fuse_ctl_remove_conn(struct fuse_conn *fc);
-/**
+/*
* Is file type valid?
*/
int fuse_valid_type(int m);
bool fuse_invalid_attr(struct fuse_attr *attr);
-/**
+/*
* Is current process allowed to perform filesystem operation?
*/
bool fuse_allow_current_process(struct fuse_conn *fc);
void fuse_set_nowrite(struct inode *inode);
void fuse_release_nowrite(struct inode *inode);
-/**
+/*
* Scan all fuse_mounts belonging to fc to find the first where
* ilookup5() returns a result. Return that result and the
* respective fuse_mount in *fm (unless fm is NULL).
struct inode *fuse_ilookup(struct fuse_conn *fc, u64 nodeid,
struct fuse_mount **fm);
-/**
+/*
* File-system tells the kernel to invalidate cache for the given node id.
*/
int fuse_reverse_inval_inode(struct fuse_conn *fc, u64 nodeid,
loff_t offset, loff_t len);
-/**
+/*
* File-system tells the kernel to invalidate parent attributes and
* the dentry matching parent/name.
*
int fuse_do_open(struct fuse_mount *fm, u64 nodeid, struct file *file,
bool isdir);
-/**
+/*
* fuse_direct_io() flags
*/