⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xfs_mount.h

📁 linux 内核源代码
💻 H
📖 第 1 页 / 共 2 页
字号:
	struct super_block	*m_super;	xfs_tid_t		m_tid;		/* next unused tid for fs */	AIL_LOCK_T		m_ail_lock;	/* fs AIL mutex */	xfs_ail_entry_t		m_ail;		/* fs active log item list */	uint			m_ail_gen;	/* fs AIL generation count */	xfs_sb_t		m_sb;		/* copy of fs superblock */	lock_t			m_sb_lock;	/* sb counter mutex */	struct xfs_buf		*m_sb_bp;	/* buffer for superblock */	char			*m_fsname;	/* filesystem name */	int			m_fsname_len;	/* strlen of fs name */	char			*m_rtname;	/* realtime device name */	char			*m_logname;	/* external log device name */	int			m_bsize;	/* fs logical block size */	xfs_agnumber_t		m_agfrotor;	/* last ag where space found */	xfs_agnumber_t		m_agirotor;	/* last ag dir inode alloced */	lock_t			m_agirotor_lock;/* .. and lock protecting it */	xfs_agnumber_t		m_maxagi;	/* highest inode alloc group */	struct xfs_inode	*m_inodes;	/* active inode list */	struct list_head	m_del_inodes;	/* inodes to reclaim */	mutex_t			m_ilock;	/* inode list mutex */	uint			m_ireclaims;	/* count of calls to reclaim*/	uint			m_readio_log;	/* min read size log bytes */	uint			m_readio_blocks; /* min read size blocks */	uint			m_writeio_log;	/* min write size log bytes */	uint			m_writeio_blocks; /* min write size blocks */	struct log		*m_log;		/* log specific stuff */	int			m_logbufs;	/* number of log buffers */	int			m_logbsize;	/* size of each log buffer */	uint			m_rsumlevels;	/* rt summary levels */	uint			m_rsumsize;	/* size of rt summary, bytes */	struct xfs_inode	*m_rbmip;	/* pointer to bitmap inode */	struct xfs_inode	*m_rsumip;	/* pointer to summary inode */	struct xfs_inode	*m_rootip;	/* pointer to root directory */	struct xfs_quotainfo	*m_quotainfo;	/* disk quota information */	xfs_buftarg_t		*m_ddev_targp;	/* saves taking the address */	xfs_buftarg_t		*m_logdev_targp;/* ptr to log device */	xfs_buftarg_t		*m_rtdev_targp;	/* ptr to rt device */	__uint8_t		m_dircook_elog;	/* log d-cookie entry bits */	__uint8_t		m_blkbit_log;	/* blocklog + NBBY */	__uint8_t		m_blkbb_log;	/* blocklog - BBSHIFT */	__uint8_t		m_agno_log;	/* log #ag's */	__uint8_t		m_agino_log;	/* #bits for agino in inum */	__uint16_t		m_inode_cluster_size;/* min inode buf size */	uint			m_blockmask;	/* sb_blocksize-1 */	uint			m_blockwsize;	/* sb_blocksize in words */	uint			m_blockwmask;	/* blockwsize-1 */	uint			m_alloc_mxr[2];	/* XFS_ALLOC_BLOCK_MAXRECS */	uint			m_alloc_mnr[2];	/* XFS_ALLOC_BLOCK_MINRECS */	uint			m_bmap_dmxr[2];	/* XFS_BMAP_BLOCK_DMAXRECS */	uint			m_bmap_dmnr[2];	/* XFS_BMAP_BLOCK_DMINRECS */	uint			m_inobt_mxr[2];	/* XFS_INOBT_BLOCK_MAXRECS */	uint			m_inobt_mnr[2];	/* XFS_INOBT_BLOCK_MINRECS */	uint			m_ag_maxlevels;	/* XFS_AG_MAXLEVELS */	uint			m_bm_maxlevels[2]; /* XFS_BM_MAXLEVELS */	uint			m_in_maxlevels;	/* XFS_IN_MAXLEVELS */	struct xfs_perag	*m_perag;	/* per-ag accounting info */	struct rw_semaphore	m_peraglock;	/* lock for m_perag (pointer) */	struct mutex		m_growlock;	/* growfs mutex */	int			m_fixedfsid[2];	/* unchanged for life of FS */	uint			m_dmevmask;	/* DMI events for this FS */	__uint64_t		m_flags;	/* global mount flags */	uint			m_attroffset;	/* inode attribute offset */	uint			m_dir_node_ents; /* #entries in a dir danode */	uint			m_attr_node_ents; /* #entries in attr danode */	int			m_ialloc_inos;	/* inodes in inode allocation */	int			m_ialloc_blks;	/* blocks in inode allocation */	int			m_litino;	/* size of inode union area */	int			m_inoalign_mask;/* mask sb_inoalignmt if used */	uint			m_qflags;	/* quota status flags */	xfs_trans_reservations_t m_reservations;/* precomputed res values */	__uint64_t		m_maxicount;	/* maximum inode count */	__uint64_t		m_maxioffset;	/* maximum inode offset */	__uint64_t		m_resblks;	/* total reserved blocks */	__uint64_t		m_resblks_avail;/* available reserved blocks */#if XFS_BIG_INUMS	xfs_ino_t		m_inoadd;	/* add value for ino64_offset */#endif	int			m_dalign;	/* stripe unit */	int			m_swidth;	/* stripe width */	int			m_sinoalign;	/* stripe unit inode alignment */	int			m_attr_magicpct;/* 37% of the blocksize */	int			m_dir_magicpct;	/* 37% of the dir blocksize */	__uint8_t		m_mk_sharedro;	/* mark shared ro on unmount */	__uint8_t		m_inode_quiesce;/* call quiesce on new inodes.						   field governed by m_ilock */	__uint8_t		m_sectbb_log;	/* sectlog - BBSHIFT */	int			m_dirblksize;	/* directory block sz--bytes */	int			m_dirblkfsbs;	/* directory block sz--fsbs */	xfs_dablk_t		m_dirdatablk;	/* blockno of dir data v2 */	xfs_dablk_t		m_dirleafblk;	/* blockno of dir non-data v2 */	xfs_dablk_t		m_dirfreeblk;	/* blockno of dirfreeindex v2 */	uint			m_chsize;	/* size of next field */	struct xfs_chash	*m_chash;	/* fs private inode per-cluster						 * hash table */	struct xfs_dmops	*m_dm_ops;	/* vector of DMI ops */	struct xfs_qmops	*m_qm_ops;	/* vector of XQM ops */	struct xfs_ioops	m_io_ops;	/* vector of I/O ops */	atomic_t		m_active_trans;	/* number trans frozen */#ifdef HAVE_PERCPU_SB	xfs_icsb_cnts_t		*m_sb_cnts;	/* per-cpu superblock counters */	unsigned long		m_icsb_counters; /* disabled per-cpu counters */	struct notifier_block	m_icsb_notifier; /* hotplug cpu notifier */	struct mutex		m_icsb_mutex;	/* balancer sync lock */#endif	struct xfs_mru_cache	*m_filestream;  /* per-mount filestream data */	struct task_struct	*m_sync_task;	/* generalised sync thread */	bhv_vfs_sync_work_t	m_sync_work;	/* work item for VFS_SYNC */	struct list_head	m_sync_list;	/* sync thread work item list */	spinlock_t		m_sync_lock;	/* work item list lock */	int			m_sync_seq;	/* sync thread generation no. */	wait_queue_head_t	m_wait_single_sync_task;} xfs_mount_t;/* * Flags for m_flags. */#define XFS_MOUNT_WSYNC		(1ULL << 0)	/* for nfs - all metadata ops						   must be synchronous except						   for space allocations */#define XFS_MOUNT_INO64		(1ULL << 1)#define XFS_MOUNT_DMAPI		(1ULL << 2)	/* dmapi is enabled */#define XFS_MOUNT_WAS_CLEAN	(1ULL << 3)#define XFS_MOUNT_FS_SHUTDOWN	(1ULL << 4)	/* atomic stop of all filesystem						   operations, typically for						   disk errors in metadata */#define XFS_MOUNT_RETERR	(1ULL << 6)     /* return alignment errors to						   user */#define XFS_MOUNT_NOALIGN	(1ULL << 7)	/* turn off stripe alignment						   allocations */#define XFS_MOUNT_ATTR2		(1ULL << 8)	/* allow use of attr2 format */#define XFS_MOUNT_GRPID		(1ULL << 9)	/* group-ID assigned from directory */#define XFS_MOUNT_NORECOVERY	(1ULL << 10)	/* no recovery - dirty fs */#define XFS_MOUNT_SHARED	(1ULL << 11)	/* shared mount */#define XFS_MOUNT_DFLT_IOSIZE	(1ULL << 12)	/* set default i/o size */#define XFS_MOUNT_OSYNCISOSYNC	(1ULL << 13)	/* o_sync is REALLY o_sync */						/* osyncisdsync is now default*/#define XFS_MOUNT_32BITINODES	(1ULL << 14)	/* do not create inodes above						 * 32 bits in size */#define XFS_MOUNT_SMALL_INUMS	(1ULL << 15)	/* users wants 32bit inodes */#define XFS_MOUNT_NOUUID	(1ULL << 16)	/* ignore uuid during mount */#define XFS_MOUNT_BARRIER	(1ULL << 17)#define XFS_MOUNT_IDELETE	(1ULL << 18)	/* delete empty inode clusters*/#define XFS_MOUNT_SWALLOC	(1ULL << 19)	/* turn on stripe width						 * allocation */#define XFS_MOUNT_RDONLY	(1ULL << 20)	/* read-only fs */#define XFS_MOUNT_DIRSYNC	(1ULL << 21)	/* synchronous directory ops */#define XFS_MOUNT_COMPAT_IOSIZE	(1ULL << 22)	/* don't report large preferred						 * I/O size in stat() */#define XFS_MOUNT_NO_PERCPU_SB	(1ULL << 23)	/* don't use per-cpu superblock						   counters */#define XFS_MOUNT_FILESTREAMS	(1ULL << 24)	/* enable the filestreams						   allocator *//* * Default minimum read and write sizes. */#define XFS_READIO_LOG_LARGE	16#define XFS_WRITEIO_LOG_LARGE	16/* * Max and min values for mount-option defined I/O * preallocation sizes. */#define XFS_MAX_IO_LOG		30	/* 1G */#define XFS_MIN_IO_LOG		PAGE_SHIFT/* * Synchronous read and write sizes.  This should be * better for NFSv2 wsync filesystems. */#define	XFS_WSYNC_READIO_LOG	15	/* 32K */#define	XFS_WSYNC_WRITEIO_LOG	14	/* 16K *//* * Allow large block sizes to be reported to userspace programs if the * "largeio" mount option is used.  * * If compatibility mode is specified, simply return the basic unit of caching * so that we don't get inefficient read/modify/write I/O from user apps. * Otherwise.... * * If the underlying volume is a stripe, then return the stripe width in bytes * as the recommended I/O size. It is not a stripe and we've set a default * buffered I/O size, return that, otherwise return the compat default. */static inline unsigned longxfs_preferred_iosize(xfs_mount_t *mp){	if (mp->m_flags & XFS_MOUNT_COMPAT_IOSIZE)		return PAGE_CACHE_SIZE;	return (mp->m_swidth ?		(mp->m_swidth << mp->m_sb.sb_blocklog) :		((mp->m_flags & XFS_MOUNT_DFLT_IOSIZE) ?			(1 << (int)MAX(mp->m_readio_log, mp->m_writeio_log)) :			PAGE_CACHE_SIZE));}#define XFS_MAXIOFFSET(mp)	((mp)->m_maxioffset)#define XFS_LAST_UNMOUNT_WAS_CLEAN(mp)	\				((mp)->m_flags & XFS_MOUNT_WAS_CLEAN)#define XFS_FORCED_SHUTDOWN(mp)	((mp)->m_flags & XFS_MOUNT_FS_SHUTDOWN)void xfs_do_force_shutdown(struct xfs_mount *mp, int flags, char *fname,		int lnnum);#define xfs_force_shutdown(m,f)	\	xfs_do_force_shutdown(m, f, __FILE__, __LINE__)/* * Flags for xfs_mountfs */#define XFS_MFSI_SECOND		0x01	/* Secondary mount -- skip stuff */#define XFS_MFSI_CLIENT		0x02	/* Is a client -- skip lots of stuff *//*	XFS_MFSI_RRINODES	*/#define XFS_MFSI_NOUNLINK	0x08	/* Skip unlinked inode processing in */					/* log recovery */#define XFS_MFSI_NO_QUOTACHECK	0x10	/* Skip quotacheck processing *//*	XFS_MFSI_CONVERT_SUNIT	*/#define XFS_MFSI_QUIET		0x40	/* Be silent if mount errors found */#define XFS_DADDR_TO_AGNO(mp,d)         xfs_daddr_to_agno(mp,d)static inline xfs_agnumber_txfs_daddr_to_agno(struct xfs_mount *mp, xfs_daddr_t d){	xfs_daddr_t ld = XFS_BB_TO_FSBT(mp, d);	do_div(ld, mp->m_sb.sb_agblocks);	return (xfs_agnumber_t) ld;}#define XFS_DADDR_TO_AGBNO(mp,d)        xfs_daddr_to_agbno(mp,d)static inline xfs_agblock_txfs_daddr_to_agbno(struct xfs_mount *mp, xfs_daddr_t d){	xfs_daddr_t ld = XFS_BB_TO_FSBT(mp, d);	return (xfs_agblock_t) do_div(ld, mp->m_sb.sb_agblocks);}/* * perag get/put wrappers for eventual ref counting */static inline xfs_perag_t *xfs_get_perag(struct xfs_mount *mp, xfs_ino_t ino){	return &mp->m_perag[XFS_INO_TO_AGNO(mp, ino)];}static inline voidxfs_put_perag(struct xfs_mount *mp, xfs_perag_t *pag){	/* nothing to see here, move along */}/* * Per-cpu superblock locking functions */#ifdef HAVE_PERCPU_SBSTATIC_INLINE voidxfs_icsb_lock(xfs_mount_t *mp){	mutex_lock(&mp->m_icsb_mutex);}STATIC_INLINE voidxfs_icsb_unlock(xfs_mount_t *mp){	mutex_unlock(&mp->m_icsb_mutex);}#else#define xfs_icsb_lock(mp)#define xfs_icsb_unlock(mp)#endif/* * This structure is for use by the xfs_mod_incore_sb_batch() routine. * xfs_growfs can specify a few fields which are more than int limit */typedef struct xfs_mod_sb {	xfs_sb_field_t	msb_field;	/* Field to modify, see below */	int64_t		msb_delta;	/* Change to make to specified field */} xfs_mod_sb_t;#define	XFS_MOUNT_ILOCK(mp)	mutex_lock(&((mp)->m_ilock))#define	XFS_MOUNT_IUNLOCK(mp)	mutex_unlock(&((mp)->m_ilock))#define	XFS_SB_LOCK(mp)		mutex_spinlock(&(mp)->m_sb_lock)#define	XFS_SB_UNLOCK(mp,s)	mutex_spinunlock(&(mp)->m_sb_lock,(s))extern xfs_mount_t *xfs_mount_init(void);extern void	xfs_mod_sb(xfs_trans_t *, __int64_t);extern int	xfs_log_sbcount(xfs_mount_t *, uint);extern void	xfs_mount_free(xfs_mount_t *mp);extern int	xfs_mountfs(xfs_mount_t *mp, int);extern void	xfs_mountfs_check_barriers(xfs_mount_t *mp);extern int	xfs_unmountfs(xfs_mount_t *, struct cred *);extern void	xfs_unmountfs_close(xfs_mount_t *, struct cred *);extern int	xfs_unmountfs_writesb(xfs_mount_t *);extern int	xfs_unmount_flush(xfs_mount_t *, int);extern int	xfs_mod_incore_sb(xfs_mount_t *, xfs_sb_field_t, int64_t, int);extern int	xfs_mod_incore_sb_unlocked(xfs_mount_t *, xfs_sb_field_t,			int64_t, int);extern int	xfs_mod_incore_sb_batch(xfs_mount_t *, xfs_mod_sb_t *,			uint, int);extern struct xfs_buf *xfs_getsb(xfs_mount_t *, int);extern int	xfs_readsb(xfs_mount_t *, int);extern void	xfs_freesb(xfs_mount_t *);extern int	xfs_fs_writable(xfs_mount_t *);extern int	xfs_syncsub(xfs_mount_t *, int, int *);extern int	xfs_sync_inodes(xfs_mount_t *, int, int *);extern xfs_agnumber_t	xfs_initialize_perag(xfs_mount_t *, xfs_agnumber_t);extern void	xfs_sb_from_disk(struct xfs_sb *, struct xfs_dsb *);extern void	xfs_sb_to_disk(struct xfs_dsb *, struct xfs_sb *, __int64_t);extern int	xfs_sb_validate_fsb_count(struct xfs_sb *, __uint64_t);extern int	xfs_dmops_get(struct xfs_mount *, struct xfs_mount_args *);extern void	xfs_dmops_put(struct xfs_mount *);extern int	xfs_qmops_get(struct xfs_mount *, struct xfs_mount_args *);extern void	xfs_qmops_put(struct xfs_mount *);extern struct xfs_dmops xfs_dmcore_xfs;extern struct xfs_ioops xfs_iocore_xfs;extern int	xfs_init(void);extern void	xfs_cleanup(void);#endif	/* __KERNEL__ */#endif	/* __XFS_MOUNT_H__ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -