const bufferlist &in,
map<int, bufferlist> *encoded)
{
- unsigned in_length = pad_in_length(in.length());
+ unsigned alignment = get_alignment();
+ unsigned tail = in.length() % alignment;
+ unsigned in_length = in.length() + ( tail ? ( alignment - tail ) : 0 );
dout(10) << "encode adjusted buffer length from " << in.length()
<< " to " << in_length << dendl;
assert(in_length % k == 0);
erasures, data, coding, blocksize);
}
-unsigned ErasureCodeJerasureReedSolomonVandermonde::pad_in_length(unsigned in_length)
+unsigned ErasureCodeJerasureReedSolomonVandermonde::get_alignment()
{
- while (in_length%(k*w*sizeof(int)) != 0)
- in_length++;
- return in_length;
+ return k*w*sizeof(int);
}
void ErasureCodeJerasureReedSolomonVandermonde::parse(const map<std::string,std::string> ¶meters)
return jerasure_matrix_decode(k, m, w, matrix, 1, erasures, data, coding, blocksize);
}
-unsigned ErasureCodeJerasureReedSolomonRAID6::pad_in_length(unsigned in_length)
+unsigned ErasureCodeJerasureReedSolomonRAID6::get_alignment()
{
- while (in_length%(k*w*sizeof(int)) != 0)
- in_length++;
- return in_length;
+ return k*w*sizeof(int);
}
void ErasureCodeJerasureReedSolomonRAID6::parse(const map<std::string,std::string> ¶meters)
erasures, data, coding, blocksize, packetsize, 1);
}
-unsigned ErasureCodeJerasureCauchy::pad_in_length(unsigned in_length)
+unsigned ErasureCodeJerasureCauchy::get_alignment()
{
- while (in_length%(k*w*packetsize*sizeof(int)) != 0)
- in_length++;
- return in_length;
+ return k*w*packetsize*sizeof(int);
}
void ErasureCodeJerasureCauchy::parse(const map<std::string,std::string> ¶meters)
coding, blocksize, packetsize, 1);
}
-unsigned ErasureCodeJerasureLiberation::pad_in_length(unsigned in_length)
+unsigned ErasureCodeJerasureLiberation::get_alignment()
{
- while (in_length%(k*w*packetsize*sizeof(int)) != 0)
- in_length++;
- return in_length;
+ return k*w*packetsize*sizeof(int);
}
void ErasureCodeJerasureLiberation::parse(const map<std::string,std::string> ¶meters)
char **data,
char **coding,
int blocksize) = 0;
- virtual unsigned pad_in_length(unsigned in_length) = 0;
+ virtual unsigned get_alignment() = 0;
virtual void parse(const map<std::string,std::string> ¶meters) = 0;
virtual void prepare() = 0;
static int to_int(const std::string &name,
char **data,
char **coding,
int blocksize);
- virtual unsigned pad_in_length(unsigned in_length);
+ virtual unsigned get_alignment();
virtual void parse(const map<std::string,std::string> ¶meters);
virtual void prepare();
};
char **data,
char **coding,
int blocksize);
- virtual unsigned pad_in_length(unsigned in_length);
+ virtual unsigned get_alignment();
virtual void parse(const map<std::string,std::string> ¶meters);
virtual void prepare();
};
char **data,
char **coding,
int blocksize);
- virtual unsigned pad_in_length(unsigned in_length);
+ virtual unsigned get_alignment();
virtual void parse(const map<std::string,std::string> ¶meters);
void prepare_schedule(int *matrix);
};
char **data,
char **coding,
int blocksize);
- virtual unsigned pad_in_length(unsigned in_length);
+ virtual unsigned get_alignment();
virtual void parse(const map<std::string,std::string> ¶meters);
virtual void prepare();
};