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

📄 xfs_fs.h

📁 linux得一些常用命令,以及linux环境下的c编程
💻 H
📖 第 1 页 / 共 2 页
字号:
/* * Copyright (c) 1995-2001 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.1 of the GNU Lesser 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 Lesser 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 _LINUX_XFS_FS_H#define _LINUX_XFS_FS_H#include <linux/types.h>#include <asm/ioctl.h>/* * SGI's XFS filesystem's major stuff (constants, structures) */#define XFS_SUPER_MAGIC 0x58465342#define XFS_NAME	"xfs"/*  * Direct I/O attribute record used with XFS_IOC_DIOINFO * d_miniosz is the min xfer size, xfer size multiple and file seek offset * alignment. */struct dioattr {	__u32		d_mem;		/* data buffer memory alignment	*/	__u32		d_miniosz;	/* min xfer size		*/	__u32		d_maxiosz;	/* max xfer size		*/};/* * Structure for XFS_IOC_FSGETXATTR[A] and XFS_IOC_FSSETXATTR. */struct fsxattr {	__u32	 	fsx_xflags;	/* xflags field value (get/set)	*/	__u32	 	fsx_extsize;	/* extsize field value (get/set)*/	__u32	 	fsx_nextents;	/* nextents field value (get)	*/	unsigned char	fsx_pad[16];};/* * Flags for the bs_xflags/fsx_xflags field * There should be a one-to-one correspondence between these flags and the * XFS_DIFLAG_s. */#define	XFS_XFLAG_REALTIME	0x00000001#define	XFS_XFLAG_PREALLOC	0x00000002#define	XFS_XFLAG_HASATTR	0x80000000      /* no DIFLAG for this	*/#define	XFS_XFLAG_ALL           \	( XFS_XFLAG_REALTIME|XFS_XFLAG_PREALLOC|XFS_XFLAG_HASATTR )/* * Structure for XFS_IOC_GETBMAP. * On input, fill in bmv_offset and bmv_length of the first structure * to indicate the area of interest in the file, and bmv_entry with the * number of array elements given.  The first structure is updated on * return to give the offset and length for the next call. */struct getbmap {	__s64		bmv_offset;	/* file offset of segment in blocks */	__s64		bmv_block;	/* starting block (64-bit daddr_t)  */	__s64		bmv_length;	/* length of segment, blocks	    */	__s32		bmv_count;	/* # of entries in array incl. 1st  */	__s32		bmv_entries;	/* # of entries filled in (output)  */};/* *	Structure for XFS_IOC_GETBMAPX.  Fields bmv_offset through bmv_entries *	are used exactly as in the getbmap structure.  The getbmapx structure *	has additional bmv_iflags and bmv_oflags fields. The bmv_iflags field *	is only used for the first structure.  It contains input flags  *	specifying XFS_IOC_GETBMAPX actions.  The bmv_oflags field is filled *	in by the XFS_IOC_GETBMAPX command for each returned structure after *	the first. */struct getbmapx {	__s64		bmv_offset;	/* file offset of segment in blocks */	__s64		bmv_block;	/* starting block (64-bit daddr_t)  */	__s64		bmv_length;	/* length of segment, blocks	    */	__s32		bmv_count;	/* # of entries in array incl. 1st  */	__s32		bmv_entries;	/* # of entries filled in (output). */	__s32		bmv_iflags;	/* input flags (1st structure)	    */	__s32		bmv_oflags;	/* output flags (after 1st structure)*/	__s32		bmv_unused1;	/* future use			    */	__s32		bmv_unused2;	/* future use			    */};/*	bmv_iflags values - set by XFS_IOC_GETBMAPX caller.	*/#define	BMV_IF_ATTRFORK		0x1	/* return attr fork rather than data */#define BMV_IF_NO_DMAPI_READ	0x2	/* Do not generate DMAPI read event  */#define BMV_IF_PREALLOC		0x4	/* rtn status BMV_OF_PREALLOC if req */#define BMV_IF_VALID	(BMV_IF_ATTRFORK|BMV_IF_NO_DMAPI_READ|BMV_IF_PREALLOC)#ifdef __KERNEL__#define	BMV_IF_EXTENDED	0x40000000	/* getpmapx if set */#endif/*	bmv_oflags values - returned for for each non-header segment */#define BMV_OF_PREALLOC		0x1	/* segment = unwritten pre-allocation *//*	Convert getbmap <-> getbmapx - move fields from p1 to p2. */#define	GETBMAP_CONVERT(p1,p2) {	\	p2.bmv_offset = p1.bmv_offset;	\	p2.bmv_block = p1.bmv_block;	\	p2.bmv_length = p1.bmv_length;	\	p2.bmv_count = p1.bmv_count;	\	p2.bmv_entries = p1.bmv_entries;  }/* * Structure for XFS_IOC_FSSETDM. * For use by backup and restore programs to set the XFS on-disk inode * fields di_dmevmask and di_dmstate.  These must be set to exactly and * only values previously obtained via xfs_bulkstat!  (Specifically the * xfs_bstat_t fields bs_dmevmask and bs_dmstate.) */struct fsdmidata {	__u32		fsd_dmevmask;	/* corresponds to di_dmevmask */	__u16		fsd_padding;	__u16		fsd_dmstate;	/* corresponds to di_dmstate  */};/* * File segment locking set data type for 64 bit access. * Also used for all the RESV/FREE interfaces. */typedef struct xfs_flock64 {	__s16		l_type;	__s16		l_whence;	__s64		l_start;	__s64		l_len;		/* len == 0 means until end of file */        __s32		l_sysid;        pid_t		l_pid;	__s32		l_pad[4];	/* reserve area			    */} xfs_flock64_t;/* * Output for XFS_IOC_FSGEOMETRY */typedef struct xfs_fsop_geom {	__u32		blocksize;	/* filesystem (data) block size	*/	__u32		rtextsize;	/* realtime extent size		*/	__u32		agblocks;	/* fsblocks in an AG		*/	__u32		agcount;	/* number of allocation groups  */	__u32		logblocks;	/* fsblocks in the log		*/	__u32		sectsize;	/* (data) sector size, bytes	*/	__u32		inodesize;	/* inode size in bytes		*/	__u32		imaxpct;	/* max allowed inode space(%)	*/	__u64		datablocks;	/* fsblocks in data subvolume	*/	__u64		rtblocks;	/* fsblocks in realtime subvol	*/	__u64		rtextents;	/* rt extents in realtime subvol*/	__u64		logstart;	/* starting fsblock of the log	*/	unsigned char	uuid[16];	/* unique id of the filesystem	*/	__u32		sunit;		/* stripe unit, fsblocks	*/	__u32		swidth;		/* stripe width, fsblocks	*/	__s32		version;	/* structure version		*/	__u32		flags;		/* superblock version flags	*/	__u32		logsectsize;	/* log sector size, bytes	*/	__u32		rtsectsize;	/* realtime sector size, bytes	*/	__u32		dirblocksize;	/* directory block size, bytes	*/} xfs_fsop_geom_t;/* Output for XFS_FS_COUNTS */typedef struct xfs_fsop_counts {	__u64	freedata;	/* free data section blocks */	__u64	freertx;	/* free rt extents */	__u64	freeino;	/* free inodes */	__u64	allocino;	/* total allocated inodes */} xfs_fsop_counts_t;/* Input/Output for XFS_GET_RESBLKS and XFS_SET_RESBLKS */typedef struct xfs_fsop_resblks {	__u64  resblks;	__u64  resblks_avail;} xfs_fsop_resblks_t;#define	XFS_FSOP_GEOM_VERSION	0#define	XFS_FSOP_GEOM_FLAGS_ATTR	0x01	/* attributes in use	*/#define	XFS_FSOP_GEOM_FLAGS_NLINK	0x02	/* 32-bit nlink values	*/#define	XFS_FSOP_GEOM_FLAGS_QUOTA	0x04	/* quotas enabled	*/#define	XFS_FSOP_GEOM_FLAGS_IALIGN	0x08	/* inode alignment	*/#define	XFS_FSOP_GEOM_FLAGS_DALIGN	0x10	/* large data alignment	*/#define	XFS_FSOP_GEOM_FLAGS_SHARED	0x20	/* read-only shared	*/#define	XFS_FSOP_GEOM_FLAGS_EXTFLG	0x40	/* special extent flag	*/#define	XFS_FSOP_GEOM_FLAGS_DIRV2	0x80	/* directory version 2	*//* * Minimum and maximum sizes need for growth checks */#define	XFS_MIN_AG_BLOCKS	64#define	XFS_MIN_LOG_BLOCKS	512#define	XFS_MAX_LOG_BLOCKS	(64 * 1024)#define	XFS_MIN_LOG_BYTES	(256 * 1024)#define	XFS_MAX_LOG_BYTES	(128 * 1024 * 1024)/* * Structures for XFS_IOC_FSGROWFSDATA, XFS_IOC_FSGROWFSLOG & XFS_IOC_FSGROWFSRT */typedef struct xfs_growfs_data {	__u64		newblocks;	/* new data subvol size, fsblocks */	__u32		imaxpct;	/* new inode space percentage limit */} xfs_growfs_data_t;typedef struct xfs_growfs_log {	__u32		newblocks;	/* new log size, fsblocks */	__u32		isint;		/* 1 if new log is internal */} xfs_growfs_log_t;typedef struct xfs_growfs_rt {	__u64		newblocks;	/* new realtime size, fsblocks */	__u32		extsize;	/* new realtime extent size, fsblocks */} xfs_growfs_rt_t;

⌨️ 快捷键说明

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