xfs_mount.h
来自「Linux Kernel 2.6.9 for OMAP1710」· C头文件 代码 · 共 571 行 · 第 1/2 页
H
571 行
/* * Copyright (c) 2000-2004 Silicon Graphics, Inc. All Rights Reserved. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 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. * * Further, this software is distributed without any warranty that it is * free of the rightful claim of any third person regarding infringement * or the like. Any license provided herein, whether implied or * otherwise, applies only to this software file. Patent licenses, if * any, provided herein do not apply to combinations of this program with * other software, or any other product whatsoever. * * You should have received a copy of the GNU General Public License along * with this program; if not, write the Free Software Foundation, Inc., 59 * Temple Place - Suite 330, Boston MA 02111-1307, USA. * * Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy, * Mountain View, CA 94043, or: * * http://www.sgi.com * * For further information regarding this notice, see: * * http://oss.sgi.com/projects/GenInfo/SGIGPLNoticeExplan/ */#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 vfs;struct vnode;struct xfs_mount_args;struct xfs_ihash;struct xfs_chash;struct xfs_inode;struct xfs_perag;struct xfs_iocore;struct xfs_bmbt_irec;struct xfs_bmap_free;#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, struct vnode *, xfs_off_t, size_t, int, vrwlock_t *);typedef int (*xfs_send_mmap_t)(struct vm_area_struct *, uint);typedef int (*xfs_send_destroy_t)(struct vnode *, dm_right_t);typedef int (*xfs_send_namesp_t)(dm_eventtype_t, struct vfs *, struct vnode *, dm_right_t, struct vnode *, dm_right_t, char *, char *, mode_t, int, int);typedef void (*xfs_send_unmount_t)(struct vfs *, struct vnode *, 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_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, vfs,b1,r1,b2,r2,n1,n2,mode,rval,fl) \ (*(mp)->m_dm_ops.xfs_send_namesp)(DM_EVENT_PREUNMOUNT,vfs,b1,r1,b2,r2,n1,n2,mode,rval,fl)#define XFS_SEND_UNMOUNT(mp, vfsp,vp,right,mode,rval,fl) \ (*(mp)->m_dm_ops.xfs_send_unmount)(vfsp,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);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, 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 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; 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) \ (*(mp)->m_qm_ops.xfs_qmmount)(mp, mnt, fl)#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, fl, dq1, dq2) \ (*(mp)->m_qm_ops.xfs_dqvopalloc)(mp, ip, uid, gid, 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)/* * Prototypes and functions for I/O core modularization. */typedef int (*xfs_ioinit_t)(struct vfs *, 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 *);typedef int (*xfs_bmap_eof_t)(void *, xfs_fileoff_t, int, int *);typedef int (*xfs_iomap_write_direct_t)( void *, loff_t, size_t, int, struct xfs_bmbt_irec *, int *, int);typedef int (*xfs_iomap_write_delay_t)( void *, loff_t, size_t, int, struct xfs_bmbt_irec *, int *);typedef int (*xfs_iomap_write_allocate_t)( void *, struct xfs_bmbt_irec *, int *);typedef int (*xfs_iomap_write_unwritten_t)( void *, loff_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 vfs *);typedef struct xfs_ioops { xfs_ioinit_t xfs_ioinit; xfs_bmapi_t xfs_bmapi_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_ioops_t;#define XFS_IOINIT(vfsp, args, flags) \ (*(mp)->m_io_ops.xfs_ioinit)(vfsp, args, flags)#define XFS_BMAPI(mp, trans,io,bno,len,f,first,tot,mval,nmap,flist) \ (*(mp)->m_io_ops.xfs_bmapi_func) \ (trans,(io)->io_obj,bno,len,f,first,tot,mval,nmap,flist)#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, mval, nmap) \ (*(mp)->m_io_ops.xfs_iomap_write_allocate) \ ((io)->io_obj, 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(vfsp) \ (*(mp)->m_io_ops.xfs_iodone)(vfsp)typedef struct xfs_mount { bhv_desc_t m_bhv; /* vfs xfs behavior */ xfs_tid_t m_tid; /* next unused tid for fs */ AIL_LOCK_T m_ail_lock; /* fs AIL mutex */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?