2008-10-30 09:06:18 +03:00
/*
* Copyright ( c ) 2000 - 2006 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
*/
2008-10-30 09:06:08 +03:00
# ifndef XFS_SYNC_H
# define XFS_SYNC_H 1
2008-10-30 09:06:18 +03:00
struct xfs_mount ;
2009-02-09 10:47:34 +03:00
struct xfs_perag ;
2008-10-30 09:06:18 +03:00
2009-04-06 20:44:54 +04:00
typedef struct xfs_sync_work {
2008-10-30 09:06:18 +03:00
struct list_head w_list ;
struct xfs_mount * w_mount ;
void * w_data ; /* syncer routine argument */
void ( * w_syncer ) ( struct xfs_mount * , void * ) ;
2009-04-06 20:47:27 +04:00
struct completion * w_completion ;
2009-04-06 20:44:54 +04:00
} xfs_sync_work_t ;
2008-10-30 09:06:18 +03:00
# define SYNC_ATTR 0x0001 /* sync attributes */
2008-10-30 09:16:11 +03:00
# define SYNC_DELWRI 0x0002 /* look at delayed writes */
# define SYNC_WAIT 0x0004 /* wait for i/o to complete */
# define SYNC_BDFLUSH 0x0008 /* BDFLUSH is calling -- don't block */
# define SYNC_IOWAIT 0x0010 /* wait for all I/O to complete */
2009-04-06 20:44:54 +04:00
# define SYNC_TRYLOCK 0x0020 /* only try to lock inodes */
2008-10-30 09:06:18 +03:00
int xfs_syncd_init ( struct xfs_mount * mp ) ;
void xfs_syncd_stop ( struct xfs_mount * mp ) ;
2008-10-30 09:15:12 +03:00
int xfs_sync_inodes ( struct xfs_mount * mp , int flags ) ;
2008-10-30 09:15:50 +03:00
int xfs_sync_fsdata ( struct xfs_mount * mp , int flags ) ;
int xfs_quiesce_data ( struct xfs_mount * mp ) ;
2008-10-30 09:16:21 +03:00
void xfs_quiesce_attr ( struct xfs_mount * mp ) ;
2008-10-30 09:06:08 +03:00
2009-04-06 20:44:54 +04:00
void xfs_flush_inodes ( struct xfs_inode * ip ) ;
2008-10-30 09:06:18 +03:00
2008-10-30 09:37:15 +03:00
int xfs_reclaim_inode ( struct xfs_inode * ip , int locked , int sync_mode ) ;
int xfs_reclaim_inodes ( struct xfs_mount * mp , int noblock , int mode ) ;
2008-10-30 09:37:03 +03:00
2008-10-30 09:37:26 +03:00
void xfs_inode_set_reclaim_tag ( struct xfs_inode * ip ) ;
void xfs_inode_clear_reclaim_tag ( struct xfs_inode * ip ) ;
void __xfs_inode_clear_reclaim_tag ( struct xfs_mount * mp , struct xfs_perag * pag ,
struct xfs_inode * ip ) ;
2008-10-30 09:06:08 +03:00
# endif