Implement a proper block layer with partition support.
[pintos-anon] / src / filesys / filesys.c
index fedda08e1d6730421a129e286117298821fd75fb..7a53f5ffd924ca7b1b384fd9b46b3256e14f30e6 100644 (file)
@@ -6,10 +6,9 @@
 #include "filesys/free-map.h"
 #include "filesys/inode.h"
 #include "filesys/directory.h"
-#include "devices/disk.h"
 
-/* The disk that contains the file system. */
-struct disk *filesys_disk;
+/* Partition that contains the file system. */
+struct block *fs_device;
 
 static void do_format (void);
 
@@ -18,9 +17,9 @@ static void do_format (void);
 void
 filesys_init (bool format) 
 {
-  filesys_disk = disk_get (0, 1);
-  if (filesys_disk == NULL)
-    PANIC ("hd0:1 (hdb) not present, file system initialization failed");
+  fs_device = block_get_role (BLOCK_FILESYS);
+  if (fs_device == NULL)
+    PANIC ("No file system device found, can't initialize file system.");
 
   inode_init ();
   free_map_init ();
@@ -46,7 +45,7 @@ filesys_done (void)
 bool
 filesys_create (const char *name, off_t initial_size) 
 {
-  disk_sector_t inode_sector = 0;
+  block_sector_t inode_sector = 0;
   struct dir *dir = dir_open_root ();
   bool success = (dir != NULL
                   && free_map_allocate (1, &inode_sector)