Distributed data storage systems are essential to deal with the need to store massive volumes of data. In order to make such a system fault-tolerant, some form of redundancy becomes crucial. There are various overheads that are incurred due to such redundancy - most prominent ones being overheads in terms of storage space and maintenance bandwidth requirements. Erasure codes provide a storage efficient alternative to replication based redundancy in storage systems. They however entail high communication overhead for maintenance in a networked setting, when some of the encoded fragments are lost due to failure of storage devices and need to be replenished in new ones.