code: def clean(self, remove_rw=False, allow_lazy=False):
          
  
          # To ensure clean unmount after reconstruct, we sort across all volumes in all our disks to provide a proper
          # order
          volumes = list(sorted(self.get_volumes(), key=lambda v: v.mountpoint or "", reverse=True))
          for v in volumes:
              try:
                  v.unmount(allow_lazy=allow_lazy)
              except ImageMounterError:
                  logger.error("Error unmounting volume {0}".format(v.mountpoint))
  
          # Now just clean the rest.
          for disk in self.disks:
              disk.unmount(remove_rw, allow_lazy=allow_lazy)
docs: Cleans all volumes of all disks (:func:`Volume.unmount`) and all disks (:func:`Disk.unmount`). Volume errors
          are ignored, but returns immediately on disk unmount error.
  
          :param bool remove_rw: indicates whether a read-write cache should be removed
          :param bool allow_lazy: indicates whether lazy unmounting is allowed
          :raises SubsystemError: when one of the underlying commands fails. Some are swallowed.
          :raises CleanupError: when actual cleanup fails. Some are swallowed.