@@ -136,7 +136,7 @@ where
136
136
const PARTITION_INFO_LBA_START_INDEX : usize = 8 ;
137
137
const PARTITION_INFO_NUM_BLOCKS_INDEX : usize = 12 ;
138
138
139
- let mut data = self . data . borrow_mut ( ) ;
139
+ let mut data = self . data . try_borrow_mut ( ) . map_err ( |_| Error :: LockError ) ? ;
140
140
141
141
if data. open_volumes . is_full ( ) {
142
142
return Err ( Error :: TooManyOpenVolumes ) ;
@@ -220,7 +220,7 @@ where
220
220
pub fn open_root_dir ( & self , volume : RawVolume ) -> Result < RawDirectory , Error < D :: Error > > {
221
221
// Opening a root directory twice is OK
222
222
223
- let mut data = self . data . borrow_mut ( ) ;
223
+ let mut data = self . data . try_borrow_mut ( ) . map_err ( |_| Error :: LockError ) ? ;
224
224
225
225
let directory_id = RawDirectory ( data. id_generator . generate ( ) ) ;
226
226
let dir_info = DirectoryInfo {
@@ -249,7 +249,7 @@ where
249
249
where
250
250
N : ToShortFileName ,
251
251
{
252
- let mut data = self . data . borrow_mut ( ) ;
252
+ let mut data = self . data . try_borrow_mut ( ) . map_err ( |_| Error :: LockError ) ? ;
253
253
254
254
if data. open_dirs . is_full ( ) {
255
255
return Err ( Error :: TooManyOpenDirs ) ;
@@ -312,7 +312,7 @@ where
312
312
/// Close a directory. You cannot perform operations on an open directory
313
313
/// and so must close it if you want to do something with it.
314
314
pub fn close_dir ( & self , directory : RawDirectory ) -> Result < ( ) , Error < D :: Error > > {
315
- let mut data = self . data . borrow_mut ( ) ;
315
+ let mut data = self . data . try_borrow_mut ( ) . map_err ( |_| Error :: LockError ) ? ;
316
316
317
317
for ( idx, info) in data. open_dirs . iter ( ) . enumerate ( ) {
318
318
if directory == info. raw_directory {
@@ -327,7 +327,7 @@ where
327
327
///
328
328
/// You can't close it if there are any files or directories open on it.
329
329
pub fn close_volume ( & self , volume : RawVolume ) -> Result < ( ) , Error < D :: Error > > {
330
- let mut data = self . data . borrow_mut ( ) ;
330
+ let mut data = self . data . try_borrow_mut ( ) . map_err ( |_| Error :: LockError ) ? ;
331
331
332
332
for f in data. open_files . iter ( ) {
333
333
if f. raw_volume == volume {
@@ -395,7 +395,7 @@ where
395
395
where
396
396
N : ToShortFileName ,
397
397
{
398
- let mut data = self . data . borrow_mut ( ) ;
398
+ let mut data = self . data . try_borrow_mut ( ) . map_err ( |_| Error :: LockError ) ? ;
399
399
400
400
// This check is load-bearing - we do an unchecked push later.
401
401
if data. open_files . is_full ( ) {
@@ -627,7 +627,7 @@ where
627
627
628
628
/// Read from an open file.
629
629
pub fn read ( & self , file : RawFile , buffer : & mut [ u8 ] ) -> Result < usize , Error < D :: Error > > {
630
- let mut data = self . data . borrow_mut ( ) ;
630
+ let mut data = self . data . try_borrow_mut ( ) . map_err ( |_| Error :: LockError ) ? ;
631
631
632
632
let file_idx = data. get_file_by_id ( file) ?;
633
633
let volume_idx = data. get_volume_by_id ( data. open_files [ file_idx] . raw_volume ) ?;
@@ -676,7 +676,7 @@ where
676
676
#[ cfg( feature = "log" ) ]
677
677
debug ! ( "write(file={:?}, buffer={:x?}" , file, buffer) ;
678
678
679
- let mut data = self . data . borrow_mut ( ) ;
679
+ let mut data = self . data . try_borrow_mut ( ) . map_err ( |_| Error :: LockError ) ? ;
680
680
681
681
// Clone this so we can touch our other structures. Need to ensure we
682
682
// write it back at the end.
@@ -802,7 +802,7 @@ where
802
802
/// Close a file with the given raw file handle.
803
803
pub fn close_file ( & self , file : RawFile ) -> Result < ( ) , Error < D :: Error > > {
804
804
let flush_result = self . flush_file ( file) ;
805
- let mut data = self . data . borrow_mut ( ) ;
805
+ let mut data = self . data . try_borrow_mut ( ) . map_err ( |_| Error :: LockError ) ? ;
806
806
let file_idx = data. get_file_by_id ( file) ?;
807
807
data. open_files . swap_remove ( file_idx) ;
808
808
flush_result
@@ -811,7 +811,7 @@ where
811
811
/// Flush (update the entry) for a file with the given raw file handle.
812
812
pub fn flush_file ( & self , file : RawFile ) -> Result < ( ) , Error < D :: Error > > {
813
813
use core:: ops:: DerefMut ;
814
- let mut data = self . data . borrow_mut ( ) ;
814
+ let mut data = self . data . try_borrow_mut ( ) . map_err ( |_| Error :: LockError ) ? ;
815
815
let data = data. deref_mut ( ) ;
816
816
817
817
let file_id = data. get_file_by_id ( file) ?;
@@ -854,7 +854,7 @@ where
854
854
855
855
/// Seek a file with an offset from the start of the file.
856
856
pub fn file_seek_from_start ( & self , file : RawFile , offset : u32 ) -> Result < ( ) , Error < D :: Error > > {
857
- let mut data = self . data . borrow_mut ( ) ;
857
+ let mut data = self . data . try_borrow_mut ( ) . map_err ( |_| Error :: LockError ) ? ;
858
858
let file_idx = data. get_file_by_id ( file) ?;
859
859
data. open_files [ file_idx]
860
860
. seek_from_start ( offset)
@@ -868,7 +868,7 @@ where
868
868
file : RawFile ,
869
869
offset : i32 ,
870
870
) -> Result < ( ) , Error < D :: Error > > {
871
- let mut data = self . data . borrow_mut ( ) ;
871
+ let mut data = self . data . try_borrow_mut ( ) . map_err ( |_| Error :: LockError ) ? ;
872
872
let file_idx = data. get_file_by_id ( file) ?;
873
873
data. open_files [ file_idx]
874
874
. seek_from_current ( offset)
@@ -878,7 +878,7 @@ where
878
878
879
879
/// Seek a file with an offset back from the end of the file.
880
880
pub fn file_seek_from_end ( & self , file : RawFile , offset : u32 ) -> Result < ( ) , Error < D :: Error > > {
881
- let mut data = self . data . borrow_mut ( ) ;
881
+ let mut data = self . data . try_borrow_mut ( ) . map_err ( |_| Error :: LockError ) ? ;
882
882
let file_idx = data. get_file_by_id ( file) ?;
883
883
data. open_files [ file_idx]
884
884
. seek_from_end ( offset)
@@ -910,7 +910,7 @@ where
910
910
N : ToShortFileName ,
911
911
{
912
912
use core:: ops:: DerefMut ;
913
- let mut data = self . data . borrow_mut ( ) ;
913
+ let mut data = self . data . try_borrow_mut ( ) . map_err ( |_| Error :: LockError ) ? ;
914
914
let data = data. deref_mut ( ) ;
915
915
916
916
// This check is load-bearing - we do an unchecked push later.
0 commit comments