(* crée un système de fichiers sur un disque *) let mkfs inode_nb = assert (inode_nb > 0 && inode_nb < D.block_nb / 2); inode_nb_ref := inode_nb; last_free_inode := 1; free_block_list := 0; free_block_nb := 0; for i = !inode_nb_ref + 1 to D.block_nb - 1 do free_block i; done; let free_inode n = { reference_number = 1; stats = { st_dev =0; st_ino = n; st_kind = Common.S_REG; st_nlink = 0; st_size = 0 }; blocktbl = Array.make C.Inode.blocktbl_size 0 } in for n = 2 to !C.Super.inode_nb_ref do C.Inode.iput (free_inode n) done; let root_inode = { reference_number = 1; stats = { Common.st_dev =0; st_ino = 1; st_kind = if inode_nb > 1 then S_DIR else S_REG; st_nlink = 1; st_size = 0 }; blocktbl = Array.make blocktbl_size 0 } in C.Inode.iput root_inode; force_sfstype(); sync();; |