Although it would be much slower, there's an argument for doing the checks one copy at a time; it would lessen the chance of a later copy being performed that depends on the first copy. In the absence of being able to do a transactional set of copies, proposed-migration *tends* to perform the copies roughly in dependency order.
Of course, if there's a large set of circularly-dependent copies, we're screwed either way. So maybe it isn't worth the slowness given that this type of failure is rare.
Although it would be much slower, there's an argument for doing the checks one copy at a time; it would lessen the chance of a later copy being performed that depends on the first copy. In the absence of being able to do a transactional set of copies, proposed-migration *tends* to perform the copies roughly in dependency order.
Of course, if there's a large set of circularly- dependent copies, we're screwed either way. So maybe it isn't worth the slowness given that this type of failure is rare.