2005-04-17 02:20:36 +04:00
/*
2005-11-02 06:58:39 +03:00
* Copyright ( c ) 2000 , 2005 Silicon Graphics , Inc .
* All Rights Reserved .
2005-04-17 02:20:36 +04:00
*
2005-11-02 06:58:39 +03:00
* This program is free software ; you can redistribute it and / or
* modify it under the terms of the GNU General Public License as
2005-04-17 02:20:36 +04:00
* published by the Free Software Foundation .
*
2005-11-02 06:58:39 +03:00
* 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 .
2005-04-17 02:20:36 +04:00
*
2005-11-02 06:58:39 +03:00
* 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
2005-04-17 02:20:36 +04:00
*/
# ifndef __XFS_INODE_ITEM_H__
# define __XFS_INODE_ITEM_H__
2013-08-12 14:49:23 +04:00
/* kernel only definitions */
2005-04-17 02:20:36 +04:00
struct xfs_buf ;
2009-12-04 13:19:07 +03:00
struct xfs_bmbt_rec ;
2005-04-17 02:20:36 +04:00
struct xfs_inode ;
struct xfs_mount ;
typedef struct xfs_inode_log_item {
xfs_log_item_t ili_item ; /* common portion */
struct xfs_inode * ili_inode ; /* inode ptr */
xfs_lsn_t ili_flush_lsn ; /* lsn at last flush */
xfs_lsn_t ili_last_lsn ; /* lsn at last transaction */
2010-06-24 05:36:58 +04:00
unsigned short ili_lock_flags ; /* lock flags */
2005-04-17 02:20:36 +04:00
unsigned short ili_logged ; /* flushed logged data */
unsigned int ili_last_fields ; /* fields when flushed */
2012-02-29 13:53:54 +04:00
unsigned int ili_fields ; /* fields to be logged */
2009-12-04 13:19:07 +03:00
struct xfs_bmbt_rec * ili_extents_buf ; /* array of logged
2005-04-17 02:20:36 +04:00
data exts */
2009-12-04 13:19:07 +03:00
struct xfs_bmbt_rec * ili_aextents_buf ; /* array of logged
2005-04-17 02:20:36 +04:00
attr exts */
xfs_inode_log_format_t ili_format ; /* logged structure */
} xfs_inode_log_item_t ;
2008-03-06 05:43:59 +03:00
static inline int xfs_inode_clean ( xfs_inode_t * ip )
{
2012-02-29 13:53:54 +04:00
return ! ip - > i_itemp | | ! ( ip - > i_itemp - > ili_fields & XFS_ILOG_ALL ) ;
2008-03-06 05:43:59 +03:00
}
2005-11-02 06:38:42 +03:00
extern void xfs_inode_item_init ( struct xfs_inode * , struct xfs_mount * ) ;
extern void xfs_inode_item_destroy ( struct xfs_inode * ) ;
2010-06-23 12:11:15 +04:00
extern void xfs_iflush_done ( struct xfs_buf * , struct xfs_log_item * ) ;
extern void xfs_istale_done ( struct xfs_buf * , struct xfs_log_item * ) ;
2012-04-23 09:58:41 +04:00
extern void xfs_iflush_abort ( struct xfs_inode * , bool ) ;
2006-06-09 08:55:38 +04:00
extern int xfs_inode_item_format_convert ( xfs_log_iovec_t * ,
xfs_inode_log_format_t * ) ;
2005-04-17 02:20:36 +04:00
2013-08-12 14:49:23 +04:00
extern struct kmem_zone * xfs_ili_zone ;
2005-04-17 02:20:36 +04:00
# endif /* __XFS_INODE_ITEM_H__ */