On Thu, Sep 25, 2025, 10:43 Zhao Liu <[email protected]> wrote:
> > + fn snapshot_migration_state(&self, target: &mut Self::Migrated) ->
> Result<(), InvalidError> {
> > + self.lock().unwrap().snapshot_migration_state(target)
> > + }
>
> Or maybe your previous sentence is worth commenting on here:
>
> // For non-BQL-protected device we cannot know that another
> // thread isn't taking the lock. So, always acquire the lock.
>
I don't think here there's any alternative, that is a way to write code
without taking the lock. However...
>
> > + fn restore_migrated_state_mut(
> > + &mut self,
> > + source: Self::Migrated,
> > + version_id: u8,
> > + ) -> Result<(), InvalidError> {
> > + self.restore_migrated_state(source, version_id)
>
... this could use get_mut().
Paolo
> + }
> > +}
> > +
> > +impl<T: ToMigrationState> ToMigrationStateShared for Mutex<T> {
> > + fn restore_migrated_state(
> > + &self,
> > + source: Self::Migrated,
> > + version_id: u8,
> > + ) -> Result<(), InvalidError> {
> > + self.lock()
> > + .unwrap()
> > + .restore_migrated_state_mut(source, version_id)
> > + }
> > +}
> > +
>
>