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

📄 xfs_mount.h

📁 linux 内核源代码
💻 H
📖 第 1 页 / 共 2 页
字号:
/* * Copyright (c) 2000-2005 Silicon Graphics, Inc. * All Rights Reserved. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation. * * This program is distributed in the hope that it would be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write the Free Software Foundation, * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA */#ifndef __XFS_MOUNT_H__#define	__XFS_MOUNT_H__typedef struct xfs_trans_reservations {	uint	tr_write;	/* extent alloc trans */	uint	tr_itruncate;	/* truncate trans */	uint	tr_rename;	/* rename trans */	uint	tr_link;	/* link trans */	uint	tr_remove;	/* unlink trans */	uint	tr_symlink;	/* symlink trans */	uint	tr_create;	/* create trans */	uint	tr_mkdir;	/* mkdir trans */	uint	tr_ifree;	/* inode free trans */	uint	tr_ichange;	/* inode update trans */	uint	tr_growdata;	/* fs data section grow trans */	uint	tr_swrite;	/* sync write inode trans */	uint	tr_addafork;	/* cvt inode to attributed trans */	uint	tr_writeid;	/* write setuid/setgid file */	uint	tr_attrinval;	/* attr fork buffer invalidation */	uint	tr_attrset;	/* set/create an attribute */	uint	tr_attrrm;	/* remove an attribute */	uint	tr_clearagi;	/* clear bad agi unlinked ino bucket */	uint	tr_growrtalloc;	/* grow realtime allocations */	uint	tr_growrtzero;	/* grow realtime zeroing */	uint	tr_growrtfree;	/* grow realtime freeing */} xfs_trans_reservations_t;#ifndef __KERNEL__/* * Moved here from xfs_ag.h to avoid reordering header files */#define XFS_DADDR_TO_AGNO(mp,d) \	((xfs_agnumber_t)(XFS_BB_TO_FSBT(mp, d) / (mp)->m_sb.sb_agblocks))#define XFS_DADDR_TO_AGBNO(mp,d) \	((xfs_agblock_t)(XFS_BB_TO_FSBT(mp, d) % (mp)->m_sb.sb_agblocks))#elsestruct cred;struct log;struct xfs_mount_args;struct xfs_inode;struct xfs_iocore;struct xfs_bmbt_irec;struct xfs_bmap_free;struct xfs_extdelta;struct xfs_swapext;struct xfs_mru_cache;#define	AIL_LOCK_T		lock_t#define	AIL_LOCKINIT(x,y)	spinlock_init(x,y)#define	AIL_LOCK_DESTROY(x)	spinlock_destroy(x)#define	AIL_LOCK(mp,s)		s=mutex_spinlock(&(mp)->m_ail_lock)#define	AIL_UNLOCK(mp,s)	mutex_spinunlock(&(mp)->m_ail_lock, s)/* * Prototypes and functions for the Data Migration subsystem. */typedef int	(*xfs_send_data_t)(int, bhv_vnode_t *,			xfs_off_t, size_t, int, bhv_vrwlock_t *);typedef int	(*xfs_send_mmap_t)(struct vm_area_struct *, uint);typedef int	(*xfs_send_destroy_t)(bhv_vnode_t *, dm_right_t);typedef int	(*xfs_send_namesp_t)(dm_eventtype_t, struct xfs_mount *,			bhv_vnode_t *,			dm_right_t, bhv_vnode_t *, dm_right_t,			char *, char *, mode_t, int, int);typedef int	(*xfs_send_mount_t)(struct xfs_mount *, dm_right_t,			char *, char *);typedef void	(*xfs_send_unmount_t)(struct xfs_mount *, bhv_vnode_t *,			dm_right_t, mode_t, int, int);typedef struct xfs_dmops {	xfs_send_data_t		xfs_send_data;	xfs_send_mmap_t		xfs_send_mmap;	xfs_send_destroy_t	xfs_send_destroy;	xfs_send_namesp_t	xfs_send_namesp;	xfs_send_mount_t	xfs_send_mount;	xfs_send_unmount_t	xfs_send_unmount;} xfs_dmops_t;#define XFS_SEND_DATA(mp, ev,vp,off,len,fl,lock) \	(*(mp)->m_dm_ops->xfs_send_data)(ev,vp,off,len,fl,lock)#define XFS_SEND_MMAP(mp, vma,fl) \	(*(mp)->m_dm_ops->xfs_send_mmap)(vma,fl)#define XFS_SEND_DESTROY(mp, vp,right) \	(*(mp)->m_dm_ops->xfs_send_destroy)(vp,right)#define XFS_SEND_NAMESP(mp, ev,b1,r1,b2,r2,n1,n2,mode,rval,fl) \	(*(mp)->m_dm_ops->xfs_send_namesp)(ev,NULL,b1,r1,b2,r2,n1,n2,mode,rval,fl)#define XFS_SEND_PREUNMOUNT(mp,b1,r1,b2,r2,n1,n2,mode,rval,fl) \	(*(mp)->m_dm_ops->xfs_send_namesp)(DM_EVENT_PREUNMOUNT,mp,b1,r1,b2,r2,n1,n2,mode,rval,fl)#define XFS_SEND_MOUNT(mp,right,path,name) \	(*(mp)->m_dm_ops->xfs_send_mount)(mp,right,path,name)#define XFS_SEND_UNMOUNT(mp, vp,right,mode,rval,fl) \	(*(mp)->m_dm_ops->xfs_send_unmount)(mp,vp,right,mode,rval,fl)/* * Prototypes and functions for the Quota Management subsystem. */struct xfs_dquot;struct xfs_dqtrxops;struct xfs_quotainfo;typedef int	(*xfs_qminit_t)(struct xfs_mount *, uint *, uint *);typedef int	(*xfs_qmmount_t)(struct xfs_mount *, uint, uint, int);typedef int	(*xfs_qmunmount_t)(struct xfs_mount *);typedef void	(*xfs_qmdone_t)(struct xfs_mount *);typedef void	(*xfs_dqrele_t)(struct xfs_dquot *);typedef int	(*xfs_dqattach_t)(struct xfs_inode *, uint);typedef void	(*xfs_dqdetach_t)(struct xfs_inode *);typedef int	(*xfs_dqpurgeall_t)(struct xfs_mount *, uint);typedef int	(*xfs_dqvopalloc_t)(struct xfs_mount *,			struct xfs_inode *, uid_t, gid_t, prid_t, uint,			struct xfs_dquot **, struct xfs_dquot **);typedef void	(*xfs_dqvopcreate_t)(struct xfs_trans *, struct xfs_inode *,			struct xfs_dquot *, struct xfs_dquot *);typedef int	(*xfs_dqvoprename_t)(struct xfs_inode **);typedef struct xfs_dquot * (*xfs_dqvopchown_t)(			struct xfs_trans *, struct xfs_inode *,			struct xfs_dquot **, struct xfs_dquot *);typedef int	(*xfs_dqvopchownresv_t)(struct xfs_trans *, struct xfs_inode *,			struct xfs_dquot *, struct xfs_dquot *, uint);typedef void	(*xfs_dqstatvfs_t)(struct xfs_inode *, bhv_statvfs_t *);typedef int	(*xfs_dqsync_t)(struct xfs_mount *, int flags);typedef int	(*xfs_quotactl_t)(struct xfs_mount *, int, int, xfs_caddr_t);typedef struct xfs_qmops {	xfs_qminit_t		xfs_qminit;	xfs_qmdone_t		xfs_qmdone;	xfs_qmmount_t		xfs_qmmount;	xfs_qmunmount_t		xfs_qmunmount;	xfs_dqrele_t		xfs_dqrele;	xfs_dqattach_t		xfs_dqattach;	xfs_dqdetach_t		xfs_dqdetach;	xfs_dqpurgeall_t	xfs_dqpurgeall;	xfs_dqvopalloc_t	xfs_dqvopalloc;	xfs_dqvopcreate_t	xfs_dqvopcreate;	xfs_dqvoprename_t	xfs_dqvoprename;	xfs_dqvopchown_t	xfs_dqvopchown;	xfs_dqvopchownresv_t	xfs_dqvopchownresv;	xfs_dqstatvfs_t		xfs_dqstatvfs;	xfs_dqsync_t		xfs_dqsync;	xfs_quotactl_t		xfs_quotactl;	struct xfs_dqtrxops	*xfs_dqtrxops;} xfs_qmops_t;#define XFS_QM_INIT(mp, mnt, fl) \	(*(mp)->m_qm_ops->xfs_qminit)(mp, mnt, fl)#define XFS_QM_MOUNT(mp, mnt, fl, mfsi_flags) \	(*(mp)->m_qm_ops->xfs_qmmount)(mp, mnt, fl, mfsi_flags)#define XFS_QM_UNMOUNT(mp) \	(*(mp)->m_qm_ops->xfs_qmunmount)(mp)#define XFS_QM_DONE(mp) \	(*(mp)->m_qm_ops->xfs_qmdone)(mp)#define XFS_QM_DQRELE(mp, dq) \	(*(mp)->m_qm_ops->xfs_dqrele)(dq)#define XFS_QM_DQATTACH(mp, ip, fl) \	(*(mp)->m_qm_ops->xfs_dqattach)(ip, fl)#define XFS_QM_DQDETACH(mp, ip) \	(*(mp)->m_qm_ops->xfs_dqdetach)(ip)#define XFS_QM_DQPURGEALL(mp, fl) \	(*(mp)->m_qm_ops->xfs_dqpurgeall)(mp, fl)#define XFS_QM_DQVOPALLOC(mp, ip, uid, gid, prid, fl, dq1, dq2) \	(*(mp)->m_qm_ops->xfs_dqvopalloc)(mp, ip, uid, gid, prid, fl, dq1, dq2)#define XFS_QM_DQVOPCREATE(mp, tp, ip, dq1, dq2) \	(*(mp)->m_qm_ops->xfs_dqvopcreate)(tp, ip, dq1, dq2)#define XFS_QM_DQVOPRENAME(mp, ip) \	(*(mp)->m_qm_ops->xfs_dqvoprename)(ip)#define XFS_QM_DQVOPCHOWN(mp, tp, ip, dqp, dq) \	(*(mp)->m_qm_ops->xfs_dqvopchown)(tp, ip, dqp, dq)#define XFS_QM_DQVOPCHOWNRESV(mp, tp, ip, dq1, dq2, fl) \	(*(mp)->m_qm_ops->xfs_dqvopchownresv)(tp, ip, dq1, dq2, fl)#define XFS_QM_DQSTATVFS(ip, statp) \	(*(ip)->i_mount->m_qm_ops->xfs_dqstatvfs)(ip, statp)#define XFS_QM_DQSYNC(mp, flags) \	(*(mp)->m_qm_ops->xfs_dqsync)(mp, flags)#define XFS_QM_QUOTACTL(mp, cmd, id, addr) \	(*(mp)->m_qm_ops->xfs_quotactl)(mp, cmd, id, addr)/* * Prototypes and functions for I/O core modularization. */typedef int		(*xfs_ioinit_t)(struct xfs_mount *,				struct xfs_mount_args *, int);typedef int		(*xfs_bmapi_t)(struct xfs_trans *, void *,				xfs_fileoff_t, xfs_filblks_t, int,				xfs_fsblock_t *, xfs_extlen_t,				struct xfs_bmbt_irec *, int *,				struct xfs_bmap_free *, struct xfs_extdelta *);typedef int		(*xfs_bunmapi_t)(struct xfs_trans *,				void *, xfs_fileoff_t,				xfs_filblks_t, int, xfs_extnum_t,				xfs_fsblock_t *, struct xfs_bmap_free *,				struct xfs_extdelta *, int *);typedef int		(*xfs_bmap_eof_t)(void *, xfs_fileoff_t, int, int *);typedef int		(*xfs_iomap_write_direct_t)(				void *, xfs_off_t, size_t, int,				struct xfs_bmbt_irec *, int *, int);typedef int		(*xfs_iomap_write_delay_t)(				void *, xfs_off_t, size_t, int,				struct xfs_bmbt_irec *, int *);typedef int		(*xfs_iomap_write_allocate_t)(				void *, xfs_off_t, size_t,				struct xfs_bmbt_irec *, int *);typedef int		(*xfs_iomap_write_unwritten_t)(				void *, xfs_off_t, size_t);typedef uint		(*xfs_lck_map_shared_t)(void *);typedef void		(*xfs_lock_t)(void *, uint);typedef void		(*xfs_lock_demote_t)(void *, uint);typedef int		(*xfs_lock_nowait_t)(void *, uint);typedef void		(*xfs_unlk_t)(void *, unsigned int);typedef xfs_fsize_t	(*xfs_size_t)(void *);typedef xfs_fsize_t	(*xfs_iodone_t)(struct xfs_mount *);typedef int		(*xfs_swap_extents_t)(void *, void *,				struct xfs_swapext*);typedef struct xfs_ioops {	xfs_ioinit_t			xfs_ioinit;	xfs_bmapi_t			xfs_bmapi_func;	xfs_bunmapi_t			xfs_bunmapi_func;	xfs_bmap_eof_t			xfs_bmap_eof_func;	xfs_iomap_write_direct_t	xfs_iomap_write_direct;	xfs_iomap_write_delay_t		xfs_iomap_write_delay;	xfs_iomap_write_allocate_t	xfs_iomap_write_allocate;	xfs_iomap_write_unwritten_t	xfs_iomap_write_unwritten;	xfs_lock_t			xfs_ilock;	xfs_lck_map_shared_t		xfs_lck_map_shared;	xfs_lock_demote_t		xfs_ilock_demote;	xfs_lock_nowait_t		xfs_ilock_nowait;	xfs_unlk_t			xfs_unlock;	xfs_size_t			xfs_size_func;	xfs_iodone_t			xfs_iodone;	xfs_swap_extents_t		xfs_swap_extents_func;} xfs_ioops_t;#define XFS_IOINIT(mp, args, flags) \	(*(mp)->m_io_ops.xfs_ioinit)(mp, args, flags)#define XFS_BMAPI(mp, trans,io,bno,len,f,first,tot,mval,nmap,flist,delta) \	(*(mp)->m_io_ops.xfs_bmapi_func) \		(trans,(io)->io_obj,bno,len,f,first,tot,mval,nmap,flist,delta)#define XFS_BUNMAPI(mp, trans,io,bno,len,f,nexts,first,flist,delta,done) \	(*(mp)->m_io_ops.xfs_bunmapi_func) \		(trans,(io)->io_obj,bno,len,f,nexts,first,flist,delta,done)#define XFS_BMAP_EOF(mp, io, endoff, whichfork, eof) \	(*(mp)->m_io_ops.xfs_bmap_eof_func) \		((io)->io_obj, endoff, whichfork, eof)#define XFS_IOMAP_WRITE_DIRECT(mp, io, offset, count, flags, mval, nmap, found)\	(*(mp)->m_io_ops.xfs_iomap_write_direct) \		((io)->io_obj, offset, count, flags, mval, nmap, found)#define XFS_IOMAP_WRITE_DELAY(mp, io, offset, count, flags, mval, nmap) \	(*(mp)->m_io_ops.xfs_iomap_write_delay) \		((io)->io_obj, offset, count, flags, mval, nmap)#define XFS_IOMAP_WRITE_ALLOCATE(mp, io, offset, count, mval, nmap) \	(*(mp)->m_io_ops.xfs_iomap_write_allocate) \		((io)->io_obj, offset, count, mval, nmap)#define XFS_IOMAP_WRITE_UNWRITTEN(mp, io, offset, count) \	(*(mp)->m_io_ops.xfs_iomap_write_unwritten) \		((io)->io_obj, offset, count)#define XFS_LCK_MAP_SHARED(mp, io) \	(*(mp)->m_io_ops.xfs_lck_map_shared)((io)->io_obj)#define XFS_ILOCK(mp, io, mode) \	(*(mp)->m_io_ops.xfs_ilock)((io)->io_obj, mode)#define XFS_ILOCK_NOWAIT(mp, io, mode) \	(*(mp)->m_io_ops.xfs_ilock_nowait)((io)->io_obj, mode)#define XFS_IUNLOCK(mp, io, mode) \	(*(mp)->m_io_ops.xfs_unlock)((io)->io_obj, mode)#define XFS_ILOCK_DEMOTE(mp, io, mode) \	(*(mp)->m_io_ops.xfs_ilock_demote)((io)->io_obj, mode)#define XFS_SIZE(mp, io) \	(*(mp)->m_io_ops.xfs_size_func)((io)->io_obj)#define XFS_IODONE(mp) \	(*(mp)->m_io_ops.xfs_iodone)(mp)#define XFS_SWAP_EXTENTS(mp, io, tio, sxp) \	(*(mp)->m_io_ops.xfs_swap_extents_func) \		((io)->io_obj, (tio)->io_obj, sxp)#ifdef HAVE_PERCPU_SB/* * Valid per-cpu incore superblock counters. Note that if you add new counters, * you may need to define new counter disabled bit field descriptors as there * are more possible fields in the superblock that can fit in a bitfield on a * 32 bit platform. The XFS_SBS_* values for the current current counters just * fit. */typedef struct xfs_icsb_cnts {	uint64_t	icsb_fdblocks;	uint64_t	icsb_ifree;	uint64_t	icsb_icount;	unsigned long	icsb_flags;} xfs_icsb_cnts_t;#define XFS_ICSB_FLAG_LOCK	(1 << 0)	/* counter lock bit */#define XFS_ICSB_SB_LOCKED	(1 << 0)	/* sb already locked */#define XFS_ICSB_LAZY_COUNT	(1 << 1)	/* accuracy not needed */extern int	xfs_icsb_init_counters(struct xfs_mount *);extern void	xfs_icsb_reinit_counters(struct xfs_mount *);extern void	xfs_icsb_sync_counters_flags(struct xfs_mount *, int);#else#define xfs_icsb_init_counters(mp)	(0)#define xfs_icsb_reinit_counters(mp)	do { } while (0)#define xfs_icsb_sync_counters_flags(mp, flags)	do { } while (0)#endiftypedef struct xfs_mount {

⌨️ 快捷键说明

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