]> git.ipfire.org Git - people/ms/linux.git/blame - fs/gfs2/trans.h
Merge tag 'io_uring-6.0-2022-08-13' of git://git.kernel.dk/linux-block
[people/ms/linux.git] / fs / gfs2 / trans.h
CommitLineData
7336d0e6 1/* SPDX-License-Identifier: GPL-2.0-only */
b3b94faa
DT
2/*
3 * Copyright (C) Sistina Software, Inc. 1997-2003 All rights reserved.
3a8a9a10 4 * Copyright (C) 2004-2006 Red Hat, Inc. All rights reserved.
b3b94faa
DT
5 */
6
7#ifndef __TRANS_DOT_H__
8#define __TRANS_DOT_H__
9
f2f7ba52
SW
10#include <linux/buffer_head.h>
11struct gfs2_sbd;
12struct gfs2_rgrpd;
13struct gfs2_glock;
14
b3b94faa
DT
15#define RES_DINODE 1
16#define RES_INDIRECT 1
17#define RES_JDATA 1
18#define RES_DATA 1
19#define RES_LEAF 1
3921120e 20#define RES_RG_HDR 1
b3b94faa
DT
21#define RES_RG_BIT 2
22#define RES_EATTR 1
b3b94faa
DT
23#define RES_STATFS 1
24#define RES_QUOTA 2
25
bf97b673
BM
26/* reserve either the number of blocks to be allocated plus the rg header
27 * block, or all of the blocks in the rg, whichever is smaller */
71f890f7 28static inline unsigned int gfs2_rg_blocks(const struct gfs2_inode *ip, unsigned requested)
bf97b673 29{
c65b76b8 30 struct gfs2_rgrpd *rgd = ip->i_res.rs_rgd;
b7eba890
AG
31
32 if (requested < rgd->rd_length)
71f890f7 33 return requested + 1;
b7eba890 34 return rgd->rd_length;
bf97b673
BM
35}
36
c968f578
AG
37extern int __gfs2_trans_begin(struct gfs2_trans *tr, struct gfs2_sbd *sdp,
38 unsigned int blocks, unsigned int revokes,
39 unsigned long ip);
7c9ca621
BP
40extern int gfs2_trans_begin(struct gfs2_sbd *sdp, unsigned int blocks,
41 unsigned int revokes);
b3b94faa 42
7c9ca621 43extern void gfs2_trans_end(struct gfs2_sbd *sdp);
350a9b0a
SW
44extern void gfs2_trans_add_data(struct gfs2_glock *gl, struct buffer_head *bh);
45extern void gfs2_trans_add_meta(struct gfs2_glock *gl, struct buffer_head *bh);
7c9ca621 46extern void gfs2_trans_add_revoke(struct gfs2_sbd *sdp, struct gfs2_bufdata *bd);
fbb27873 47extern void gfs2_trans_remove_revoke(struct gfs2_sbd *sdp, u64 blkno, unsigned int len);
b839dada 48extern void gfs2_trans_free(struct gfs2_sbd *sdp, struct gfs2_trans *tr);
b3b94faa
DT
49
50#endif /* __TRANS_DOT_H__ */