Ext
 All Files Functions
superblock.h
Go to the documentation of this file.
1 
7 #ifndef EXT_FILESYSTEM_SUBERBLOCK_H_
8 #define EXT_FILESYSTEM_SUBERBLOCK_H_
9 
10 #include <stdint.h>
11 #include <stdbool.h>
12 
16 struct __attribute__((__packed__)) fs_info {
17  uint16_t inodes_count;
18  uint16_t blocks_count;
19  uint16_t block_size;
20  uint16_t blocks_count_in_inode;
21  uint16_t max_path_len;
22  uint16_t descriptors_count;
23  uint16_t magic;
24 };
25 
30 struct __attribute__((__packed__)) superblock {
31  struct fs_info* fs_info;
32  bool* reserved_inodes_mask;
33  bool* reserved_blocks_mask;
34 };
35 
41 size_t sizeof_superblock(const struct superblock* superblock);
42 
49 void init_super_block(struct superblock* superblock);
50 
55 void destroy_super_block(struct superblock* superblock);
56 
64 ssize_t read_super_block(int fd, struct superblock* superblock);
65 
73 ssize_t write_super_block(int fd, struct superblock* superblock);
74 
80 uint16_t reserve_inode(const struct superblock* superblock);
81 
88 uint16_t free_inode(const struct superblock* superblock, uint16_t inode_id);
89 
95 uint16_t reserve_block(const struct superblock* superblock);
96 
103 uint16_t free_block(const struct superblock* superblock, uint16_t block_id);
104 
105 #endif //EXT_FILESYSTEM_SUBERBLOCK_H_
uint16_t free_block(const struct superblock *superblock, uint16_t block_id)
Release block.
Definition: superblock.c:149
ssize_t write_super_block(int fd, struct superblock *superblock)
Write sb to memory.
Definition: superblock.c:85
struct __attribute__((__packed__)) fs_info
Contains main information about FS.
Definition: superblock.h:16
void destroy_super_block(struct superblock *superblock)
Destructor of superblock.
Definition: superblock.c:41
ssize_t read_super_block(int fd, struct superblock *superblock)
Read sb from memory.
Definition: superblock.c:47
uint16_t free_inode(const struct superblock *superblock, uint16_t inode_id)
Release inode.
Definition: superblock.c:128
uint16_t reserve_inode(const struct superblock *superblock)
Reserve free inode.
Definition: superblock.c:117
uint16_t reserve_block(const struct superblock *superblock)
Reserve block.
Definition: superblock.c:138
void init_super_block(struct superblock *superblock)
Constructor of superblock.
Definition: superblock.c:29
size_t sizeof_superblock(const struct superblock *superblock)
Definition: superblock.c:23