From b75b35c5577b445621fa3d771206e82e5427c4d6 Mon Sep 17 00:00:00 2001 From: mintsuki Date: Fri, 4 Dec 2020 14:11:25 +0100 Subject: [PATCH] fat32: General cleanup and optimisation --- Makefile | 1 + limine-pxe.bin | Bin 29317 -> 29148 bytes limine.bin | Bin 32768 -> 32768 bytes stage2.map | Bin 4294 -> 4348 bytes stage2/fs/fat32.c | 229 ++++++++++++++++++++-------------------------- stage2/fs/fat32.h | 1 + 6 files changed, 99 insertions(+), 132 deletions(-) diff --git a/Makefile b/Makefile index 1f10fe11..e5dc26e8 100644 --- a/Makefile +++ b/Makefile @@ -75,6 +75,7 @@ ext2-test: all limine-install test.hdd fat32-test: all limine-install test.hdd $(MAKE) -C test + cp stage2.map test/ rm -rf test_image/ mkdir test_image sudo losetup -Pf --show test.hdd > loopback_dev diff --git a/limine-pxe.bin b/limine-pxe.bin index cb1762bfcbcc26b41f97207c7782fb279b6e94a3..fcf73d2f2d7e77239d3f4cf9f2dbc2d1f71be4f0 100644 GIT binary patch delta 27270 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≤!QvO$2^A0AI?1UwkiY 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 bkf;-i7U_il2YGM~sgS<2(Q_{hli+i=AXb2~ delta 27427 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 diff --git a/stage2.map b/stage2.map index e51c1e782be74ab208dc7c9d6609f510b319d4ad..fb630dcdee56949c6aec873ec03871015e4a7040 100644 GIT binary patch literal 4348 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 #include #include +#include #include #define FAT32_LFN_MAX_ENTRIES 20 @@ -108,9 +109,50 @@ static int fat32_read_cluster_from_map(struct fat32_context* context, uint32_t c return 0; } -static int fat32_load_fat_cluster_to_memory(struct fat32_context* context, uint32_t cluster_number, void* buffer, uint32_t offset, uint32_t limit) { - const uint32_t sector = context->data_start_lba + (cluster_number - 2) * context->sectors_per_cluster; - return part_read(&context->part, buffer, ((uint64_t) sector) * FAT32_SECTOR_SIZE + offset, limit); +static uint32_t *cache_cluster_chain(struct fat32_context *context, + uint32_t initial_cluster, + size_t *_chain_length) { + if (initial_cluster < 0x2 || initial_cluster > 0xfffffef) + return NULL; + uint32_t cluster = initial_cluster; + size_t chain_length; + for (chain_length = 1; ; chain_length++) { + fat32_read_cluster_from_map(context, cluster, &cluster); + if (cluster < 0x2 || cluster > 0xfffffef) + break; + } + uint32_t *cluster_chain = ext_mem_alloc(chain_length * sizeof(uint32_t)); + cluster = initial_cluster; + for (size_t i = 0; i < chain_length; i++) { + cluster_chain[i] = cluster; + fat32_read_cluster_from_map(context, cluster, &cluster); + } + *_chain_length = chain_length; + return cluster_chain; +} + +static bool read_cluster_chain(struct fat32_context *context, + uint32_t *cluster_chain, + void *buf, uint64_t loc, uint64_t count) { + size_t block_size = context->sectors_per_cluster * FAT32_SECTOR_SIZE; + for (uint64_t progress = 0; progress < count;) { + uint64_t block = (loc + progress) / block_size; + + uint64_t chunk = count - progress; + uint64_t offset = (loc + progress) % block_size; + if (chunk > block_size - offset) + chunk = block_size - offset; + + uint64_t base = (context->data_start_lba + (cluster_chain[block] - 2)) * block_size; + int r = part_read(&context->part, buf + progress, base + offset, chunk); + + if (r) + return false; + + progress += chunk; + } + + return true; } // Copy ucs-2 characters to char* @@ -149,73 +191,63 @@ static bool fat32_filename_to_8_3(char *dest, const char *src) { } static int fat32_open_in(struct fat32_context* context, struct fat32_directory_entry* directory, struct fat32_directory_entry* file, const char* name) { - int error; - uint32_t current_cluster_number = directory->cluster_num_high << 16 | directory->cluster_num_low; - + size_t block_size = context->sectors_per_cluster * FAT32_SECTOR_SIZE; char current_lfn[FAT32_LFN_MAX_FILENAME_LENGTH] = {0}; - do { - for (size_t sector_in_cluster = 0; sector_in_cluster < context->sectors_per_cluster; sector_in_cluster++) { - struct fat32_directory_entry directory_entries[FAT32_SECTOR_SIZE / sizeof(struct fat32_directory_entry)]; - error = fat32_load_fat_cluster_to_memory(context, current_cluster_number, directory_entries, sector_in_cluster * FAT32_SECTOR_SIZE, sizeof(directory_entries)); - if (error != 0) { - return error; + uint32_t current_cluster_number = directory->cluster_num_high << 16 | directory->cluster_num_low; + size_t dir_chain_len; + uint32_t *directory_cluster_chain = cache_cluster_chain(context, current_cluster_number, &dir_chain_len); + + struct fat32_directory_entry *directory_entries = ext_mem_alloc(dir_chain_len * block_size); + if (!read_cluster_chain(context, directory_cluster_chain, directory_entries, 0, dir_chain_len * block_size)) + return -1; + + for (size_t i = 0; i < (dir_chain_len * block_size) / sizeof(struct fat32_directory_entry); i++) { + if (directory_entries[i].file_name_and_ext[0] == 0x00) { + // no more entries here + break; + } + + if (directory_entries[i].attribute == FAT32_LFN_ATTRIBUTE) { + struct fat32_lfn_entry* lfn = (struct fat32_lfn_entry*) &directory_entries[i]; + + if (lfn->sequence_number & 0b01000000) { + // this lfn is the first entry in the table, clear the lfn buffer + memset(current_lfn, ' ', sizeof(current_lfn)); } - for (unsigned int i = 0; i < SIZEOF_ARRAY(directory_entries); i++) { - if (directory_entries[i].file_name_and_ext[0] == 0x00) { - // no more entries here + const unsigned int lfn_index = ((lfn->sequence_number & 0b00011111) - 1U) * 13U; + if (lfn_index >= FAT32_LFN_MAX_ENTRIES * 13) { + continue; + } + + fat32_lfncpy(current_lfn + lfn_index + 00, lfn->name1, 5); + fat32_lfncpy(current_lfn + lfn_index + 05, lfn->name2, 6); + fat32_lfncpy(current_lfn + lfn_index + 11, lfn->name3, 2); + + if (lfn_index != 0) + continue; + + // remove trailing spaces + for (int j = SIZEOF_ARRAY(current_lfn) - 2; j >= -1; j--) { + if (j == -1 || current_lfn[j] != ' ') { + current_lfn[j + 1] = 0; break; } + } - if (directory_entries[i].attribute == FAT32_LFN_ATTRIBUTE) { - struct fat32_lfn_entry* lfn = (struct fat32_lfn_entry*) &directory_entries[i]; - - if (lfn->sequence_number & 0b01000000) { - // this lfn is the first entry in the table, clear the lfn buffer - memset(current_lfn, ' ', sizeof(current_lfn)); - } - - const unsigned int lfn_index = ((lfn->sequence_number & 0b00011111) - 1U) * 13U; - if (lfn_index >= FAT32_LFN_MAX_ENTRIES * 13) { - continue; - } - - fat32_lfncpy(current_lfn + lfn_index + 00, lfn->name1, 5); - fat32_lfncpy(current_lfn + lfn_index + 05, lfn->name2, 6); - fat32_lfncpy(current_lfn + lfn_index + 11, lfn->name3, 2); - - if (lfn_index != 0) - continue; - - // remove trailing spaces - for (int j = SIZEOF_ARRAY(current_lfn) - 2; j >= -1; j--) { - if (j == -1 || current_lfn[j] != ' ') { - current_lfn[j + 1] = 0; - break; - } - } - - if (!strcmp(current_lfn, name)) { - *file = directory_entries[i+1]; - return 0; - } - } else { - char fn[8+3]; - if (fat32_filename_to_8_3(fn, name) && !strncmp(directory_entries[i].file_name_and_ext, fn, 8+3)) { - *file = directory_entries[i]; - return 0; - } - } + if (!strcmp(current_lfn, name)) { + *file = directory_entries[i+1]; + return 0; + } + } else { + char fn[8+3]; + if (fat32_filename_to_8_3(fn, name) && !strncmp(directory_entries[i].file_name_and_ext, fn, 8+3)) { + *file = directory_entries[i]; + return 0; } } - - error = fat32_read_cluster_from_map(context, current_cluster_number, ¤t_cluster_number); - - if (error != 0) { - return error; - } - } while (current_cluster_number >= 0x00000002 && current_cluster_number <= 0x0FFFFFEF); + } // file not found return -1; @@ -270,7 +302,6 @@ int fat32_open(struct fat32_file_handle* ret, struct part *part, const char* pat } if ((r = fat32_open_in(&context, ¤t_directory, ¤t_file, current_part)) != 0) { - print("fat32: file %s not found\n", path); return r; } @@ -281,80 +312,14 @@ int fat32_open(struct fat32_file_handle* ret, struct part *part, const char* pat ret->first_cluster = current_file.cluster_num_high << 16 | current_file.cluster_num_low; ret->size_clusters = DIV_ROUNDUP(current_file.file_size_bytes, FAT32_SECTOR_SIZE); ret->size_bytes = current_file.file_size_bytes; + uint32_t file_cluster = current_file.cluster_num_high << 16 | current_file.cluster_num_low; + size_t file_chain_len; + ret->cluster_chain = cache_cluster_chain(&context, file_cluster, &file_chain_len); return 0; } } } int fat32_read(struct fat32_file_handle* file, void* buf, uint64_t loc, uint64_t count) { - int r; - uint32_t cluster_size = file->context.sectors_per_cluster * FAT32_SECTOR_SIZE; - uint32_t current_cluster_number = file->first_cluster; - - // skip first clusters - while (loc >= cluster_size) { - r = fat32_read_cluster_from_map(&file->context, current_cluster_number, ¤t_cluster_number); - - if (r != 0) { - print("fat32: failed to read cluster %x from map\n", current_cluster_number); - return r; - } - - loc -= cluster_size; - } - - uint64_t read_total = 0; - - do { - // find non-fragmented cluster chains to improve read performance - uint32_t non_fragmented_clusters = 1; - for (size_t i = 0 ; i < count / cluster_size; i++) { - uint32_t next_cluster; - - r = fat32_read_cluster_from_map(&file->context, current_cluster_number + i, &next_cluster); - - if (r != 0) { - print("fat32: failed to read cluster %x from map\n", current_cluster_number); - return r; - } - - if (next_cluster != current_cluster_number + i + 1) { - break; - } - - non_fragmented_clusters++; - } - - // find largest read size - uint64_t current_read = count; - if (current_read > non_fragmented_clusters * cluster_size - loc) { - current_read = non_fragmented_clusters * cluster_size - loc; - } - - r = fat32_load_fat_cluster_to_memory(&file->context, current_cluster_number, buf + read_total, loc, current_read); - - if (r != 0) { - print("fat32: failed to load cluster %x to memory\n", current_cluster_number); - return r; - } - - loc = 0; - count -= current_read; - read_total += current_read; - - if (count == 0) { - return 0; - } - - // fetch next cluster number - r = fat32_read_cluster_from_map(&file->context, current_cluster_number, ¤t_cluster_number); - - if (r != 0) { - print("fat32: failed to read cluster %x from map\n", current_cluster_number); - return r; - } - } while (current_cluster_number >= 0x00000002 && current_cluster_number <= 0x0FFFFFEF); - - print("fat32: read failed, unexpected end of cluster chain\n"); - return 0; + return read_cluster_chain(&file->context, file->cluster_chain, buf, loc, count); } diff --git a/stage2/fs/fat32.h b/stage2/fs/fat32.h index 20990c3c..a08bd392 100644 --- a/stage2/fs/fat32.h +++ b/stage2/fs/fat32.h @@ -22,6 +22,7 @@ struct fat32_file_handle { uint32_t first_cluster; uint32_t size_bytes; uint32_t size_clusters; + uint32_t *cluster_chain; }; int fat32_check_signature(struct part *part);