Blame gfs2/libgfs2/rgrp.h

Packit 6ef888
#ifndef __RGRP_DOT_H__
Packit 6ef888
#define __RGRP_DOT_H__
Packit 6ef888
Packit 6ef888
#include "libgfs2.h"
Packit 6ef888
Packit 6ef888
struct rgplan {
Packit 6ef888
	uint32_t num;
Packit 6ef888
	uint32_t len;
Packit 6ef888
};
Packit 6ef888
Packit 6ef888
/**
Packit 6ef888
 * This structure is defined in libgfs2.h as an opaque type. It stores the
Packit 6ef888
 * constants and context required for creating resource groups from any point
Packit 6ef888
 * in an application.
Packit 6ef888
 */
Packit 6ef888
struct _lgfs2_rgrps {
Packit 6ef888
	struct osi_root root;
Packit 6ef888
	struct rgplan plan[2];
Packit 6ef888
	struct gfs2_sbd *sdp;
Packit 6ef888
	unsigned long align;
Packit 6ef888
	unsigned long align_off;
Packit 6ef888
};
Packit 6ef888
Packit 6ef888
struct lgfs2_rbm {
Packit 6ef888
	lgfs2_rgrp_t rgd;
Packit 6ef888
	uint32_t offset;    /* The offset is bitmap relative */
Packit 6ef888
	unsigned bii;       /* Bitmap index */
Packit 6ef888
};
Packit 6ef888
Packit 6ef888
static inline struct gfs2_bitmap *rbm_bi(const struct lgfs2_rbm *rbm)
Packit 6ef888
{
Packit 6ef888
	return rbm->rgd->bits + rbm->bii;
Packit 6ef888
}
Packit 6ef888
Packit 6ef888
static inline uint64_t lgfs2_rbm_to_block(const struct lgfs2_rbm *rbm)
Packit 6ef888
{
Packit 6ef888
	return rbm->rgd->ri.ri_data0 + (rbm_bi(rbm)->bi_start * GFS2_NBBY) +
Packit 6ef888
	        rbm->offset;
Packit 6ef888
}
Packit 6ef888
Packit 6ef888
static inline int lgfs2_rbm_eq(const struct lgfs2_rbm *rbm1, const struct lgfs2_rbm *rbm2)
Packit 6ef888
{
Packit 6ef888
	return (rbm1->rgd == rbm2->rgd) && (rbm1->bii == rbm2->bii) &&
Packit 6ef888
	        (rbm1->offset == rbm2->offset);
Packit 6ef888
}
Packit 6ef888
Packit 6ef888
extern int lgfs2_rbm_from_block(struct lgfs2_rbm *rbm, uint64_t block);
Packit 6ef888
extern int lgfs2_rbm_find(struct lgfs2_rbm *rbm, uint8_t state, uint32_t *minext);
Packit 6ef888
extern unsigned lgfs2_alloc_extent(const struct lgfs2_rbm *rbm, int state, const unsigned elen);
Packit 6ef888
Packit 6ef888
#endif /* __RGRP_DOT_H__ */