| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | /* | 
| Nathan Scott | b83bd13 | 2006-06-09 16:48:30 +1000 | [diff] [blame] | 2 | * Copyright (c) 2000-2006 Silicon Graphics, Inc. | 
| Nathan Scott | 7b71876 | 2005-11-02 14:58:39 +1100 | [diff] [blame] | 3 | * All Rights Reserved. | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 4 | * | 
| Nathan Scott | 7b71876 | 2005-11-02 14:58:39 +1100 | [diff] [blame] | 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 | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 7 | * published by the Free Software Foundation. | 
|  | 8 | * | 
| Nathan Scott | 7b71876 | 2005-11-02 14:58:39 +1100 | [diff] [blame] | 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. | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 13 | * | 
| Nathan Scott | 7b71876 | 2005-11-02 14:58:39 +1100 | [diff] [blame] | 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 | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 17 | */ | 
|  | 18 | #ifndef __XFS_VFS_H__ | 
|  | 19 | #define __XFS_VFS_H__ | 
|  | 20 |  | 
|  | 21 | #include <linux/vfs.h> | 
|  | 22 | #include "xfs_fs.h" | 
|  | 23 |  | 
| Christoph Hellwig | 0a74cd1 | 2007-08-29 11:53:12 +1000 | [diff] [blame] | 24 | struct inode; | 
| Nathan Scott | 8285fb5 | 2006-06-09 17:07:12 +1000 | [diff] [blame] | 25 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 26 | struct fid; | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 27 | struct cred; | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 28 | struct seq_file; | 
|  | 29 | struct super_block; | 
| Christoph Hellwig | 739bfb2 | 2007-08-29 10:58:01 +1000 | [diff] [blame] | 30 | struct xfs_inode; | 
| Christoph Hellwig | 745f691 | 2007-08-30 17:20:39 +1000 | [diff] [blame] | 31 | struct xfs_mount; | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 32 | struct xfs_mount_args; | 
|  | 33 |  | 
| Nathan Scott | 8285fb5 | 2006-06-09 17:07:12 +1000 | [diff] [blame] | 34 | typedef struct kstatfs	bhv_statvfs_t; | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 35 |  | 
| Nathan Scott | b83bd13 | 2006-06-09 16:48:30 +1000 | [diff] [blame] | 36 | typedef struct bhv_vfs_sync_work { | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 37 | struct list_head	w_list; | 
| Christoph Hellwig | 7439449 | 2007-08-30 17:21:22 +1000 | [diff] [blame] | 38 | struct xfs_mount	*w_mount; | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 39 | void			*w_data;	/* syncer routine argument */ | 
| Christoph Hellwig | 7439449 | 2007-08-30 17:21:22 +1000 | [diff] [blame] | 40 | void			(*w_syncer)(struct xfs_mount *, void *); | 
| Nathan Scott | b83bd13 | 2006-06-09 16:48:30 +1000 | [diff] [blame] | 41 | } bhv_vfs_sync_work_t; | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 42 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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 */ | 
| David Chinner | 3c0dc77 | 2007-02-10 18:37:22 +1100 | [diff] [blame] | 51 | #define SYNC_IOWAIT		0x0100  /* wait for all I/O to complete */ | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 52 |  | 
| David Chinner | 516b2e7 | 2007-06-18 16:50:48 +1000 | [diff] [blame] | 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 |  | 
| Nathan Scott | 7d04a33 | 2006-06-09 14:58:38 +1000 | [diff] [blame] | 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 |  | 
| Christoph Hellwig | b267ce9 | 2007-08-30 17:21:30 +1000 | [diff] [blame] | 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)) | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 76 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 77 | #endif	/* __XFS_VFS_H__ */ |