2006-01-16 19:50:04 +03:00
/*
* Copyright ( C ) Sistina Software , Inc . 1997 - 2003 All rights reserved .
2006-05-18 23:09:15 +04:00
* Copyright ( C ) 2004 - 2006 Red Hat , Inc . All rights reserved .
2006-01-16 19:50:04 +03:00
*
* This copyrighted material is made available to anyone wishing to use ,
* modify , copy , or redistribute it subject to the terms and conditions
2006-09-01 19:05:15 +04:00
* of the GNU General Public License version 2.
2006-01-16 19:50:04 +03:00
*/
# ifndef __TRANS_DOT_H__
# define __TRANS_DOT_H__
2006-09-05 18:39:21 +04:00
# include <linux/buffer_head.h>
struct gfs2_sbd ;
struct gfs2_rgrpd ;
struct gfs2_glock ;
2006-01-16 19:50:04 +03:00
# define RES_DINODE 1
# define RES_INDIRECT 1
# define RES_JDATA 1
# define RES_DATA 1
# define RES_LEAF 1
2010-08-20 09:21:02 +04:00
# define RES_RG_HDR 1
2006-01-16 19:50:04 +03:00
# define RES_RG_BIT 2
# define RES_EATTR 1
# define RES_STATFS 1
# define RES_QUOTA 2
2010-09-28 01:00:04 +04:00
/* reserve either the number of blocks to be allocated plus the rg header
* block , or all of the blocks in the rg , whichever is smaller */
static inline unsigned int gfs2_rg_blocks ( const struct gfs2_alloc * al )
{
return ( al - > al_requested < al - > al_rgd - > rd_length ) ?
al - > al_requested + 1 : al - > al_rgd - > rd_length ;
}
2006-09-05 18:39:21 +04:00
int gfs2_trans_begin ( struct gfs2_sbd * sdp , unsigned int blocks ,
unsigned int revokes ) ;
2006-01-16 19:50:04 +03:00
void gfs2_trans_end ( struct gfs2_sbd * sdp ) ;
2006-01-18 14:19:28 +03:00
void gfs2_trans_add_bh ( struct gfs2_glock * gl , struct buffer_head * bh , int meta ) ;
2007-09-03 14:01:33 +04:00
void gfs2_trans_add_revoke ( struct gfs2_sbd * sdp , struct gfs2_bufdata * bd ) ;
2008-02-01 16:16:55 +03:00
void gfs2_trans_add_unrevoke ( struct gfs2_sbd * sdp , u64 blkno , unsigned int len ) ;
2006-01-16 19:50:04 +03:00
void gfs2_trans_add_rg ( struct gfs2_rgrpd * rgd ) ;
# endif /* __TRANS_DOT_H__ */