  Distributed storage codes have important applications in the design of modern
storage systems. In a distributed storage system, every storage node has a
probability to fail and once an individual storage node fails, it must be
reconstructed using data stored in the surviving nodes. Computation load and
network bandwidth are two important issues we need to concern when repairing a
failed node. The traditional maximal distance separable (MDS) storage codes
have low repair complexity but high repair bandwidth. On the contrary, minimal
storage regenerating (MSR) codes have low repair bandwidth but high repair
complexity. Fortunately, the newly introduced piggyback codes combine the
advantages of both ones.
  In this paper, by introducing a novel piggybacking design framework for
systematic MDS codes, we construct a storage code whose average repair
bandwidth rate, i.e., the ratio of average repair bandwidth and the amount of
the original data, can be as low as $\frac{\sqrt{2r-1}}{r}$, which
significantly improves the ratio $\frac{r-1}{2r-1}$ of the previous result. In
the meanwhile, every failed systematic node of the new code can be
reconstructed quickly using the decoding algorithm of an MDS code, only with
some additional additions over the underlying finite field. This is very fast
compared with the complex matrix multiplications needed in the repair of a
failed node of an MSR code.
