@@ -179,7 +179,8 @@ impl FatVolume {
179
179
}
180
180
trace ! ( "Reading info sector" ) ;
181
181
let block = block_cache
182
- . read_mut ( fat32_info. info_location ) . await
182
+ . read_mut ( fat32_info. info_location )
183
+ . await
183
184
. map_err ( Error :: DeviceError ) ?;
184
185
if let Some ( count) = self . free_clusters_count {
185
186
block[ 488 ..492 ] . copy_from_slice ( & count. to_le_bytes ( ) ) ;
@@ -221,7 +222,8 @@ impl FatVolume {
221
222
let this_fat_ent_offset = ( fat_offset % Block :: LEN_U32 ) as usize ;
222
223
trace ! ( "Reading FAT for update" ) ;
223
224
let block = block_cache
224
- . read_mut ( this_fat_block_num) . await
225
+ . read_mut ( this_fat_block_num)
226
+ . await
225
227
. map_err ( Error :: DeviceError ) ?;
226
228
// See <https://en.wikipedia.org/wiki/Design_of_the_FAT_file_system>
227
229
let entry = match new_value {
@@ -243,7 +245,8 @@ impl FatVolume {
243
245
let this_fat_ent_offset = ( fat_offset % Block :: LEN_U32 ) as usize ;
244
246
trace ! ( "Reading FAT for update" ) ;
245
247
let block = block_cache
246
- . read_mut ( this_fat_block_num) . await
248
+ . read_mut ( this_fat_block_num)
249
+ . await
247
250
. map_err ( Error :: DeviceError ) ?;
248
251
let entry = match new_value {
249
252
ClusterId :: INVALID => 0x0FFF_FFF6 ,
@@ -408,7 +411,8 @@ impl FatVolume {
408
411
for block_idx in first_dir_block_num. range ( dir_size) {
409
412
trace ! ( "Reading directory" ) ;
410
413
let block = block_cache
411
- . read_mut ( block_idx) . await
414
+ . read_mut ( block_idx)
415
+ . await
412
416
. map_err ( Error :: DeviceError ) ?;
413
417
for ( i, dir_entry_bytes) in
414
418
block. chunks_exact_mut ( OnDiskDirEntry :: LEN ) . enumerate ( )
@@ -440,7 +444,8 @@ impl FatVolume {
440
444
Some ( n)
441
445
}
442
446
Err ( Error :: EndOfFile ) => {
443
- let c = self . alloc_cluster ( block_cache, Some ( cluster) , true ) . await ?;
447
+ let c =
448
+ self . alloc_cluster ( block_cache, Some ( cluster) , true ) . await ?;
444
449
first_dir_block_num = self . cluster_to_block ( c) ;
445
450
Some ( c)
446
451
}
@@ -469,7 +474,8 @@ impl FatVolume {
469
474
// Read a block of directory entries
470
475
trace ! ( "Reading directory" ) ;
471
476
let block = block_cache
472
- . read_mut ( block_idx) . await
477
+ . read_mut ( block_idx)
478
+ . await
473
479
. map_err ( Error :: DeviceError ) ?;
474
480
// Are any entries in the block we just loaded blank? If so
475
481
// we can use them.
@@ -533,10 +539,12 @@ impl FatVolume {
533
539
{
534
540
match & self . fat_specific_info {
535
541
FatSpecificInfo :: Fat16 ( fat16_info) => {
536
- self . iterate_fat16 ( dir_info, fat16_info, block_cache, func) . await
542
+ self . iterate_fat16 ( dir_info, fat16_info, block_cache, func)
543
+ . await
537
544
}
538
545
FatSpecificInfo :: Fat32 ( fat32_info) => {
539
- self . iterate_fat32 ( dir_info, fat32_info, block_cache, func) . await
546
+ self . iterate_fat32 ( dir_info, fat32_info, block_cache, func)
547
+ . await
540
548
}
541
549
}
542
550
}
@@ -624,7 +632,10 @@ impl FatVolume {
624
632
let start_block_idx = self . cluster_to_block ( cluster) ;
625
633
for block_idx in start_block_idx. range ( BlockCount ( u32:: from ( self . blocks_per_cluster ) ) ) {
626
634
trace ! ( "Reading FAT" ) ;
627
- let block = block_cache. read ( block_idx) . await . map_err ( Error :: DeviceError ) ?;
635
+ let block = block_cache
636
+ . read ( block_idx)
637
+ . await
638
+ . map_err ( Error :: DeviceError ) ?;
628
639
for ( i, dir_entry_bytes) in block. chunks_exact ( OnDiskDirEntry :: LEN ) . enumerate ( ) {
629
640
let dir_entry = OnDiskDirEntry :: new ( dir_entry_bytes) ;
630
641
if dir_entry. is_end ( ) {
@@ -679,12 +690,10 @@ impl FatVolume {
679
690
680
691
while let Some ( cluster) = current_cluster {
681
692
for block in first_dir_block_num. range ( dir_size) {
682
- match self . find_entry_in_block (
683
- block_cache,
684
- FatType :: Fat16 ,
685
- match_name,
686
- block,
687
- ) . await {
693
+ match self
694
+ . find_entry_in_block ( block_cache, FatType :: Fat16 , match_name, block)
695
+ . await
696
+ {
688
697
Err ( Error :: NotFound ) => continue ,
689
698
x => return x,
690
699
}
@@ -711,12 +720,10 @@ impl FatVolume {
711
720
while let Some ( cluster) = current_cluster {
712
721
let block_idx = self . cluster_to_block ( cluster) ;
713
722
for block in block_idx. range ( BlockCount ( u32:: from ( self . blocks_per_cluster ) ) ) {
714
- match self . find_entry_in_block (
715
- block_cache,
716
- FatType :: Fat32 ,
717
- match_name,
718
- block,
719
- ) . await {
723
+ match self
724
+ . find_entry_in_block ( block_cache, FatType :: Fat32 , match_name, block)
725
+ . await
726
+ {
720
727
Err ( Error :: NotFound ) => continue ,
721
728
x => return x,
722
729
}
@@ -744,7 +751,10 @@ impl FatVolume {
744
751
D : BlockDevice ,
745
752
{
746
753
trace ! ( "Reading directory" ) ;
747
- let block = block_cache. read ( block_idx) . await . map_err ( Error :: DeviceError ) ?;
754
+ let block = block_cache
755
+ . read ( block_idx)
756
+ . await
757
+ . map_err ( Error :: DeviceError ) ?;
748
758
for ( i, dir_entry_bytes) in block. chunks_exact ( OnDiskDirEntry :: LEN ) . enumerate ( ) {
749
759
let dir_entry = OnDiskDirEntry :: new ( dir_entry_bytes) ;
750
760
if dir_entry. is_end ( ) {
@@ -795,7 +805,10 @@ impl FatVolume {
795
805
while let Some ( cluster) = current_cluster {
796
806
// Scan the cluster / root dir a block at a time
797
807
for block_idx in first_dir_block_num. range ( dir_size) {
798
- match self . delete_entry_in_block ( block_cache, match_name, block_idx) . await {
808
+ match self
809
+ . delete_entry_in_block ( block_cache, match_name, block_idx)
810
+ . await
811
+ {
799
812
Err ( Error :: NotFound ) => {
800
813
// Carry on
801
814
}
@@ -835,7 +848,10 @@ impl FatVolume {
835
848
for block_idx in
836
849
start_block_idx. range ( BlockCount ( u32:: from ( self . blocks_per_cluster ) ) )
837
850
{
838
- match self . delete_entry_in_block ( block_cache, match_name, block_idx) . await {
851
+ match self
852
+ . delete_entry_in_block ( block_cache, match_name, block_idx)
853
+ . await
854
+ {
839
855
Err ( Error :: NotFound ) => {
840
856
// Carry on
841
857
continue ;
@@ -877,7 +893,8 @@ impl FatVolume {
877
893
{
878
894
trace ! ( "Reading directory" ) ;
879
895
let block = block_cache
880
- . read_mut ( block_idx) . await
896
+ . read_mut ( block_idx)
897
+ . await
881
898
. map_err ( Error :: DeviceError ) ?;
882
899
for ( i, dir_entry_bytes) in block. chunks_exact_mut ( OnDiskDirEntry :: LEN ) . enumerate ( ) {
883
900
let dir_entry = OnDiskDirEntry :: new ( dir_entry_bytes) ;
@@ -924,7 +941,8 @@ impl FatVolume {
924
941
. map_err ( |_| Error :: ConversionError ) ?;
925
942
trace ! ( "Reading block {:?}" , this_fat_block_num) ;
926
943
let block = block_cache
927
- . read ( this_fat_block_num) . await
944
+ . read ( this_fat_block_num)
945
+ . await
928
946
. map_err ( Error :: DeviceError ) ?;
929
947
while this_fat_ent_offset <= Block :: LEN - 2 {
930
948
let fat_entry = LittleEndian :: read_u16 (
@@ -954,7 +972,8 @@ impl FatVolume {
954
972
. map_err ( |_| Error :: ConversionError ) ?;
955
973
trace ! ( "Reading block {:?}" , this_fat_block_num) ;
956
974
let block = block_cache
957
- . read ( this_fat_block_num) . await
975
+ . read ( this_fat_block_num)
976
+ . await
958
977
. map_err ( Error :: DeviceError ) ?;
959
978
while this_fat_ent_offset <= Block :: LEN - 4 {
960
979
let fat_entry = LittleEndian :: read_u32 (
@@ -995,7 +1014,9 @@ impl FatVolume {
995
1014
start_cluster,
996
1015
end_cluster
997
1016
) ;
998
- let new_cluster = match self . find_next_free_cluster ( block_cache, start_cluster, end_cluster) . await
1017
+ let new_cluster = match self
1018
+ . find_next_free_cluster ( block_cache, start_cluster, end_cluster)
1019
+ . await
999
1020
{
1000
1021
Ok ( cluster) => cluster,
1001
1022
Err ( _) if start_cluster. 0 > RESERVED_ENTRIES => {
@@ -1004,11 +1025,13 @@ impl FatVolume {
1004
1025
ClusterId ( RESERVED_ENTRIES ) ,
1005
1026
end_cluster
1006
1027
) ;
1007
- self . find_next_free_cluster ( block_cache, ClusterId ( RESERVED_ENTRIES ) , end_cluster) . await ?
1028
+ self . find_next_free_cluster ( block_cache, ClusterId ( RESERVED_ENTRIES ) , end_cluster)
1029
+ . await ?
1008
1030
}
1009
1031
Err ( e) => return Err ( e) ,
1010
1032
} ;
1011
- self . update_fat ( block_cache, new_cluster, ClusterId :: END_OF_FILE ) . await ?;
1033
+ self . update_fat ( block_cache, new_cluster, ClusterId :: END_OF_FILE )
1034
+ . await ?;
1012
1035
if let Some ( cluster) = prev_cluster {
1013
1036
trace ! (
1014
1037
"Updating old cluster {:?} to {:?} in FAT" ,
@@ -1022,21 +1045,22 @@ impl FatVolume {
1022
1045
new_cluster,
1023
1046
end_cluster
1024
1047
) ;
1025
- self . next_free_cluster =
1026
- match self . find_next_free_cluster ( block_cache, new_cluster, end_cluster) . await {
1027
- Ok ( cluster ) => Some ( cluster ) ,
1028
- Err ( _ ) if new_cluster . 0 > RESERVED_ENTRIES => {
1029
- match self . find_next_free_cluster (
1030
- block_cache ,
1031
- ClusterId ( RESERVED_ENTRIES ) ,
1032
- end_cluster,
1033
- ) . await {
1034
- Ok ( cluster ) => Some ( cluster ) ,
1035
- Err ( e ) => return Err ( e ) ,
1036
- }
1048
+ self . next_free_cluster = match self
1049
+ . find_next_free_cluster ( block_cache, new_cluster, end_cluster)
1050
+ . await
1051
+ {
1052
+ Ok ( cluster ) => Some ( cluster ) ,
1053
+ Err ( _ ) if new_cluster . 0 > RESERVED_ENTRIES => {
1054
+ match self
1055
+ . find_next_free_cluster ( block_cache , ClusterId ( RESERVED_ENTRIES ) , end_cluster)
1056
+ . await
1057
+ {
1058
+ Ok ( cluster ) => Some ( cluster ) ,
1059
+ Err ( e ) => return Err ( e ) ,
1037
1060
}
1038
- Err ( e) => return Err ( e) ,
1039
- } ;
1061
+ }
1062
+ Err ( e) => return Err ( e) ,
1063
+ } ;
1040
1064
debug ! ( "Next free cluster is {:?}" , self . next_free_cluster) ;
1041
1065
if let Some ( ref mut number_free_cluster) = self . free_clusters_count {
1042
1066
* number_free_cluster -= 1 ;
@@ -1049,7 +1073,8 @@ impl FatVolume {
1049
1073
trace ! ( "Zeroing cluster" ) ;
1050
1074
block_cache
1051
1075
. block_device ( )
1052
- . write ( & blocks, block_idx) . await
1076
+ . write ( & blocks, block_idx)
1077
+ . await
1053
1078
. map_err ( Error :: DeviceError ) ?;
1054
1079
}
1055
1080
}
@@ -1085,7 +1110,8 @@ impl FatVolume {
1085
1110
} else {
1086
1111
self . next_free_cluster = Some ( next) ;
1087
1112
}
1088
- self . update_fat ( block_cache, cluster, ClusterId :: END_OF_FILE ) . await ?;
1113
+ self . update_fat ( block_cache, cluster, ClusterId :: END_OF_FILE )
1114
+ . await ?;
1089
1115
loop {
1090
1116
match self . next_cluster ( block_cache, next) . await {
1091
1117
Ok ( n) => {
@@ -1121,7 +1147,8 @@ impl FatVolume {
1121
1147
} ;
1122
1148
trace ! ( "Reading directory for update" ) ;
1123
1149
let block = block_cache
1124
- . read_mut ( entry. entry_block ) . await
1150
+ . read_mut ( entry. entry_block )
1151
+ . await
1125
1152
. map_err ( Error :: DeviceError ) ?;
1126
1153
1127
1154
let start = usize:: try_from ( entry. entry_offset ) . map_err ( |_| Error :: ConversionError ) ?;
@@ -1146,7 +1173,10 @@ where
1146
1173
D :: Error : core:: fmt:: Debug ,
1147
1174
{
1148
1175
trace ! ( "Reading BPB" ) ;
1149
- let block = block_cache. read ( lba_start) . await . map_err ( Error :: DeviceError ) ?;
1176
+ let block = block_cache
1177
+ . read ( lba_start)
1178
+ . await
1179
+ . map_err ( Error :: DeviceError ) ?;
1150
1180
let bpb = Bpb :: create_from_bytes ( block) . map_err ( Error :: FormatError ) ?;
1151
1181
match bpb. fat_type {
1152
1182
FatType :: Fat16 => {
@@ -1208,7 +1238,8 @@ where
1208
1238
// Now we don't need the BPB, update the volume with data from the info sector
1209
1239
trace ! ( "Reading info block" ) ;
1210
1240
let info_block = block_cache
1211
- . read ( lba_start + info_location) . await
1241
+ . read ( lba_start + info_location)
1242
+ . await
1212
1243
. map_err ( Error :: DeviceError ) ?;
1213
1244
let info_sector =
1214
1245
InfoSector :: create_from_bytes ( info_block) . map_err ( Error :: FormatError ) ?;
0 commit comments