1/* 2 * Copyright (c) 2000-2006 Silicon Graphics, Inc. 3 * All Rights Reserved. 4 * 5 * This program is free software; you can redistribute it and/or 6 * modify it under the terms of the GNU General Public License as 7 * published by the Free Software Foundation. 8 * 9 * This program is distributed in the hope that it would be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * GNU General Public License for more details. 13 * 14 * You should have received a copy of the GNU General Public License 15 * along with this program; if not, write the Free Software Foundation, 16 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 17 */ 18#ifndef __XFS_VFS_H__ 19#define __XFS_VFS_H__ 20 21#include <linux/vfs.h> 22#include "xfs_fs.h" 23 24struct inode; 25 26struct fid; 27struct cred; 28struct seq_file; 29struct super_block; 30struct xfs_inode; 31struct xfs_mount; 32struct xfs_mount_args; 33 34typedef struct kstatfs bhv_statvfs_t; 35 36typedef struct bhv_vfs_sync_work { 37 struct list_head w_list; 38 struct xfs_mount *w_mount; 39 void *w_data; /* syncer routine argument */ 40 void (*w_syncer)(struct xfs_mount *, void *); 41} bhv_vfs_sync_work_t; 42 43#define SYNC_ATTR 0x0001 /* sync attributes */ 44#define SYNC_CLOSE 0x0002 /* close file system down */ 45#define SYNC_DELWRI 0x0004 /* look at delayed writes */ 46#define SYNC_WAIT 0x0008 /* wait for i/o to complete */ 47#define SYNC_BDFLUSH 0x0010 /* BDFLUSH is calling -- don't block */ 48#define SYNC_FSDATA 0x0020 /* flush fs data (e.g. superblocks) */ 49#define SYNC_REFCACHE 0x0040 /* prune some of the nfs ref cache */ 50#define SYNC_REMOUNT 0x0080 /* remount readonly, no dummy LRs */ 51#define SYNC_IOWAIT 0x0100 /* wait for all I/O to complete */ 52 53/* 54 * When remounting a filesystem read-only or freezing the filesystem, 55 * we have two phases to execute. This first phase is syncing the data 56 * before we quiesce the fielsystem, and the second is flushing all the 57 * inodes out after we've waited for all the transactions created by 58 * the first phase to complete. The second phase uses SYNC_INODE_QUIESCE 59 * to ensure that the inodes are written to their location on disk 60 * rather than just existing in transactions in the log. This means 61 * after a quiesce there is no log replay required to write the inodes 62 * to disk (this is the main difference between a sync and a quiesce). 63 */ 64#define SYNC_DATA_QUIESCE (SYNC_DELWRI|SYNC_FSDATA|SYNC_WAIT|SYNC_IOWAIT) 65#define SYNC_INODE_QUIESCE (SYNC_REMOUNT|SYNC_ATTR|SYNC_WAIT) 66 67#define SHUTDOWN_META_IO_ERROR 0x0001 /* write attempt to metadata failed */ 68#define SHUTDOWN_LOG_IO_ERROR 0x0002 /* write attempt to the log failed */ 69#define SHUTDOWN_FORCE_UMOUNT 0x0004 /* shutdown from a forced unmount */ 70#define SHUTDOWN_CORRUPT_INCORE 0x0008 /* corrupt in-memory data structures */ 71#define SHUTDOWN_REMOTE_REQ 0x0010 /* shutdown came from remote cell */ 72#define SHUTDOWN_DEVICE_REQ 0x0020 /* failed all paths to the device */ 73 74#define xfs_test_for_freeze(mp) ((mp)->m_super->s_frozen) 75#define xfs_wait_for_freeze(mp,l) vfs_check_frozen((mp)->m_super, (l)) 76 77#endif /* __XFS_VFS_H__ */ 78

