|  | /* | 
|  | * 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_VNODE_H__ | 
|  | #define __XFS_VNODE_H__ | 
|  |  | 
|  | #include "xfs_fs.h" | 
|  |  | 
|  | struct file; | 
|  | struct xfs_inode; | 
|  | struct xfs_iomap; | 
|  | struct attrlist_cursor_kern; | 
|  |  | 
|  | /* | 
|  | * Return values for xfs_inactive.  A return value of | 
|  | * VN_INACTIVE_NOCACHE implies that the file system behavior | 
|  | * has disassociated its state and bhv_desc_t from the vnode. | 
|  | */ | 
|  | #define	VN_INACTIVE_CACHE	0 | 
|  | #define	VN_INACTIVE_NOCACHE	1 | 
|  |  | 
|  | /* | 
|  | * Flags for read/write calls - same values as IRIX | 
|  | */ | 
|  | #define IO_ISAIO	0x00001		/* don't wait for completion */ | 
|  | #define IO_ISDIRECT	0x00004		/* bypass page cache */ | 
|  | #define IO_INVIS	0x00020		/* don't update inode timestamps */ | 
|  |  | 
|  | /* | 
|  | * Flags for xfs_inode_flush | 
|  | */ | 
|  | #define FLUSH_SYNC		1	/* wait for flush to complete	*/ | 
|  |  | 
|  | /* | 
|  | * Flush/Invalidate options for vop_toss/flush/flushinval_pages. | 
|  | */ | 
|  | #define FI_NONE			0	/* none */ | 
|  | #define FI_REMAPF		1	/* Do a remapf prior to the operation */ | 
|  | #define FI_REMAPF_LOCKED	2	/* Do a remapf prior to the operation. | 
|  | Prevent VM access to the pages until | 
|  | the operation completes. */ | 
|  |  | 
|  | /* | 
|  | * Dealing with bad inodes | 
|  | */ | 
|  | static inline int VN_BAD(struct inode *vp) | 
|  | { | 
|  | return is_bad_inode(vp); | 
|  | } | 
|  |  | 
|  | /* | 
|  | * Extracting atime values in various formats | 
|  | */ | 
|  | static inline void vn_atime_to_bstime(struct inode *vp, xfs_bstime_t *bs_atime) | 
|  | { | 
|  | bs_atime->tv_sec = vp->i_atime.tv_sec; | 
|  | bs_atime->tv_nsec = vp->i_atime.tv_nsec; | 
|  | } | 
|  |  | 
|  | static inline void vn_atime_to_timespec(struct inode *vp, struct timespec *ts) | 
|  | { | 
|  | *ts = vp->i_atime; | 
|  | } | 
|  |  | 
|  | static inline void vn_atime_to_time_t(struct inode *vp, time_t *tt) | 
|  | { | 
|  | *tt = vp->i_atime.tv_sec; | 
|  | } | 
|  |  | 
|  | /* | 
|  | * Some useful predicates. | 
|  | */ | 
|  | #define VN_MAPPED(vp)	mapping_mapped(vp->i_mapping) | 
|  | #define VN_CACHED(vp)	(vp->i_mapping->nrpages) | 
|  | #define VN_DIRTY(vp)	mapping_tagged(vp->i_mapping, \ | 
|  | PAGECACHE_TAG_DIRTY) | 
|  |  | 
|  |  | 
|  | #endif	/* __XFS_VNODE_H__ */ |