Client library: fix recovery stripe recovery with sparse file by using the computed recovery size, instead of read size, as the computed value takes into the account the end of RS block / hole start position. This only has effect when the recovery stripe become available while / before recovery starts, and some other stripes (chunks) becomes unavailable. Without this change the recovery stops only at the max chunk size, instead at the hole boundary. The boundary only knows with stripe size precision, in the case when the chunk that contains the partial stripe with the hole boundary isn't available (lost).
Client library: handle possible loss of chunk block end / hole start position with sparse stripe files, resulting in possibly larger size of the recovered chunk files, by allowing chunks larger by no more than stripe size, with the zero filled trailing part that spans past the hole boundary. It is possible that the original chunk replica with the stripe containing the hole boundary re-appeared, and the chunk replica containing subsequent stripe was recovered without exact knowledge of the size of the original stripe.