  In a distributed storage systems (DSS) with $k$ systematic nodes, robustness
against node failure is commonly provided by storing redundancy in a number of
other nodes and performing repair mechanism to reproduce the content of the
failed nodes. Efficiency is then achieved by minimizing the storage overhead
and the amount of data transmission required for data reconstruction and
repair, provided by coding solutions such as regenerating codes [1]. Common
explicit regenerating code constructions enable efficient repair through
accessing a predefined number, $d$, of arbitrary chosen available nodes, namely
helpers. In practice, however, the state of the system dynamically changes
based on the request load, the link traffic, etc., and the parameters which
optimize system's performance vary accordingly. It is then desirable to have
coding schemes which are able to operate optimally under a range of different
parameters simultaneously. Specifically, adaptivity in the number of helper
nodes for repair is of interest. While robustness requires capability of
performing repair with small number of helpers, it is desirable to use as many
helpers as available to reduce the transmission delay and total repair traffic.
  In this work we focus on the minimum storage regenerating (MSR) codes, where
each node is supposed to store $\alpha$ information units, and the source data
of size $k\alpha$ could be recovered from any arbitrary set of $k$ nodes. We
introduce a class MSR codes that realize optimal repair bandwidth
simultaneously with a set of different choices for the number of helpers,
namely $D=\{d_{1}, \cdots, d_{\delta}\}$. Our coding scheme follows the Product
Matrix (PM) framework introduced in [2], and could be considered as a
generalization of the PM MSR code presented in [2], such that any $d_{i} =
(i+1)(k-1)$ helpers can perform an optimal repair. ...
