void init_super(unsigned int vol){ super.super_magic=SUPER_MAGIC; super.super_root_inumber=0; super.super_first_free=1; write_bloc_n(vol, SUPER, &super, sizeof(struct super_s)); fb.fb_nbbloc=mbr.mbr_vols[vol].vol_nsector fb.fb_next=0; write_bloc_n(vol, 1, &fb, sizeof(struct free_bloc_s)); }
// Superbloc void init_super(uint vol, char *nom) { // read_bloc_n(vol, 0, (uchar *) &superbloc, sizeof(struct superbloc_s)); load_super(vol); if(superbloc.magic == MAGIC_SUPERBLOC){ printf("Wait, superbloc already initialized :)\n"); exit(EXIT_FAILURE); } else { superbloc.magic = MAGIC_SUPERBLOC; strcpy(superbloc.nom, nom); superbloc.first_free_bloc = 1; superbloc.root = 0; superbloc.nb_free = mbr.vol[vol].nb_bloc-1; int i = 0; for(i = 1; i<mbr.vol[vol].nb_bloc; i++) { struct free_bloc_s fb; if(i == mbr.vol[vol].nb_bloc-1) fb.next_free_bloc = 0; else fb.next_free_bloc = i+1; write_bloc_n(vol, i, (uchar *) &fb, sizeof(struct free_bloc_s)); } save_super(); } }
void save_super() { write_bloc_n(current_vol, 0, (uchar *) &superbloc, sizeof(struct superbloc_s)); }