linux/fs/gfs2/trans.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0-only */
   2/*
   3 * Copyright (C) Sistina Software, Inc.  1997-2003 All rights reserved.
   4 * Copyright (C) 2004-2006 Red Hat, Inc.  All rights reserved.
   5 */
   6
   7#ifndef __TRANS_DOT_H__
   8#define __TRANS_DOT_H__
   9
  10#include <linux/buffer_head.h>
  11struct gfs2_sbd;
  12struct gfs2_rgrpd;
  13struct gfs2_glock;
  14
  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
  20#define RES_RG_HDR      1
  21#define RES_RG_BIT      2
  22#define RES_EATTR       1
  23#define RES_STATFS      1
  24#define RES_QUOTA       2
  25
  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 */
  28static inline unsigned int gfs2_rg_blocks(const struct gfs2_inode *ip, unsigned requested)
  29{
  30        struct gfs2_rgrpd *rgd = ip->i_res.rs_rbm.rgd;
  31
  32        if (requested < rgd->rd_length)
  33                return requested + 1;
  34        return rgd->rd_length;
  35}
  36
  37extern int gfs2_trans_begin(struct gfs2_sbd *sdp, unsigned int blocks,
  38                            unsigned int revokes);
  39
  40extern void gfs2_trans_end(struct gfs2_sbd *sdp);
  41extern void gfs2_trans_add_data(struct gfs2_glock *gl, struct buffer_head *bh);
  42extern void gfs2_trans_add_meta(struct gfs2_glock *gl, struct buffer_head *bh);
  43extern void gfs2_trans_add_revoke(struct gfs2_sbd *sdp, struct gfs2_bufdata *bd);
  44extern void gfs2_trans_remove_revoke(struct gfs2_sbd *sdp, u64 blkno, unsigned int len);
  45extern void gfs2_trans_free(struct gfs2_sbd *sdp, struct gfs2_trans *tr);
  46
  47#endif /* __TRANS_DOT_H__ */
  48