If (as I suppose) the aim is to allow multiple concurrent copies but not to allow any copies concurrent with any other operation, then think this should be something like:
```ocaml
if match op with
    | `copy -> List.exists (fun (_, op) -> op <> `copy) current_ops
    | _ -> List.exists (fun _ -> true) current_ops
```
Equivalently the last line of that could be `    | _ -> List.length current_ops > 0`

Alternatively, if you do want to allow copies concurrent with just one other operation at a time (though I doubt this), then the code still needs changing since as it stands it will allow a non-copy operation copies are already running but will not allow a copy operation if a non-copy is already running.