@@ -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 ( ) {
@@ -600,7 +600,7 @@ where
600
600
601
601
/// Read from an open file.
602
602
pub fn read ( & self , file : RawFile , buffer : & mut [ u8 ] ) -> Result < usize , Error < D :: Error > > {
603
- let mut data = self . data . borrow_mut ( ) ;
603
+ let mut data = self . data . try_borrow_mut ( ) . map_err ( |_| Error :: LockError ) ? ;
604
604
605
605
let file_idx = data. get_file_by_id ( file) ?;
606
606
let volume_idx = data. get_volume_by_id ( data. open_files [ file_idx] . raw_volume ) ?;
@@ -648,7 +648,7 @@ where
648
648
#[ cfg( feature = "log" ) ]
649
649
debug ! ( "write(file={:?}, buffer={:x?}" , file, buffer) ;
650
650
651
- let mut data = self . data . borrow_mut ( ) ;
651
+ let mut data = self . data . try_borrow_mut ( ) . map_err ( |_| Error :: LockError ) ? ;
652
652
653
653
// Clone this so we can touch our other structures. Need to ensure we
654
654
// write it back at the end.
@@ -774,7 +774,7 @@ where
774
774
/// Close a file with the given raw file handle.
775
775
pub fn close_file ( & self , file : RawFile ) -> Result < ( ) , Error < D :: Error > > {
776
776
let flush_result = self . flush_file ( file) ;
777
- let mut data = self . data . borrow_mut ( ) ;
777
+ let mut data = self . data . try_borrow_mut ( ) . map_err ( |_| Error :: LockError ) ? ;
778
778
let file_idx = data. get_file_by_id ( file) ?;
779
779
data. open_files . swap_remove ( file_idx) ;
780
780
flush_result
@@ -783,7 +783,7 @@ where
783
783
/// Flush (update the entry) for a file with the given raw file handle.
784
784
pub fn flush_file ( & self , file : RawFile ) -> Result < ( ) , Error < D :: Error > > {
785
785
use core:: ops:: DerefMut ;
786
- let mut data = self . data . borrow_mut ( ) ;
786
+ let mut data = self . data . try_borrow_mut ( ) . map_err ( |_| Error :: LockError ) ? ;
787
787
let data = data. deref_mut ( ) ;
788
788
789
789
let file_id = data. get_file_by_id ( file) ?;
@@ -826,7 +826,7 @@ where
826
826
827
827
/// Seek a file with an offset from the start of the file.
828
828
pub fn file_seek_from_start ( & self , file : RawFile , offset : u32 ) -> Result < ( ) , Error < D :: Error > > {
829
- let mut data = self . data . borrow_mut ( ) ;
829
+ let mut data = self . data . try_borrow_mut ( ) . map_err ( |_| Error :: LockError ) ? ;
830
830
let file_idx = data. get_file_by_id ( file) ?;
831
831
data. open_files [ file_idx]
832
832
. seek_from_start ( offset)
@@ -840,7 +840,7 @@ where
840
840
file : RawFile ,
841
841
offset : i32 ,
842
842
) -> Result < ( ) , Error < D :: Error > > {
843
- let mut data = self . data . borrow_mut ( ) ;
843
+ let mut data = self . data . try_borrow_mut ( ) . map_err ( |_| Error :: LockError ) ? ;
844
844
let file_idx = data. get_file_by_id ( file) ?;
845
845
data. open_files [ file_idx]
846
846
. seek_from_current ( offset)
@@ -850,7 +850,7 @@ where
850
850
851
851
/// Seek a file with an offset back from the end of the file.
852
852
pub fn file_seek_from_end ( & self , file : RawFile , offset : u32 ) -> Result < ( ) , Error < D :: Error > > {
853
- let mut data = self . data . borrow_mut ( ) ;
853
+ let mut data = self . data . try_borrow_mut ( ) . map_err ( |_| Error :: LockError ) ? ;
854
854
let file_idx = data. get_file_by_id ( file) ?;
855
855
data. open_files [ file_idx]
856
856
. seek_from_end ( offset)
@@ -882,7 +882,7 @@ where
882
882
N : ToShortFileName ,
883
883
{
884
884
use core:: ops:: DerefMut ;
885
- let mut data = self . data . borrow_mut ( ) ;
885
+ let mut data = self . data . try_borrow_mut ( ) . map_err ( |_| Error :: LockError ) ? ;
886
886
let data = data. deref_mut ( ) ;
887
887
888
888
// This check is load-bearing - we do an unchecked push later.
0 commit comments