I'm going to do that because I have reasons to upgrade my cluster in
such a way:
1) add v2.2 hidden secondaries with priority 0 and sync data from
scratch on each shard , than make a snapshots of synced data from
them
2) stop balancing
3) upgrade all mongoses
4) upgrade configs one by one
5) restore non-zero priority secondaries from snapshots taken on step1
and run 2.2.3 on them
6) stepdown 2.0 primaries
7) remove hidden secondaries
8) upgrade 2.0 secondaries (those which were masters)
9) enable balancing