-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathraidsim.h
59 lines (30 loc) · 2.34 KB
/
raidsim.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#ifndef RAIDSIM_H
/*Striping for RAID Level 0: Calculate the disk and block number from the LBA*/
void stripe_address_0(int ndisks, int lba, int strip, int *disk_to_use, int *address_on_disk);
/*Striping for RAID Level 4: Calculate the disk and block number from the LBA*/
void stripe_address_4(int ndisks, int lba, int strip, int *disk_to_use, int *address_on_disk);
/*Striping for RAID Level 5: Calculate the disk and block number from the LBA*/
void stripe_address_5(int ndisks, int lba, int strip, int *disk_to_use, int *address_on_disk);
/*Striping for RAID Level 10: Calculate the disk and block number from the LBA*/
void stripe_address_10(int ndisks, int lba, int strip, int *disk_to_use, int *address_on_disk);
/*Recover Disk for RAID Level 4 and 5: Open a new disk and zero it out*/
void recover_disk_4_5(disk_array_t *da, int nblocks, int ndisks, int disk);
/*Recover Disk for RAID 10: Open a new disk and zero it out*/
void recover_disk_10(disk_array_t *da, int disk_no, int disk_size, int strip, int ndisks);
/*Read RAID Level 0: Print out the first 4 bytes off 'size' number of blocks after striping*/
int read_0(int ndisks, int strip, int size, int lba, disk_array_t *da);
/*Read RAID Level 4: Print out the first 4 bytes off 'size' number of blocks after striping*/
int read_4(int ndisks, int strip, int size, int lba, disk_array_t *da);
/*Read RAID Level 5: Print out the first 4 bytes off 'size' number of blocks after striping*/
int read_5(int ndisks, int strip, int size, int lba, disk_array_t *da);
/*Read RAID Level 10: Print out the first 4 bytes off 'size' number of blocks after striping*/
int read_10(int ndisks, int strip, int size, int lba, disk_array_t *da);
/*Write RAID Level 0: Write 1024B sized 'buffer' to 'size' number of blocks*/
int write_0(int ndisks, int strip, int size, int lba, disk_array_t *da, char *buffer);
/*Write RAID Level 4: Write 1024B sized 'buffer' to 'size' number of blocks*/
int write_4(int ndisks, int strip, int size, int lba, disk_array_t *da, char *buffer);
/*Write RAID Level 5: Write 1024B sized 'buffer' to 'size' number of blocks*/
int write_5(int ndisks, int strip, int size, int lba, disk_array_t *da, char *buffer);
/*Write RAID Level 10: Write 1024B sized 'buffer' to 'size' number of blocks*/
int write_10(int ndisks, int strip, int size, int lba, disk_array_t *da, char *buffer);
#endif // RAIDSIM_H