fs/udf/udfdecl.h

Source file repositories/reference/linux-study-clean/fs/udf/udfdecl.h

File Facts

System
Linux kernel
Corpus path
fs/udf/udfdecl.h
Extension
.h
Size
9237 bytes
Lines
262
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.

Dependency Surface

Detected Declarations

Annotated Snippet

extern const struct file_operations udf_dir_operations;
extern const struct inode_operations udf_file_inode_operations;
extern const struct file_operations udf_file_operations;
extern const struct inode_operations udf_symlink_inode_operations;
extern const struct address_space_operations udf_aops;
extern const struct address_space_operations udf_symlink_aops;

struct udf_fileident_iter {
	struct inode *dir;		/* Directory we are working with */
	loff_t pos;			/* Logical position in a dir */
	struct buffer_head *bh[2];	/* Buffer containing 'pos' and possibly
					 * next buffer if entry straddles
					 * blocks */
	struct kernel_lb_addr eloc;	/* Start of extent containing 'pos' */
	uint32_t elen;			/* Length of extent containing 'pos' */
	sector_t loffset;		/* Block offset of 'pos' within above
					 * extent */
	struct extent_position epos;	/* Position after the above extent */
	struct fileIdentDesc fi;	/* Copied directory entry */
	uint8_t *name;			/* Pointer to entry name */
	uint8_t *namebuf;		/* Storage for entry name in case
					 * the name is split between two blocks
					 */
};

struct udf_vds_record {
	uint32_t block;
	uint32_t volDescSeqNum;
};

struct generic_desc {
	struct tag	descTag;
	__le32		volDescSeqNum;
};


/* super.c */

static inline void udf_updated_lvid(struct super_block *sb)
{
	struct buffer_head *bh = UDF_SB(sb)->s_lvid_bh;

	BUG_ON(!bh);
	WARN_ON_ONCE(((struct logicalVolIntegrityDesc *)
		     bh->b_data)->integrityType !=
		     cpu_to_le32(LVID_INTEGRITY_TYPE_OPEN));
	UDF_SB(sb)->s_lvid_dirty = 1;
}
extern u64 lvid_get_unique_id(struct super_block *sb);
struct inode *udf_find_metadata_inode_efe(struct super_block *sb,
					u32 meta_file_loc, u32 partition_num);

/* namei.c */
static inline unsigned int udf_dir_entry_len(struct fileIdentDesc *cfi)
{
	return ALIGN(sizeof(struct fileIdentDesc) +
		le16_to_cpu(cfi->lengthOfImpUse) + cfi->lengthFileIdent,
		UDF_NAME_PAD);
}

/* file.c */
extern long udf_ioctl(struct file *, unsigned int, unsigned long);
int udf_fsync(struct file *file, loff_t start, loff_t end, int datasync);

/* inode.c */
extern struct inode *__udf_iget(struct super_block *, struct kernel_lb_addr *,
				bool hidden_inode);
static inline struct inode *udf_iget_special(struct super_block *sb,
					     struct kernel_lb_addr *ino)
{
	return __udf_iget(sb, ino, true);
}
static inline struct inode *udf_iget(struct super_block *sb,
				     struct kernel_lb_addr *ino)
{
	return __udf_iget(sb, ino, false);
}
extern int udf_expand_file_adinicb(struct inode *);
extern struct buffer_head *udf_bread(struct inode *inode, udf_pblk_t block,
				      int create, int *err);
extern int udf_setsize(struct inode *, loff_t);
extern void udf_evict_inode(struct inode *);
extern int udf_write_inode(struct inode *, struct writeback_control *wbc);
extern int inode_bmap(struct inode *inode, sector_t block,
		      struct extent_position *pos, struct kernel_lb_addr *eloc,
		      uint32_t *elen, sector_t *offset, int8_t *etype);
int udf_get_block(struct inode *, sector_t, struct buffer_head *, int);
extern int udf_setup_indirect_aext(struct inode *inode, udf_pblk_t block,
				   struct extent_position *epos);
extern int __udf_add_aext(struct inode *inode, struct extent_position *epos,

Annotation

Implementation Notes