📄 xfs_mount.h
字号:
/* * 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 + -