From 0e95c59bf7d12bb13c8e7299c2e9dee3f4ee594a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rn=20Guldberg?= Date: Sat, 8 Jun 2019 23:47:09 +0200 Subject: [PATCH] Update to Disk Manager Utility, issues with directory inside directory --- SingOS.img | Bin 1054208 -> 1070080 bytes a.out | Bin 23128 -> 35216 bytes disk_manager_utility.c | 70 +++++++++++++++---------------- lsfs_disk_controller.h | 92 ++++++++++++++++++++++++----------------- lsfs_fuse | Bin 39776 -> 39880 bytes lsfs_fuse.o | Bin 38344 -> 39040 bytes 6 files changed, 88 insertions(+), 74 deletions(-) diff --git a/SingOS.img b/SingOS.img index 9566a05ed13d64bf18c8d647aba8a7d87b14f12b..ff92620ded807f704fbfb95a3101ca41968e0a99 100644 GIT binary patch delta 157 zcmZoz9VW&`Fe0-B7B3#NZ$5s;WDxo;VZ0OK@f0nW*s%;JpPlNFioGw0;zOg3cxyNFqE l8Jhs(GFAabmbA>ARG`?ONsJJM@|%GQEfz5`E@Ky91OOPlC*}YE delta 149 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≶kD|R#OCXl(s~a4=PlN?I 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 DnzE>F delta 4477 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 EzbXduw*UYD diff --git a/disk_manager_utility.c b/disk_manager_utility.c index 145cc30..9b8e72a 100644 --- a/disk_manager_utility.c +++ b/disk_manager_utility.c @@ -133,30 +133,36 @@ int dmu_create_file_system(char* disk_name) { return 1; } -#if 0 int dmu_load_file_system(char* disk_name) { disk = fopen ( disk_name , "r+b" ); - p_control.fsci = malloc(sizeof(FSCI)); - p_control.mtt_tags = malloc(sizeof(global_tag) * DEFAULT_MASTER_TAG_TABLE_SIZE); - lsfs_disk_load_disk(disk, &p_control); + lsfs_disk_load_disk(); disk_is_loaded = 1; return 1; } -int dmu_print_mtt() { - printf("\n|---------------------Master Tag Table----------------------|Control_bits|\n"); +int dmu_print_mtt(char *path) { + Directory_Table *directory_table; + if (strcmp(path, "/") != 0) + { + directory_table = lsfs_find_directory(path, false); + } + else + { + directory_table = &p_control.master_table; + } - for (int i = 0; i < MAX_MASTER_TAGS; ++i) { - if (p_control.mtt_tags[i].tag_table_index == 0) { - break; - } - printf("|%-28s|%-30lu|%-12d| \n", p_control.mtt_tags[i].tagname, p_control.mtt_tags[i].tag_table_index, p_control.mtt_tags[i].control_bits.is_filename); + printf("\n|------------------------ Directory ------------------------|Control_bits|\n"); + + for (int i = 0; i < DEFAULT_TABLE_SIZE; ++i) { + printf("|%-28s|%-30lu|%-12d| \n", directory_table->entries[i].filename, directory_table->entries[i].file_id, directory_table->entries[i].file_id); printf("|-----------------------------------------------------------|------------|\n"); } printf("\n\n\n"); return 1; } +#if 0 + int dmu_print_tag_table(lsfs_tag_id TagID) { tag_record* tag_table = calloc(1, SECTOR_SIZE); @@ -200,18 +206,28 @@ int main (int argc, char *argv[]) scanf("%s", loaded_disk_name); dmu_create_file_system(loaded_disk_name); } - - - #if 0 else if(strcmp(chose, "l") == 0) { printf("\nLoad disk\nEnter filename:\n"); scanf("%s", loaded_disk_name); dmu_load_file_system(loaded_disk_name); } else if(strcmp(chose, "1") == 0) { - // Print Master Tag Table - dmu_print_mtt(); + // Print Directory: + printf("Enter Directory:\n"); + scanf("%s", input_buffer); + dmu_print_mtt(input_buffer); } + else if(strcmp(chose, "5") == 0) { + printf("Enter Directory:\n"); + scanf("%s", input_buffer); + + int new_id = lsfs_disk_create_entry(input_buffer, ENTRY_DIRECTORY ); + //lsfs_disk_write_data_to_file(new_id, strlen(new_file_data_d), new_file_data_d); + + } + + + #if 0 else if(strcmp(chose, "2") == 0) { // Print Master Tag Table printf("Enter Tag ID:\n"); @@ -232,31 +248,13 @@ int main (int argc, char *argv[]) scanf("%s", input_buffer); lsfs_disk_create_tag(input_buffer, false); } - else if(strcmp(chose, "5") == 0) { - // Print Master Tag Table - printf("Enter Filename:\n"); - scanf("%s", input_buffer); - + + printf("Write data:\n"); char* new_file_data_d = calloc(1, 4096); scanf("%s", new_file_data_d); - printf("Enter Tag ID:\n"); - char* tags_number = calloc(16, sizeof(char)); - lsfs_sector_offset* tags = calloc(2, sizeof(lsfs_sector_offset)); - - scanf("%s", tags_number); - - int filename_tag = lsfs_disk_create_tag(input_buffer, true); - - tags[0] = filename_tag; - tags[1] = atoi(tags_number); - - - int new_id = lsfs_disk_create_file(input_buffer, tags, new_file_data_d ); - lsfs_disk_write_data_to_file(new_id, strlen(new_file_data_d), new_file_data_d); - } #endif } if(disk_is_loaded) { diff --git a/lsfs_disk_controller.h b/lsfs_disk_controller.h index e98fd36..06f35e1 100644 --- a/lsfs_disk_controller.h +++ b/lsfs_disk_controller.h @@ -188,14 +188,17 @@ Directory_Table* lsfs_find_directory(const char *path, bool drop_filename) { for (int j = 0; j < DEFAULT_TABLE_SIZE; ++j) { + printf("find dir: %s == %s\n", dir_table->entries[j].filename, split_path.strings[i].chars); if (strcmp(dir_table->entries[j].filename, split_path.strings[i].chars) == 0) { + printf("Latterlig data pointer: %d\n", dir_table->entries[j].data_pointer[0]); + int index_sector = dir_table->entries[j].data_pointer[0]; if (i == 0) { // Alocate space, we refuse this further on dir_table = malloc(sizeof(Directory_Table)); } - read_data_from_disk(dir_table->entries[j].data_pointer[0], DEFAULT_TABLE_SIZE, dir_table); + read_data_from_disk(index_sector, DEFAULT_TABLE_SIZE, dir_table); break; } } @@ -364,9 +367,9 @@ int get_free_sectors_table() { } p_control.fsci.next_free_sector += DEFAULT_TABLE_SIZE; - fseek ( disk , (p_control.fsci.this_partition_offset_on_disk) * SECTOR_SIZE, SEEK_SET ); + fseek ( disk , ((p_control.fsci.this_partition_offset_on_disk) * SECTOR_SIZE), SEEK_SET ); fwrite(&p_control.fsci, 1, SECTOR_SIZE, disk); - + printf("Table has got assigned Sector: %d\n", return_index); return return_index; } @@ -485,56 +488,69 @@ int lsfs_disk_load_disk() { int lsfs_disk_create_entry(const char* path, Table_Entry_Kind entry_kind) { - lsfs_string_array split_path = lsfs_string_split_c(path, '/', false); - lsfs_string filename = split_path.strings[split_path.length-1]; + // First check if file exist: + lsfs_file *file; + if (lsfs_disk_getattr(file, path)) + { + return -EINVAL; + } // Start from the master table int free_index = -1; // -1 is no index found. Directory_Table *dir_table = &p_control.master_table; lsfs_sector_offset table_disk_position = p_control.fsci.master_table_index; - for (int i = 0; i < split_path.length; ++i) + + + lsfs_string_array split_path = lsfs_string_split_c(path, '/', false); + lsfs_string filename = split_path.strings[split_path.length-1]; + + printf("spilt length: %d\n", split_path.length); + + for (int i = 0; i < split_path.length -1; ++i) { for (int j = 0; j < DEFAULT_TABLE_SIZE; ++j) { - if (i == (split_path.length - 1)) + if (strcmp(dir_table->entries[j].filename, split_path.strings[i].chars) == 0) { - // Find free index and be sure that there dosent exist a file with the same name. - if (dir_table->entries[j].entry_kind == ENTRY_EMPTY) - { - // Set the free index, continue to see if the filename exist. - // if not -1, we have found a better index. - if (free_index == -1) - { - printf("Index found for file: %d\n", j); - table_disk_position += j; // Abselout index in file system - free_index = j; - } - } - else if (strcmp(dir_table->entries[j].filename, split_path.strings[i].chars) == 0) + // We have found the next directory to traverse. + printf("Get next dir at sector: "); + table_disk_position = dir_table->entries[j].data_pointer[0]; + if (i == 0) { - // Abort mission, we have a file with the same name. - return -EINVAL; + // Alocate space, we refuse this further on + dir_table = malloc(sizeof(Directory_Table)); } + printf("%d\n", table_disk_position); + read_data_from_disk(table_disk_position, DEFAULT_TABLE_SIZE, dir_table); + break; } - else + } + } + + + for (int table_index = 0; table_index < DEFAULT_TABLE_SIZE; ++table_index) + { + // Find free index. + if (dir_table->entries[table_index].entry_kind == ENTRY_EMPTY) + { + // Set the free index, continue to see if the filename exist. + // if not -1, we have found a better index. + if (free_index == -1) { - if (strcmp(dir_table->entries[j].filename, split_path.strings[i].chars) == 0) - { - // We have found the next directory to traverse. - if (i == 0) - { - // Alocate space, we refuse this further on - dir_table = malloc(sizeof(Directory_Table)); - } - printf("Get next dir\n"); - table_disk_position = dir_table->entries[j].data_pointer[0]; - read_data_from_disk(table_disk_position, DEFAULT_TABLE_SIZE, dir_table); - break; - } + printf("Index found for file: %d\n", table_index); + table_disk_position += table_index; // Abselout index in file system + free_index = table_index; } } } + + + + + + + if (free_index == -1) { // The table is full, and we cannot create an entry @@ -556,7 +572,7 @@ int lsfs_disk_create_entry(const char* path, Table_Entry_Kind entry_kind) { // We assign one data pointer consiting of DEFAULT_FILE_SIZE sectors dir_table->entries[free_index].file_size = 0; - get_free_sectors_table(1, dir_table->entries[free_index].data_pointer); + get_free_sectors(1, dir_table->entries[free_index].data_pointer); } else { @@ -573,7 +589,7 @@ int lsfs_disk_create_entry(const char* path, Table_Entry_Kind entry_kind) time_t current_time; time ( ¤t_time ); */ - + printf("File is written to sector: %d\n", table_disk_position); write_data_to_disk(table_disk_position, 1, &dir_table->entries[free_index]); return 0; } diff --git a/lsfs_fuse b/lsfs_fuse index 3fc2f9b9062c3818910809c3ecca1fc4af3cd9a4..683a28fb0fe068c04c3c0190f513a140f7ac09c5 100755 GIT binary patch delta 11253 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 delta 10796 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 literal 38344 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