@@ -135,7 +135,7 @@ where
135
135
const PARTITION_INFO_LBA_START_INDEX : usize = 8 ;
136
136
const PARTITION_INFO_NUM_BLOCKS_INDEX : usize = 12 ;
137
137
138
- let mut data = self . data . borrow_mut ( ) ;
138
+ let mut data = self . data . try_borrow_mut ( ) . map_err ( |_| Error :: LockError ) ? ;
139
139
140
140
if data. open_volumes . is_full ( ) {
141
141
return Err ( Error :: TooManyOpenVolumes ) ;
@@ -218,7 +218,7 @@ where
218
218
pub fn open_root_dir ( & self , volume : RawVolume ) -> Result < RawDirectory , Error < D :: Error > > {
219
219
// Opening a root directory twice is OK
220
220
221
- let mut data = self . data . borrow_mut ( ) ;
221
+ let mut data = self . data . try_borrow_mut ( ) . map_err ( |_| Error :: LockError ) ? ;
222
222
223
223
let directory_id = RawDirectory ( data. id_generator . generate ( ) ) ;
224
224
let dir_info = DirectoryInfo {
@@ -247,7 +247,7 @@ where
247
247
where
248
248
N : ToShortFileName ,
249
249
{
250
- let mut data = self . data . borrow_mut ( ) ;
250
+ let mut data = self . data . try_borrow_mut ( ) . map_err ( |_| Error :: LockError ) ? ;
251
251
252
252
if data. open_dirs . is_full ( ) {
253
253
return Err ( Error :: TooManyOpenDirs ) ;
@@ -310,7 +310,7 @@ where
310
310
/// Close a directory. You cannot perform operations on an open directory
311
311
/// and so must close it if you want to do something with it.
312
312
pub fn close_dir ( & self , directory : RawDirectory ) -> Result < ( ) , Error < D :: Error > > {
313
- let mut data = self . data . borrow_mut ( ) ;
313
+ let mut data = self . data . try_borrow_mut ( ) . map_err ( |_| Error :: LockError ) ? ;
314
314
315
315
for ( idx, info) in data. open_dirs . iter ( ) . enumerate ( ) {
316
316
if directory == info. raw_directory {
@@ -325,7 +325,7 @@ where
325
325
///
326
326
/// You can't close it if there are any files or directories open on it.
327
327
pub fn close_volume ( & self , volume : RawVolume ) -> Result < ( ) , Error < D :: Error > > {
328
- let mut data = self . data . borrow_mut ( ) ;
328
+ let mut data = self . data . try_borrow_mut ( ) . map_err ( |_| Error :: LockError ) ? ;
329
329
330
330
for f in data. open_files . iter ( ) {
331
331
if f. raw_volume == volume {
@@ -393,7 +393,7 @@ where
393
393
where
394
394
N : ToShortFileName ,
395
395
{
396
- let mut data = self . data . borrow_mut ( ) ;
396
+ let mut data = self . data . try_borrow_mut ( ) . map_err ( |_| Error :: LockError ) ? ;
397
397
398
398
// This check is load-bearing - we do an unchecked push later.
399
399
if data. open_files . is_full ( ) {
@@ -625,7 +625,7 @@ where
625
625
626
626
/// Read from an open file.
627
627
pub fn read ( & self , file : RawFile , buffer : & mut [ u8 ] ) -> Result < usize , Error < D :: Error > > {
628
- let mut data = self . data . borrow_mut ( ) ;
628
+ let mut data = self . data . try_borrow_mut ( ) . map_err ( |_| Error :: LockError ) ? ;
629
629
630
630
let file_idx = data. get_file_by_id ( file) ?;
631
631
let volume_idx = data. get_volume_by_id ( data. open_files [ file_idx] . raw_volume ) ?;
@@ -673,7 +673,7 @@ where
673
673
#[ cfg( feature = "log" ) ]
674
674
debug ! ( "write(file={:?}, buffer={:x?}" , file, buffer) ;
675
675
676
- let mut data = self . data . borrow_mut ( ) ;
676
+ let mut data = self . data . try_borrow_mut ( ) . map_err ( |_| Error :: LockError ) ? ;
677
677
678
678
// Clone this so we can touch our other structures. Need to ensure we
679
679
// write it back at the end.
@@ -799,7 +799,7 @@ where
799
799
/// Close a file with the given raw file handle.
800
800
pub fn close_file ( & self , file : RawFile ) -> Result < ( ) , Error < D :: Error > > {
801
801
let flush_result = self . flush_file ( file) ;
802
- let mut data = self . data . borrow_mut ( ) ;
802
+ let mut data = self . data . try_borrow_mut ( ) . map_err ( |_| Error :: LockError ) ? ;
803
803
let file_idx = data. get_file_by_id ( file) ?;
804
804
data. open_files . swap_remove ( file_idx) ;
805
805
flush_result
@@ -808,7 +808,7 @@ where
808
808
/// Flush (update the entry) for a file with the given raw file handle.
809
809
pub fn flush_file ( & self , file : RawFile ) -> Result < ( ) , Error < D :: Error > > {
810
810
use core:: ops:: DerefMut ;
811
- let mut data = self . data . borrow_mut ( ) ;
811
+ let mut data = self . data . try_borrow_mut ( ) . map_err ( |_| Error :: LockError ) ? ;
812
812
let data = data. deref_mut ( ) ;
813
813
814
814
let file_id = data. get_file_by_id ( file) ?;
@@ -851,7 +851,7 @@ where
851
851
852
852
/// Seek a file with an offset from the start of the file.
853
853
pub fn file_seek_from_start ( & self , file : RawFile , offset : u32 ) -> Result < ( ) , Error < D :: Error > > {
854
- let mut data = self . data . borrow_mut ( ) ;
854
+ let mut data = self . data . try_borrow_mut ( ) . map_err ( |_| Error :: LockError ) ? ;
855
855
let file_idx = data. get_file_by_id ( file) ?;
856
856
data. open_files [ file_idx]
857
857
. seek_from_start ( offset)
@@ -865,7 +865,7 @@ where
865
865
file : RawFile ,
866
866
offset : i32 ,
867
867
) -> Result < ( ) , Error < D :: Error > > {
868
- let mut data = self . data . borrow_mut ( ) ;
868
+ let mut data = self . data . try_borrow_mut ( ) . map_err ( |_| Error :: LockError ) ? ;
869
869
let file_idx = data. get_file_by_id ( file) ?;
870
870
data. open_files [ file_idx]
871
871
. seek_from_current ( offset)
@@ -875,7 +875,7 @@ where
875
875
876
876
/// Seek a file with an offset back from the end of the file.
877
877
pub fn file_seek_from_end ( & self , file : RawFile , offset : u32 ) -> Result < ( ) , Error < D :: Error > > {
878
- let mut data = self . data . borrow_mut ( ) ;
878
+ let mut data = self . data . try_borrow_mut ( ) . map_err ( |_| Error :: LockError ) ? ;
879
879
let file_idx = data. get_file_by_id ( file) ?;
880
880
data. open_files [ file_idx]
881
881
. seek_from_end ( offset)
@@ -907,7 +907,7 @@ where
907
907
N : ToShortFileName ,
908
908
{
909
909
use core:: ops:: DerefMut ;
910
- let mut data = self . data . borrow_mut ( ) ;
910
+ let mut data = self . data . try_borrow_mut ( ) . map_err ( |_| Error :: LockError ) ? ;
911
911
let data = data. deref_mut ( ) ;
912
912
913
913
// This check is load-bearing - we do an unchecked push later.
0 commit comments