When there are files not satisfying their storage policy and no move is possible, Mover exits with SUCCESS. It should exit with NO_MOVE_BLOCK.
The bug seems in the following code. When StorageTypeDiff is not empty and scheduleMoves4Block return false, it does not update hasRemaining. Also, there is no indication of "No block can be moved" for the entire iteration.