Advertisement
Guest User

Untitled

a guest
Mar 28th, 2015
232
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.57 KB | None | 0 0
  1. // create file system
  2. int mksfs(int fresh){
  3.  
  4.     // allocate disk space
  5.     int result;
  6.     char *filename = "Simple File System";
  7.     int block_size = MY_BLOCK_SIZE;
  8.     int num_blocks = MY_NUM_BLOCK;
  9.  
  10.     if (fresh == 1) {
  11.         result = init_fresh_disk(filename, block_size, num_blocks);
  12.     } else {
  13.         result = init_disk(filename, block_size, num_blocks);
  14.     }
  15.  
  16.     // create partition : super block
  17.     super_block* sb = malloc(1 * sizeof(super_block));
  18.     sb->magic = 0;
  19.     sb->block_size = block_size;
  20.     sb->file_system_size = num_blocks * block_size;
  21.     sb->i_node_table_length = INODE_TABLE_LENGTH;
  22.     write_blocks(SUPER_BLOCK_INDEX, SUPER_BLOCK_LENGTH, sb);
  23.  
  24.     // create partition : i-node table
  25.     inode* it_buffer = malloc(INODE_TABLE_LENGTH * sizeof(inode));
  26.     write_blocks(INODE_TABLE_INDEX, INODE_TABLE_LENGTH, it_buffer);
  27.  
  28.     // create partition : directory table, it stores filename->inode pairs
  29.     filename_to_inode* dt_buffer = malloc(INODE_TABLE_LENGTH * sizeof(inode));
  30.     write_blocks(DIRECTORY_TABLE_INDEX, DIRECTORY_TABLE_LENGTH, dt_buffer);
  31.  
  32.     // create partition : data blocks
  33.  
  34.     // rest : free bitmap
  35.  
  36.  
  37.     // cache inode table to memory
  38.     cached_inode_table = malloc(INODE_TABLE_LENGTH * block_size);
  39.     read_blocks(INODE_TABLE_INDEX, INODE_TABLE_LENGTH, cached_inode_table);
  40.  
  41.     // cache directory table into memory
  42.     cached_directory_table = malloc(DIRECTORY_TABLE_LENGTH * block_size);
  43.     read_blocks(DIRECTORY_TABLE_INDEX, DIRECTORY_TABLE_LENGTH, cached_directory_table);
  44.  
  45.  
  46.     return result;
  47. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement