diff options
author | Ralf Kirchner <ralf.kirchner@embedded-brains.de> | 2012-12-05 13:43:34 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2012-12-05 15:26:48 +0100 |
commit | 42a22f0824c4618b864582804ce1440b548a462f (patch) | |
tree | 835abe13c7d2140f3efa8cf8c256928c0b32e1a0 /cpukit/libfs/src/dosfs/fat_fat_operations.c | |
parent | dosfs: Block size optimization (diff) | |
download | rtems-42a22f0824c4618b864582804ce1440b548a462f.tar.bz2 |
dosfs: Cluster write optimization
Separate cluster write from sector write for quick file write.
New test fstests/fsdosfswrite01.
Diffstat (limited to 'cpukit/libfs/src/dosfs/fat_fat_operations.c')
-rw-r--r-- | cpukit/libfs/src/dosfs/fat_fat_operations.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/cpukit/libfs/src/dosfs/fat_fat_operations.c b/cpukit/libfs/src/dosfs/fat_fat_operations.c index 291819d343..7496c09272 100644 --- a/cpukit/libfs/src/dosfs/fat_fat_operations.c +++ b/cpukit/libfs/src/dosfs/fat_fat_operations.c @@ -54,6 +54,7 @@ fat_scan_fat_for_free_clusters( uint32_t save_cln = 0; uint32_t data_cls_val = fs_info->vol.data_cls + 2; uint32_t i = 2; + ssize_t bytes_written; *cls_added = 0; @@ -114,13 +115,14 @@ fat_scan_fat_for_free_clusters( goto cleanup; } - if (zero_fill) { - uint32_t sec = fat_cluster_num_to_sector_num(fs_info, - cl4find); - - rc = _fat_block_zero(fs_info, sec, 0, fs_info->vol.bpc); - if ( rc != RC_OK ) + if (zero_fill) + { + bytes_written = fat_cluster_set (fs_info, cl4find, 0, fs_info->vol.bpc, 0); + if (fs_info->vol.bpc != bytes_written) + { + rc = -1; goto cleanup; + } } save_cln = cl4find; |