Files

44 lines
1.2 KiB
C
Raw Permalink Normal View History

/*
2019-03-11 00:45:19 -03:00
* Copyright (C) 2019 Ernesto A. Fernández <ernesto.mnd.fernandez@gmail.com>
*/
#ifndef _OBJECT_H
#define _OBJECT_H
#include <apfs/types.h>
2019-09-11 19:27:08 -03:00
#include "htable.h"
struct apfs_obj_phys;
struct super_block;
struct node;
/*
* In-memory representation of an APFS object
*/
struct object {
u64 block_nr;
u64 oid; /* Often the same as the block number */
u64 xid;
2019-02-11 18:56:37 -03:00
u32 type;
2019-02-11 23:22:16 -03:00
u32 subtype;
u32 flags;
/*
* Size of the object in bytes. It's usually a single block, the only
* exception I've found so far are the spacemans of containers that are
* too big to have all cib addresses in one block, but too small to fill
* a whole cab with cib addresses.
*/
u32 size;
};
extern int obj_verify_csum(struct apfs_obj_phys *obj);
extern void *read_object_nocheck(u64 bno, u32 size, struct object *obj);
extern u32 parse_object_flags(u32 flags, bool encrypted);
2022-10-24 20:30:47 -03:00
extern void *read_object(u64 oid, struct htable_entry **omap_table, struct object *obj);
extern void *read_object_noheader(u64 oid, struct htable_entry **omap_table, struct object *obj);
2019-09-11 19:27:08 -03:00
extern void free_cpoint_map_table(struct htable_entry **table);
extern struct cpoint_map *get_cpoint_map(u64 oid);
extern void *read_ephemeral_object(u64 oid, struct object *obj);
#endif /* _OBJECT_H */