  One of the design objectives in distributed storage system is the
minimization of the data traffic during the repair of failed storage nodes. By
repairing multiple failures simultaneously and cooperatively, further reduction
of repair traffic is made possible. A closed-form expression of the optimal
tradeoff between the repair traffic and the amount of storage in each node for
cooperative repair is given. We show that the points on the tradeoff curve can
be achieved by linear cooperative regenerating codes, with an explicit bound on
the required finite field size. The proof relies on a max-flow-min-cut-type
theorem for submodular flow from combinatorial optimization. Two families of
explicit constructions are given.
