Skip to content

Generic Block Devices

struct generic_partition {
struct generic_disk *disk;
uint64_t start_lba;
uint64_t sector_count;
enum fs_type fs_type;
void *fs_data;
char name[16];
bool mounted;
struct vfs_node *(*mount)(struct generic_partition *);
};

struct generic_partition referenced types:

struct generic_disk {
enum disk_flags flags;
enum generic_disk_type type;
enum fs_type fs_type;
void *fs_data;
char name[16];
uint64_t total_sectors;
bool is_removable;
void *driver_data;
uint32_t sector_size;
bool (*read_sector)(struct generic_disk *disk, uint64_t lba, uint8_t *buffer, uint64_t sector_count);
bool (*write_sector)(struct generic_disk *disk, uint64_t lba, const uint8_t *buffer, uint64_t sector_count);
bool (*submit_bio_async)(struct generic_disk *disk, struct bio_request *bio);
struct bio_scheduler_ops *ops;
struct bio_scheduler *scheduler;
struct bcache *cache;
uint64_t partition_count;
struct generic_partition *partitions;
};

struct generic_disk referenced types:

enum generic_disk_type {
G_IDE_DRIVE,
G_NVME_DRIVE,
G_AHCI_DRIVE,
G_ATAPI_DRIVE,
};
enum disk_flags {
DISK_FLAG_NO_REORDER = 1,
DISK_FLAG_NO_COALESCE = 1 << 1,
DISK_FLAG_NO_SCHED = 1 << 2,
};
char get_generic_disk_str(enum generic_disk_type type);

get_generic_disk_str referenced types:

char get_generic_disk_dev_str(enum generic_disk_type t);

get_generic_disk_dev_str referenced types:

bool disk_skip_coalesce(struct generic_disk *disk);

disk_skip_coalesce referenced types:

bool disk_skip_sched(struct generic_disk *disk);

disk_skip_sched referenced types:

bool disk_skip_reorder(struct generic_disk *disk);

disk_skip_reorder referenced types: