2019-05-31 11:09:56 +03:00
/* SPDX-License-Identifier: GPL-2.0-only */
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
*/
# 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 */
2012-07-30 17:53:19 +04:00
static inline unsigned int gfs2_rg_blocks ( const struct gfs2_inode * ip , unsigned requested )
2010-09-28 01:00:04 +04:00
{
2018-10-11 19:56:40 +03:00
struct gfs2_rgrpd * rgd = ip - > i_res . rs_rgd ;
2018-06-21 15:42:37 +03:00
if ( requested < rgd - > rd_length )
2012-07-30 17:53:19 +04:00
return requested + 1 ;
2018-06-21 15:42:37 +03:00
return rgd - > rd_length ;
2010-09-28 01:00:04 +04:00
}
2023-10-09 19:49:31 +03:00
int __gfs2_trans_begin ( struct gfs2_trans * tr , struct gfs2_sbd * sdp ,
unsigned int blocks , unsigned int revokes ,
unsigned long ip ) ;
int gfs2_trans_begin ( struct gfs2_sbd * sdp , unsigned int blocks ,
unsigned int revokes ) ;
void gfs2_trans_end ( struct gfs2_sbd * sdp ) ;
void gfs2_trans_add_data ( struct gfs2_glock * gl , struct buffer_head * bh ) ;
void gfs2_trans_add_meta ( struct gfs2_glock * gl , struct buffer_head * bh ) ;
void gfs2_trans_add_revoke ( struct gfs2_sbd * sdp , struct gfs2_bufdata * bd ) ;
void gfs2_trans_remove_revoke ( struct gfs2_sbd * sdp , u64 blkno , unsigned int len ) ;
void gfs2_trans_free ( struct gfs2_sbd * sdp , struct gfs2_trans * tr ) ;
2006-01-16 19:50:04 +03:00
# endif /* __TRANS_DOT_H__ */