struct xfs_btree_block *block;
xfs_fsblock_t bno;
xfs_fileoff_t curoffset;
- xfs_dinode_t *dip;
+ struct xfs_dinode *dip;
xfs_fileoff_t eoffset;
xfs_bmbt_rec_t *ep;
enum xfs_dinode_fmt fmt;
static int
bmap_f(
- int argc,
- char **argv)
+ int argc,
+ char **argv)
{
- int afork = 0;
- bmap_ext_t be;
- int c;
- xfs_fileoff_t co, cosave;
- int dfork = 0;
- xfs_dinode_t *dip;
- xfs_fileoff_t eo;
- xfs_filblks_t len;
- int nex;
- char *p;
- int whichfork;
+ int afork = 0;
+ bmap_ext_t be;
+ int c;
+ xfs_fileoff_t co, cosave;
+ int dfork = 0;
+ struct xfs_dinode *dip;
+ xfs_fileoff_t eo;
+ xfs_filblks_t len;
+ int nex;
+ char *p;
+ int whichfork;
if (iocur_top->ino == NULLFSINO) {
dbprintf(_("no current inode\n"));
{
xfs_bmdr_block_t *block;
#ifdef DEBUG
- xfs_dinode_t *dip = obj;
+ struct xfs_dinode *dip = obj;
#endif
ASSERT(bitoffs(startoff) == 0);
{
xfs_bmdr_block_t *block;
#ifdef DEBUG
- xfs_dinode_t *dip = obj;
+ struct xfs_dinode *dip = obj;
#endif
xfs_bmdr_key_t *kp;
{
xfs_bmdr_block_t *block;
#ifdef DEBUG
- xfs_dinode_t *dip = obj;
+ struct xfs_dinode *dip = obj;
#endif
ASSERT(bitoffs(startoff) == 0);
int idx)
{
xfs_bmdr_block_t *block;
- xfs_dinode_t *dip;
+ struct xfs_dinode *dip;
xfs_bmdr_ptr_t *pp;
ASSERT(bitoffs(startoff) == 0);
int startoff,
int idx)
{
- xfs_dinode_t *dip;
+ struct xfs_dinode *dip;
#ifdef DEBUG
xfs_bmdr_block_t *block;
#endif
{
xfs_bmdr_block_t *block;
#ifdef DEBUG
- xfs_dinode_t *dip = obj;
+ struct xfs_dinode *dip = obj;
#endif
ASSERT(bitoffs(startoff) == 0);
{
xfs_bmdr_block_t *block;
#ifdef DEBUG
- xfs_dinode_t *dip = obj;
+ struct xfs_dinode *dip = obj;
#endif
ASSERT(bitoffs(startoff) == 0);
{
xfs_bmdr_block_t *block;
xfs_bmdr_ptr_t *pp;
- xfs_dinode_t *dip;
+ struct xfs_dinode *dip;
ASSERT(bitoffs(startoff) == 0);
ASSERT(obj == iocur_top->data);
int startoff,
int idx)
{
- xfs_dinode_t *dip;
+ struct xfs_dinode *dip;
ASSERT(bitoffs(startoff) == 0);
ASSERT(obj == iocur_top->data);
dbm_t type, inodata_t *id,
xfs_rfsblock_t *tot,
blkmap_t **blkmapp);
-static void process_btinode(inodata_t *id, xfs_dinode_t *dip,
+static void process_btinode(inodata_t *id, struct xfs_dinode *dip,
dbm_t type, xfs_rfsblock_t *totd,
xfs_rfsblock_t *toti, xfs_extnum_t *nex,
blkmap_t **blkmapp, int whichfork);
static xfs_dir2_data_free_t *process_data_dir_v2_freefind(
struct xfs_dir2_data_hdr *data,
struct xfs_dir2_data_unused *dup);
-static void process_dir(xfs_dinode_t *dip, blkmap_t *blkmap,
+static void process_dir(struct xfs_dinode *dip, blkmap_t *blkmap,
inodata_t *id);
-static int process_dir_v2(xfs_dinode_t *dip, blkmap_t *blkmap,
+static int process_dir_v2(struct xfs_dinode *dip, blkmap_t *blkmap,
int *dot, int *dotdot, inodata_t *id,
xfs_ino_t *parent);
-static void process_exinode(inodata_t *id, xfs_dinode_t *dip,
+static void process_exinode(inodata_t *id, struct xfs_dinode *dip,
dbm_t type, xfs_rfsblock_t *totd,
xfs_rfsblock_t *toti, xfs_extnum_t *nex,
blkmap_t **blkmapp, int whichfork);
static void process_inode(xfs_agf_t *agf, xfs_agino_t agino,
- xfs_dinode_t *dip, int isfree);
-static void process_lclinode(inodata_t *id, xfs_dinode_t *dip,
+ struct xfs_dinode *dip, int isfree);
+static void process_lclinode(inodata_t *id, struct xfs_dinode *dip,
dbm_t type, xfs_rfsblock_t *totd,
xfs_rfsblock_t *toti, xfs_extnum_t *nex,
blkmap_t **blkmapp, int whichfork);
blkmap_t *blkmap);
static void process_rtbitmap(blkmap_t *blkmap);
static void process_rtsummary(blkmap_t *blkmap);
-static xfs_ino_t process_sf_dir_v2(xfs_dinode_t *dip, int *dot,
+static xfs_ino_t process_sf_dir_v2(struct xfs_dinode *dip, int *dot,
int *dotdot, inodata_t *id);
static void quota_add(xfs_dqid_t *p, xfs_dqid_t *g, xfs_dqid_t *u,
int dq, xfs_qcnt_t bc, xfs_qcnt_t ic,
static void
process_btinode(
inodata_t *id,
- xfs_dinode_t *dip,
+ struct xfs_dinode *dip,
dbm_t type,
xfs_rfsblock_t *totd,
xfs_rfsblock_t *toti,
static void
process_dir(
- xfs_dinode_t *dip,
- blkmap_t *blkmap,
- inodata_t *id)
+ struct xfs_dinode *dip,
+ blkmap_t *blkmap,
+ inodata_t *id)
{
- xfs_fsblock_t bno;
- int dot;
- int dotdot;
- xfs_ino_t parent;
+ xfs_fsblock_t bno;
+ int dot;
+ int dotdot;
+ xfs_ino_t parent;
dot = dotdot = 0;
if (process_dir_v2(dip, blkmap, &dot, &dotdot, id, &parent))
static int
process_dir_v2(
- xfs_dinode_t *dip,
- blkmap_t *blkmap,
- int *dot,
- int *dotdot,
- inodata_t *id,
- xfs_ino_t *parent)
+ struct xfs_dinode *dip,
+ blkmap_t *blkmap,
+ int *dot,
+ int *dotdot,
+ inodata_t *id,
+ xfs_ino_t *parent)
{
- xfs_fileoff_t last = 0;
- xfs_fsize_t size = be64_to_cpu(dip->di_size);
+ xfs_fileoff_t last = 0;
+ xfs_fsize_t size = be64_to_cpu(dip->di_size);
if (blkmap)
last = blkmap_last_off(blkmap);
static void
process_exinode(
inodata_t *id,
- xfs_dinode_t *dip,
+ struct xfs_dinode *dip,
dbm_t type,
xfs_rfsblock_t *totd,
xfs_rfsblock_t *toti,
process_inode(
xfs_agf_t *agf,
xfs_agino_t agino,
- xfs_dinode_t *dip,
+ struct xfs_dinode *dip,
int isfree)
{
blkmap_t *blkmap;
static void
process_lclinode(
inodata_t *id,
- xfs_dinode_t *dip,
+ struct xfs_dinode *dip,
dbm_t type,
xfs_rfsblock_t *totd,
xfs_rfsblock_t *toti,
static xfs_ino_t
process_sf_dir_v2(
- xfs_dinode_t *dip,
+ struct xfs_dinode *dip,
int *dot,
int *dotdot,
inodata_t *id)
isfree = XFS_INOBT_IS_FREE_DISK(&rp[i], ioff + j);
if (isfree)
nfree++;
- dip = (xfs_dinode_t *)((char *)iocur_top->data +
+ dip = (struct xfs_dinode *)((char *)iocur_top->data +
((off + j) << mp->m_sb.sb_inodelog));
process_inode(agf, agino + ioff + j, dip, isfree);
}
{ FLDT_DINODE_A, "dinode_a", NULL, (char *)inode_a_flds, inode_a_size,
FTARG_SIZE|FTARG_OKEMPTY, NULL, inode_a_flds },
{ FLDT_DINODE_CORE, "dinode_core", NULL, (char *)inode_core_flds,
- SI(bitsz(xfs_dinode_t)), 0, NULL, inode_core_flds },
+ SI(bitsz(struct xfs_dinode)), 0, NULL, inode_core_flds },
{ FLDT_DINODE_FMT, "dinode_fmt", fp_dinode_fmt, NULL,
SI(bitsz(int8_t)), 0, NULL, NULL },
{ FLDT_DINODE_U, "dinode_u", NULL, (char *)inode_u_flds, inode_u_size,
FTARG_SIZE|FTARG_OKEMPTY, NULL, inode_u_flds },
{ FLDT_DINODE_V3, "dinode_v3", NULL, (char *)inode_v3_flds,
- SI(bitsz(xfs_dinode_t)), 0, NULL, inode_v3_flds },
+ SI(bitsz(struct xfs_dinode)), 0, NULL, inode_v3_flds },
/* dir v2 fields */
{ FLDT_DIR2, "dir2", NULL, (char *)dir2_flds, dir2_size, FTARG_SIZE,
static int init(int argc, char **argv);
static void process_bmbt_reclist(xfs_bmbt_rec_t *rp, int numrecs,
extmap_t **extmapp);
-static void process_btinode(xfs_dinode_t *dip, extmap_t **extmapp,
- int whichfork);
-static void process_exinode(xfs_dinode_t *dip, extmap_t **extmapp,
- int whichfork);
-static void process_fork(xfs_dinode_t *dip, int whichfork);
+static void process_btinode(struct xfs_dinode *dip,
+ extmap_t **extmapp, int whichfork);
+static void process_exinode(struct xfs_dinode *dip,
+ extmap_t **extmapp, int whichfork);
+static void process_fork(struct xfs_dinode *dip, int whichfork);
static void process_inode(xfs_agf_t *agf, xfs_agino_t agino,
- xfs_dinode_t *dip);
+ struct xfs_dinode *dip);
static void scan_ag(xfs_agnumber_t agno);
static void scan_lbtree(xfs_fsblock_t root, int nlevels,
scan_lbtree_f_t func, extmap_t **extmapp,
static void
process_btinode(
- xfs_dinode_t *dip,
+ struct xfs_dinode *dip,
extmap_t **extmapp,
int whichfork)
{
static void
process_exinode(
- xfs_dinode_t *dip,
+ struct xfs_dinode *dip,
extmap_t **extmapp,
int whichfork)
{
static void
process_fork(
- xfs_dinode_t *dip,
- int whichfork)
+ struct xfs_dinode *dip,
+ int whichfork)
{
- extmap_t *extmap;
- int nex;
+ extmap_t *extmap;
+ int nex;
nex = XFS_DFORK_NEXTENTS(dip, whichfork);
if (!nex)
process_inode(
xfs_agf_t *agf,
xfs_agino_t agino,
- xfs_dinode_t *dip)
+ struct xfs_dinode *dip)
{
uint64_t actual;
uint64_t ideal;
for (j = 0; j < inodes_per_buf; j++) {
if (XFS_INOBT_IS_FREE_DISK(&rp[i], ioff + j))
continue;
- dip = (xfs_dinode_t *)((char *)iocur_top->data +
+ dip = (struct xfs_dinode *)((char *)iocur_top->data +
((off + j) << mp->m_sb.sb_inodelog));
process_inode(agf, agino + ioff + j, dip);
}
};
/* XXX: fix this up! */
-#define OFF(f) bitize(offsetof(xfs_dinode_t, di_ ## f))
+#define OFF(f) bitize(offsetof(struct xfs_dinode, di_ ## f))
const field_t inode_flds[] = {
{ "core", FLDT_DINODE_CORE, OI(OFF(magic)), C1, 0, TYP_NONE },
{ "next_unlinked", FLDT_AGINO, OI(OFF(next_unlinked)), C1, 0,
};
-#define COFF(f) bitize(offsetof(xfs_dinode_t, di_ ## f))
+#define COFF(f) bitize(offsetof(struct xfs_dinode, di_ ## f))
const field_t inode_core_flds[] = {
{ "magic", FLDT_UINT16X, OI(COFF(magic)), C1, 0, TYP_NONE },
{ "mode", FLDT_UINT16O, OI(COFF(mode)), C1, 0, TYP_NONE },
static int
inode_a_bmbt_count(
- void *obj,
- int startoff)
+ void *obj,
+ int startoff)
{
- xfs_dinode_t *dip;
+ struct xfs_dinode *dip;
ASSERT(bitoffs(startoff) == 0);
ASSERT(obj == iocur_top->data);
static int
inode_a_bmx_count(
- void *obj,
- int startoff)
+ void *obj,
+ int startoff)
{
- xfs_dinode_t *dip;
+ struct xfs_dinode *dip;
ASSERT(bitoffs(startoff) == 0);
ASSERT(obj == iocur_top->data);
static int
inode_a_count(
- void *obj,
- int startoff)
+ void *obj,
+ int startoff)
{
- xfs_dinode_t *dip;
+ struct xfs_dinode *dip;
ASSERT(startoff == 0);
dip = obj;
static int
inode_a_offset(
- void *obj,
- int startoff,
- int idx)
+ void *obj,
+ int startoff,
+ int idx)
{
- xfs_dinode_t *dip;
+ struct xfs_dinode *dip;
ASSERT(startoff == 0);
ASSERT(idx == 0);
static int
inode_a_sfattr_count(
- void *obj,
- int startoff)
+ void *obj,
+ int startoff)
{
- xfs_dinode_t *dip;
+ struct xfs_dinode *dip;
ASSERT(bitoffs(startoff) == 0);
ASSERT(obj == iocur_top->data);
int idx)
{
struct xfs_attr_shortform *asf;
- xfs_dinode_t *dip;
+ struct xfs_dinode *dip;
ASSERT(startoff == 0);
ASSERT(idx == 0);
static int
inode_core_nlinkv1_count(
- void *obj,
- int startoff)
+ void *obj,
+ int startoff)
{
- xfs_dinode_t *dic;
+ struct xfs_dinode *dic;
ASSERT(startoff == 0);
ASSERT(obj == iocur_top->data);
static int
inode_core_nlinkv2_count(
- void *obj,
- int startoff)
+ void *obj,
+ int startoff)
{
- xfs_dinode_t *dic;
+ struct xfs_dinode *dic;
ASSERT(startoff == 0);
ASSERT(obj == iocur_top->data);
static int
inode_core_onlink_count(
- void *obj,
- int startoff)
+ void *obj,
+ int startoff)
{
- xfs_dinode_t *dic;
+ struct xfs_dinode *dic;
ASSERT(startoff == 0);
ASSERT(obj == iocur_top->data);
static int
inode_core_projid_count(
- void *obj,
- int startoff)
+ void *obj,
+ int startoff)
{
- xfs_dinode_t *dic;
+ struct xfs_dinode *dic;
ASSERT(startoff == 0);
ASSERT(obj == iocur_top->data);
static int
inode_u_offset(
- void *obj,
- int startoff,
- int idx)
+ void *obj,
+ int startoff,
+ int idx)
{
- xfs_dinode_t *dip;
+ struct xfs_dinode *dip;
ASSERT(startoff == 0);
ASSERT(idx == 0);
static int
inode_u_bmbt_count(
- void *obj,
- int startoff)
+ void *obj,
+ int startoff)
{
- xfs_dinode_t *dip;
+ struct xfs_dinode *dip;
ASSERT(bitoffs(startoff) == 0);
ASSERT(obj == iocur_top->data);
static int
inode_u_bmx_count(
- void *obj,
- int startoff)
+ void *obj,
+ int startoff)
{
- xfs_dinode_t *dip;
+ struct xfs_dinode *dip;
ASSERT(bitoffs(startoff) == 0);
ASSERT(obj == iocur_top->data);
static int
inode_u_c_count(
- void *obj,
- int startoff)
+ void *obj,
+ int startoff)
{
- xfs_dinode_t *dip;
+ struct xfs_dinode *dip;
ASSERT(bitoffs(startoff) == 0);
ASSERT(obj == iocur_top->data);
static int
inode_u_dev_count(
- void *obj,
- int startoff)
+ void *obj,
+ int startoff)
{
- xfs_dinode_t *dip;
+ struct xfs_dinode *dip;
ASSERT(bitoffs(startoff) == 0);
ASSERT(obj == iocur_top->data);
static int
inode_u_muuid_count(
- void *obj,
- int startoff)
+ void *obj,
+ int startoff)
{
- xfs_dinode_t *dip;
+ struct xfs_dinode *dip;
ASSERT(bitoffs(startoff) == 0);
ASSERT(obj == iocur_top->data);
static int
inode_u_sfdir2_count(
- void *obj,
- int startoff)
+ void *obj,
+ int startoff)
{
- xfs_dinode_t *dip;
+ struct xfs_dinode *dip;
ASSERT(bitoffs(startoff) == 0);
ASSERT(obj == iocur_top->data);
static int
inode_u_sfdir3_count(
- void *obj,
- int startoff)
+ void *obj,
+ int startoff)
{
- xfs_dinode_t *dip;
+ struct xfs_dinode *dip;
ASSERT(bitoffs(startoff) == 0);
ASSERT(obj == iocur_top->data);
int
inode_u_size(
- void *obj,
- int startoff,
- int idx)
+ void *obj,
+ int startoff,
+ int idx)
{
- xfs_dinode_t *dip;
+ struct xfs_dinode *dip;
ASSERT(startoff == 0);
ASSERT(idx == 0);
static int
inode_u_symlink_count(
- void *obj,
- int startoff)
+ void *obj,
+ int startoff)
{
- xfs_dinode_t *dip;
+ struct xfs_dinode *dip;
ASSERT(bitoffs(startoff) == 0);
ASSERT(obj == iocur_top->data);
*/
void
set_cur_inode(
- xfs_ino_t ino)
+ xfs_ino_t ino)
{
- xfs_agblock_t agbno;
- xfs_agino_t agino;
- xfs_agnumber_t agno;
- xfs_dinode_t *dip;
- int offset;
- int numblks = blkbb;
- xfs_agblock_t cluster_agbno;
- struct xfs_ino_geometry *igeo = M_IGEO(mp);
+ xfs_agblock_t agbno;
+ xfs_agino_t agino;
+ xfs_agnumber_t agno;
+ struct xfs_dinode *dip;
+ int offset;
+ int numblks = blkbb;
+ xfs_agblock_t cluster_agbno;
+ struct xfs_ino_geometry *igeo = M_IGEO(mp);
agno = XFS_INO_TO_AGNO(mp, ino);
static void
process_sf_dir(
- xfs_dinode_t *dip)
+ struct xfs_dinode *dip)
{
struct xfs_dir2_sf_hdr *sfp;
xfs_dir2_sf_entry_t *sfep;
static void
process_sf_symlink(
- xfs_dinode_t *dip)
+ struct xfs_dinode *dip)
{
uint64_t len;
char *buf;
static void
process_sf_attr(
- xfs_dinode_t *dip)
+ struct xfs_dinode *dip)
{
/*
* with extended attributes, obfuscate the names and fill the actual
static int
process_btinode(
- xfs_dinode_t *dip,
+ struct xfs_dinode *dip,
typnm_t itype)
{
xfs_bmdr_block_t *dib;
static int
process_exinode(
- xfs_dinode_t *dip,
+ struct xfs_dinode *dip,
typnm_t itype)
{
int whichfork;
static int
process_inode_data(
- xfs_dinode_t *dip,
+ struct xfs_dinode *dip,
typnm_t itype)
{
switch (dip->di_format) {
static int
process_dev_inode(
- xfs_dinode_t *dip)
+ struct xfs_dinode *dip)
{
if (XFS_DFORK_NEXTENTS(dip, XFS_DATA_FORK)) {
if (show_warnings)
process_inode(
xfs_agnumber_t agno,
xfs_agino_t agino,
- xfs_dinode_t *dip,
+ struct xfs_dinode *dip,
bool free_inode)
{
int success;
}
for (i = 0; i < inodes_per_buf; i++) {
- xfs_dinode_t *dip;
+ struct xfs_dinode *dip;
- dip = (xfs_dinode_t *)((char *)iocur_top->data +
+ dip = (struct xfs_dinode *)((char *)iocur_top->data +
((off + i) << mp->m_sb.sb_inodelog));
/* process_inode handles free inodes, too */
nfiles++;
break;
case S_IFLNK: /* symbolic links */
- if (stb->st_size >= (INODESIZE - (sizeof(xfs_dinode_t)+4)))
+ if (stb->st_size >= (INODESIZE - (sizeof(struct xfs_dinode)+4)))
fullblocks+=FBLOCKS(stb->st_size + blocksize-1);
nslinks++;
break;
struct xfs_buf *bp)
{
struct xfs_inode_log_item *iip;
- xfs_dinode_t *dip;
+ struct xfs_dinode *dip;
xfs_mount_t *mp;
ASSERT(ip->i_df.if_format != XFS_DINODE_FMT_BTREE ||
* padding field for v3 inodes.
*/
#define XFS_DINODE_MAGIC 0x494e /* 'IN' */
-typedef struct xfs_dinode {
+struct xfs_dinode {
__be16 di_magic; /* inode magic # = XFS_DINODE_MAGIC */
__be16 di_mode; /* mode and type of file */
__u8 di_version; /* inode version */
uuid_t di_uuid; /* UUID of the filesystem */
/* structure must be padded to 64 bit alignment */
-} xfs_dinode_t;
+};
#define XFS_DINODE_CRC_OFF offsetof(struct xfs_dinode, di_crc)
agno = xfs_daddr_to_agno(mp, xfs_buf_daddr(bp));
ni = XFS_BB_TO_FSB(mp, bp->b_length) * mp->m_sb.sb_inopblock;
for (i = 0; i < ni; i++) {
- int di_ok;
- xfs_dinode_t *dip;
- xfs_agino_t unlinked_ino;
+ struct xfs_dinode *dip;
+ xfs_agino_t unlinked_ino;
+ int di_ok;
dip = xfs_buf_offset(bp, (i << mp->m_sb.sb_inodelog));
unlinked_ino = be32_to_cpu(dip->di_next_unlinked);
*/
STATIC int
xfs_iformat_local(
- xfs_inode_t *ip,
- xfs_dinode_t *dip,
- int whichfork,
- int size)
+ struct xfs_inode *ip,
+ struct xfs_dinode *dip,
+ int whichfork,
+ int size)
{
/*
* If the size is unreasonable, then something
*/
STATIC int
xfs_iformat_btree(
- xfs_inode_t *ip,
- xfs_dinode_t *dip,
+ struct xfs_inode *ip,
+ struct xfs_dinode *dip,
int whichfork)
{
struct xfs_mount *mp = ip->i_mount;
*/
void
xfs_iflush_fork(
- xfs_inode_t *ip,
- xfs_dinode_t *dip,
+ struct xfs_inode *ip,
+ struct xfs_dinode *dip,
struct xfs_inode_log_item *iip,
int whichfork)
{
process_shortform_attr(
struct xfs_mount *mp,
xfs_ino_t ino,
- xfs_dinode_t *dip,
+ struct xfs_dinode *dip,
int *repair)
{
struct xfs_attr_shortform *asf;
*/
static int
process_node_attr(
- xfs_mount_t *mp,
- xfs_ino_t ino,
- xfs_dinode_t *dip,
- blkmap_t *blkmap)
+ xfs_mount_t *mp,
+ xfs_ino_t ino,
+ struct xfs_dinode *dip,
+ blkmap_t *blkmap)
{
- xfs_dablk_t bno;
- int error = 0;
- da_bt_cursor_t da_cursor;
+ xfs_dablk_t bno;
+ int error = 0;
+ da_bt_cursor_t da_cursor;
/*
* try again -- traverse down left-side of tree until we hit
*/
int
process_attributes(
- xfs_mount_t *mp,
- xfs_ino_t ino,
- xfs_dinode_t *dip,
- blkmap_t *blkmap,
- int *repair) /* returned if we did repair */
+ xfs_mount_t *mp,
+ xfs_ino_t ino,
+ struct xfs_dinode *dip,
+ blkmap_t *blkmap,
+ int *repair) /* returned if we did repair */
{
- int err;
- __u8 aformat = dip->di_aformat;
+ int err;
+ __u8 aformat = dip->di_aformat;
#ifdef DEBUG
struct xfs_attr_shortform *asf;
* External functions
*/
struct blkmap;
-extern int process_attributes (xfs_mount_t *, xfs_ino_t, xfs_dinode_t *,
+extern int process_attributes (xfs_mount_t *, xfs_ino_t, struct xfs_dinode *,
struct blkmap *, int *);
#endif /* _XR_ATTRREPAIR_H */
int active; /* highest level in tree (# levels-1) */
xfs_ino_t ino;
xfs_dablk_t greatest_bno;
- xfs_dinode_t *dip;
+ struct xfs_dinode *dip;
struct da_level_state level[XFS_DA_NODE_MAXDEPTH];
struct blkmap *blkmap;
} da_bt_cursor_t;
* means only the basic inode info is checked, no fork checks.
*/
static int
-check_aginode_block(xfs_mount_t *mp,
- xfs_agnumber_t agno,
- xfs_agblock_t agbno)
+check_aginode_block(
+ xfs_mount_t *mp,
+ xfs_agnumber_t agno,
+ xfs_agblock_t agbno)
{
-
- xfs_dinode_t *dino_p;
- int i;
- int cnt = 0;
- struct xfs_buf *bp;
- int error;
+ struct xfs_dinode *dino_p;
+ int i;
+ int cnt = 0;
+ struct xfs_buf *bp;
+ int error;
/*
* it's ok to read these possible inode blocks in one at
xfs_ino_t parent;
ino_tree_node_t *ino_rec;
struct xfs_buf **bplist;
- xfs_dinode_t *dino;
+ struct xfs_dinode *dino;
int icnt;
int status;
int bp_found;
*/
static int
-clear_dinode_attr(xfs_mount_t *mp, xfs_dinode_t *dino, xfs_ino_t ino_num)
+clear_dinode_attr(
+ xfs_mount_t *mp,
+ struct xfs_dinode *dino,
+ xfs_ino_t ino_num)
{
ASSERT(dino->di_forkoff != 0);
}
static void
-clear_dinode_core(struct xfs_mount *mp, xfs_dinode_t *dinoc, xfs_ino_t ino_num)
+clear_dinode_core(
+ struct xfs_mount *mp,
+ struct xfs_dinode *dinoc,
+ xfs_ino_t ino_num)
{
memset(dinoc, 0, sizeof(*dinoc));
dinoc->di_magic = cpu_to_be16(XFS_DINODE_MAGIC);
}
static void
-clear_dinode_unlinked(xfs_mount_t *mp, xfs_dinode_t *dino)
+clear_dinode_unlinked(xfs_mount_t *mp, struct xfs_dinode *dino)
{
dino->di_next_unlinked = cpu_to_be32(NULLAGINO);
* until after the agi unlinked lists are walked in phase 3.
*/
static void
-clear_dinode(xfs_mount_t *mp, xfs_dinode_t *dino, xfs_ino_t ino_num)
+clear_dinode(xfs_mount_t *mp, struct xfs_dinode *dino, xfs_ino_t ino_num)
{
clear_dinode_core(mp, dino, ino_num);
clear_dinode_unlinked(mp, dino);
xfs_mount_t *mp,
xfs_agnumber_t agno,
xfs_agino_t ino,
- xfs_dinode_t *dip,
+ struct xfs_dinode *dip,
int type,
int *dirty,
xfs_rfsblock_t *tot,
xfs_mount_t *mp,
xfs_agnumber_t agno,
xfs_agino_t ino,
- xfs_dinode_t *dip,
+ struct xfs_dinode *dip,
int type,
int *dirty,
xfs_rfsblock_t *tot,
xfs_mount_t *mp,
xfs_agnumber_t agno,
xfs_agino_t ino,
- xfs_dinode_t *dip,
+ struct xfs_dinode *dip,
int whichfork)
{
struct xfs_attr_shortform *asf;
}
static int
-process_symlink_extlist(xfs_mount_t *mp, xfs_ino_t lino, xfs_dinode_t *dino)
+process_symlink_extlist(
+ xfs_mount_t *mp,
+ xfs_ino_t lino,
+ struct xfs_dinode *dino)
{
xfs_fileoff_t expected_offset;
xfs_bmbt_rec_t *rp;
*/
static int
process_symlink(
- xfs_mount_t *mp,
- xfs_ino_t lino,
- xfs_dinode_t *dino,
- blkmap_t *blkmap)
+ xfs_mount_t *mp,
+ xfs_ino_t lino,
+ struct xfs_dinode *dino,
+ blkmap_t *blkmap)
{
char *symlink;
char data[XFS_SYMLINK_MAXLEN];
* that have no associated data storage (fifos, pipes, devices, etc.).
*/
static int
-process_misc_ino_types(xfs_mount_t *mp,
- xfs_dinode_t *dino,
- xfs_ino_t lino,
- int type)
+process_misc_ino_types(
+ xfs_mount_t *mp,
+ struct xfs_dinode *dino,
+ xfs_ino_t lino,
+ int type)
{
/*
* must also have a zero size
static inline int
dinode_fmt(
- xfs_dinode_t *dino)
+ struct xfs_dinode *dino)
{
return be16_to_cpu(dino->di_mode) & S_IFMT;
}
static inline void
change_dinode_fmt(
- xfs_dinode_t *dino,
- int new_fmt)
+ struct xfs_dinode *dino,
+ int new_fmt)
{
- int mode = be16_to_cpu(dino->di_mode);
+ int mode = be16_to_cpu(dino->di_mode);
ASSERT((new_fmt & ~S_IFMT) == 0);
static int
check_dinode_mode_format(
- xfs_dinode_t *dinoc)
+ struct xfs_dinode *dinoc)
{
if (dinoc->di_format >= XFS_DINODE_FMT_UUID)
return -1; /* FMT_UUID is not used */
static int
process_check_sb_inodes(
- xfs_mount_t *mp,
- xfs_dinode_t *dinoc,
- xfs_ino_t lino,
- int *type,
- int *dirty)
+ xfs_mount_t *mp,
+ struct xfs_dinode *dinoc,
+ xfs_ino_t lino,
+ int *type,
+ int *dirty)
{
if (lino == mp->m_sb.sb_rootino) {
if (*type != XR_INO_DIR) {
*/
static int
process_check_inode_sizes(
- xfs_mount_t *mp,
- xfs_dinode_t *dino,
- xfs_ino_t lino,
- int type)
+ xfs_mount_t *mp,
+ struct xfs_dinode *dino,
+ xfs_ino_t lino,
+ int type)
{
- xfs_fsize_t size = be64_to_cpu(dino->di_size);
+ xfs_fsize_t size = be64_to_cpu(dino->di_size);
switch (type) {
*/
static int
process_check_inode_forkoff(
- xfs_mount_t *mp,
- xfs_dinode_t *dino,
- xfs_ino_t lino)
+ xfs_mount_t *mp,
+ struct xfs_dinode *dino,
+ xfs_ino_t lino)
{
if (dino->di_forkoff == 0)
return 0;
*/
static int
process_inode_blocks_and_extents(
- xfs_dinode_t *dino,
- xfs_rfsblock_t nblocks,
- uint64_t nextents,
- uint64_t anextents,
- xfs_ino_t lino,
- int *dirty)
+ struct xfs_dinode *dino,
+ xfs_rfsblock_t nblocks,
+ uint64_t nextents,
+ uint64_t anextents,
+ xfs_ino_t lino,
+ int *dirty)
{
if (nblocks != be64_to_cpu(dino->di_nblocks)) {
if (!no_modify) {
*/
static int
process_inode_data_fork(
- xfs_mount_t *mp,
- xfs_agnumber_t agno,
- xfs_agino_t ino,
- xfs_dinode_t *dino,
- int type,
- int *dirty,
- xfs_rfsblock_t *totblocks,
- uint64_t *nextents,
- blkmap_t **dblkmap,
- int check_dups)
+ xfs_mount_t *mp,
+ xfs_agnumber_t agno,
+ xfs_agino_t ino,
+ struct xfs_dinode *dino,
+ int type,
+ int *dirty,
+ xfs_rfsblock_t *totblocks,
+ uint64_t *nextents,
+ blkmap_t **dblkmap,
+ int check_dups)
{
- xfs_ino_t lino = XFS_AGINO_TO_INO(mp, agno, ino);
- int err = 0;
- int nex;
+ xfs_ino_t lino = XFS_AGINO_TO_INO(mp, agno, ino);
+ int err = 0;
+ int nex;
/*
* extent count on disk is only valid for positive values. The kernel
*/
static int
process_inode_attr_fork(
- xfs_mount_t *mp,
- xfs_agnumber_t agno,
- xfs_agino_t ino,
- xfs_dinode_t *dino,
- int type,
- int *dirty,
- xfs_rfsblock_t *atotblocks,
- uint64_t *anextents,
- int check_dups,
- int extra_attr_check,
- int *retval)
+ xfs_mount_t *mp,
+ xfs_agnumber_t agno,
+ xfs_agino_t ino,
+ struct xfs_dinode *dino,
+ int type,
+ int *dirty,
+ xfs_rfsblock_t *atotblocks,
+ uint64_t *anextents,
+ int check_dups,
+ int extra_attr_check,
+ int *retval)
{
- xfs_ino_t lino = XFS_AGINO_TO_INO(mp, agno, ino);
- blkmap_t *ablkmap = NULL;
- int repair = 0;
- int err;
+ xfs_ino_t lino = XFS_AGINO_TO_INO(mp, agno, ino);
+ blkmap_t *ablkmap = NULL;
+ int repair = 0;
+ int err;
if (!dino->di_forkoff) {
*anextents = 0;
static int
process_check_inode_nlink_version(
- xfs_dinode_t *dino,
- xfs_ino_t lino)
+ struct xfs_dinode *dino,
+ xfs_ino_t lino)
{
- int dirty = 0;
+ int dirty = 0;
/*
* if it's a version 2 inode, it should have a zero
*/
static int
process_dinode_int(xfs_mount_t *mp,
- xfs_dinode_t *dino,
+ struct xfs_dinode *dino,
xfs_agnumber_t agno,
xfs_agino_t ino,
int was_free, /* 1 if inode is currently free */
int
process_dinode(
- xfs_mount_t *mp,
- xfs_dinode_t *dino,
- xfs_agnumber_t agno,
- xfs_agino_t ino,
- int was_free,
- int *dirty,
- int *used,
- int ino_discovery,
- int check_dups,
- int extra_attr_check,
- int *isa_dir,
- xfs_ino_t *parent)
+ xfs_mount_t *mp,
+ struct xfs_dinode *dino,
+ xfs_agnumber_t agno,
+ xfs_agino_t ino,
+ int was_free,
+ int *dirty,
+ int *used,
+ int ino_discovery,
+ int check_dups,
+ int extra_attr_check,
+ int *isa_dir,
+ xfs_ino_t *parent)
{
- const int verify_mode = 0;
- const int uncertain = 0;
+ const int verify_mode = 0;
+ const int uncertain = 0;
#ifdef XR_INODE_TRACE
fprintf(stderr, _("processing inode %d/%d\n"), agno, ino);
*/
int
verify_dinode(
- xfs_mount_t *mp,
- xfs_dinode_t *dino,
- xfs_agnumber_t agno,
- xfs_agino_t ino)
+ xfs_mount_t *mp,
+ struct xfs_dinode *dino,
+ xfs_agnumber_t agno,
+ xfs_agino_t ino)
{
- xfs_ino_t parent;
- int used = 0;
- int dirty = 0;
- int isa_dir = 0;
- const int verify_mode = 1;
- const int check_dups = 0;
- const int ino_discovery = 0;
- const int uncertain = 0;
+ xfs_ino_t parent;
+ int used = 0;
+ int dirty = 0;
+ int isa_dir = 0;
+ const int verify_mode = 1;
+ const int check_dups = 0;
+ const int ino_discovery = 0;
+ const int uncertain = 0;
return process_dinode_int(mp, dino, agno, ino, 0, &dirty, &used,
verify_mode, uncertain, ino_discovery,
*/
int
verify_uncertain_dinode(
- xfs_mount_t *mp,
- xfs_dinode_t *dino,
- xfs_agnumber_t agno,
- xfs_agino_t ino)
+ xfs_mount_t *mp,
+ struct xfs_dinode *dino,
+ xfs_agnumber_t agno,
+ xfs_agino_t ino)
{
- xfs_ino_t parent;
- int used = 0;
- int dirty = 0;
- int isa_dir = 0;
- const int verify_mode = 1;
- const int check_dups = 0;
- const int ino_discovery = 0;
- const int uncertain = 1;
+ xfs_ino_t parent;
+ int used = 0;
+ int dirty = 0;
+ int isa_dir = 0;
+ const int verify_mode = 1;
+ const int check_dups = 0;
+ const int ino_discovery = 0;
+ const int uncertain = 1;
return process_dinode_int(mp, dino, agno, ino, 0, &dirty, &used,
verify_mode, uncertain, ino_discovery,
int
process_dinode(xfs_mount_t *mp,
- xfs_dinode_t *dino,
+ struct xfs_dinode *dino,
xfs_agnumber_t agno,
xfs_agino_t ino,
int was_free,
int
verify_dinode(xfs_mount_t *mp,
- xfs_dinode_t *dino,
+ struct xfs_dinode *dino,
xfs_agnumber_t agno,
xfs_agino_t ino);
int
verify_uncertain_dinode(xfs_mount_t *mp,
- xfs_dinode_t *dino,
+ struct xfs_dinode *dino,
xfs_agnumber_t agno,
xfs_agino_t ino);
*/
static void
process_sf_dir2_fixoff(
- xfs_mount_t *mp,
- xfs_dinode_t *dip)
+ xfs_mount_t *mp,
+ struct xfs_dinode *dip)
{
int i;
int offset;
/* ARGSUSED */
static int
process_sf_dir2(
- xfs_mount_t *mp,
- xfs_ino_t ino,
- xfs_dinode_t *dip,
- int ino_discovery,
- int *dino_dirty, /* out - 1 if dinode buffer dirty */
- char *dirname, /* directory pathname */
- xfs_ino_t *parent, /* out - NULLFSINO if entry not exist */
- int *repair) /* out - 1 if dir was fixed up */
+ xfs_mount_t *mp,
+ xfs_ino_t ino,
+ struct xfs_dinode *dip,
+ int ino_discovery,
+ int *dino_dirty, /* out: 1 if dinode buffer dirty */
+ char *dirname, /* directory pathname */
+ xfs_ino_t *parent, /* out: NULLFSINO if no entry */
+ int *repair) /* out: 1 if dir was fixed up */
{
int bad_offset;
int bad_sfnamelen;
/* ARGSUSED */
static int
process_dir2_data(
- xfs_mount_t *mp,
- xfs_ino_t ino,
- xfs_dinode_t *dip,
- int ino_discovery,
- char *dirname, /* directory pathname */
- xfs_ino_t *parent, /* out - NULLFSINO if entry not exist */
- struct xfs_buf *bp,
- int *dot, /* out - 1 if there is a dot, else 0 */
- int *dotdot, /* out - 1 if there's a dotdot, else 0 */
- xfs_dablk_t da_bno,
- char *endptr,
- int *dirty)
+ xfs_mount_t *mp,
+ xfs_ino_t ino,
+ struct xfs_dinode *dip,
+ int ino_discovery,
+ char *dirname, /* directory pathname */
+ xfs_ino_t *parent, /* out: NULLFSINO if entry not exist*/
+ struct xfs_buf *bp,
+ int *dot, /* out: 1 if there's a dot else 0 */
+ int *dotdot, /* out: 1 if there's a dotdot else 0*/
+ xfs_dablk_t da_bno,
+ char *endptr,
+ int *dirty)
{
int badbest;
xfs_dir2_data_free_t *bf;
/* ARGSUSED */
static int
process_block_dir2(
- xfs_mount_t *mp,
- xfs_ino_t ino,
- xfs_dinode_t *dip,
- int ino_discovery,
- int *dino_dirty, /* out - 1 if dinode buffer dirty */
- char *dirname, /* directory pathname */
- xfs_ino_t *parent, /* out - NULLFSINO if entry not exist */
- blkmap_t *blkmap,
- int *dot, /* out - 1 if there is a dot, else 0 */
- int *dotdot, /* out - 1 if there's a dotdot, else 0 */
- int *repair) /* out - 1 if something was fixed */
+ xfs_mount_t *mp,
+ xfs_ino_t ino,
+ struct xfs_dinode *dip,
+ int ino_discovery,
+ int *dino_dirty, /* out: 1 if dinode buffer dirty */
+ char *dirname, /* directory pathname */
+ xfs_ino_t *parent, /* out: NULLFSINO if no entry */
+ blkmap_t *blkmap,
+ int *dot, /* out: 1 if there's a dot else 0 */
+ int *dotdot, /* out: 1 if there's a dotdot else 0 */
+ int *repair) /* out: 1 if something was fixed */
{
struct xfs_dir2_data_hdr *block;
xfs_dir2_leaf_entry_t *blp;
*/
static int
process_node_dir2(
- xfs_mount_t *mp,
- xfs_ino_t ino,
- xfs_dinode_t *dip,
- blkmap_t *blkmap,
- int *repair)
+ xfs_mount_t *mp,
+ xfs_ino_t ino,
+ struct xfs_dinode *dip,
+ blkmap_t *blkmap,
+ int *repair)
{
xfs_dablk_t bno;
da_bt_cursor_t da_cursor;
*/
static int
process_leaf_node_dir2(
- xfs_mount_t *mp,
- xfs_ino_t ino,
- xfs_dinode_t *dip,
- int ino_discovery,
- char *dirname, /* directory pathname */
- xfs_ino_t *parent, /* out - NULLFSINO if entry not exist */
- blkmap_t *blkmap,
- int *dot, /* out - 1 if there is a dot, else 0 */
- int *dotdot, /* out - 1 if there's a dotdot, else 0 */
- int *repair, /* out - 1 if something was fixed */
- int isnode) /* node directory not leaf */
+ xfs_mount_t *mp,
+ xfs_ino_t ino,
+ struct xfs_dinode *dip,
+ int ino_discovery,
+ char *dirname, /* directory pathname */
+ xfs_ino_t *parent, /* out: NULLFSINO if no entry */
+ blkmap_t *blkmap,
+ int *dot, /* out: 1 if there's a dot else 0 */
+ int *dotdot, /* out: 1 if there's a dotdot else 0*/
+ int *repair, /* out: 1 if something was fixed */
+ int isnode) /* node directory not leaf */
{
bmap_ext_t *bmp;
struct xfs_buf *bp;
*/
int
process_dir2(
- xfs_mount_t *mp,
- xfs_ino_t ino,
- xfs_dinode_t *dip,
- int ino_discovery,
- int *dino_dirty,
- char *dirname,
- xfs_ino_t *parent,
- blkmap_t *blkmap)
+ xfs_mount_t *mp,
+ xfs_ino_t ino,
+ struct xfs_dinode *dip,
+ int ino_discovery,
+ int *dino_dirty,
+ char *dirname,
+ xfs_ino_t *parent,
+ blkmap_t *blkmap)
{
- int dot;
- int dotdot;
- xfs_fileoff_t last;
- int repair;
- int res;
+ int dot;
+ int dotdot;
+ xfs_fileoff_t last;
+ int repair;
+ int res;
*parent = NULLFSINO;
dot = dotdot = 0;
int
process_dir2(
- xfs_mount_t *mp,
- xfs_ino_t ino,
- xfs_dinode_t *dip,
- int ino_discovery,
- int *dirty,
- char *dirname,
- xfs_ino_t *parent,
- struct blkmap *blkmap);
+ xfs_mount_t *mp,
+ xfs_ino_t ino,
+ struct xfs_dinode *dip,
+ int ino_discovery,
+ int *dirty,
+ char *dirname,
+ xfs_ino_t *parent,
+ struct blkmap *blkmap);
void
process_sf_dir2_fixi8(
typedef struct bm_cursor {
int num_levels;
xfs_ino_t ino;
- xfs_dinode_t *dip;
+ struct xfs_dinode *dip;
bm_level_state_t level[XR_MAX_BMLEVELS];
} bmap_cursor_t;
static void
pf_read_btinode(
prefetch_args_t *args,
- xfs_dinode_t *dino,
+ struct xfs_dinode *dino,
int isadir)
{
xfs_bmdr_block_t *dib;
static void
pf_read_exinode(
prefetch_args_t *args,
- xfs_dinode_t *dino)
+ struct xfs_dinode *dino)
{
pf_read_bmbt_reclist(args, (xfs_bmbt_rec_t *)XFS_DFORK_DPTR(dino),
be32_to_cpu(dino->di_nextents));
prefetch_args_t *args,
struct xfs_buf *bp)
{
- xfs_dinode_t *dino;
+ struct xfs_dinode *dino;
int icnt = 0;
int hasdir = 0;
int isadir;
* instead of the realtime bitmap file
*/
void
-process_rtbitmap(xfs_mount_t *mp,
- xfs_dinode_t *dino,
- blkmap_t *blkmap)
+process_rtbitmap(
+ struct xfs_mount *mp,
+ struct xfs_dinode *dino,
+ blkmap_t *blkmap)
{
- int error;
- int bit;
- int bitsperblock;
- int bmbno;
- int end_bmbno;
- xfs_fsblock_t bno;
- struct xfs_buf *bp;
- xfs_rtblock_t extno;
- int i;
- int len;
- int log;
- int offs;
- int prevbit;
- int start_bmbno;
- int start_bit;
- xfs_rtword_t *words;
+ int error;
+ int bit;
+ int bitsperblock;
+ int bmbno;
+ int end_bmbno;
+ xfs_fsblock_t bno;
+ struct xfs_buf *bp;
+ xfs_rtblock_t extno;
+ int i;
+ int len;
+ int log;
+ int offs;
+ int prevbit;
+ int start_bmbno;
+ int start_bit;
+ xfs_rtword_t *words;
ASSERT(mp->m_rbmip == NULL);
* copy the real-time summary file data into memory
*/
void
-process_rtsummary(xfs_mount_t *mp,
- xfs_dinode_t *dino,
- blkmap_t *blkmap)
+process_rtsummary(
+ xfs_mount_t *mp,
+ struct xfs_dinode *dino,
+ blkmap_t *blkmap)
{
- xfs_fsblock_t bno;
- struct xfs_buf *bp;
- char *bytes;
- int sumbno;
+ xfs_fsblock_t bno;
+ struct xfs_buf *bp;
+ char *bytes;
+ int sumbno;
for (sumbno = 0; sumbno < blkmap->count; sumbno++) {
bno = blkmap_get(blkmap, sumbno);
check_summary(xfs_mount_t *mp);
void
-process_rtbitmap(xfs_mount_t *mp,
- xfs_dinode_t *dino,
- struct blkmap *blkmap);
+process_rtbitmap(xfs_mount_t *mp,
+ struct xfs_dinode *dino,
+ struct blkmap *blkmap);
void
process_rtsummary(xfs_mount_t *mp,